diff --git a/GoIndex.js b/GoIndex.js deleted file mode 100644 index 4c904c0..0000000 --- a/GoIndex.js +++ /dev/null @@ -1,373 +0,0 @@ -var authConfig = { - "siteName": "GoIndex", // 网站名称 - "siteIcon": "", // 网站图标 - "root_pass": "", // 根目录密码,优先于.password - "version": "1.0.6", // 程序版本 - "theme": "classic", // material classic - "client_id": "", - "client_secret": "", - "refresh_token": "", // 授权 token - "root": "" // 根目录ID -}; - -var gd; - -var html = ` - - - - - - ${authConfig.siteName} - - - - - - - -`; - -addEventListener('fetch', event => { - event.respondWith(handleRequest(event.request)); -}); - -/** - * Fetch and log a request - * @param {Request} request - */ -async function handleRequest(request) { - if (gd == undefined) { - gd = new googleDrive(authConfig); - } - - if (request.method == 'POST') { - return apiRequest(request); - } - - let url = new URL(request.url); - let path = url.pathname; - let action = url.searchParams.get('a'); - - if (path.substr(-1) == '/') { - try { - await gd.list(path); - } catch (e) { - return new Response("", { status: 404 }); // if path: /notexist/ - } - return new Response(html, { status: 200, headers: { 'Content-Type': 'text/html; charset=utf-8' } }); - } else if (action != null) { - if (await gd.file(path) == undefined) { - return new Response(html404, { status: 404, headers: { 'Content-Type': 'text/html; charset=utf-8' } }); - } - return new Response(html, { status: 200, headers: { 'Content-Type': 'text/html; charset=utf-8' } }); - } else { - if (path.split('/').pop().toLowerCase() == ".password") { - return new Response("", { status: 404 }); - } - try { - await gd.file(path); - } catch (e) { - return new Response("", { status: 404 }); // if path: /notexist/notexist - } - let file = await gd.file(path); - if (file == undefined) { - return new Response("", { status: 404 }); // if path: /exist/notexist - } - - let range = request.headers.get('Range'); - return gd.down(file.id, range); - } -} - - -async function apiRequest(request) { - let url = new URL(request.url); - let path = url.pathname; - - let option = { status: 200, headers: { 'Access-Control-Allow-Origin': '*' } } - - if (path.substr(-1) == '/') { - // check password - let password = await gd.password(path); - console.log("dir password", password); - if (password != undefined && password != null && password != "") { - try { - var obj = await request.json(); - } catch (e) { - var obj = {}; - } - console.log(password, obj); - if (password.replace("\n", "") != obj.password) { - let html = `{"error": {"code": 401,"message": "password error."}}`; - return new Response(html, option); - } - } - let list = await gd.list(path); - return new Response(JSON.stringify(list), option); - } else { - let file = await gd.file(path); - let range = request.headers.get('Range'); - return new Response(JSON.stringify(file)); - } -} - -class googleDrive { - constructor(authConfig) { - this.authConfig = authConfig; - this.paths = []; - this.files = []; - this.passwords = []; - this.paths["/"] = authConfig.root; - if (authConfig.root_pass != "") { - this.passwords["/"] = authConfig.root_pass; - } - this.accessToken(); - } - - async down(id, range = '') { - let url = `https://www.googleapis.com/drive/v3/files/${id}?alt=media`; - let requestOption = await this.requestOption(); - requestOption.headers['Range'] = range; - return await fetch(url, requestOption); - } - - async file(path) { - if (typeof this.files[path] == 'undefined') { - this.files[path] = await this._file(path); - } - return this.files[path]; - } - - async _file(path) { - let arr = path.split('/'); - let name = arr.pop(); - name = decodeURIComponent(name).replace(/\'/g, "\\'"); - let dir = arr.join('/') + '/'; - console.log(name, dir); - let parent = await this.findPathId(dir); - console.log(parent); - let url = 'https://www.googleapis.com/drive/v3/files'; - let params = { 'includeItemsFromAllDrives': true, 'supportsAllDrives': true }; - params.q = `'${parent}' in parents and name = '${name}' andtrashed = false`; - params.fields = "files(id, name, mimeType, size ,createdTime, modifiedTime, iconLink, thumbnailLink, shortcutDetails)"; - url += '?' + this.enQuery(params); - let requestOption = await this.requestOption(); - let response = await fetch(url, requestOption); - let obj = await response.json(); - if (obj.files && obj.files[0] && obj.files[0].mimeType == 'application/vnd.google-apps.shortcut') { - obj.files[0].id = obj.files[0].shortcutDetails.targetId; - obj.files[0].mimeType = obj.files[0].shortcutDetails.targetMimeType; - } - console.log(obj); - return obj.files[0]; - } - - // 通过reqeust cache 来缓存 - async list(path) { - if (gd.cache == undefined) { - gd.cache = {}; - } - - if (gd.cache[path]) { - return gd.cache[path]; - } - - let id = await this.findPathId(path); - var obj = await this._ls(id); - if (obj.files && obj.files.length > 1000) { - gd.cache[path] = obj; - } - - return obj - } - - async password(path) { - if (this.passwords[path] !== undefined) { - return this.passwords[path]; - } - - console.log("load", path, ".password", this.passwords[path]); - - let file = await gd.file(path + '.password'); - if (file == undefined) { - this.passwords[path] = null; - } else { - let url = `https://www.googleapis.com/drive/v3/files/${file.id}?alt=media`; - let requestOption = await this.requestOption(); - let response = await this.fetch200(url, requestOption); - this.passwords[path] = await response.text(); - } - - return this.passwords[path]; - } - - async _ls(parent) { - console.log("_ls", parent); - - if (parent == undefined) { - return null; - } - const files = []; - let pageToken; - let obj; - let params = { 'includeItemsFromAllDrives': true, 'supportsAllDrives': true }; - params.q = `'${parent}' in parents and trashed = false AND name !='.password'`; - params.orderBy = 'folder,name,modifiedTime desc'; - params.fields = "nextPageToken, files(id, name, mimeType, size , modifiedTime, shortcutDetails)"; - params.pageSize = 1000; - - do { - if (pageToken) { - params.pageToken = pageToken; - } - let url = 'https://www.googleapis.com/drive/v3/files'; - url += '?' + this.enQuery(params); - let requestOption = await this.requestOption(); - let response = await fetch(url, requestOption); - obj = await response.json(); - obj.files.forEach(file => { - if (file && file.mimeType == 'application/vnd.google-apps.shortcut') { - file.id = file.shortcutDetails.targetId; - file.mimeType = file.shortcutDetails.targetMimeType; - } - }); - files.push(...obj.files); - pageToken = obj.nextPageToken; - } while (pageToken); - - obj.files = files; - return obj; - } - - async findPathId(path) { - let c_path = '/'; - let c_id = this.paths[c_path]; - - let arr = path.trim('/').split('/'); - for (let name of arr) { - c_path += name + '/'; - - if (typeof this.paths[c_path] == 'undefined') { - let id = await this._findDirId(c_id, name); - this.paths[c_path] = id; - } - - c_id = this.paths[c_path]; - if (c_id == undefined || c_id == null) { - break; - } - } - console.log(this.paths); - return this.paths[path]; - } - - async _findDirId(parent, name) { - name = decodeURIComponent(name).replace(/\'/g, "\\'"); - - console.log("_findDirId", parent, name); - - if (parent == undefined) { - return null; - } - - let url = 'https://www.googleapis.com/drive/v3/files'; - let params = { 'includeItemsFromAllDrives': true, 'supportsAllDrives': true }; - params.q = `'${parent}' in parents and (mimeType = 'application/vnd.google-apps.folder' or mimeType = 'application/vnd.google-apps.shortcut') and name = '${name}' and trashed = false`; - params.fields = "nextPageToken, files(id, name, mimeType, shortcutDetails)"; - url += '?' + this.enQuery(params); - let requestOption = await this.requestOption(); - let response = await fetch(url, requestOption); - let obj = await response.json(); - if (obj.files[0] == undefined) { - return null; - } - if (obj.files[0].mimeType == 'application/vnd.google-apps.shortcut' && obj.files[0].shortcutDetails.targetMimeType == 'application/vnd.google-apps.folder') { - obj.files[0].id = obj.files[0].shortcutDetails.targetId; - } else if (obj.files[0].mimeType == 'application/vnd.google-apps.shortcut' && obj.files[0].shortcutDetails.targetMimeType != 'application/vnd.google-apps.folder') { - return null; - } - return obj.files[0].id; - } - - async accessToken() { - console.log("accessToken"); - if (this.authConfig.expires == undefined || this.authConfig.expires < Date.now()) { - const obj = await this.fetchAccessToken(); - if (obj.access_token != undefined) { - this.authConfig.accessToken = obj.access_token; - this.authConfig.expires = Date.now() + 3500 * 1000; - } - } - return this.authConfig.accessToken; - } - - async fetchAccessToken() { - console.log("fetchAccessToken"); - const url = "https://www.googleapis.com/oauth2/v4/token"; - const headers = { - 'Content-Type': 'application/x-www-form-urlencoded' - }; - const post_data = { - 'client_id': this.authConfig.client_id, - 'client_secret': this.authConfig.client_secret, - 'refresh_token': this.authConfig.refresh_token, - 'grant_type': 'refresh_token' - } - - let requestOption = { - 'method': 'POST', - 'headers': headers, - 'body': this.enQuery(post_data) - }; - - const response = await fetch(url, requestOption); - return await response.json(); - } - - async fetch200(url, requestOption) { - let response; - for (let i = 0; i < 3; i++) { - response = await fetch(url, requestOption); - console.log(response.status); - if (response.status != 403) { - break; - } - await this.sleep(800 * (i + 1)); - } - return response; - } - - async requestOption(headers = {}, method = 'GET') { - const accessToken = await this.accessToken(); - headers['authorization'] = 'Bearer ' + accessToken; - return { 'method': method, 'headers': headers }; - } - - enQuery(data) { - const ret = []; - for (let d in data) { - ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d])); - } - return ret.join('&'); - } - - sleep(ms) { - return new Promise(function (resolve, reject) { - let i = 0; - setTimeout(function () { - console.log('sleep' + ms); - i++; - if (i >= 2) reject(new Error('i>=2')); - else resolve(i); - }, ms); - }) - } -} - -String.prototype.trim = function (char) { - if (char) { - return this.replace(new RegExp('^\\' + char + '+|\\' + char + '+$', 'g'), ''); - } - return this.replace(/^\s+|\s+$/g, ''); -}; \ No newline at end of file diff --git a/README.md b/README.md index 29db475..16c2681 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,42 @@ -# goIndex-theme-nexmoe +# GoIndex-theme-nexmoe + +主题基于 [yanzai/goindex](https://github.com/yanzai/goindex) + + +## 预览 +![light](//cdn.jsdelivr.net/gh/5MayRain/GoIndex-theme-nexmoe@2.0.0/screenshot/light.jpg) +![dark](//cdn.jsdelivr.net/gh/5MayRain/GoIndex-theme-nexmoe@2.0.0/screenshot/dark.jpg) +nexmoe: [demo.zgh.workers.dev/](https://demo.zgh.workers.dev/) + +## 部署 +1. 打开下列任意网址 +- https://install.kenci.workers.dev/ +- https://goindex.glitch.me/ +- https://goindex-install.herokuapp.com/ +- https://goindex-quick-install.glitch.me/ +2. 授权并获取代码,把获取到的 `client_id` `client_secret` `refresh_token` ,填入模板 +3. 将代码部署到 [Cloudflare Workers](https://www.cloudflare.com/) + +## 自定义 +```bash +themeConfig //主题配置 + url //仓库地址 + theme //主题 ( light:亮色 | dark:深色 ) + main_color //主色调 + accent_color //强调色 + avatar //导航栏头像 + bimg //背景图片 + menu_show //是否显示菜单 + menus //菜单组 + name //名称 + url //地址 +``` + +## 更新日志 + +### v2.0.0 +- 之前的版本不在适用 +- 界面进行了一定的修改,使其更加的美观 +- 添加了一些的自定义,使用更加简单 +- 添加了亮色和深色的主题 -基于 [盘ta](https://github.com/Hidove/goindex) 的js,参考OneIndex的主题nexmoe,魔改美化. - -app-v3.js 是基于[yanzai](https://github.com/yanzai/goindex)的js美化的,支持多盘、搜索、分页加载和调用外部播放器等功能,另外添加了DPlayer播放。 - -app-v3.js 的模板为GoIndex_v2.js - - -# 使用 - -1.打开 https://install.kenci.workers.dev/ 网站,验证并获取代码 - -2.使用对应app.js的模板代码,将获取到的id和授权填入 - -3.将代码部署到 [Cloudflare Workers](https://www.cloudflare.com/) - -4.使用 https://cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe@1.1.2/app-v2.js 替换获取代码中的js -> var html = ` -> -> ...... -> -> -> ...... -> -> `; - -5.其中app.js有部分链接为外链,app-v2.js的所有链接均连接仓库中的文件 - -6.app-v3.j地址:https://cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe@1.1.6/app-v3.js - -7.[详细教程](https://5mayrain.github.io/posts/%E6%95%99%E7%A8%8B/%E4%BD%BF%E7%94%A8goindex%E6%90%AD%E5%BB%BAgoogledrive%E7%BD%91%E7%AB%99%E7%9B%AE%E5%BD%95/) - -# 预览 -[app-v2.js](https://go.zgh.workers.dev/) - -[app-v3.js](https://demo.zgh.workers.dev/) diff --git a/app-v2.js b/app-v2.js deleted file mode 100644 index 1b231ad..0000000 --- a/app-v2.js +++ /dev/null @@ -1,519 +0,0 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0' -); -document.write( - '' -); -// markdown支持 -document.write( - '' -); -document.write( - "" -); -document.write( - '' -); -document.write( - '' -); -document.write( - '' -); -document.write( - '' -); - -// 初始化页面,并载入必要资源 -function init() { - document.siteName = $("title").html(); - $("body").addClass("mdui-theme-primary-blue-grey mdui-theme-accent-blue"); - var html = ` -
- -
-
-
- -
-
- -
- -
-
- `; - $("body").html(html); -} - -function render(path) { - if (path.indexOf("?") > 0) { - path = path.substr(0, path.indexOf("?")); - } - title(path); - nav(path); - if (path.substr(-1) == "/") { - list(path); - } else { - file(path); - } -} - -// 渲染 title -function title(path) { - path = decodeURI(path); - $("title").html(document.siteName + " - " + path); -} - -// 渲染导航栏 -function nav(path) { - var html = ""; - html += `${document.siteName}`; - var arr = path.trim("/").split("/"); - var p = "/"; - if (arr.length > 0) { - for (i in arr) { - var n = arr[i]; - n = decodeURI(n); - p += n + "/"; - if (n == "") { - break; - } - html += `chevron_right${n}`; - } - } - $("#nav").html(html); -} - -// 渲染文件列表 -function list(path) { - var content = ` -
-
    -
  • -
    - 文件 expand_more -
    -
    - 修改时间 expand_more -
    -
    - 大小 expand_more -
    -
  • -
-
-
-
    -
-
- `; - $("#content").html(content); - - var password = localStorage.getItem("password" + path); - $("#list").html( - `
` - ); - $("#readme_md") - .hide() - .html(""); - $("#head_md") - .hide() - .html(""); - $.post(path, '{"password":"' + password + '"}', function(data, status) { - var obj = jQuery.parseJSON(data); - if ( - typeof obj != "null" && - obj.hasOwnProperty("error") && - obj.error.code == "401" - ) { - var pass = prompt("目录加密,请输入密码", ""); - localStorage.setItem("password" + path, pass); - if (pass != null && pass != "") { - list(path); - } else { - history.go(-1); - } - } else if (typeof obj != "null") { - list_files(path, obj.files); - } - }); -} - -function list_files(path, files) { - html = ""; - for (i in files) { - var item = files[i]; - var p = path + item.name + "/"; - if (item["size"] == undefined) { - item["size"] = ""; - } - - item["modifiedTime"] = utc2beijing(item["modifiedTime"]); - item["size"] = formatFileSize(item["size"]); - if (item["mimeType"] == "application/vnd.google-apps.folder") { - html += `
  • -
    - folder_open - ${item.name} -
    -
    ${item["modifiedTime"]}
    -
    ${item["size"]}
    -
    -
  • `; - } else { - var p = path + item.name; - var c = "file"; - if (item.name == "README.md") { - get_file(p, item, function(data) { - markdown("#readme_md", data); - }); - } - if (item.name == "HEAD.md") { - get_file(p, item, function(data) { - markdown("#head_md", data); - }); - } - var ext = p.split(".").pop(); - if ( - "|html|php|css|go|java|js|json|txt|sh|md|mp4|webm|mkv|bmp|jpg|jpeg|png|gif|".indexOf( - `|${ext}|`.toLowerCase() - ) >= 0 - ) { - p += "?a=view"; - c += " view"; - } - html += `
  • -
    - insert_drive_file - ${item.name} -
    -
    ${item["modifiedTime"]}
    -
    ${item["size"]}
    -
    -
  • `; - } - } - $("#list").html(html); -} - -function get_file(path, file, callback) { - var key = "file_path_" + path + file["modifiedTime"]; - var data = localStorage.getItem(key); - if (data != undefined) { - return callback(data); - } else { - $.get(path, function(d) { - localStorage.setItem(key, d); - callback(d); - }); - } -} - -// 文件展示 ?a=view -function file(path) { - var name = path.split("/").pop(); - var ext = name - .split(".") - .pop() - .toLowerCase() - .replace(`?a=view`, ""); - if ("|html|php|css|go|java|js|json|txt|sh|md|".indexOf(`|${ext}|`) >= 0) { - return file_code(path); - } - - if ("|mp4|webm|mkv|flv|".indexOf(`|${ext}|`) >= 0) { - return file_video(path); - } - - if ("|bmp|jpg|jpeg|png|gif|".indexOf(`|${ext}|`) >= 0) { - return file_image(path); - } -} - -// 文件展示 |html|php|css|go|java|js|json|txt|sh|md| -function file_code(path) { - var type = { - html: "html", - php: "php", - css: "css", - go: "golang", - java: "java", - js: "javascript", - json: "json", - txt: "Text", - sh: "sh", - md: "Markdown" - }; - var name = path.split("/").pop(); - var ext = name.split(".").pop(); - var href = window.location.origin + path; - var content = ` -
    -
    
    -
    -
    - - -
    -file_download - - - - `; - $("#content").html(content); - - $.get(path, function(data) { - $("#editor").html( - $("
    ") - .text(data) - .html() - ); - var code_type = "Text"; - if (type[ext] != undefined) { - code_type = type[ext]; - } - var editor = ace.edit("editor"); - editor.setTheme("ace/theme/ambiance"); - editor.setFontSize(18); - editor.session.setMode("ace/mode/" + code_type); - - //Autocompletion - editor.setOptions({ - enableBasicAutocompletion: true, - enableSnippets: true, - enableLiveAutocompletion: true, - maxLines: Infinity - }); - }); -} - -// 文件展示 mp4 -function file_video(path) { - var url = window.location.origin + path; - var content = ` -
    -
    -
    -
    -
    - -
    - - -
    -
    - - -
    -
    - - - -
    -
    -file_download - `; - $("#content").html(content); - - let urlPath = url.substring(0, url.lastIndexOf("/")); - let fileName = url.substr(url.lastIndexOf("/")); - hlsUrl = urlPath + "/hls" + fileName + "/index.m3u8"; - const dp = new DPlayer({ - container: document.getElementById("dplayer"), - video: { - quality: [ - { - name: "MP4", - url: url, - type: "normal" - }, - { - name: "HLS", - url: hlsUrl, - type: "hls" - } - ], - autoplay: true, - defaultQuality: 0 - } - }); -} -function videoPlay(url, type) { - let defaultQuality = 0; - if (type == "hls") { - defaultQuality = 1; - } - dp = new DPlayer({ - container: document.getElementById("dplayer"), - video: { - quality: [ - { - name: "MP4", - url: url, - type: "normal" - }, - { - name: "HLS", - url: hlsUrl, - type: "hls" - } - ], - autoplay: true, - defaultQuality: defaultQuality - } - }); -} -// -function file_image(path) { - var url = window.location.origin + path; - var content = ` -
    -
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    -file_download - `; - $("#content").html(content); -} - -//时间转换 -function utc2beijing(utc_datetime) { - // 转为正常的时间格式 年-月-日 时:分:秒 - var T_pos = utc_datetime.indexOf("T"); - var Z_pos = utc_datetime.indexOf("Z"); - var year_month_day = utc_datetime.substr(0, T_pos); - var hour_minute_second = utc_datetime.substr(T_pos + 1, Z_pos - T_pos - 1); - var new_datetime = year_month_day + " " + hour_minute_second; // 2017-03-31 08:02:06 - - // 处理成为时间戳 - timestamp = new Date(Date.parse(new_datetime)); - timestamp = timestamp.getTime(); - timestamp = timestamp / 1000; - - // 增加8个小时,北京时间比utc时间多八个时区 - var unixtimestamp = timestamp + 8 * 60 * 60; - - // 时间戳转为时间 - var unixtimestamp = new Date(unixtimestamp * 1000); - var year = 1900 + unixtimestamp.getYear(); - var month = "0" + (unixtimestamp.getMonth() + 1); - var date = "0" + unixtimestamp.getDate(); - var hour = "0" + unixtimestamp.getHours(); - var minute = "0" + unixtimestamp.getMinutes(); - var second = "0" + unixtimestamp.getSeconds(); - return ( - year + - "-" + - month.substring(month.length - 2, month.length) + - "-" + - date.substring(date.length - 2, date.length) + - " " + - hour.substring(hour.length - 2, hour.length) + - ":" + - minute.substring(minute.length - 2, minute.length) + - ":" + - second.substring(second.length - 2, second.length) - ); -} - -// bytes自适应转换到KB,MB,GB -function formatFileSize(bytes) { - if (bytes >= 1000000000) { - bytes = (bytes / 1000000000).toFixed(2) + " GB"; - } else if (bytes >= 1000000) { - bytes = (bytes / 1000000).toFixed(2) + " MB"; - } else if (bytes >= 1000) { - bytes = (bytes / 1000).toFixed(2) + " KB"; - } else if (bytes > 1) { - bytes = bytes + " bytes"; - } else if (bytes == 1) { - bytes = bytes + " byte"; - } else { - bytes = ""; - } - return bytes; -} - -String.prototype.trim = function(char) { - if (char) { - return this.replace( - new RegExp("^\\" + char + "+|\\" + char + "+$", "g"), - "" - ); - } - return this.replace(/^\s+|\s+$/g, ""); -}; - -// README.md HEAD.md 支持 -function markdown(el, data) { - if (window.md == undefined) { - //$.getScript('https://cdn.jsdelivr.net/npm/markdown-it@9.1.0/dist/markdown-it.min.js',function(){ - window.md = window.markdownit(); - markdown(el, data); - //}); - } else { - var html = md.render(data); - $(el) - .show() - .html(html); - } -} - -// 监听回退事件 -window.onpopstate = function() { - var path = window.location.pathname; - render(path); -}; - -$(function() { - init(); - var path = window.location.pathname; - $("body").on("click", ".folder", function() { - var url = $(this).attr("href"); - history.pushState(null, null, url); - render(url); - return false; - }); - - $("body").on("click", ".view", function() { - var url = $(this).attr("href"); - history.pushState(null, null, url); - render(url); - return false; - }); - - render(path); -}); -//# sourceMappingURL=/sm/ca38655586335790b5a0312fa96fa55bbbf9628a01e85f152e7db6f937910a42.map \ No newline at end of file diff --git a/app-v3.js b/app-v3.js deleted file mode 100644 index 345db83..0000000 --- a/app-v3.js +++ /dev/null @@ -1,1077 +0,0 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0'); -document.write(''); -document.write(''); -document.write(''); -document.write(''); -// markdown支持 -document.write(''); -document.write(''); -// add custome theme and darkmode -if (UI.dark_mode) { - document.write(``); -} - -// 初始化页面,并载入必要资源 -function init() { - document.siteName = $('title').html(); - $('body').addClass(`mdui-theme-primary-${UI.main_color} mdui-theme-accent-${UI.accent_color}`); - var html = ` -
    - -
    -
    -
    - -
    -
    - -
    - -
    -
    - `; - $('body').html(html); -} - -const Os = { - isWindows: navigator.platform.toUpperCase().indexOf('WIN') > -1, // .includes - isMac: navigator.platform.toUpperCase().indexOf('MAC') > -1, - isMacLike: /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform), - isIos: /(iPhone|iPod|iPad)/i.test(navigator.platform), - isMobile: /Android|webOS|iPhone|iPad|iPod|iOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) -}; - -function getDocumentHeight() { - var D = document; - return Math.max( - D.body.scrollHeight, D.documentElement.scrollHeight, - D.body.offsetHeight, D.documentElement.offsetHeight, - D.body.clientHeight, D.documentElement.clientHeight - ); -} - -function render(path) { - if (path.indexOf("?") > 0) { - path = path.substr(0, path.indexOf("?")); - } - title(path); - nav(path); - // .../0: 这种 - var reg = /\/\d+:$/g; - if (window.MODEL.is_search_page) { - // 用来存储一些滚动事件的状态 - window.scroll_status = { - // 滚动事件是否已经绑定 - event_bound: false, - // "滚动到底部,正在加载更多数据" 事件的锁 - loading_lock: false - }; - render_search_result_list() - } else if (path.match(reg) || path.substr(-1) == '/') { - // 用来存储一些滚动事件的状态 - window.scroll_status = { - // 滚动事件是否已经绑定 - event_bound: false, - // "滚动到底部,正在加载更多数据" 事件的锁 - loading_lock: false - }; - list(path); - } else { - file(path); - } -} - - -// 渲染 title -function title(path) { - path = decodeURI(path); - var cur = window.current_drive_order || 0; - var drive_name = window.drive_names[cur]; - path = path.replace(`/${cur}:`, ''); - // $('title').html(document.siteName + ' - ' + path); - var model = window.MODEL; - if (model.is_search_page) - $('title').html(`${document.siteName} - ${drive_name} - 搜索 ${model.q} 的结果`); - else - $('title').html(`${document.siteName} - ${drive_name} - ${path}`); -} - -// 渲染搜索栏 -function nav(path) { - var model = window.MODEL; - var html = ""; - var cur = window.current_drive_order || 0; - - // html += `${document.siteName}`; - - var names = window.drive_names; - /*html += ``; - html += `
      `; - names.forEach((name, idx) => { - html += `
    • ${name}
    • `; - }); - html += `
    `;*/ - - // 修改为 select - html += ``; - - html += `${document.siteName}`; - if (!model.is_search_page) { - var arr = path.trim('/').split('/'); - var p = '/'; - if (arr.length > 1) { - arr.shift(); - for (i in arr) { - var n = arr[i]; - n = decodeURI(n); - p += n + '/'; - if (n == '') { - break; - } - html += `chevron_right${n}`; - } - } - } - - var search_text = model.is_search_page ? (model.q || '') : ''; - const isMobile = Os.isMobile; - var search_bar = `
    - `; - - // 个人盘 或 团队盘 - if (model.root_type < 2) { - // 显示搜索框 - html += search_bar; - } - - $('#nav').html(html); - mdui.mutation(); - mdui.updateTextFields(); -} - -/** - * 发起列目录的 POST 请求 - * @param path Path - * @param params Form params - * @param resultCallback Success Result Callback - * @param authErrorCallback Pass Error Callback - */ -function requestListPath(path, params, resultCallback, authErrorCallback) { - var p = { - password: params['password'] || null, - page_token: params['page_token'] || null, - page_index: params['page_index'] || 0 - }; - $.post(path, p, function (data, status) { - var res = jQuery.parseJSON(data); - if (res && res.error && res.error.code == '401') { - // 密码验证失败 - if (authErrorCallback) authErrorCallback(path) - } else if (res && res.data) { - if (resultCallback) resultCallback(res, path, p) - } - }) -} - -/** - * 搜索 POST 请求 - * @param params Form params - * @param resultCallback Success callback - */ -function requestSearch(params, resultCallback) { - var p = { - q: params['q'] || null, - page_token: params['page_token'] || null, - page_index: params['page_index'] || 0 - }; - $.post(`/${window.current_drive_order}:search`, p, function (data, status) { - var res = jQuery.parseJSON(data); - if (res && res.data) { - if (resultCallback) resultCallback(res, p) - } - }) -} - - -// 渲染文件列表 -function list(path) { - var content = ` -
    -
      -
    • -
      - 文件 - expand_more -
      -
      - 修改时间 - expand_more -
      -
      - 大小 - expand_more -
      -
    • -
    -
    -
    -
      -
    -
    -
    - `; - $('#content').html(content); - - var password = localStorage.getItem('password' + path); - $('#list').html(`
    `); - $('#readme_md').hide().html(''); - $('#head_md').hide().html(''); - - /** - * 列目录请求成功返回数据后的回调 - * @param res 返回的结果(object) - * @param path 请求的路径 - * @param prevReqParams 请求时所用的参数 - */ - function successResultCallback(res, path, prevReqParams) { - - // 把 nextPageToken 和 currentPageIndex 暂存在 list元素 中 - $('#list') - .data('nextPageToken', res['nextPageToken']) - .data('curPageIndex', res['curPageIndex']); - - // 移除 loading spinner - $('#spinner').remove(); - - if (res['nextPageToken'] === null) { - // 如果是最后一页,取消绑定 scroll 事件,重置 scroll_status ,并 append 数据 - $(window).off('scroll'); - window.scroll_status.event_bound = false; - window.scroll_status.loading_lock = false; - append_files_to_list(path, res['data']['files']); - } else { - // 如果不是最后一页,append数据 ,并绑定 scroll 事件(如果还未绑定),更新 scroll_status - append_files_to_list(path, res['data']['files']); - if (window.scroll_status.event_bound !== true) { - // 绑定事件,如果还未绑定 - $(window).on('scroll', function () { - var scrollTop = $(this).scrollTop(); - var scrollHeight = getDocumentHeight(); - var windowHeight = $(this).height(); - // 滚到底部 - if (scrollTop + windowHeight > scrollHeight - (Os.isMobile ? 130 : 80)) { - /* - 滚到底部事件触发时,如果此时已经正在 loading 中,则忽略此次事件; - 否则,去 loading,并占据 loading锁,表明 正在 loading 中 - */ - if (window.scroll_status.loading_lock === true) { - return; - } - window.scroll_status.loading_lock = true; - - // 展示一个 loading spinner - $(`
    `) - .insertBefore('#readme_md'); - mdui.updateSpinners(); - // mdui.mutation(); - - let $list = $('#list'); - requestListPath(path, { - password: prevReqParams['password'], - page_token: $list.data('nextPageToken'), - // 请求下一页 - page_index: $list.data('curPageIndex') + 1 - }, - successResultCallback, - // 密码和之前相同。不会出现 authError - null - ) - } - }); - window.scroll_status.event_bound = true - } - } - - // loading 成功,并成功渲染了新数据之后,释放 loading 锁,以便能继续处理 "滚动到底部" 事件 - if (window.scroll_status.loading_lock === true) { - window.scroll_status.loading_lock = false - } - } - - // 开始从第1页请求数据 - requestListPath(path, {password: password}, - successResultCallback, - function (path) { - $('#spinner').remove(); - var pass = prompt("目录加密, 请输入密码", ""); - localStorage.setItem('password' + path, pass); - if (pass != null && pass != "") { - list(path); - } else { - history.go(-1); - } - }); -} - -/** - * 把请求得来的新一页的数据追加到 list 中 - * @param path 路径 - * @param files 请求得来的结果 - */ -function append_files_to_list(path, files) { - var $list = $('#list'); - // 是最后一页数据了吗? - var is_lastpage_loaded = null === $list.data('nextPageToken'); - var is_firstpage = '0' == $list.data('curPageIndex'); - - html = ""; - let targetFiles = []; - for (i in files) { - var item = files[i]; - var p = path + item.name + '/'; - if (item['size'] == undefined) { - item['size'] = ""; - } - - item['modifiedTime'] = utc2beijing(item['modifiedTime']); - item['size'] = formatFileSize(item['size']); - if (item['mimeType'] == 'application/vnd.google-apps.folder') { - html += `
  • -
    - folder_open - ${item.name} -
    -
    ${item['modifiedTime']}
    -
    ${item['size']}
    -
    -
  • `; - } else { - var p = path + item.name; - const filepath = path + item.name; - var c = "file"; - // 当加载完最后一页后,才显示 README ,否则会影响滚动事件 - if (is_lastpage_loaded && item.name == "README.md") { - get_file(p, item, function (data) { - markdown("#readme_md", data); - }); - } - if (item.name == "HEAD.md") { - get_file(p, item, function (data) { - markdown("#head_md", data); - }); - } - var ext = p.split('.').pop().toLowerCase(); - if ("|html|php|css|go|java|js|json|txt|sh|md|mp4|webm|avi|bmp|jpg|jpeg|png|gif|m4a|mp3|flac|wav|ogg|mpg|mpeg|mkv|rm|rmvb|mov|wmv|asf|ts|flv|pdf|".indexOf(`|${ext}|`) >= 0) { - targetFiles.push(filepath); - p += "?a=view"; - c += " view"; - } - html += `
  • -
    - insert_drive_file - ${item.name} -
    -
    ${item['modifiedTime']}
    -
    ${item['size']}
    -
    -
  • `; - } - } - - /*let targetObj = {}; - targetFiles.forEach((myFilepath, myIndex) => { - if (!targetObj[myFilepath]) { - targetObj[myFilepath] = { - filepath: myFilepath, - prev: myIndex === 0 ? null : targetFiles[myIndex - 1], - next: myIndex === targetFiles.length - 1 ? null : targetFiles[myIndex + 1], - } - } - }) - // console.log(targetObj) - if (Object.keys(targetObj).length) { - localStorage.setItem(path, JSON.stringify(targetObj)); - // console.log(path) - }*/ - - if (targetFiles.length > 0) { - let old = localStorage.getItem(path); - let new_children = targetFiles; - // 第1页重设;否则追加 - if (!is_firstpage && old) { - let old_children; - try { - old_children = JSON.parse(old); - if (!Array.isArray(old_children)) { - old_children = [] - } - } catch (e) { - old_children = []; - } - new_children = old_children.concat(targetFiles) - } - - localStorage.setItem(path, JSON.stringify(new_children)) - } - - // 是第1页时,去除横向loading条 - $list.html(($list.data('curPageIndex') == '0' ? '' : $list.html()) + html); - // 是最后一页时,统计并显示出总项目数 - if (is_lastpage_loaded) { - $('#count').removeClass('mdui-hidden').find('.number').text($list.find('li.mdui-list-item').length); - } -} - -/** - * 渲染搜索结果列表。有大量重复代码,但是里面有不一样的逻辑,暂时先这样分开弄吧 - */ -function render_search_result_list() { - var content = ` - - -
    -
      -
    • -
      - 文件 - expand_more -
      -
      - 修改时间 - expand_more -
      -
      - 大小 - expand_more -
      -
    • -
    -
    -
    -
      -
    -
    -
    - - `; - $('#content').html(content); - - $('#list').html(`
    `); - $('#readme_md').hide().html(''); - $('#head_md').hide().html(''); - - /** - * 搜索请求成功返回数据后的回调 - * @param res 返回的结果(object) - * @param path 请求的路径 - * @param prevReqParams 请求时所用的参数 - */ - function searchSuccessCallback(res, prevReqParams) { - - // 把 nextPageToken 和 currentPageIndex 暂存在 list元素 中 - $('#list') - .data('nextPageToken', res['nextPageToken']) - .data('curPageIndex', res['curPageIndex']); - - // 移除 loading spinner - $('#spinner').remove(); - - if (res['nextPageToken'] === null) { - // 如果是最后一页,取消绑定 scroll 事件,重置 scroll_status ,并 append 数据 - $(window).off('scroll'); - window.scroll_status.event_bound = false; - window.scroll_status.loading_lock = false; - append_search_result_to_list(res['data']['files']); - } else { - // 如果不是最后一页,append数据 ,并绑定 scroll 事件(如果还未绑定),更新 scroll_status - append_search_result_to_list(res['data']['files']); - if (window.scroll_status.event_bound !== true) { - // 绑定事件,如果还未绑定 - $(window).on('scroll', function () { - var scrollTop = $(this).scrollTop(); - var scrollHeight = getDocumentHeight(); - var windowHeight = $(this).height(); - // 滚到底部 - if (scrollTop + windowHeight > scrollHeight - (Os.isMobile ? 130 : 80)) { - /* - 滚到底部事件触发时,如果此时已经正在 loading 中,则忽略此次事件; - 否则,去 loading,并占据 loading锁,表明 正在 loading 中 - */ - if (window.scroll_status.loading_lock === true) { - return; - } - window.scroll_status.loading_lock = true; - - // 展示一个 loading spinner - $(`
    `) - .insertBefore('#readme_md'); - mdui.updateSpinners(); - // mdui.mutation(); - - let $list = $('#list'); - requestSearch({ - q: window.MODEL.q, - page_token: $list.data('nextPageToken'), - // 请求下一页 - page_index: $list.data('curPageIndex') + 1 - }, - searchSuccessCallback - ) - } - }); - window.scroll_status.event_bound = true - } - } - - // loading 成功,并成功渲染了新数据之后,释放 loading 锁,以便能继续处理 "滚动到底部" 事件 - if (window.scroll_status.loading_lock === true) { - window.scroll_status.loading_lock = false - } - } - - // 开始从第1页请求数据 - requestSearch({q: window.MODEL.q}, searchSuccessCallback); -} - -/** - * 追加新一页的搜索结果 - * @param files - */ -function append_search_result_to_list(files) { - var $list = $('#list'); - // 是最后一页数据了吗? - var is_lastpage_loaded = null === $list.data('nextPageToken'); - // var is_firstpage = '0' == $list.data('curPageIndex'); - - html = ""; - - for (i in files) { - var item = files[i]; - if (item['size'] == undefined) { - item['size'] = ""; - } - - item['modifiedTime'] = utc2beijing(item['modifiedTime']); - item['size'] = formatFileSize(item['size']); - if (item['mimeType'] == 'application/vnd.google-apps.folder') { - html += `
  • -
    - folder_open - ${item.name} -
    -
    ${item['modifiedTime']}
    -
    ${item['size']}
    -
    -
  • `; - } else { - var c = "file"; - var ext = item.name.split('.').pop().toLowerCase(); - if ("|html|php|css|go|java|js|json|txt|sh|md|mp4|webm|avi|bmp|jpg|jpeg|png|gif|m4a|mp3|flac|wav|ogg|mpg|mpeg|mkv|rm|rmvb|mov|wmv|asf|ts|flv|".indexOf(`|${ext}|`) >= 0) { - c += " view"; - } - html += `
  • -
    - insert_drive_file - ${item.name} -
    -
    ${item['modifiedTime']}
    -
    ${item['size']}
    -
    -
  • `; - } - } - - // 是第1页时,去除横向loading条 - $list.html(($list.data('curPageIndex') == '0' ? '' : $list.html()) + html); - // 是最后一页时,统计并显示出总项目数 - if (is_lastpage_loaded) { - $('#count').removeClass('mdui-hidden').find('.number').text($list.find('li.mdui-list-item').length); - } -} - -/** - * 搜索结果项目点击事件 - * @param a_ele 点击的元素 - */ -function onSearchResultItemClick(a_ele) { - var me = $(a_ele); - var can_preview = me.hasClass('view'); - var cur = window.current_drive_order; - var dialog = mdui.dialog({ - title: '', - content: '
    正在获取目标路径...
    ', - // content: '
    ', - history: false, - modal: true, - closeOnEsc: true - }); - mdui.updateSpinners(); - - // 请求获取路径 - $.post(`/${cur}:id2path`, {id: a_ele.id}, function (data) { - if (data) { - dialog.close(); - var href = `/${cur}:${data}${can_preview ? '?a=view' : ''}`; - dialog = mdui.dialog({ - title: '目标路径', - content: `${data}`, - history: false, - modal: true, - closeOnEsc: true, - buttons: [ - { - text: '打开', onClick: function () { - window.location.href = href - } - }, { - text: '新标签中打开', onClick: function () { - window.open(href) - } - } - , {text: '取消'} - ] - }); - return; - } - dialog.close(); - dialog = mdui.dialog({ - title: '获取目标路径失败', - content: 'o(╯□╰)o 可能是因为该盘中并不存在此项!也可能因为没有把【与我共享】的文件添加到个人云端硬盘中!', - history: false, - modal: true, - closeOnEsc: true, - buttons: [ - {text: 'WTF ???'} - ] - }); - }) -} - -function get_file(path, file, callback) { - var key = "file_path_" + path + file['modifiedTime']; - var data = localStorage.getItem(key); - if (data != undefined) { - return callback(data); - } else { - $.get(path, function (d) { - localStorage.setItem(key, d); - callback(d); - }); - } -} - - -// 文件展示 ?a=view -function file(path) { - var name = path.split('/').pop(); - var ext = name.split('.').pop().toLowerCase().replace(`?a=view`, "").toLowerCase(); - if ("|html|php|css|go|java|js|json|txt|sh|md|".indexOf(`|${ext}|`) >= 0) { - return file_code(path); - } - - if ("|mp4|webm|avi|".indexOf(`|${ext}|`) >= 0) { - return file_video(path); - } - - if ("|mpg|mpeg|mkv|rm|rmvb|mov|wmv|asf|ts|flv|".indexOf(`|${ext}|`) >= 0) { - return file_video(path); - } - - if ("|mp3|flac|wav|ogg|m4a|".indexOf(`|${ext}|`) >= 0) { - return file_audio(path); - } - - if ("|bmp|jpg|jpeg|png|gif|".indexOf(`|${ext}|`) >= 0) { - return file_image(path); - } - - if ('pdf' === ext) return file_pdf(path); -} - -// 文件展示 |html|php|css|go|java|js|json|txt|sh|md| -function file_code(path) { - var type = { - "html": "html", - "php": "php", - "css": "css", - "go": "golang", - "java": "java", - "js": "javascript", - "json": "json", - "txt": "Text", - "sh": "sh", - "md": "Markdown", - }; - var name = path.split('/').pop(); - var ext = name.split('.').pop().toLowerCase(); - var href = window.location.origin + path; - var content = ` -
    -
    
    -
    -
    - - -
    -file_download - - - - `; - $('#content').html(content); - - $.get(path, function (data) { - $('#editor').html($('
    ').text(data).html()); - var code_type = "Text"; - if (type[ext] != undefined) { - code_type = type[ext]; - } - var editor = ace.edit("editor"); - editor.setTheme("ace/theme/ambiance"); - editor.setFontSize(18); - editor.session.setMode("ace/mode/" + code_type); - - //Autocompletion - editor.setOptions({ - enableBasicAutocompletion: true, - enableSnippets: true, - enableLiveAutocompletion: true, - maxLines: Infinity - }); - }); -} - -function copyToClipboard(str) { - const $temp = $(""); - $("body").append($temp); - $temp.val(str).select(); - document.execCommand("copy"); - $temp.remove(); -} - -// 文件展示 视频 |mp4|webm|avi| -function file_video(path) { - const url = window.location.origin + path; - let player_items = [ - { - text: 'MXPlayer(Free)', - href: `intent:${url}#Intent;package=com.mxtech.videoplayer.ad;S.title=${path};end`, - }, - { - text: 'MXPlayer(Pro)', - href: `intent:${url}#Intent;package=com.mxtech.videoplayer.pro;S.title=${path};end`, - }, - { - text: 'nPlayer', - href: `nplayer-${url}`, - }, - { - text: 'VLC', - href: `vlc://${url}`, - }, - { - text: 'PotPlayer', - href: `potplayer://${url}` - } - ] - .map(it => `
  • ${it.text}
  • `) - .join(''); - player_items += `
  • -
  • 复制链接
  • `; - const playBtn = ` - -
      ${player_items}
    `; - - const content = ` -
    -
    -
    -
    ${playBtn} - -
    - - -
    -
    - - -
    -
    -file_download - `; - $('#content').html(content); - $('#copy-link').on('click', () => { - copyToClipboard(url); - mdui.snackbar('已复制到剪切板!'); - }); - -const dp = new DPlayer({ - container: document.getElementById("dplayer"), - loop: true, - lang: 'zh-cn', - screenshot: true, - preload: 'auto', - video: { - quality: [ - { - url: url, - type: "normal" - } - ], - autoplay: true, - defaultQuality: 0 - } - }); -} - -// 文件展示 音频 |mp3|flac|m4a|wav|ogg| -function file_audio(path) { - var url = window.location.origin + path; - var content = ` -
    -
    - -
    - -
    - - -
    -
    - - -
    -
    -file_download - `; - $('#content').html(content); -} - -// 文件展示 pdf pdf -function file_pdf(path) { - const url = window.location.origin + path; - const inline_url = `${url}?inline=true` - const file_name = decodeURI(path.slice(path.lastIndexOf('/') + 1, path.length)) - var content = ` - - file_download - `; - $('#content').removeClass('mdui-container').addClass('mdui-container-fluid').css({padding: 0}).html(content); -} - -// 图片展示 -function file_image(path) { - var url = window.location.origin + path; - // console.log(window.location.pathname) - const currentPathname = window.location.pathname - const lastIndex = currentPathname.lastIndexOf('/'); - const fatherPathname = currentPathname.slice(0, lastIndex + 1); - // console.log(fatherPathname) - let target_children = localStorage.getItem(fatherPathname); - // console.log(`fatherPathname: ${fatherPathname}`); - // console.log(target_children) - let targetText = ''; - if (target_children) { - try { - target_children = JSON.parse(target_children); - if (!Array.isArray(target_children)) { - target_children = [] - } - } catch (e) { - console.error(e); - target_children = []; - } - if (target_children.length > 0 && target_children.includes(path)) { - let len = target_children.length; - let cur = target_children.indexOf(path); - // console.log(`len = ${len}`) - // console.log(`cur = ${cur}`) - let prev_child = (cur - 1 > -1) ? target_children[cur - 1] : null; - let next_child = (cur + 1 < len) ? target_children[cur + 1] : null; - targetText = ` -
    -
    -
    - ${prev_child ? `` : ``} -
    -
    - ${next_child ? `` : ``} -
    -
    -
    - `; - } - //
    - // ${targetObj[path].prev ? `Prev` : `Prev`} - // ${targetObj[path].next ? `Next` : `Prev`} - //
    - } - var content = ` -
    -
    -
    - ${targetText} - -
    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    -file_download - `; - //my code - $('#content').html(content); - $('#leftBtn, #rightBtn').click((e) => { - let target = $(e.target); - if (['I', 'SPAN'].includes(e.target.nodeName)) { - target = $(e.target).parent(); - } - const filepath = target.attr('data-filepath'); - const direction = target.attr('data-direction'); - //console.log(`${direction}翻页 ${filepath}`); - file(filepath) - }); -} - - -//时间转换 -function utc2beijing(utc_datetime) { - // 转为正常的时间格式 年-月-日 时:分:秒 - var T_pos = utc_datetime.indexOf('T'); - var Z_pos = utc_datetime.indexOf('Z'); - var year_month_day = utc_datetime.substr(0, T_pos); - var hour_minute_second = utc_datetime.substr(T_pos + 1, Z_pos - T_pos - 1); - var new_datetime = year_month_day + " " + hour_minute_second; // 2017-03-31 08:02:06 - - // 处理成为时间戳 - timestamp = new Date(Date.parse(new_datetime)); - timestamp = timestamp.getTime(); - timestamp = timestamp / 1000; - - // 增加8个小时,北京时间比utc时间多八个时区 - var unixtimestamp = timestamp + 8 * 60 * 60; - - // 时间戳转为时间 - var unixtimestamp = new Date(unixtimestamp * 1000); - var year = 1900 + unixtimestamp.getYear(); - var month = "0" + (unixtimestamp.getMonth() + 1); - var date = "0" + unixtimestamp.getDate(); - var hour = "0" + unixtimestamp.getHours(); - var minute = "0" + unixtimestamp.getMinutes(); - var second = "0" + unixtimestamp.getSeconds(); - return year + "-" + month.substring(month.length - 2, month.length) + "-" + date.substring(date.length - 2, date.length) - + " " + hour.substring(hour.length - 2, hour.length) + ":" - + minute.substring(minute.length - 2, minute.length) + ":" - + second.substring(second.length - 2, second.length); -} - -// bytes自适应转换到KB,MB,GB -function formatFileSize(bytes) { - if (bytes >= 1000000000) { - bytes = (bytes / 1000000000).toFixed(2) + ' GB'; - } else if (bytes >= 1000000) { - bytes = (bytes / 1000000).toFixed(2) + ' MB'; - } else if (bytes >= 1000) { - bytes = (bytes / 1000).toFixed(2) + ' KB'; - } else if (bytes > 1) { - bytes = bytes + ' bytes'; - } else if (bytes == 1) { - bytes = bytes + ' byte'; - } else { - bytes = ''; - } - return bytes; -} - -String.prototype.trim = function (char) { - if (char) { - return this.replace(new RegExp('^\\' + char + '+|\\' + char + '+$', 'g'), ''); - } - return this.replace(/^\s+|\s+$/g, ''); -}; - - -// README.md HEAD.md 支持 -function markdown(el, data) { - if (window.md == undefined) { - //$.getScript('https://cdn.jsdelivr.net/npm/markdown-it@10.0.0/dist/markdown-it.min.js',function(){ - window.md = window.markdownit(); - markdown(el, data); - //}); - } else { - var html = md.render(data); - $(el).show().html(html); - } -} - -// 监听回退事件 -window.onpopstate = function () { - var path = window.location.pathname; - render(path); -} - - -$(function () { - init(); - var path = window.location.pathname; - /*$("body").on("click", '.folder', function () { - var url = $(this).attr('href'); - history.pushState(null, null, url); - render(url); - return false; - }); - - $("body").on("click", '.view', function () { - var url = $(this).attr('href'); - history.pushState(null, null, url); - render(url); - return false; - });*/ - - render(path); -}); -//# sourceMappingURL=/sm/6e384b7c2f5d0aa9c6028ac483ff0c0b2e4dc5254b764e5022644e6b83ba4474.map \ No newline at end of file diff --git a/app.js b/app.js deleted file mode 100644 index 9de3752..0000000 --- a/app.js +++ /dev/null @@ -1,519 +0,0 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0' -); -document.write( - '' -); -// markdown支持 -document.write( - '' -); -document.write( - "" -); -document.write( - '' -); -document.write( - '' -); -document.write( - '' -); -document.write( - '' -); - -// 初始化页面,并载入必要资源 -function init() { - document.siteName = $("title").html(); - $("body").addClass("mdui-theme-primary-blue-grey mdui-theme-accent-blue"); - var html = ` -
    - -
    -
    -
    - -
    -
    - -
    - -
    -
    - `; - $("body").html(html); -} - -function render(path) { - if (path.indexOf("?") > 0) { - path = path.substr(0, path.indexOf("?")); - } - title(path); - nav(path); - if (path.substr(-1) == "/") { - list(path); - } else { - file(path); - } -} - -// 渲染 title -function title(path) { - path = decodeURI(path); - $("title").html(document.siteName + " - " + path); -} - -// 渲染导航栏 -function nav(path) { - var html = ""; - html += `${document.siteName}`; - var arr = path.trim("/").split("/"); - var p = "/"; - if (arr.length > 0) { - for (i in arr) { - var n = arr[i]; - n = decodeURI(n); - p += n + "/"; - if (n == "") { - break; - } - html += `chevron_right${n}`; - } - } - $("#nav").html(html); -} - -// 渲染文件列表 -function list(path) { - var content = ` -
    -
      -
    • -
      - 文件 expand_more -
      -
      - 修改时间 expand_more -
      -
      - 大小 expand_more -
      -
    • -
    -
    -
    -
      -
    -
    - `; - $("#content").html(content); - - var password = localStorage.getItem("password" + path); - $("#list").html( - `
    ` - ); - $("#readme_md") - .hide() - .html(""); - $("#head_md") - .hide() - .html(""); - $.post(path, '{"password":"' + password + '"}', function(data, status) { - var obj = jQuery.parseJSON(data); - if ( - typeof obj != "null" && - obj.hasOwnProperty("error") && - obj.error.code == "401" - ) { - var pass = prompt("目录加密,请输入密码", ""); - localStorage.setItem("password" + path, pass); - if (pass != null && pass != "") { - list(path); - } else { - history.go(-1); - } - } else if (typeof obj != "null") { - list_files(path, obj.files); - } - }); -} - -function list_files(path, files) { - html = ""; - for (i in files) { - var item = files[i]; - var p = path + item.name + "/"; - if (item["size"] == undefined) { - item["size"] = ""; - } - - item["modifiedTime"] = utc2beijing(item["modifiedTime"]); - item["size"] = formatFileSize(item["size"]); - if (item["mimeType"] == "application/vnd.google-apps.folder") { - html += `
  • -
    - folder_open - ${item.name} -
    -
    ${item["modifiedTime"]}
    -
    ${item["size"]}
    -
    -
  • `; - } else { - var p = path + item.name; - var c = "file"; - if (item.name == "README.md") { - get_file(p, item, function(data) { - markdown("#readme_md", data); - }); - } - if (item.name == "HEAD.md") { - get_file(p, item, function(data) { - markdown("#head_md", data); - }); - } - var ext = p.split(".").pop(); - if ( - "|html|php|css|go|java|js|json|txt|sh|md|mp4|webm|mkv|bmp|jpg|jpeg|png|gif|".indexOf( - `|${ext}|`.toLowerCase() - ) >= 0 - ) { - p += "?a=view"; - c += " view"; - } - html += `
  • -
    - insert_drive_file - ${item.name} -
    -
    ${item["modifiedTime"]}
    -
    ${item["size"]}
    -
    -
  • `; - } - } - $("#list").html(html); -} - -function get_file(path, file, callback) { - var key = "file_path_" + path + file["modifiedTime"]; - var data = localStorage.getItem(key); - if (data != undefined) { - return callback(data); - } else { - $.get(path, function(d) { - localStorage.setItem(key, d); - callback(d); - }); - } -} - -// 文件展示 ?a=view -function file(path) { - var name = path.split("/").pop(); - var ext = name - .split(".") - .pop() - .toLowerCase() - .replace(`?a=view`, ""); - if ("|html|php|css|go|java|js|json|txt|sh|md|".indexOf(`|${ext}|`) >= 0) { - return file_code(path); - } - - if ("|mp4|webm|mkv|flv|".indexOf(`|${ext}|`) >= 0) { - return file_video(path); - } - - if ("|bmp|jpg|jpeg|png|gif|".indexOf(`|${ext}|`) >= 0) { - return file_image(path); - } -} - -// 文件展示 |html|php|css|go|java|js|json|txt|sh|md| -function file_code(path) { - var type = { - html: "html", - php: "php", - css: "css", - go: "golang", - java: "java", - js: "javascript", - json: "json", - txt: "Text", - sh: "sh", - md: "Markdown" - }; - var name = path.split("/").pop(); - var ext = name.split(".").pop(); - var href = window.location.origin + path; - var content = ` -
    -
    
    -
    -
    - - -
    -file_download - - - - `; - $("#content").html(content); - - $.get(path, function(data) { - $("#editor").html( - $("
    ") - .text(data) - .html() - ); - var code_type = "Text"; - if (type[ext] != undefined) { - code_type = type[ext]; - } - var editor = ace.edit("editor"); - editor.setTheme("ace/theme/ambiance"); - editor.setFontSize(18); - editor.session.setMode("ace/mode/" + code_type); - - //Autocompletion - editor.setOptions({ - enableBasicAutocompletion: true, - enableSnippets: true, - enableLiveAutocompletion: true, - maxLines: Infinity - }); - }); -} - -// 文件展示 mp4 -function file_video(path) { - var url = window.location.origin + path; - var content = ` -
    -
    -
    -
    -
    - -
    - - -
    -
    - - -
    -
    - - - -
    -
    -file_download - `; - $("#content").html(content); - - let urlPath = url.substring(0, url.lastIndexOf("/")); - let fileName = url.substr(url.lastIndexOf("/")); - hlsUrl = urlPath + "/hls" + fileName + "/index.m3u8"; - const dp = new DPlayer({ - container: document.getElementById("dplayer"), - video: { - quality: [ - { - name: "MP4", - url: url, - type: "normal" - }, - { - name: "HLS", - url: hlsUrl, - type: "hls" - } - ], - autoplay: true, - defaultQuality: 0 - } - }); -} -function videoPlay(url, type) { - let defaultQuality = 0; - if (type == "hls") { - defaultQuality = 1; - } - dp = new DPlayer({ - container: document.getElementById("dplayer"), - video: { - quality: [ - { - name: "MP4", - url: url, - type: "normal" - }, - { - name: "HLS", - url: hlsUrl, - type: "hls" - } - ], - autoplay: true, - defaultQuality: defaultQuality - } - }); -} -// -function file_image(path) { - var url = window.location.origin + path; - var content = ` -
    -
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    -file_download - `; - $("#content").html(content); -} - -//时间转换 -function utc2beijing(utc_datetime) { - // 转为正常的时间格式 年-月-日 时:分:秒 - var T_pos = utc_datetime.indexOf("T"); - var Z_pos = utc_datetime.indexOf("Z"); - var year_month_day = utc_datetime.substr(0, T_pos); - var hour_minute_second = utc_datetime.substr(T_pos + 1, Z_pos - T_pos - 1); - var new_datetime = year_month_day + " " + hour_minute_second; // 2017-03-31 08:02:06 - - // 处理成为时间戳 - timestamp = new Date(Date.parse(new_datetime)); - timestamp = timestamp.getTime(); - timestamp = timestamp / 1000; - - // 增加8个小时,北京时间比utc时间多八个时区 - var unixtimestamp = timestamp + 8 * 60 * 60; - - // 时间戳转为时间 - var unixtimestamp = new Date(unixtimestamp * 1000); - var year = 1900 + unixtimestamp.getYear(); - var month = "0" + (unixtimestamp.getMonth() + 1); - var date = "0" + unixtimestamp.getDate(); - var hour = "0" + unixtimestamp.getHours(); - var minute = "0" + unixtimestamp.getMinutes(); - var second = "0" + unixtimestamp.getSeconds(); - return ( - year + - "-" + - month.substring(month.length - 2, month.length) + - "-" + - date.substring(date.length - 2, date.length) + - " " + - hour.substring(hour.length - 2, hour.length) + - ":" + - minute.substring(minute.length - 2, minute.length) + - ":" + - second.substring(second.length - 2, second.length) - ); -} - -// bytes自适应转换到KB,MB,GB -function formatFileSize(bytes) { - if (bytes >= 1000000000) { - bytes = (bytes / 1000000000).toFixed(2) + " GB"; - } else if (bytes >= 1000000) { - bytes = (bytes / 1000000).toFixed(2) + " MB"; - } else if (bytes >= 1000) { - bytes = (bytes / 1000).toFixed(2) + " KB"; - } else if (bytes > 1) { - bytes = bytes + " bytes"; - } else if (bytes == 1) { - bytes = bytes + " byte"; - } else { - bytes = ""; - } - return bytes; -} - -String.prototype.trim = function(char) { - if (char) { - return this.replace( - new RegExp("^\\" + char + "+|\\" + char + "+$", "g"), - "" - ); - } - return this.replace(/^\s+|\s+$/g, ""); -}; - -// README.md HEAD.md 支持 -function markdown(el, data) { - if (window.md == undefined) { - //$.getScript('https://cdn.jsdelivr.net/npm/markdown-it@9.1.0/dist/markdown-it.min.js',function(){ - window.md = window.markdownit(); - markdown(el, data); - //}); - } else { - var html = md.render(data); - $(el) - .show() - .html(html); - } -} - -// 监听回退事件 -window.onpopstate = function() { - var path = window.location.pathname; - render(path); -}; - -$(function() { - init(); - var path = window.location.pathname; - $("body").on("click", ".folder", function() { - var url = $(this).attr("href"); - history.pushState(null, null, url); - render(url); - return false; - }); - - $("body").on("click", ".view", function() { - var url = $(this).attr("href"); - history.pushState(null, null, url); - render(url); - return false; - }); - - render(path); -}); -//# sourceMappingURL=/sm/ca38655586335790b5a0312fa96fa55bbbf9628a01e85f152e7db6f937910a42.map \ No newline at end of file diff --git a/css/DPlayer.min.css b/css/DPlayer.min.css deleted file mode 100644 index 878ba62..0000000 --- a/css/DPlayer.min.css +++ /dev/null @@ -1,4 +0,0 @@ -button[data-balloon]{overflow:visible}[data-balloon]{position:relative;cursor:pointer}[data-balloon]:after{font-family:sans-serif!important;font-weight:400!important;font-style:normal!important;text-shadow:none!important;font-size:12px!important;background:hsla(0,0%,7%,.9);border-radius:4px;color:#fff;content:attr(data-balloon);padding:.5em 1em;white-space:nowrap}[data-balloon]:after,[data-balloon]:before{filter:alpha(opactiy=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";-moz-opacity:0;-khtml-opacity:0;opacity:0;pointer-events:none;transition:all .18s ease-out .18s;position:absolute;z-index:10}[data-balloon]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M2.658 0h32.004c-6 0-11.627 12.002-16.002 12.002C14.285 12.002 8.594 0 2.658 0z'/%3E%3C/svg%3E");background-size:100% auto;width:18px;height:6px;content:""}[data-balloon]:hover:after,[data-balloon]:hover:before,[data-balloon][data-balloon-visible]:after,[data-balloon][data-balloon-visible]:before{filter:alpha(opactiy=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;pointer-events:auto}[data-balloon].font-awesome:after{font-family:FontAwesome}[data-balloon][data-balloon-break]:after{white-space:pre}[data-balloon][data-balloon-blunt]:after,[data-balloon][data-balloon-blunt]:before{transition:none}[data-balloon][data-balloon-pos=up]:after{margin-bottom:11px}[data-balloon][data-balloon-pos=up]:after,[data-balloon][data-balloon-pos=up]:before{bottom:100%;left:50%;-webkit-transform:translate(-50%,10px);transform:translate(-50%,10px);-webkit-transform-origin:top;transform-origin:top}[data-balloon][data-balloon-pos=up]:before{margin-bottom:5px}[data-balloon][data-balloon-pos=up]:hover:after,[data-balloon][data-balloon-pos=up]:hover:before,[data-balloon][data-balloon-pos=up][data-balloon-visible]:after,[data-balloon][data-balloon-pos=up][data-balloon-visible]:before{-webkit-transform:translate(-50%);transform:translate(-50%)}[data-balloon][data-balloon-pos=up-left]:after{left:0;margin-bottom:11px}[data-balloon][data-balloon-pos=up-left]:after,[data-balloon][data-balloon-pos=up-left]:before{bottom:100%;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform-origin:top;transform-origin:top}[data-balloon][data-balloon-pos=up-left]:before{left:5px;margin-bottom:5px}[data-balloon][data-balloon-pos=up-left]:hover:after,[data-balloon][data-balloon-pos=up-left]:hover:before,[data-balloon][data-balloon-pos=up-left][data-balloon-visible]:after,[data-balloon][data-balloon-pos=up-left][data-balloon-visible]:before{-webkit-transform:translate(0);transform:translate(0)}[data-balloon][data-balloon-pos=up-right]:after{right:0;margin-bottom:11px}[data-balloon][data-balloon-pos=up-right]:after,[data-balloon][data-balloon-pos=up-right]:before{bottom:100%;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform-origin:top;transform-origin:top}[data-balloon][data-balloon-pos=up-right]:before{right:5px;margin-bottom:5px}[data-balloon][data-balloon-pos=up-right]:hover:after,[data-balloon][data-balloon-pos=up-right]:hover:before,[data-balloon][data-balloon-pos=up-right][data-balloon-visible]:after,[data-balloon][data-balloon-pos=up-right][data-balloon-visible]:before{-webkit-transform:translate(0);transform:translate(0)}[data-balloon][data-balloon-pos=down]:after{margin-top:11px}[data-balloon][data-balloon-pos=down]:after,[data-balloon][data-balloon-pos=down]:before{left:50%;top:100%;-webkit-transform:translate(-50%,-10px);transform:translate(-50%,-10px)}[data-balloon][data-balloon-pos=down]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M33.342 12H1.338c6 0 11.627-12.002 16.002-12.002C21.715-.002 27.406 12 33.342 12z'/%3E%3C/svg%3E");background-size:100% auto;width:18px;height:6px;margin-top:5px}[data-balloon][data-balloon-pos=down]:hover:after,[data-balloon][data-balloon-pos=down]:hover:before,[data-balloon][data-balloon-pos=down][data-balloon-visible]:after,[data-balloon][data-balloon-pos=down][data-balloon-visible]:before{-webkit-transform:translate(-50%);transform:translate(-50%)}[data-balloon][data-balloon-pos=down-left]:after{left:0;margin-top:11px;top:100%;-webkit-transform:translateY(-10px);transform:translateY(-10px)}[data-balloon][data-balloon-pos=down-left]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M33.342 12H1.338c6 0 11.627-12.002 16.002-12.002C21.715-.002 27.406 12 33.342 12z'/%3E%3C/svg%3E");background-size:100% auto;width:18px;height:6px;left:5px;margin-top:5px;top:100%;-webkit-transform:translateY(-10px);transform:translateY(-10px)}[data-balloon][data-balloon-pos=down-left]:hover:after,[data-balloon][data-balloon-pos=down-left]:hover:before,[data-balloon][data-balloon-pos=down-left][data-balloon-visible]:after,[data-balloon][data-balloon-pos=down-left][data-balloon-visible]:before{-webkit-transform:translate(0);transform:translate(0)}[data-balloon][data-balloon-pos=down-right]:after{right:0;margin-top:11px;top:100%;-webkit-transform:translateY(-10px);transform:translateY(-10px)}[data-balloon][data-balloon-pos=down-right]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M33.342 12H1.338c6 0 11.627-12.002 16.002-12.002C21.715-.002 27.406 12 33.342 12z'/%3E%3C/svg%3E");background-size:100% auto;width:18px;height:6px;right:5px;margin-top:5px;top:100%;-webkit-transform:translateY(-10px);transform:translateY(-10px)}[data-balloon][data-balloon-pos=down-right]:hover:after,[data-balloon][data-balloon-pos=down-right]:hover:before,[data-balloon][data-balloon-pos=down-right][data-balloon-visible]:after,[data-balloon][data-balloon-pos=down-right][data-balloon-visible]:before{-webkit-transform:translate(0);transform:translate(0)}[data-balloon][data-balloon-pos=left]:after{margin-right:11px;right:100%;top:50%;-webkit-transform:translate(10px,-50%);transform:translate(10px,-50%)}[data-balloon][data-balloon-pos=left]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M0 33.342V1.338c0 6 12.002 11.627 12.002 16.002C12.002 21.715 0 27.406 0 33.342z'/%3E%3C/svg%3E");background-size:100% auto;width:6px;height:18px;margin-right:5px;right:100%;top:50%;-webkit-transform:translate(10px,-50%);transform:translate(10px,-50%)}[data-balloon][data-balloon-pos=left]:hover:after,[data-balloon][data-balloon-pos=left]:hover:before,[data-balloon][data-balloon-pos=left][data-balloon-visible]:after,[data-balloon][data-balloon-pos=left][data-balloon-visible]:before{-webkit-transform:translateY(-50%);transform:translateY(-50%)}[data-balloon][data-balloon-pos=right]:after{left:100%;margin-left:11px;top:50%;-webkit-transform:translate(-10px,-50%);transform:translate(-10px,-50%)}[data-balloon][data-balloon-pos=right]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M12 2.658v32.004c0-6-12.002-11.627-12.002-16.002C-.002 14.285 12 8.594 12 2.658z'/%3E%3C/svg%3E");background-size:100% auto;width:6px;height:18px;left:100%;margin-left:5px;top:50%;-webkit-transform:translate(-10px,-50%);transform:translate(-10px,-50%)}[data-balloon][data-balloon-pos=right]:hover:after,[data-balloon][data-balloon-pos=right]:hover:before,[data-balloon][data-balloon-pos=right][data-balloon-visible]:after,[data-balloon][data-balloon-pos=right][data-balloon-visible]:before{-webkit-transform:translateY(-50%);transform:translateY(-50%)}[data-balloon][data-balloon-length=small]:after{white-space:normal;width:80px}[data-balloon][data-balloon-length=medium]:after{white-space:normal;width:150px}[data-balloon][data-balloon-length=large]:after{white-space:normal;width:260px}[data-balloon][data-balloon-length=xlarge]:after{white-space:normal;width:380px}@media screen and (max-width:768px){[data-balloon][data-balloon-length=xlarge]:after{white-space:normal;width:90vw}}[data-balloon][data-balloon-length=fit]:after{white-space:normal;width:100%} -@-webkit-keyframes my-face{2%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}4%{-webkit-transform:translateY(-1.5px) rotate(-.5deg);transform:translateY(-1.5px) rotate(-.5deg)}6%{-webkit-transform:translateY(1.5px) rotate(-1.5deg);transform:translateY(1.5px) rotate(-1.5deg)}8%{-webkit-transform:translateY(-1.5px) rotate(-1.5deg);transform:translateY(-1.5px) rotate(-1.5deg)}10%{-webkit-transform:translateY(2.5px) rotate(1.5deg);transform:translateY(2.5px) rotate(1.5deg)}12%{-webkit-transform:translateY(-.5px) rotate(1.5deg);transform:translateY(-.5px) rotate(1.5deg)}14%{-webkit-transform:translateY(-1.5px) rotate(1.5deg);transform:translateY(-1.5px) rotate(1.5deg)}16%{-webkit-transform:translateY(-.5px) rotate(-1.5deg);transform:translateY(-.5px) rotate(-1.5deg)}18%{-webkit-transform:translateY(.5px) rotate(-1.5deg);transform:translateY(.5px) rotate(-1.5deg)}20%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}22%{-webkit-transform:translateY(.5px) rotate(-1.5deg);transform:translateY(.5px) rotate(-1.5deg)}24%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}26%{-webkit-transform:translateY(.5px) rotate(.5deg);transform:translateY(.5px) rotate(.5deg)}28%{-webkit-transform:translateY(.5px) rotate(1.5deg);transform:translateY(.5px) rotate(1.5deg)}30%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}32%{-webkit-transform:translateY(1.5px) rotate(-.5deg);transform:translateY(1.5px) rotate(-.5deg)}34%{-webkit-transform:translateY(1.5px) rotate(-.5deg);transform:translateY(1.5px) rotate(-.5deg)}36%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}38%{-webkit-transform:translateY(1.5px) rotate(-1.5deg);transform:translateY(1.5px) rotate(-1.5deg)}40%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}42%{-webkit-transform:translateY(2.5px) rotate(-1.5deg);transform:translateY(2.5px) rotate(-1.5deg)}44%{-webkit-transform:translateY(1.5px) rotate(.5deg);transform:translateY(1.5px) rotate(.5deg)}46%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}48%{-webkit-transform:translateY(-.5px) rotate(.5deg);transform:translateY(-.5px) rotate(.5deg)}50%{-webkit-transform:translateY(.5px) rotate(.5deg);transform:translateY(.5px) rotate(.5deg)}52%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}54%{-webkit-transform:translateY(-1.5px) rotate(1.5deg);transform:translateY(-1.5px) rotate(1.5deg)}56%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}58%{-webkit-transform:translateY(.5px) rotate(2.5deg);transform:translateY(.5px) rotate(2.5deg)}60%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}62%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}64%{-webkit-transform:translateY(-.5px) rotate(1.5deg);transform:translateY(-.5px) rotate(1.5deg)}66%{-webkit-transform:translateY(1.5px) rotate(-.5deg);transform:translateY(1.5px) rotate(-.5deg)}68%{-webkit-transform:translateY(-1.5px) rotate(-.5deg);transform:translateY(-1.5px) rotate(-.5deg)}70%{-webkit-transform:translateY(1.5px) rotate(.5deg);transform:translateY(1.5px) rotate(.5deg)}72%{-webkit-transform:translateY(2.5px) rotate(1.5deg);transform:translateY(2.5px) rotate(1.5deg)}74%{-webkit-transform:translateY(-.5px) rotate(.5deg);transform:translateY(-.5px) rotate(.5deg)}76%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}78%{-webkit-transform:translateY(-.5px) rotate(1.5deg);transform:translateY(-.5px) rotate(1.5deg)}80%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}82%{-webkit-transform:translateY(-.5px) rotate(.5deg);transform:translateY(-.5px) rotate(.5deg)}84%{-webkit-transform:translateY(1.5px) rotate(2.5deg);transform:translateY(1.5px) rotate(2.5deg)}86%{-webkit-transform:translateY(-1.5px) rotate(-1.5deg);transform:translateY(-1.5px) rotate(-1.5deg)}88%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}90%{-webkit-transform:translateY(2.5px) rotate(-.5deg);transform:translateY(2.5px) rotate(-.5deg)}92%{-webkit-transform:translateY(.5px) rotate(-.5deg);transform:translateY(.5px) rotate(-.5deg)}94%{-webkit-transform:translateY(2.5px) rotate(.5deg);transform:translateY(2.5px) rotate(.5deg)}96%{-webkit-transform:translateY(-.5px) rotate(1.5deg);transform:translateY(-.5px) rotate(1.5deg)}98%{-webkit-transform:translateY(-1.5px) rotate(-.5deg);transform:translateY(-1.5px) rotate(-.5deg)}0%,to{-webkit-transform:translate(0) rotate(0deg);transform:translate(0) rotate(0deg)}}@keyframes my-face{2%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}4%{-webkit-transform:translateY(-1.5px) rotate(-.5deg);transform:translateY(-1.5px) rotate(-.5deg)}6%{-webkit-transform:translateY(1.5px) rotate(-1.5deg);transform:translateY(1.5px) rotate(-1.5deg)}8%{-webkit-transform:translateY(-1.5px) rotate(-1.5deg);transform:translateY(-1.5px) rotate(-1.5deg)}10%{-webkit-transform:translateY(2.5px) rotate(1.5deg);transform:translateY(2.5px) rotate(1.5deg)}12%{-webkit-transform:translateY(-.5px) rotate(1.5deg);transform:translateY(-.5px) rotate(1.5deg)}14%{-webkit-transform:translateY(-1.5px) rotate(1.5deg);transform:translateY(-1.5px) rotate(1.5deg)}16%{-webkit-transform:translateY(-.5px) rotate(-1.5deg);transform:translateY(-.5px) rotate(-1.5deg)}18%{-webkit-transform:translateY(.5px) rotate(-1.5deg);transform:translateY(.5px) rotate(-1.5deg)}20%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}22%{-webkit-transform:translateY(.5px) rotate(-1.5deg);transform:translateY(.5px) rotate(-1.5deg)}24%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}26%{-webkit-transform:translateY(.5px) rotate(.5deg);transform:translateY(.5px) rotate(.5deg)}28%{-webkit-transform:translateY(.5px) rotate(1.5deg);transform:translateY(.5px) rotate(1.5deg)}30%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}32%{-webkit-transform:translateY(1.5px) rotate(-.5deg);transform:translateY(1.5px) rotate(-.5deg)}34%{-webkit-transform:translateY(1.5px) rotate(-.5deg);transform:translateY(1.5px) rotate(-.5deg)}36%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}38%{-webkit-transform:translateY(1.5px) rotate(-1.5deg);transform:translateY(1.5px) rotate(-1.5deg)}40%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}42%{-webkit-transform:translateY(2.5px) rotate(-1.5deg);transform:translateY(2.5px) rotate(-1.5deg)}44%{-webkit-transform:translateY(1.5px) rotate(.5deg);transform:translateY(1.5px) rotate(.5deg)}46%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}48%{-webkit-transform:translateY(-.5px) rotate(.5deg);transform:translateY(-.5px) rotate(.5deg)}50%{-webkit-transform:translateY(.5px) rotate(.5deg);transform:translateY(.5px) rotate(.5deg)}52%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}54%{-webkit-transform:translateY(-1.5px) rotate(1.5deg);transform:translateY(-1.5px) rotate(1.5deg)}56%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}58%{-webkit-transform:translateY(.5px) rotate(2.5deg);transform:translateY(.5px) rotate(2.5deg)}60%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}62%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}64%{-webkit-transform:translateY(-.5px) rotate(1.5deg);transform:translateY(-.5px) rotate(1.5deg)}66%{-webkit-transform:translateY(1.5px) rotate(-.5deg);transform:translateY(1.5px) rotate(-.5deg)}68%{-webkit-transform:translateY(-1.5px) rotate(-.5deg);transform:translateY(-1.5px) rotate(-.5deg)}70%{-webkit-transform:translateY(1.5px) rotate(.5deg);transform:translateY(1.5px) rotate(.5deg)}72%{-webkit-transform:translateY(2.5px) rotate(1.5deg);transform:translateY(2.5px) rotate(1.5deg)}74%{-webkit-transform:translateY(-.5px) rotate(.5deg);transform:translateY(-.5px) rotate(.5deg)}76%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}78%{-webkit-transform:translateY(-.5px) rotate(1.5deg);transform:translateY(-.5px) rotate(1.5deg)}80%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}82%{-webkit-transform:translateY(-.5px) rotate(.5deg);transform:translateY(-.5px) rotate(.5deg)}84%{-webkit-transform:translateY(1.5px) rotate(2.5deg);transform:translateY(1.5px) rotate(2.5deg)}86%{-webkit-transform:translateY(-1.5px) rotate(-1.5deg);transform:translateY(-1.5px) rotate(-1.5deg)}88%{-webkit-transform:translateY(-.5px) rotate(2.5deg);transform:translateY(-.5px) rotate(2.5deg)}90%{-webkit-transform:translateY(2.5px) rotate(-.5deg);transform:translateY(2.5px) rotate(-.5deg)}92%{-webkit-transform:translateY(.5px) rotate(-.5deg);transform:translateY(.5px) rotate(-.5deg)}94%{-webkit-transform:translateY(2.5px) rotate(.5deg);transform:translateY(2.5px) rotate(.5deg)}96%{-webkit-transform:translateY(-.5px) rotate(1.5deg);transform:translateY(-.5px) rotate(1.5deg)}98%{-webkit-transform:translateY(-1.5px) rotate(-.5deg);transform:translateY(-1.5px) rotate(-.5deg)}0%,to{-webkit-transform:translate(0) rotate(0deg);transform:translate(0) rotate(0deg)}}.dplayer{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:1}.dplayer *{box-sizing:content-box}.dplayer svg{width:100%;height:100%}.dplayer svg circle,.dplayer svg path{fill:#fff}.dplayer:-webkit-full-screen{width:100%;height:100%;background:#000;position:fixed;z-index:100000;left:0;top:0;margin:0;padding:0;-webkit-transform:translate(0);transform:translate(0)}.dplayer:-webkit-full-screen .dplayer-danmaku .dplayer-danmaku-bottom.dplayer-danmaku-move,.dplayer:-webkit-full-screen .dplayer-danmaku .dplayer-danmaku-top.dplayer-danmaku-move{-webkit-animation:danmaku-center 6s linear;animation:danmaku-center 6s linear;-webkit-animation-play-state:inherit;animation-play-state:inherit}.dplayer:-webkit-full-screen .dplayer-danmaku .dplayer-danmaku-right.dplayer-danmaku-move{-webkit-animation:danmaku 8s linear;animation:danmaku 8s linear;-webkit-animation-play-state:inherit;animation-play-state:inherit}.dplayer.dplayer-live .dplayer-bar-wrap,.dplayer.dplayer-live.dplayer-no-danmaku .dplayer-setting,.dplayer.dplayer-live .dplayer-setting-loop,.dplayer.dplayer-live .dplayer-setting-speed,.dplayer.dplayer-live .dplayer-time,.dplayer.dplayer-no-danmaku .dplayer-controller .dplayer-icons .dplayer-comment,.dplayer.dplayer-no-danmaku .dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box .dplayer-setting-danmaku,.dplayer.dplayer-no-danmaku .dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box .dplayer-setting-danunlimit,.dplayer.dplayer-no-danmaku .dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box .dplayer-setting-showdan,.dplayer.dplayer-no-danmaku .dplayer-danmaku{display:none}.dplayer.dplayer-arrow .dplayer-danmaku{font-size:18px}.dplayer.dplayer-arrow .dplayer-icon{margin:0 -3px}.dplayer.dplayer-playing .dplayer-danmaku .dplayer-danmaku-move{-webkit-animation-play-state:running;animation-play-state:running}@media (min-width:900px){.dplayer.dplayer-playing .dplayer-controller,.dplayer.dplayer-playing .dplayer-controller-mask{opacity:0}.dplayer.dplayer-playing:hover .dplayer-controller,.dplayer.dplayer-playing:hover .dplayer-controller-mask{opacity:1}}.dplayer.dplayer-loading .dplayer-bezel .diplayer-loading-icon{display:block}.dplayer.dplayer-loading .dplayer-danmaku,.dplayer.dplayer-loading .dplayer-danmaku-move,.dplayer.dplayer-paused .dplayer-danmaku,.dplayer.dplayer-paused .dplayer-danmaku-move{-webkit-animation-play-state:paused;animation-play-state:paused}.dplayer.dplayer-hide-controller{cursor:none}.dplayer.dplayer-hide-controller .dplayer-controller,.dplayer.dplayer-hide-controller .dplayer-controller-mask{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}.dplayer.dplayer-show-controller .dplayer-controller,.dplayer.dplayer-show-controller .dplayer-controller-mask{opacity:1}.dplayer.dplayer-fulled{position:fixed;z-index:100000;left:0;top:0;width:100%;height:100%}.dplayer.dplayer-mobile .dplayer-controller .dplayer-icons .dplayer-camera-icon,.dplayer.dplayer-mobile .dplayer-controller .dplayer-icons .dplayer-volume{display:none}.dplayer.dplayer-mobile .dplayer-controller .dplayer-icons .dplayer-full .dplayer-full-in-icon{position:static;display:inline-block}.dplayer.dplayer-mobile .dplayer-bar-time{display:none}.dplayer-web-fullscreen-fix{position:fixed;top:0;left:0;margin:0;padding:0}[data-balloon]:before{display:none}[data-balloon]:after{padding:.3em .7em;background:hsla(0,0%,7%,.7)}[data-balloon][data-balloon-pos=up]:after{margin-bottom:0}.dplayer-bezel{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff;pointer-events:none}.dplayer-bezel .dplayer-bezel-icon{position:absolute;top:50%;left:50%;margin:-26px 0 0 -26px;height:52px;width:52px;padding:12px;box-sizing:border-box;background:rgba(0,0,0,.5);border-radius:50%;opacity:0;pointer-events:none}.dplayer-bezel .dplayer-bezel-icon.dplayer-bezel-transition{-webkit-animation:bezel-hide .5s linear;animation:bezel-hide .5s linear}@-webkit-keyframes bezel-hide{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform:scale(2);transform:scale(2)}}@keyframes bezel-hide{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform:scale(2);transform:scale(2)}}.dplayer-bezel .dplayer-danloading{position:absolute;top:50%;margin-top:-7px;width:100%;text-align:center;font-size:14px;line-height:14px;-webkit-animation:my-face 5s infinite ease-in-out;animation:my-face 5s infinite ease-in-out}.dplayer-bezel .diplayer-loading-icon{display:none;position:absolute;top:50%;left:50%;margin:-18px 0 0 -18px;height:36px;width:36px;pointer-events:none}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-hide{display:none}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot{-webkit-animation:diplayer-loading-dot-fade .8s ease infinite;animation:diplayer-loading-dot-fade .8s ease infinite;opacity:0;-webkit-transform-origin:4px 4px;transform-origin:4px 4px}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-7{-webkit-animation-delay:.7s;animation-delay:.7s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-6{-webkit-animation-delay:.6s;animation-delay:.6s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-5{-webkit-animation-delay:.5s;animation-delay:.5s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-4{-webkit-animation-delay:.4s;animation-delay:.4s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-3{-webkit-animation-delay:.3s;animation-delay:.3s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-2{-webkit-animation-delay:.2s;animation-delay:.2s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-1{-webkit-animation-delay:.1s;animation-delay:.1s}@-webkit-keyframes diplayer-loading-dot-fade{0%{opacity:.7;-webkit-transform:scale(1.2);transform:scale(1.2)}50%{opacity:.25;-webkit-transform:scale(.9);transform:scale(.9)}to{opacity:.25;-webkit-transform:scale(.85);transform:scale(.85)}}@keyframes diplayer-loading-dot-fade{0%{opacity:.7;-webkit-transform:scale(1.2);transform:scale(1.2)}50%{opacity:.25;-webkit-transform:scale(.9);transform:scale(.9)}to{opacity:.25;-webkit-transform:scale(.85);transform:scale(.85)}}.dplayer-controller-mask{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom;height:98px;width:100%}.dplayer-controller,.dplayer-controller-mask{position:absolute;bottom:0;transition:all .3s ease}.dplayer-controller{left:0;right:0;height:41px;padding:0 20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dplayer-controller.dplayer-controller-comment .dplayer-icons{display:none}.dplayer-controller.dplayer-controller-comment .dplayer-icons.dplayer-comment-box{display:block}.dplayer-controller .dplayer-bar-wrap{padding:5px 0;cursor:pointer;position:absolute;bottom:33px;width:calc(100% - 40px);height:3px}.dplayer-controller .dplayer-bar-wrap:hover .dplayer-bar .dplayer-played .dplayer-thumb{-webkit-transform:scale(1);transform:scale(1)}.dplayer-controller .dplayer-bar-wrap:hover .dplayer-highlight{display:block;width:8px;-webkit-transform:translateX(-4px);transform:translateX(-4px);top:4px;height:40%}.dplayer-controller .dplayer-bar-wrap .dplayer-highlight{z-index:12;position:absolute;top:5px;width:6px;height:20%;border-radius:6px;background-color:#fff;text-align:center;-webkit-transform:translateX(-3px);transform:translateX(-3px);transition:all .2s ease-in-out}.dplayer-controller .dplayer-bar-wrap .dplayer-highlight:hover .dplayer-highlight-text{display:block}.dplayer-controller .dplayer-bar-wrap .dplayer-highlight:hover~.dplayer-bar-preview,.dplayer-controller .dplayer-bar-wrap .dplayer-highlight:hover~.dplayer-bar-time{opacity:0}.dplayer-controller .dplayer-bar-wrap .dplayer-highlight .dplayer-highlight-text{display:none;position:absolute;left:50%;top:-24px;padding:5px 8px;background-color:rgba(0,0,0,.62);color:#fff;border-radius:4px;font-size:12px;white-space:nowrap;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.dplayer-controller .dplayer-bar-wrap .dplayer-bar-preview{position:absolute;background:#fff;pointer-events:none;display:none;background-size:16000px 100%}.dplayer-controller .dplayer-bar-wrap .dplayer-bar-preview-canvas{position:absolute;width:100%;height:100%;z-index:1;pointer-events:none}.dplayer-controller .dplayer-bar-wrap .dplayer-bar-time{position:absolute;left:0;top:-20px;border-radius:4px;padding:5px 7px;background-color:rgba(0,0,0,.62);color:#fff;font-size:12px;text-align:center;opacity:1;transition:opacity .1s ease-in-out;word-wrap:normal;word-break:normal;z-index:2;pointer-events:none}.dplayer-controller .dplayer-bar-wrap .dplayer-bar-time.hidden{opacity:0}.dplayer-controller .dplayer-bar-wrap .dplayer-bar{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.dplayer-controller .dplayer-bar-wrap .dplayer-bar .dplayer-loaded{background:hsla(0,0%,100%,.4);transition:all .5s ease}.dplayer-controller .dplayer-bar-wrap .dplayer-bar .dplayer-loaded,.dplayer-controller .dplayer-bar-wrap .dplayer-bar .dplayer-played{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width}.dplayer-controller .dplayer-bar-wrap .dplayer-bar .dplayer-played .dplayer-thumb{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;-webkit-transform:scale(0);transform:scale(0)}.dplayer-controller .dplayer-icons{height:38px;position:absolute;bottom:0}.dplayer-controller .dplayer-icons.dplayer-comment-box{display:none;position:absolute;transition:all .3s ease-in-out;z-index:2;height:38px;bottom:0;left:20px;right:20px;color:#fff}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-icon{padding:7px}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-icon{position:absolute;left:0;top:0}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-send-icon{position:absolute;right:0;top:0}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box{position:absolute;background:rgba(28,28,28,.9);bottom:41px;left:0;box-shadow:0 0 25px rgba(0,0,0,.3);border-radius:4px;padding:10px 10px 16px;font-size:14px;width:204px;transition:all .3s ease-in-out;-webkit-transform:scale(0);transform:scale(0)}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box.dplayer-comment-setting-open{-webkit-transform:scale(1);transform:scale(1)}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box input[type=radio]{display:none}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box label{cursor:pointer}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-title{font-size:13px;color:#fff;line-height:30px}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-type{font-size:0}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-type .dplayer-comment-setting-title{margin-bottom:6px}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-type label:nth-child(2) span{border-radius:4px 0 0 4px}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-type label:nth-child(4) span{border-radius:0 4px 4px 0}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-type span{width:33%;padding:4px 6px;line-height:16px;display:inline-block;font-size:12px;color:#fff;border:1px solid #fff;margin-right:-1px;box-sizing:border-box;text-align:center;cursor:pointer}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-type input:checked+span{background:#e4e4e6;color:#1c1c1c}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-color{font-size:0}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-color label{font-size:0;padding:6px;display:inline-block}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-color span{width:22px;height:22px;display:inline-block;border-radius:50%;box-sizing:border-box;cursor:pointer}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-setting-box .dplayer-comment-setting-color span:hover{-webkit-animation:my-face 5s infinite ease-in-out;animation:my-face 5s infinite ease-in-out}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-input{outline:none;border:none;padding:8px 31px;font-size:14px;line-height:18px;text-align:center;border-radius:4px;background:none;margin:0;height:100%;box-sizing:border-box;width:100%;color:#fff}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-input::-webkit-input-placeholder{color:#fff;opacity:.8}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-input:-ms-input-placeholder,.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-input::-ms-input-placeholder{color:#fff;opacity:.8}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-input::placeholder{color:#fff;opacity:.8}.dplayer-controller .dplayer-icons.dplayer-comment-box .dplayer-comment-input::-ms-clear{display:none}.dplayer-controller .dplayer-icons.dplayer-icons-left .dplayer-icon{padding:7px}.dplayer-controller .dplayer-icons.dplayer-icons-right{right:20px}.dplayer-controller .dplayer-icons.dplayer-icons-right .dplayer-icon{padding:8px}.dplayer-controller .dplayer-icons .dplayer-live-badge,.dplayer-controller .dplayer-icons .dplayer-time{line-height:38px;color:#eee;text-shadow:0 0 2px rgba(0,0,0,.5);vertical-align:middle;font-size:13px;cursor:default}.dplayer-controller .dplayer-icons .dplayer-live-dot{display:inline-block;width:6px;height:6px;vertical-align:4%;margin-right:5px;content:"";border-radius:6px}.dplayer-controller .dplayer-icons .dplayer-icon{width:40px;height:100%;border:none;background-color:transparent;outline:none;cursor:pointer;vertical-align:middle;box-sizing:border-box;display:inline-block}.dplayer-controller .dplayer-icons .dplayer-icon .dplayer-icon-content{transition:all .2s ease-in-out;opacity:.8}.dplayer-controller .dplayer-icons .dplayer-icon:hover .dplayer-icon-content{opacity:1}.dplayer-controller .dplayer-icons .dplayer-icon.dplayer-quality-icon{color:#fff;width:auto;line-height:22px;font-size:14px}.dplayer-controller .dplayer-icons .dplayer-icon.dplayer-comment-icon{padding:10px 9px 9px}.dplayer-controller .dplayer-icons .dplayer-icon.dplayer-setting-icon{padding-top:8.5px}.dplayer-controller .dplayer-icons .dplayer-icon.dplayer-volume-icon{width:43px}.dplayer-controller .dplayer-icons .dplayer-volume{position:relative;display:inline-block;cursor:pointer;height:100%}.dplayer-controller .dplayer-icons .dplayer-volume:hover .dplayer-volume-bar-wrap .dplayer-volume-bar{width:45px}.dplayer-controller .dplayer-icons .dplayer-volume:hover .dplayer-volume-bar-wrap .dplayer-volume-bar .dplayer-volume-bar-inner .dplayer-thumb{-webkit-transform:scale(1);transform:scale(1)}.dplayer-controller .dplayer-icons .dplayer-volume.dplayer-volume-active .dplayer-volume-bar-wrap .dplayer-volume-bar{width:45px}.dplayer-controller .dplayer-icons .dplayer-volume.dplayer-volume-active .dplayer-volume-bar-wrap .dplayer-volume-bar .dplayer-volume-bar-inner .dplayer-thumb{-webkit-transform:scale(1);transform:scale(1)}.dplayer-controller .dplayer-icons .dplayer-volume .dplayer-volume-bar-wrap{display:inline-block;margin:0 10px 0 -5px;vertical-align:middle;height:100%}.dplayer-controller .dplayer-icons .dplayer-volume .dplayer-volume-bar-wrap .dplayer-volume-bar{position:relative;top:17px;width:0;height:3px;background:#aaa;transition:all .3s ease-in-out}.dplayer-controller .dplayer-icons .dplayer-volume .dplayer-volume-bar-wrap .dplayer-volume-bar .dplayer-volume-bar-inner{position:absolute;bottom:0;left:0;height:100%;transition:all .1s ease;will-change:width}.dplayer-controller .dplayer-icons .dplayer-volume .dplayer-volume-bar-wrap .dplayer-volume-bar .dplayer-volume-bar-inner .dplayer-thumb{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;-webkit-transform:scale(0);transform:scale(0)}.dplayer-controller .dplayer-icons .dplayer-setting,.dplayer-controller .dplayer-icons .dplayer-subtitle-btn{display:inline-block;height:100%}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box{position:absolute;right:0;bottom:50px;-webkit-transform:scale(0);transform:scale(0);width:150px;border-radius:2px;background:rgba(28,28,28,.9);padding:7px 0;transition:all .3s ease-in-out;overflow:hidden;z-index:2}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box>div{display:none}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box>div.dplayer-setting-origin-panel{display:block}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box.dplayer-setting-box-open{-webkit-transform:scale(1);transform:scale(1)}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box.dplayer-setting-box-narrow{width:70px;height:180px;text-align:center}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box.dplayer-setting-box-speed .dplayer-setting-origin-panel{display:none}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box.dplayer-setting-box-speed .dplayer-setting-speed-panel{display:block}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-item,.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-speed-item{height:30px;padding:5px 10px;box-sizing:border-box;cursor:pointer;position:relative}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-item:hover,.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-speed-item:hover{background-color:hsla(0,0%,100%,.1)}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku{padding:5px 0}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku .dplayer-label{padding:0 10px;display:inline}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku:hover .dplayer-label{display:none}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku:hover .dplayer-danmaku-bar-wrap{display:inline-block}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku.dplayer-setting-danmaku-active .dplayer-label{display:none}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku.dplayer-setting-danmaku-active .dplayer-danmaku-bar-wrap{display:inline-block}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku .dplayer-danmaku-bar-wrap{padding:0 10px;box-sizing:border-box;display:none;vertical-align:middle;height:100%;width:100%}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku .dplayer-danmaku-bar-wrap .dplayer-danmaku-bar{position:relative;top:8.5px;width:100%;height:3px;background:#fff;transition:all .3s ease-in-out}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku .dplayer-danmaku-bar-wrap .dplayer-danmaku-bar .dplayer-danmaku-bar-inner{position:absolute;bottom:0;left:0;height:100%;transition:all .1s ease;background:#aaa;will-change:width}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku .dplayer-danmaku-bar-wrap .dplayer-danmaku-bar .dplayer-danmaku-bar-inner .dplayer-thumb{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;background:#aaa}.dplayer-controller .dplayer-icons .dplayer-full{display:inline-block;height:100%;position:relative}.dplayer-controller .dplayer-icons .dplayer-full:hover .dplayer-full-in-icon{display:block}.dplayer-controller .dplayer-icons .dplayer-full .dplayer-full-in-icon{position:absolute;top:-30px;z-index:1;display:none}.dplayer-controller .dplayer-icons .dplayer-quality{position:relative;display:inline-block;height:100%;z-index:2}.dplayer-controller .dplayer-icons .dplayer-quality:hover .dplayer-quality-list,.dplayer-controller .dplayer-icons .dplayer-quality:hover .dplayer-quality-mask{display:block}.dplayer-controller .dplayer-icons .dplayer-quality .dplayer-quality-mask{display:none;position:absolute;bottom:38px;left:-18px;width:80px;padding-bottom:12px}.dplayer-controller .dplayer-icons .dplayer-quality .dplayer-quality-list{display:none;font-size:12px;width:80px;border-radius:2px;background:rgba(28,28,28,.9);padding:5px 0;transition:all .3s ease-in-out;overflow:hidden;color:#fff;text-align:center}.dplayer-controller .dplayer-icons .dplayer-quality .dplayer-quality-item{height:25px;box-sizing:border-box;cursor:pointer;line-height:25px}.dplayer-controller .dplayer-icons .dplayer-quality .dplayer-quality-item:hover{background-color:hsla(0,0%,100%,.1)}.dplayer-controller .dplayer-icons .dplayer-comment{display:inline-block;height:100%}.dplayer-controller .dplayer-icons .dplayer-label{color:#eee;font-size:13px;display:inline-block;vertical-align:middle;white-space:nowrap}.dplayer-controller .dplayer-icons .dplayer-toggle{width:32px;height:20px;text-align:center;font-size:0;vertical-align:middle;position:absolute;top:5px;right:10px}.dplayer-controller .dplayer-icons .dplayer-toggle input{max-height:0;max-width:0;display:none}.dplayer-controller .dplayer-icons .dplayer-toggle input+label{display:inline-block;position:relative;box-shadow:inset 0 0 0 0 #dfdfdf;border:1px solid #dfdfdf;height:20px;width:32px;border-radius:10px;box-sizing:border-box;cursor:pointer;transition:.2s ease-in-out}.dplayer-controller .dplayer-icons .dplayer-toggle input+label:after,.dplayer-controller .dplayer-icons .dplayer-toggle input+label:before{content:"";position:absolute;display:block;height:18px;width:18px;top:0;left:0;border-radius:15px;transition:.2s ease-in-out}.dplayer-controller .dplayer-icons .dplayer-toggle input+label:after{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.4)}.dplayer-controller .dplayer-icons .dplayer-toggle input:checked+label{border-color:hsla(0,0%,100%,.5)}.dplayer-controller .dplayer-icons .dplayer-toggle input:checked+label:before{width:30px;background:hsla(0,0%,100%,.5)}.dplayer-controller .dplayer-icons .dplayer-toggle input:checked+label:after{left:12px}.dplayer-danmaku{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff}.dplayer-danmaku .dplayer-danmaku-item{display:inline-block;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default;white-space:nowrap;text-shadow:.5px .5px .5px rgba(0,0,0,.5)}.dplayer-danmaku .dplayer-danmaku-item--demo{position:absolute;visibility:hidden}.dplayer-danmaku .dplayer-danmaku-right{position:absolute;right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.dplayer-danmaku .dplayer-danmaku-right.dplayer-danmaku-move{will-change:transform;-webkit-animation:danmaku 5s linear;animation:danmaku 5s linear;-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes danmaku{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes danmaku{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}}.dplayer-danmaku .dplayer-danmaku-bottom,.dplayer-danmaku .dplayer-danmaku-top{position:absolute;width:100%;text-align:center;visibility:hidden}.dplayer-danmaku .dplayer-danmaku-bottom.dplayer-danmaku-move,.dplayer-danmaku .dplayer-danmaku-top.dplayer-danmaku-move{will-change:visibility;-webkit-animation:danmaku-center 4s linear;animation:danmaku-center 4s linear;-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes danmaku-center{0%{visibility:visible}to{visibility:visible}}@keyframes danmaku-center{0%{visibility:visible}to{visibility:visible}}.dplayer-logo{pointer-events:none;position:absolute;left:20px;top:20px;max-width:50px;max-height:50px}.dplayer-logo img{max-width:100%;max-height:100%;background:none}.dplayer-menu{position:absolute;width:170px;border-radius:2px;background:rgba(28,28,28,.85);padding:5px 0;overflow:hidden;z-index:3;display:none}.dplayer-menu.dplayer-menu-show{display:block}.dplayer-menu .dplayer-menu-item{height:30px;box-sizing:border-box;cursor:pointer}.dplayer-menu .dplayer-menu-item:hover{background-color:hsla(0,0%,100%,.1)}.dplayer-menu .dplayer-menu-item a{padding:0 10px;line-height:30px;color:#eee;font-size:13px;display:inline-block;vertical-align:middle;width:100%;box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dplayer-menu .dplayer-menu-item a:hover{text-decoration:none}.dplayer-notice{opacity:0;position:absolute;bottom:60px;left:20px;font-size:14px;border-radius:2px;background:rgba(28,28,28,.9);padding:7px 20px;transition:all .3s ease-in-out;overflow:hidden;color:#fff;pointer-events:none}.dplayer-subtitle{position:absolute;bottom:40px;width:90%;left:5%;text-align:center;color:#fff;text-shadow:.5px .5px .5px rgba(0,0,0,.5);font-size:20px}.dplayer-subtitle.dplayer-subtitle-hide{display:none}.dplayer-mask{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.dplayer-mask.dplayer-mask-show{display:block}.dplayer-video-wrap{position:relative;background:#000;font-size:0;width:100%;height:100%}.dplayer-video-wrap .dplayer-video{width:100%;height:100%;display:none}.dplayer-video-wrap .dplayer-video-current{display:block}.dplayer-video-wrap .dplayer-video-prepare{display:none}.dplayer-info-panel{position:absolute;top:10px;left:10px;width:400px;background:rgba(28,28,28,.8);padding:10px;color:#fff;font-size:12px;border-radius:2px}.dplayer-info-panel-hide{display:none}.dplayer-info-panel .dplayer-info-panel-close{cursor:pointer;position:absolute;right:10px;top:10px}.dplayer-info-panel .dplayer-info-panel-item>span{display:inline-block;vertical-align:middle;line-height:15px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dplayer-info-panel .dplayer-info-panel-item-title{width:100px;text-align:right;margin-right:10px}.dplayer-info-panel .dplayer-info-panel-item-data{width:260px} - -/*# sourceMappingURL=DPlayer.min.css.map*/ \ No newline at end of file diff --git a/css/mdui.min.css b/css/mdui.min.css deleted file mode 100644 index 5bdac7e..0000000 --- a/css/mdui.min.css +++ /dev/null @@ -1 +0,0 @@ -/*! * mdui v0.4.3 (https://mdui.org) * Copyright 2016-2019 zdhxiong * Licensed under MIT */ .mdui-theme-primary-amber .mdui-color-theme { color: rgba(0, 0, 0, .87) !important; background-color: #ffc107 !important } .mdui-theme-primary-amber .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #fff8e1 !important } .mdui-theme-primary-amber .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #ffecb3 !important } .mdui-theme-primary-amber .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #ffe082 !important } .mdui-theme-primary-amber .mdui-color-theme-300 { color: rgba(0, 0, 0, .87) !important; background-color: #ffd54f !important } .mdui-theme-primary-amber .mdui-color-theme-400 { color: rgba(0, 0, 0, .87) !important; background-color: #ffca28 !important } .mdui-theme-primary-amber .mdui-color-theme-500 { color: rgba(0, 0, 0, .87) !important; background-color: #ffc107 !important } .mdui-theme-primary-amber .mdui-color-theme-600 { color: rgba(0, 0, 0, .87) !important; background-color: #ffb300 !important } .mdui-theme-primary-amber .mdui-color-theme-700 { color: rgba(0, 0, 0, .87) !important; background-color: #ffa000 !important } .mdui-theme-primary-amber .mdui-color-theme-800 { color: rgba(0, 0, 0, .87) !important; background-color: #ff8f00 !important } .mdui-theme-primary-amber .mdui-color-theme-900 { color: rgba(0, 0, 0, .87) !important; background-color: #ff6f00 !important } .mdui-theme-primary-blue .mdui-color-theme { color: rgba(0, 0, 0, .87) !important; background-color: #2196f3 !important } .mdui-theme-primary-blue .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #e3f2fd !important } .mdui-theme-primary-blue .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #bbdefb !important } .mdui-theme-primary-blue .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #90caf9 !important } .mdui-theme-primary-blue .mdui-color-theme-300 { color: rgba(0, 0, 0, .87) !important; background-color: #64b5f6 !important } .mdui-theme-primary-blue .mdui-color-theme-400 { color: rgba(0, 0, 0, .87) !important; background-color: #42a5f5 !important } .mdui-theme-primary-blue .mdui-color-theme-500 { color: rgba(0, 0, 0, .87) !important; background-color: #2196f3 !important } .mdui-theme-primary-blue .mdui-color-theme-600 { color: #fff !important; background-color: #1e88e5 !important } .mdui-theme-primary-blue .mdui-color-theme-700 { color: #fff !important; background-color: #1976d2 !important } .mdui-theme-primary-blue .mdui-color-theme-800 { color: #fff !important; background-color: #1565c0 !important } .mdui-theme-primary-blue .mdui-color-theme-900 { color: #fff !important; background-color: #0d47a1 !important } .mdui-theme-primary-blue-grey .mdui-color-theme { color: #fff !important; background-color: #607d8b !important } .mdui-theme-primary-blue-grey .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #eceff1 !important } .mdui-theme-primary-blue-grey .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #cfd8dc !important } .mdui-theme-primary-blue-grey .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #b0bec5 !important } .mdui-theme-primary-blue-grey .mdui-color-theme-300 { color: rgba(0, 0, 0, .87) !important; background-color: #90a4ae !important } .mdui-theme-primary-blue-grey .mdui-color-theme-400 { color: #fff !important; background-color: #78909c !important } .mdui-theme-primary-blue-grey .mdui-color-theme-500 { color: #fff !important; background-color: #607d8b !important } .mdui-theme-primary-blue-grey .mdui-color-theme-600 { color: #fff !important; background-color: #546e7a !important } .mdui-theme-primary-blue-grey .mdui-color-theme-700 { color: #fff !important; background-color: #455a64 !important } .mdui-theme-primary-blue-grey .mdui-color-theme-800 { color: #fff !important; background-color: #37474f !important } .mdui-theme-primary-blue-grey .mdui-color-theme-900 { color: #fff !important; background-color: #263238 !important } .mdui-theme-primary-brown .mdui-color-theme { color: #fff !important; background-color: #795548 !important } .mdui-theme-primary-brown .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #efebe9 !important } .mdui-theme-primary-brown .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #d7ccc8 !important } .mdui-theme-primary-brown .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #bcaaa4 !important } .mdui-theme-primary-brown .mdui-color-theme-300 { color: #fff !important; background-color: #a1887f !important } .mdui-theme-primary-brown .mdui-color-theme-400 { color: #fff !important; background-color: #8d6e63 !important } .mdui-theme-primary-brown .mdui-color-theme-500 { color: #fff !important; background-color: #795548 !important } .mdui-theme-primary-brown .mdui-color-theme-600 { color: #fff !important; background-color: #6d4c41 !important } .mdui-theme-primary-brown .mdui-color-theme-700 { color: #fff !important; background-color: #5d4037 !important } .mdui-theme-primary-brown .mdui-color-theme-800 { color: #fff !important; background-color: #4e342e !important } .mdui-theme-primary-brown .mdui-color-theme-900 { color: #fff !important; background-color: #3e2723 !important } .mdui-theme-primary-cyan .mdui-color-theme { color: rgba(0, 0, 0, .87) !important; background-color: #00bcd4 !important } .mdui-theme-primary-cyan .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #e0f7fa !important } .mdui-theme-primary-cyan .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #b2ebf2 !important } .mdui-theme-primary-cyan .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #80deea !important } .mdui-theme-primary-cyan .mdui-color-theme-300 { color: rgba(0, 0, 0, .87) !important; background-color: #4dd0e1 !important } .mdui-theme-primary-cyan .mdui-color-theme-400 { color: rgba(0, 0, 0, .87) !important; background-color: #26c6da !important } .mdui-theme-primary-cyan .mdui-color-theme-500 { color: rgba(0, 0, 0, .87) !important; background-color: #00bcd4 !important } .mdui-theme-primary-cyan .mdui-color-theme-600 { color: rgba(0, 0, 0, .87) !important; background-color: #00acc1 !important } .mdui-theme-primary-cyan .mdui-color-theme-700 { color: #fff !important; background-color: #0097a7 !important } .mdui-theme-primary-cyan .mdui-color-theme-800 { color: #fff !important; background-color: #00838f !important } .mdui-theme-primary-cyan .mdui-color-theme-900 { color: #fff !important; background-color: #006064 !important } .mdui-theme-primary-deep-orange .mdui-color-theme { color: rgba(0, 0, 0, .87) !important; background-color: #ff5722 !important } .mdui-theme-primary-deep-orange .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #fbe9e7 !important } .mdui-theme-primary-deep-orange .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #ffccbc !important } .mdui-theme-primary-deep-orange .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #ffab91 !important } .mdui-theme-primary-deep-orange .mdui-color-theme-300 { color: rgba(0, 0, 0, .87) !important; background-color: #ff8a65 !important } .mdui-theme-primary-deep-orange .mdui-color-theme-400 { color: rgba(0, 0, 0, .87) !important; background-color: #ff7043 !important } .mdui-theme-primary-deep-orange .mdui-color-theme-500 { color: rgba(0, 0, 0, .87) !important; background-color: #ff5722 !important } .mdui-theme-primary-deep-orange .mdui-color-theme-600 { color: #fff !important; background-color: #f4511e !important } .mdui-theme-primary-deep-orange .mdui-color-theme-700 { color: #fff !important; background-color: #e64a19 !important } .mdui-theme-primary-deep-orange .mdui-color-theme-800 { color: #fff !important; background-color: #d84315 !important } .mdui-theme-primary-deep-orange .mdui-color-theme-900 { color: #fff !important; background-color: #bf360c !important } .mdui-theme-primary-deep-purple .mdui-color-theme { color: #fff !important; background-color: #673ab7 !important } .mdui-theme-primary-deep-purple .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #ede7f6 !important } .mdui-theme-primary-deep-purple .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #d1c4e9 !important } .mdui-theme-primary-deep-purple .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #b39ddb !important } .mdui-theme-primary-deep-purple .mdui-color-theme-300 { color: #fff !important; background-color: #9575cd !important } .mdui-theme-primary-deep-purple .mdui-color-theme-400 { color: #fff !important; background-color: #7e57c2 !important } .mdui-theme-primary-deep-purple .mdui-color-theme-500 { color: #fff !important; background-color: #673ab7 !important } .mdui-theme-primary-deep-purple .mdui-color-theme-600 { color: #fff !important; background-color: #5e35b1 !important } .mdui-theme-primary-deep-purple .mdui-color-theme-700 { color: #fff !important; background-color: #512da8 !important } .mdui-theme-primary-deep-purple .mdui-color-theme-800 { color: #fff !important; background-color: #4527a0 !important } .mdui-theme-primary-deep-purple .mdui-color-theme-900 { color: #fff !important; background-color: #311b92 !important } .mdui-theme-primary-green .mdui-color-theme { color: rgba(0, 0, 0, .87) !important; background-color: #4caf50 !important } .mdui-theme-primary-green .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #e8f5e9 !important } .mdui-theme-primary-green .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #c8e6c9 !important } .mdui-theme-primary-green .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #a5d6a7 !important } .mdui-theme-primary-green .mdui-color-theme-300 { color: rgba(0, 0, 0, .87) !important; background-color: #81c784 !important } .mdui-theme-primary-green .mdui-color-theme-400 { color: rgba(0, 0, 0, .87) !important; background-color: #66bb6a !important } .mdui-theme-primary-green .mdui-color-theme-500 { color: rgba(0, 0, 0, .87) !important; background-color: #4caf50 !important } .mdui-theme-primary-green .mdui-color-theme-600 { color: #fff !important; background-color: #43a047 !important } .mdui-theme-primary-green .mdui-color-theme-700 { color: #fff !important; background-color: #388e3c !important } .mdui-theme-primary-green .mdui-color-theme-800 { color: #fff !important; background-color: #2e7d32 !important } .mdui-theme-primary-green .mdui-color-theme-900 { color: #fff !important; background-color: #1b5e20 !important } .mdui-theme-primary-grey .mdui-color-theme { color: rgba(0, 0, 0, .87) !important; background-color: #9e9e9e !important } .mdui-theme-primary-grey .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #fafafa !important } .mdui-theme-primary-grey .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #f5f5f5 !important } .mdui-theme-primary-grey .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #eee !important } .mdui-theme-primary-grey .mdui-color-theme-300 { color: rgba(0, 0, 0, .87) !important; background-color: #e0e0e0 !important } .mdui-theme-primary-grey .mdui-color-theme-400 { color: rgba(0, 0, 0, .87) !important; background-color: #bdbdbd !important } .mdui-theme-primary-grey .mdui-color-theme-500 { color: rgba(0, 0, 0, .87) !important; background-color: #9e9e9e !important } .mdui-theme-primary-grey .mdui-color-theme-600 { color: #fff !important; background-color: #757575 !important } .mdui-theme-primary-grey .mdui-color-theme-700 { color: #fff !important; background-color: #616161 !important } .mdui-theme-primary-grey .mdui-color-theme-800 { color: #fff !important; background-color: #424242 !important } .mdui-theme-primary-grey .mdui-color-theme-900 { color: #fff !important; background-color: #212121 !important } .mdui-theme-primary-indigo .mdui-color-theme { color: #fff !important; background-color: #3f51b5 !important } .mdui-theme-primary-indigo .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #e8eaf6 !important } .mdui-theme-primary-indigo .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #c5cae9 !important } .mdui-theme-primary-indigo .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #9fa8da !important } .mdui-theme-primary-indigo .mdui-color-theme-300 { color: #fff !important; background-color: #7986cb !important } .mdui-theme-primary-indigo .mdui-color-theme-400 { color: #fff !important; background-color: #5c6bc0 !important } .mdui-theme-primary-indigo .mdui-color-theme-500 { color: #fff !important; background-color: #3f51b5 !important } .mdui-theme-primary-indigo .mdui-color-theme-600 { color: #fff !important; background-color: #3949ab !important } .mdui-theme-primary-indigo .mdui-color-theme-700 { color: #fff !important; background-color: #303f9f !important } .mdui-theme-primary-indigo .mdui-color-theme-800 { color: #fff !important; background-color: #283593 !important } .mdui-theme-primary-indigo .mdui-color-theme-900 { color: #fff !important; background-color: #1a237e !important } .mdui-theme-primary-light-blue .mdui-color-theme { color: rgba(0, 0, 0, .87) !important; background-color: #03a9f4 !important } .mdui-theme-primary-light-blue .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #e1f5fe !important } .mdui-theme-primary-light-blue .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #b3e5fc !important } .mdui-theme-primary-light-blue .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #81d4fa !important } .mdui-theme-primary-light-blue .mdui-color-theme-300 { color: rgba(0, 0, 0, .87) !important; background-color: #4fc3f7 !important } .mdui-theme-primary-light-blue .mdui-color-theme-400 { color: rgba(0, 0, 0, .87) !important; background-color: #29b6f6 !important } .mdui-theme-primary-light-blue .mdui-color-theme-500 { color: rgba(0, 0, 0, .87) !important; background-color: #03a9f4 !important } .mdui-theme-primary-light-blue .mdui-color-theme-600 { color: rgba(0, 0, 0, .87) !important; background-color: #039be5 !important } .mdui-theme-primary-light-blue .mdui-color-theme-700 { color: #fff !important; background-color: #0288d1 !important } .mdui-theme-primary-light-blue .mdui-color-theme-800 { color: #fff !important; background-color: #0277bd !important } .mdui-theme-primary-light-blue .mdui-color-theme-900 { color: #fff !important; background-color: #01579b !important } .mdui-theme-primary-light-green .mdui-color-theme { color: rgba(0, 0, 0, .87) !important; background-color: #8bc34a !important } .mdui-theme-primary-light-green .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #f1f8e9 !important } .mdui-theme-primary-light-green .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #dcedc8 !important } .mdui-theme-primary-light-green .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #c5e1a5 !important } .mdui-theme-primary-light-green .mdui-color-theme-300 { color: rgba(0, 0, 0, .87) !important; background-color: #aed581 !important } .mdui-theme-primary-light-green .mdui-color-theme-400 { color: rgba(0, 0, 0, .87) !important; background-color: #9ccc65 !important } .mdui-theme-primary-light-green .mdui-color-theme-500 { color: rgba(0, 0, 0, .87) !important; background-color: #8bc34a !important } .mdui-theme-primary-light-green .mdui-color-theme-600 { color: rgba(0, 0, 0, .87) !important; background-color: #7cb342 !important } .mdui-theme-primary-light-green .mdui-color-theme-700 { color: rgba(0, 0, 0, .87) !important; background-color: #689f38 !important } .mdui-theme-primary-light-green .mdui-color-theme-800 { color: #fff !important; background-color: #558b2f !important } .mdui-theme-primary-light-green .mdui-color-theme-900 { color: #fff !important; background-color: #33691e !important } .mdui-theme-primary-lime .mdui-color-theme { color: rgba(0, 0, 0, .87) !important; background-color: #cddc39 !important } .mdui-theme-primary-lime .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #f9fbe7 !important } .mdui-theme-primary-lime .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #f0f4c3 !important } .mdui-theme-primary-lime .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #e6ee9c !important } .mdui-theme-primary-lime .mdui-color-theme-300 { color: rgba(0, 0, 0, .87) !important; background-color: #dce775 !important } .mdui-theme-primary-lime .mdui-color-theme-400 { color: rgba(0, 0, 0, .87) !important; background-color: #d4e157 !important } .mdui-theme-primary-lime .mdui-color-theme-500 { color: rgba(0, 0, 0, .87) !important; background-color: #cddc39 !important } .mdui-theme-primary-lime .mdui-color-theme-600 { color: rgba(0, 0, 0, .87) !important; background-color: #c0ca33 !important } .mdui-theme-primary-lime .mdui-color-theme-700 { color: rgba(0, 0, 0, .87) !important; background-color: #afb42b !important } .mdui-theme-primary-lime .mdui-color-theme-800 { color: rgba(0, 0, 0, .87) !important; background-color: #9e9d24 !important } .mdui-theme-primary-lime .mdui-color-theme-900 { color: #fff !important; background-color: #827717 !important } .mdui-theme-primary-orange .mdui-color-theme { color: rgba(0, 0, 0, .87) !important; background-color: #ff9800 !important } .mdui-theme-primary-orange .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #fff3e0 !important } .mdui-theme-primary-orange .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #ffe0b2 !important } .mdui-theme-primary-orange .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #ffcc80 !important } .mdui-theme-primary-orange .mdui-color-theme-300 { color: rgba(0, 0, 0, .87) !important; background-color: #ffb74d !important } .mdui-theme-primary-orange .mdui-color-theme-400 { color: rgba(0, 0, 0, .87) !important; background-color: #ffa726 !important } .mdui-theme-primary-orange .mdui-color-theme-500 { color: rgba(0, 0, 0, .87) !important; background-color: #ff9800 !important } .mdui-theme-primary-orange .mdui-color-theme-600 { color: rgba(0, 0, 0, .87) !important; background-color: #fb8c00 !important } .mdui-theme-primary-orange .mdui-color-theme-700 { color: rgba(0, 0, 0, .87) !important; background-color: #f57c00 !important } .mdui-theme-primary-orange .mdui-color-theme-800 { color: rgba(0, 0, 0, .87) !important; background-color: #ef6c00 !important } .mdui-theme-primary-orange .mdui-color-theme-900 { color: #fff !important; background-color: #e65100 !important } .mdui-theme-primary-pink .mdui-color-theme { color: #fff !important; background-color: #e91e63 !important } .mdui-theme-primary-pink .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #fce4ec !important } .mdui-theme-primary-pink .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #f8bbd0 !important } .mdui-theme-primary-pink .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #f48fb1 !important } .mdui-theme-primary-pink .mdui-color-theme-300 { color: rgba(0, 0, 0, .87) !important; background-color: #f06292 !important } .mdui-theme-primary-pink .mdui-color-theme-400 { color: #fff !important; background-color: #ec407a !important } .mdui-theme-primary-pink .mdui-color-theme-500 { color: #fff !important; background-color: #e91e63 !important } .mdui-theme-primary-pink .mdui-color-theme-600 { color: #fff !important; background-color: #d81b60 !important } .mdui-theme-primary-pink .mdui-color-theme-700 { color: #fff !important; background-color: #c2185b !important } .mdui-theme-primary-pink .mdui-color-theme-800 { color: #fff !important; background-color: #ad1457 !important } .mdui-theme-primary-pink .mdui-color-theme-900 { color: #fff !important; background-color: #880e4f !important } .mdui-theme-primary-purple .mdui-color-theme { color: #fff !important; background-color: #9c27b0 !important } .mdui-theme-primary-purple .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #f3e5f5 !important } .mdui-theme-primary-purple .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #e1bee7 !important } .mdui-theme-primary-purple .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #ce93d8 !important } .mdui-theme-primary-purple .mdui-color-theme-300 { color: #fff !important; background-color: #ba68c8 !important } .mdui-theme-primary-purple .mdui-color-theme-400 { color: #fff !important; background-color: #ab47bc !important } .mdui-theme-primary-purple .mdui-color-theme-500 { color: #fff !important; background-color: #9c27b0 !important } .mdui-theme-primary-purple .mdui-color-theme-600 { color: #fff !important; background-color: #8e24aa !important } .mdui-theme-primary-purple .mdui-color-theme-700 { color: #fff !important; background-color: #7b1fa2 !important } .mdui-theme-primary-purple .mdui-color-theme-800 { color: #fff !important; background-color: #6a1b9a !important } .mdui-theme-primary-purple .mdui-color-theme-900 { color: #fff !important; background-color: #4a148c !important } .mdui-theme-primary-red .mdui-color-theme { color: #fff !important; background-color: #f44336 !important } .mdui-theme-primary-red .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #ffebee !important } .mdui-theme-primary-red .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #ffcdd2 !important } .mdui-theme-primary-red .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #ef9a9a !important } .mdui-theme-primary-red .mdui-color-theme-300 { color: rgba(0, 0, 0, .87) !important; background-color: #e57373 !important } .mdui-theme-primary-red .mdui-color-theme-400 { color: #fff !important; background-color: #ef5350 !important } .mdui-theme-primary-red .mdui-color-theme-500 { color: #fff !important; background-color: #f44336 !important } .mdui-theme-primary-red .mdui-color-theme-600 { color: #fff !important; background-color: #e53935 !important } .mdui-theme-primary-red .mdui-color-theme-700 { color: #fff !important; background-color: #d32f2f !important } .mdui-theme-primary-red .mdui-color-theme-800 { color: #fff !important; background-color: #c62828 !important } .mdui-theme-primary-red .mdui-color-theme-900 { color: #fff !important; background-color: #b71c1c !important } .mdui-theme-primary-teal .mdui-color-theme { color: #fff !important; background-color: #009688 !important } .mdui-theme-primary-teal .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #e0f2f1 !important } .mdui-theme-primary-teal .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #b2dfdb !important } .mdui-theme-primary-teal .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #80cbc4 !important } .mdui-theme-primary-teal .mdui-color-theme-300 { color: rgba(0, 0, 0, .87) !important; background-color: #4db6ac !important } .mdui-theme-primary-teal .mdui-color-theme-400 { color: rgba(0, 0, 0, .87) !important; background-color: #26a69a !important } .mdui-theme-primary-teal .mdui-color-theme-500 { color: #fff !important; background-color: #009688 !important } .mdui-theme-primary-teal .mdui-color-theme-600 { color: #fff !important; background-color: #00897b !important } .mdui-theme-primary-teal .mdui-color-theme-700 { color: #fff !important; background-color: #00796b !important } .mdui-theme-primary-teal .mdui-color-theme-800 { color: #fff !important; background-color: #00695c !important } .mdui-theme-primary-teal .mdui-color-theme-900 { color: #fff !important; background-color: #004d40 !important } .mdui-theme-primary-yellow .mdui-color-theme { color: rgba(0, 0, 0, .87) !important; background-color: #ffeb3b !important } .mdui-theme-primary-yellow .mdui-color-theme-50 { color: rgba(0, 0, 0, .87) !important; background-color: #fffde7 !important } .mdui-theme-primary-yellow .mdui-color-theme-100 { color: rgba(0, 0, 0, .87) !important; background-color: #fff9c4 !important } .mdui-theme-primary-yellow .mdui-color-theme-200 { color: rgba(0, 0, 0, .87) !important; background-color: #fff59d !important } .mdui-theme-primary-yellow .mdui-color-theme-300 { color: rgba(0, 0, 0, .87) !important; background-color: #fff176 !important } .mdui-theme-primary-yellow .mdui-color-theme-400 { color: rgba(0, 0, 0, .87) !important; background-color: #ffee58 !important } .mdui-theme-primary-yellow .mdui-color-theme-500 { color: rgba(0, 0, 0, .87) !important; background-color: #ffeb3b !important } .mdui-theme-primary-yellow .mdui-color-theme-600 { color: rgba(0, 0, 0, .87) !important; background-color: #fdd835 !important } .mdui-theme-primary-yellow .mdui-color-theme-700 { color: rgba(0, 0, 0, .87) !important; background-color: #fbc02d !important } .mdui-theme-primary-yellow .mdui-color-theme-800 { color: rgba(0, 0, 0, .87) !important; background-color: #f9a825 !important } .mdui-theme-primary-yellow .mdui-color-theme-900 { color: rgba(0, 0, 0, .87) !important; background-color: #f57f17 !important } .mdui-theme-accent-amber .mdui-color-theme-accent { color: rgba(0, 0, 0, .87) !important; background-color: #ffd740 !important } .mdui-theme-accent-amber .mdui-color-theme-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #ffe57f !important } .mdui-theme-accent-amber .mdui-color-theme-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #ffd740 !important } .mdui-theme-accent-amber .mdui-color-theme-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #ffc400 !important } .mdui-theme-accent-amber .mdui-color-theme-a700 { color: rgba(0, 0, 0, .87) !important; background-color: #ffab00 !important } .mdui-theme-accent-blue .mdui-color-theme-accent { color: #fff !important; background-color: #448aff !important } .mdui-theme-accent-blue .mdui-color-theme-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #82b1ff !important } .mdui-theme-accent-blue .mdui-color-theme-a200 { color: #fff !important; background-color: #448aff !important } .mdui-theme-accent-blue .mdui-color-theme-a400 { color: #fff !important; background-color: #2979ff !important } .mdui-theme-accent-blue .mdui-color-theme-a700 { color: #fff !important; background-color: #2962ff !important } .mdui-theme-accent-cyan .mdui-color-theme-accent { color: rgba(0, 0, 0, .87) !important; background-color: #18ffff !important } .mdui-theme-accent-cyan .mdui-color-theme-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #84ffff !important } .mdui-theme-accent-cyan .mdui-color-theme-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #18ffff !important } .mdui-theme-accent-cyan .mdui-color-theme-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #00e5ff !important } .mdui-theme-accent-cyan .mdui-color-theme-a700 { color: rgba(0, 0, 0, .87) !important; background-color: #00b8d4 !important } .mdui-theme-accent-deep-orange .mdui-color-theme-accent { color: rgba(0, 0, 0, .87) !important; background-color: #ff6e40 !important } .mdui-theme-accent-deep-orange .mdui-color-theme-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #ff9e80 !important } .mdui-theme-accent-deep-orange .mdui-color-theme-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #ff6e40 !important } .mdui-theme-accent-deep-orange .mdui-color-theme-a400 { color: #fff !important; background-color: #ff3d00 !important } .mdui-theme-accent-deep-orange .mdui-color-theme-a700 { color: #fff !important; background-color: #dd2c00 !important } .mdui-theme-accent-deep-purple .mdui-color-theme-accent { color: #fff !important; background-color: #7c4dff !important } .mdui-theme-accent-deep-purple .mdui-color-theme-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #b388ff !important } .mdui-theme-accent-deep-purple .mdui-color-theme-a200 { color: #fff !important; background-color: #7c4dff !important } .mdui-theme-accent-deep-purple .mdui-color-theme-a400 { color: #fff !important; background-color: #651fff !important } .mdui-theme-accent-deep-purple .mdui-color-theme-a700 { color: #fff !important; background-color: #6200ea !important } .mdui-theme-accent-green .mdui-color-theme-accent { color: rgba(0, 0, 0, .87) !important; background-color: #69f0ae !important } .mdui-theme-accent-green .mdui-color-theme-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #b9f6ca !important } .mdui-theme-accent-green .mdui-color-theme-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #69f0ae !important } .mdui-theme-accent-green .mdui-color-theme-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #00e676 !important } .mdui-theme-accent-green .mdui-color-theme-a700 { color: rgba(0, 0, 0, .87) !important; background-color: #00c853 !important } .mdui-theme-accent-indigo .mdui-color-theme-accent { color: #fff !important; background-color: #536dfe !important } .mdui-theme-accent-indigo .mdui-color-theme-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #8c9eff !important } .mdui-theme-accent-indigo .mdui-color-theme-a200 { color: #fff !important; background-color: #536dfe !important } .mdui-theme-accent-indigo .mdui-color-theme-a400 { color: #fff !important; background-color: #3d5afe !important } .mdui-theme-accent-indigo .mdui-color-theme-a700 { color: #fff !important; background-color: #304ffe !important } .mdui-theme-accent-light-blue .mdui-color-theme-accent { color: rgba(0, 0, 0, .87) !important; background-color: #40c4ff !important } .mdui-theme-accent-light-blue .mdui-color-theme-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #80d8ff !important } .mdui-theme-accent-light-blue .mdui-color-theme-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #40c4ff !important } .mdui-theme-accent-light-blue .mdui-color-theme-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #00b0ff !important } .mdui-theme-accent-light-blue .mdui-color-theme-a700 { color: #fff !important; background-color: #0091ea !important } .mdui-theme-accent-light-green .mdui-color-theme-accent { color: rgba(0, 0, 0, .87) !important; background-color: #b2ff59 !important } .mdui-theme-accent-light-green .mdui-color-theme-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #ccff90 !important } .mdui-theme-accent-light-green .mdui-color-theme-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #b2ff59 !important } .mdui-theme-accent-light-green .mdui-color-theme-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #76ff03 !important } .mdui-theme-accent-light-green .mdui-color-theme-a700 { color: rgba(0, 0, 0, .87) !important; background-color: #64dd17 !important } .mdui-theme-accent-lime .mdui-color-theme-accent { color: rgba(0, 0, 0, .87) !important; background-color: #eeff41 !important } .mdui-theme-accent-lime .mdui-color-theme-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #f4ff81 !important } .mdui-theme-accent-lime .mdui-color-theme-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #eeff41 !important } .mdui-theme-accent-lime .mdui-color-theme-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #c6ff00 !important } .mdui-theme-accent-lime .mdui-color-theme-a700 { color: rgba(0, 0, 0, .87) !important; background-color: #aeea00 !important } .mdui-theme-accent-orange .mdui-color-theme-accent { color: rgba(0, 0, 0, .87) !important; background-color: #ffab40 !important } .mdui-theme-accent-orange .mdui-color-theme-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #ffd180 !important } .mdui-theme-accent-orange .mdui-color-theme-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #ffab40 !important } .mdui-theme-accent-orange .mdui-color-theme-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #ff9100 !important } .mdui-theme-accent-orange .mdui-color-theme-a700 { color: rgba(0, 0, 0, .87) !important; background-color: #ff6d00 !important } .mdui-theme-accent-pink .mdui-color-theme-accent { color: #fff !important; background-color: #ff4081 !important } .mdui-theme-accent-pink .mdui-color-theme-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #ff80ab !important } .mdui-theme-accent-pink .mdui-color-theme-a200 { color: #fff !important; background-color: #ff4081 !important } .mdui-theme-accent-pink .mdui-color-theme-a400 { color: #fff !important; background-color: #f50057 !important } .mdui-theme-accent-pink .mdui-color-theme-a700 { color: #fff !important; background-color: #c51162 !important } .mdui-theme-accent-purple .mdui-color-theme-accent { color: #fff !important; background-color: #e040fb !important } .mdui-theme-accent-purple .mdui-color-theme-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #ea80fc !important } .mdui-theme-accent-purple .mdui-color-theme-a200 { color: #fff !important; background-color: #e040fb !important } .mdui-theme-accent-purple .mdui-color-theme-a400 { color: #fff !important; background-color: #d500f9 !important } .mdui-theme-accent-purple .mdui-color-theme-a700 { color: #fff !important; background-color: #a0f !important } .mdui-theme-accent-red .mdui-color-theme-accent { color: #fff !important; background-color: #ff5252 !important } .mdui-theme-accent-red .mdui-color-theme-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #ff8a80 !important } .mdui-theme-accent-red .mdui-color-theme-a200 { color: #fff !important; background-color: #ff5252 !important } .mdui-theme-accent-red .mdui-color-theme-a400 { color: #fff !important; background-color: #ff1744 !important } .mdui-theme-accent-red .mdui-color-theme-a700 { color: #fff !important; background-color: #d50000 !important } .mdui-theme-accent-teal .mdui-color-theme-accent { color: rgba(0, 0, 0, .87) !important; background-color: #64ffda !important } .mdui-theme-accent-teal .mdui-color-theme-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #a7ffeb !important } .mdui-theme-accent-teal .mdui-color-theme-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #64ffda !important } .mdui-theme-accent-teal .mdui-color-theme-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #1de9b6 !important } .mdui-theme-accent-teal .mdui-color-theme-a700 { color: rgba(0, 0, 0, .87) !important; background-color: #00bfa5 !important } .mdui-theme-accent-yellow .mdui-color-theme-accent { color: rgba(0, 0, 0, .87) !important; background-color: #ff0 !important } .mdui-theme-accent-yellow .mdui-color-theme-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #ffff8d !important } .mdui-theme-accent-yellow .mdui-color-theme-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #ff0 !important } .mdui-theme-accent-yellow .mdui-color-theme-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #ffea00 !important } .mdui-theme-accent-yellow .mdui-color-theme-a700 { color: rgba(0, 0, 0, .87) !important; background-color: #ffd600 !important } .mdui-color-amber { color: rgba(0, 0, 0, .87) !important; background-color: #ffc107 !important } .mdui-color-amber-50 { color: rgba(0, 0, 0, .87) !important; background-color: #fff8e1 !important } .mdui-color-amber-100 { color: rgba(0, 0, 0, .87) !important; background-color: #ffecb3 !important } .mdui-color-amber-200 { color: rgba(0, 0, 0, .87) !important; background-color: #ffe082 !important } .mdui-color-amber-300 { color: rgba(0, 0, 0, .87) !important; background-color: #ffd54f !important } .mdui-color-amber-400 { color: rgba(0, 0, 0, .87) !important; background-color: #ffca28 !important } .mdui-color-amber-500 { color: rgba(0, 0, 0, .87) !important; background-color: #ffc107 !important } .mdui-color-amber-600 { color: rgba(0, 0, 0, .87) !important; background-color: #ffb300 !important } .mdui-color-amber-700 { color: rgba(0, 0, 0, .87) !important; background-color: #ffa000 !important } .mdui-color-amber-800 { color: rgba(0, 0, 0, .87) !important; background-color: #ff8f00 !important } .mdui-color-amber-900 { color: rgba(0, 0, 0, .87) !important; background-color: #ff6f00 !important } .mdui-color-blue { color: rgba(0, 0, 0, .87) !important; background-color: #2196f3 !important } .mdui-color-blue-50 { color: rgba(0, 0, 0, .87) !important; background-color: #e3f2fd !important } .mdui-color-blue-100 { color: rgba(0, 0, 0, .87) !important; background-color: #bbdefb !important } .mdui-color-blue-200 { color: rgba(0, 0, 0, .87) !important; background-color: #90caf9 !important } .mdui-color-blue-300 { color: rgba(0, 0, 0, .87) !important; background-color: #64b5f6 !important } .mdui-color-blue-400 { color: rgba(0, 0, 0, .87) !important; background-color: #42a5f5 !important } .mdui-color-blue-500 { color: rgba(0, 0, 0, .87) !important; background-color: #2196f3 !important } .mdui-color-blue-600 { color: #fff !important; background-color: #1e88e5 !important } .mdui-color-blue-700 { color: #fff !important; background-color: #1976d2 !important } .mdui-color-blue-800 { color: #fff !important; background-color: #1565c0 !important } .mdui-color-blue-900 { color: #fff !important; background-color: #0d47a1 !important } .mdui-color-blue-grey { color: #fff !important; background-color: #607d8b !important } .mdui-color-blue-grey-50 { color: rgba(0, 0, 0, .87) !important; background-color: #eceff1 !important } .mdui-color-blue-grey-100 { color: rgba(0, 0, 0, .87) !important; background-color: #cfd8dc !important } .mdui-color-blue-grey-200 { color: rgba(0, 0, 0, .87) !important; background-color: #b0bec5 !important } .mdui-color-blue-grey-300 { color: rgba(0, 0, 0, .87) !important; background-color: #90a4ae !important } .mdui-color-blue-grey-400 { color: #fff !important; background-color: #78909c !important } .mdui-color-blue-grey-500 { color: #fff !important; background-color: #607d8b !important } .mdui-color-blue-grey-600 { color: #fff !important; background-color: #546e7a !important } .mdui-color-blue-grey-700 { color: #fff !important; background-color: #455a64 !important } .mdui-color-blue-grey-800 { color: #fff !important; background-color: #37474f !important } .mdui-color-blue-grey-900 { color: #fff !important; background-color: #263238 !important } .mdui-color-brown { color: #fff !important; background-color: #795548 !important } .mdui-color-brown-50 { color: rgba(0, 0, 0, .87) !important; background-color: #efebe9 !important } .mdui-color-brown-100 { color: rgba(0, 0, 0, .87) !important; background-color: #d7ccc8 !important } .mdui-color-brown-200 { color: rgba(0, 0, 0, .87) !important; background-color: #bcaaa4 !important } .mdui-color-brown-300 { color: #fff !important; background-color: #a1887f !important } .mdui-color-brown-400 { color: #fff !important; background-color: #8d6e63 !important } .mdui-color-brown-500 { color: #fff !important; background-color: #795548 !important } .mdui-color-brown-600 { color: #fff !important; background-color: #6d4c41 !important } .mdui-color-brown-700 { color: #fff !important; background-color: #5d4037 !important } .mdui-color-brown-800 { color: #fff !important; background-color: #4e342e !important } .mdui-color-brown-900 { color: #fff !important; background-color: #3e2723 !important } .mdui-color-cyan { color: rgba(0, 0, 0, .87) !important; background-color: #00bcd4 !important } .mdui-color-cyan-50 { color: rgba(0, 0, 0, .87) !important; background-color: #e0f7fa !important } .mdui-color-cyan-100 { color: rgba(0, 0, 0, .87) !important; background-color: #b2ebf2 !important } .mdui-color-cyan-200 { color: rgba(0, 0, 0, .87) !important; background-color: #80deea !important } .mdui-color-cyan-300 { color: rgba(0, 0, 0, .87) !important; background-color: #4dd0e1 !important } .mdui-color-cyan-400 { color: rgba(0, 0, 0, .87) !important; background-color: #26c6da !important } .mdui-color-cyan-500 { color: rgba(0, 0, 0, .87) !important; background-color: #00bcd4 !important } .mdui-color-cyan-600 { color: rgba(0, 0, 0, .87) !important; background-color: #00acc1 !important } .mdui-color-cyan-700 { color: #fff !important; background-color: #0097a7 !important } .mdui-color-cyan-800 { color: #fff !important; background-color: #00838f !important } .mdui-color-cyan-900 { color: #fff !important; background-color: #006064 !important } .mdui-color-deep-orange { color: rgba(0, 0, 0, .87) !important; background-color: #ff5722 !important } .mdui-color-deep-orange-50 { color: rgba(0, 0, 0, .87) !important; background-color: #fbe9e7 !important } .mdui-color-deep-orange-100 { color: rgba(0, 0, 0, .87) !important; background-color: #ffccbc !important } .mdui-color-deep-orange-200 { color: rgba(0, 0, 0, .87) !important; background-color: #ffab91 !important } .mdui-color-deep-orange-300 { color: rgba(0, 0, 0, .87) !important; background-color: #ff8a65 !important } .mdui-color-deep-orange-400 { color: rgba(0, 0, 0, .87) !important; background-color: #ff7043 !important } .mdui-color-deep-orange-500 { color: rgba(0, 0, 0, .87) !important; background-color: #ff5722 !important } .mdui-color-deep-orange-600 { color: #fff !important; background-color: #f4511e !important } .mdui-color-deep-orange-700 { color: #fff !important; background-color: #e64a19 !important } .mdui-color-deep-orange-800 { color: #fff !important; background-color: #d84315 !important } .mdui-color-deep-orange-900 { color: #fff !important; background-color: #bf360c !important } .mdui-color-deep-purple { color: #fff !important; background-color: #673ab7 !important } .mdui-color-deep-purple-50 { color: rgba(0, 0, 0, .87) !important; background-color: #ede7f6 !important } .mdui-color-deep-purple-100 { color: rgba(0, 0, 0, .87) !important; background-color: #d1c4e9 !important } .mdui-color-deep-purple-200 { color: rgba(0, 0, 0, .87) !important; background-color: #b39ddb !important } .mdui-color-deep-purple-300 { color: #fff !important; background-color: #9575cd !important } .mdui-color-deep-purple-400 { color: #fff !important; background-color: #7e57c2 !important } .mdui-color-deep-purple-500 { color: #fff !important; background-color: #673ab7 !important } .mdui-color-deep-purple-600 { color: #fff !important; background-color: #5e35b1 !important } .mdui-color-deep-purple-700 { color: #fff !important; background-color: #512da8 !important } .mdui-color-deep-purple-800 { color: #fff !important; background-color: #4527a0 !important } .mdui-color-deep-purple-900 { color: #fff !important; background-color: #311b92 !important } .mdui-color-green { color: rgba(0, 0, 0, .87) !important; background-color: #4caf50 !important } .mdui-color-green-50 { color: rgba(0, 0, 0, .87) !important; background-color: #e8f5e9 !important } .mdui-color-green-100 { color: rgba(0, 0, 0, .87) !important; background-color: #c8e6c9 !important } .mdui-color-green-200 { color: rgba(0, 0, 0, .87) !important; background-color: #a5d6a7 !important } .mdui-color-green-300 { color: rgba(0, 0, 0, .87) !important; background-color: #81c784 !important } .mdui-color-green-400 { color: rgba(0, 0, 0, .87) !important; background-color: #66bb6a !important } .mdui-color-green-500 { color: rgba(0, 0, 0, .87) !important; background-color: #4caf50 !important } .mdui-color-green-600 { color: #fff !important; background-color: #43a047 !important } .mdui-color-green-700 { color: #fff !important; background-color: #388e3c !important } .mdui-color-green-800 { color: #fff !important; background-color: #2e7d32 !important } .mdui-color-green-900 { color: #fff !important; background-color: #1b5e20 !important } .mdui-color-grey { color: rgba(0, 0, 0, .87) !important; background-color: #9e9e9e !important } .mdui-color-grey-50 { color: rgba(0, 0, 0, .87) !important; background-color: #fafafa !important } .mdui-color-grey-100 { color: rgba(0, 0, 0, .87) !important; background-color: #f5f5f5 !important } .mdui-color-grey-200 { color: rgba(0, 0, 0, .87) !important; background-color: #eee !important } .mdui-color-grey-300 { color: rgba(0, 0, 0, .87) !important; background-color: #e0e0e0 !important } .mdui-color-grey-400 { color: rgba(0, 0, 0, .87) !important; background-color: #bdbdbd !important } .mdui-color-grey-500 { color: rgba(0, 0, 0, .87) !important; background-color: #9e9e9e !important } .mdui-color-grey-600 { color: #fff !important; background-color: #757575 !important } .mdui-color-grey-700 { color: #fff !important; background-color: #616161 !important } .mdui-color-grey-800 { color: #fff !important; background-color: #424242 !important } .mdui-color-grey-900 { color: #fff !important; background-color: #212121 !important } .mdui-color-indigo { color: #fff !important; background-color: #3f51b5 !important } .mdui-color-indigo-50 { color: rgba(0, 0, 0, .87) !important; background-color: #e8eaf6 !important } .mdui-color-indigo-100 { color: rgba(0, 0, 0, .87) !important; background-color: #c5cae9 !important } .mdui-color-indigo-200 { color: rgba(0, 0, 0, .87) !important; background-color: #9fa8da !important } .mdui-color-indigo-300 { color: #fff !important; background-color: #7986cb !important } .mdui-color-indigo-400 { color: #fff !important; background-color: #5c6bc0 !important } .mdui-color-indigo-500 { color: #fff !important; background-color: #3f51b5 !important } .mdui-color-indigo-600 { color: #fff !important; background-color: #3949ab !important } .mdui-color-indigo-700 { color: #fff !important; background-color: #303f9f !important } .mdui-color-indigo-800 { color: #fff !important; background-color: #283593 !important } .mdui-color-indigo-900 { color: #fff !important; background-color: #1a237e !important } .mdui-color-light-blue { color: rgba(0, 0, 0, .87) !important; background-color: #03a9f4 !important } .mdui-color-light-blue-50 { color: rgba(0, 0, 0, .87) !important; background-color: #e1f5fe !important } .mdui-color-light-blue-100 { color: rgba(0, 0, 0, .87) !important; background-color: #b3e5fc !important } .mdui-color-light-blue-200 { color: rgba(0, 0, 0, .87) !important; background-color: #81d4fa !important } .mdui-color-light-blue-300 { color: rgba(0, 0, 0, .87) !important; background-color: #4fc3f7 !important } .mdui-color-light-blue-400 { color: rgba(0, 0, 0, .87) !important; background-color: #29b6f6 !important } .mdui-color-light-blue-500 { color: rgba(0, 0, 0, .87) !important; background-color: #03a9f4 !important } .mdui-color-light-blue-600 { color: rgba(0, 0, 0, .87) !important; background-color: #039be5 !important } .mdui-color-light-blue-700 { color: #fff !important; background-color: #0288d1 !important } .mdui-color-light-blue-800 { color: #fff !important; background-color: #0277bd !important } .mdui-color-light-blue-900 { color: #fff !important; background-color: #01579b !important } .mdui-color-light-green { color: rgba(0, 0, 0, .87) !important; background-color: #8bc34a !important } .mdui-color-light-green-50 { color: rgba(0, 0, 0, .87) !important; background-color: #f1f8e9 !important } .mdui-color-light-green-100 { color: rgba(0, 0, 0, .87) !important; background-color: #dcedc8 !important } .mdui-color-light-green-200 { color: rgba(0, 0, 0, .87) !important; background-color: #c5e1a5 !important } .mdui-color-light-green-300 { color: rgba(0, 0, 0, .87) !important; background-color: #aed581 !important } .mdui-color-light-green-400 { color: rgba(0, 0, 0, .87) !important; background-color: #9ccc65 !important } .mdui-color-light-green-500 { color: rgba(0, 0, 0, .87) !important; background-color: #8bc34a !important } .mdui-color-light-green-600 { color: rgba(0, 0, 0, .87) !important; background-color: #7cb342 !important } .mdui-color-light-green-700 { color: rgba(0, 0, 0, .87) !important; background-color: #689f38 !important } .mdui-color-light-green-800 { color: #fff !important; background-color: #558b2f !important } .mdui-color-light-green-900 { color: #fff !important; background-color: #33691e !important } .mdui-color-lime { color: rgba(0, 0, 0, .87) !important; background-color: #cddc39 !important } .mdui-color-lime-50 { color: rgba(0, 0, 0, .87) !important; background-color: #f9fbe7 !important } .mdui-color-lime-100 { color: rgba(0, 0, 0, .87) !important; background-color: #f0f4c3 !important } .mdui-color-lime-200 { color: rgba(0, 0, 0, .87) !important; background-color: #e6ee9c !important } .mdui-color-lime-300 { color: rgba(0, 0, 0, .87) !important; background-color: #dce775 !important } .mdui-color-lime-400 { color: rgba(0, 0, 0, .87) !important; background-color: #d4e157 !important } .mdui-color-lime-500 { color: rgba(0, 0, 0, .87) !important; background-color: #cddc39 !important } .mdui-color-lime-600 { color: rgba(0, 0, 0, .87) !important; background-color: #c0ca33 !important } .mdui-color-lime-700 { color: rgba(0, 0, 0, .87) !important; background-color: #afb42b !important } .mdui-color-lime-800 { color: rgba(0, 0, 0, .87) !important; background-color: #9e9d24 !important } .mdui-color-lime-900 { color: #fff !important; background-color: #827717 !important } .mdui-color-orange { color: rgba(0, 0, 0, .87) !important; background-color: #ff9800 !important } .mdui-color-orange-50 { color: rgba(0, 0, 0, .87) !important; background-color: #fff3e0 !important } .mdui-color-orange-100 { color: rgba(0, 0, 0, .87) !important; background-color: #ffe0b2 !important } .mdui-color-orange-200 { color: rgba(0, 0, 0, .87) !important; background-color: #ffcc80 !important } .mdui-color-orange-300 { color: rgba(0, 0, 0, .87) !important; background-color: #ffb74d !important } .mdui-color-orange-400 { color: rgba(0, 0, 0, .87) !important; background-color: #ffa726 !important } .mdui-color-orange-500 { color: rgba(0, 0, 0, .87) !important; background-color: #ff9800 !important } .mdui-color-orange-600 { color: rgba(0, 0, 0, .87) !important; background-color: #fb8c00 !important } .mdui-color-orange-700 { color: rgba(0, 0, 0, .87) !important; background-color: #f57c00 !important } .mdui-color-orange-800 { color: rgba(0, 0, 0, .87) !important; background-color: #ef6c00 !important } .mdui-color-orange-900 { color: #fff !important; background-color: #e65100 !important } .mdui-color-pink { color: #fff !important; background-color: #e91e63 !important } .mdui-color-pink-50 { color: rgba(0, 0, 0, .87) !important; background-color: #fce4ec !important } .mdui-color-pink-100 { color: rgba(0, 0, 0, .87) !important; background-color: #f8bbd0 !important } .mdui-color-pink-200 { color: rgba(0, 0, 0, .87) !important; background-color: #f48fb1 !important } .mdui-color-pink-300 { color: rgba(0, 0, 0, .87) !important; background-color: #f06292 !important } .mdui-color-pink-400 { color: #fff !important; background-color: #ec407a !important } .mdui-color-pink-500 { color: #fff !important; background-color: #e91e63 !important } .mdui-color-pink-600 { color: #fff !important; background-color: #d81b60 !important } .mdui-color-pink-700 { color: #fff !important; background-color: #c2185b !important } .mdui-color-pink-800 { color: #fff !important; background-color: #ad1457 !important } .mdui-color-pink-900 { color: #fff !important; background-color: #880e4f !important } .mdui-color-purple { color: #fff !important; background-color: #9c27b0 !important } .mdui-color-purple-50 { color: rgba(0, 0, 0, .87) !important; background-color: #f3e5f5 !important } .mdui-color-purple-100 { color: rgba(0, 0, 0, .87) !important; background-color: #e1bee7 !important } .mdui-color-purple-200 { color: rgba(0, 0, 0, .87) !important; background-color: #ce93d8 !important } .mdui-color-purple-300 { color: #fff !important; background-color: #ba68c8 !important } .mdui-color-purple-400 { color: #fff !important; background-color: #ab47bc !important } .mdui-color-purple-500 { color: #fff !important; background-color: #9c27b0 !important } .mdui-color-purple-600 { color: #fff !important; background-color: #8e24aa !important } .mdui-color-purple-700 { color: #fff !important; background-color: #7b1fa2 !important } .mdui-color-purple-800 { color: #fff !important; background-color: #6a1b9a !important } .mdui-color-purple-900 { color: #fff !important; background-color: #4a148c !important } .mdui-color-red { color: #fff !important; background-color: #f44336 !important } .mdui-color-red-50 { color: rgba(0, 0, 0, .87) !important; background-color: #ffebee !important } .mdui-color-red-100 { color: rgba(0, 0, 0, .87) !important; background-color: #ffcdd2 !important } .mdui-color-red-200 { color: rgba(0, 0, 0, .87) !important; background-color: #ef9a9a !important } .mdui-color-red-300 { color: rgba(0, 0, 0, .87) !important; background-color: #e57373 !important } .mdui-color-red-400 { color: #fff !important; background-color: #ef5350 !important } .mdui-color-red-500 { color: #fff !important; background-color: #f44336 !important } .mdui-color-red-600 { color: #fff !important; background-color: #e53935 !important } .mdui-color-red-700 { color: #fff !important; background-color: #d32f2f !important } .mdui-color-red-800 { color: #fff !important; background-color: #c62828 !important } .mdui-color-red-900 { color: #fff !important; background-color: #b71c1c !important } .mdui-color-teal { color: #fff !important; background-color: #009688 !important } .mdui-color-teal-50 { color: rgba(0, 0, 0, .87) !important; background-color: #e0f2f1 !important } .mdui-color-teal-100 { color: rgba(0, 0, 0, .87) !important; background-color: #b2dfdb !important } .mdui-color-teal-200 { color: rgba(0, 0, 0, .87) !important; background-color: #80cbc4 !important } .mdui-color-teal-300 { color: rgba(0, 0, 0, .87) !important; background-color: #4db6ac !important } .mdui-color-teal-400 { color: rgba(0, 0, 0, .87) !important; background-color: #26a69a !important } .mdui-color-teal-500 { color: #fff !important; background-color: #009688 !important } .mdui-color-teal-600 { color: #fff !important; background-color: #00897b !important } .mdui-color-teal-700 { color: #fff !important; background-color: #00796b !important } .mdui-color-teal-800 { color: #fff !important; background-color: #00695c !important } .mdui-color-teal-900 { color: #fff !important; background-color: #004d40 !important } .mdui-color-yellow { color: rgba(0, 0, 0, .87) !important; background-color: #ffeb3b !important } .mdui-color-yellow-50 { color: rgba(0, 0, 0, .87) !important; background-color: #fffde7 !important } .mdui-color-yellow-100 { color: rgba(0, 0, 0, .87) !important; background-color: #fff9c4 !important } .mdui-color-yellow-200 { color: rgba(0, 0, 0, .87) !important; background-color: #fff59d !important } .mdui-color-yellow-300 { color: rgba(0, 0, 0, .87) !important; background-color: #fff176 !important } .mdui-color-yellow-400 { color: rgba(0, 0, 0, .87) !important; background-color: #ffee58 !important } .mdui-color-yellow-500 { color: rgba(0, 0, 0, .87) !important; background-color: #ffeb3b !important } .mdui-color-yellow-600 { color: rgba(0, 0, 0, .87) !important; background-color: #fdd835 !important } .mdui-color-yellow-700 { color: rgba(0, 0, 0, .87) !important; background-color: #fbc02d !important } .mdui-color-yellow-800 { color: rgba(0, 0, 0, .87) !important; background-color: #f9a825 !important } .mdui-color-yellow-900 { color: rgba(0, 0, 0, .87) !important; background-color: #f57f17 !important } .mdui-color-amber-accent { color: rgba(0, 0, 0, .87) !important; background-color: #ffd740 !important } .mdui-color-amber-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #ffe57f !important } .mdui-color-amber-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #ffd740 !important } .mdui-color-amber-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #ffc400 !important } .mdui-color-amber-a700 { color: rgba(0, 0, 0, .87) !important; background-color: #ffab00 !important } .mdui-color-blue-accent { color: #fff !important; background-color: #448aff !important } .mdui-color-blue-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #82b1ff !important } .mdui-color-blue-a200 { color: #fff !important; background-color: #448aff !important } .mdui-color-blue-a400 { color: #fff !important; background-color: #2979ff !important } .mdui-color-blue-a700 { color: #fff !important; background-color: #2962ff !important } .mdui-color-cyan-accent { color: rgba(0, 0, 0, .87) !important; background-color: #18ffff !important } .mdui-color-cyan-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #84ffff !important } .mdui-color-cyan-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #18ffff !important } .mdui-color-cyan-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #00e5ff !important } .mdui-color-cyan-a700 { color: rgba(0, 0, 0, .87) !important; background-color: #00b8d4 !important } .mdui-color-deep-orange-accent { color: rgba(0, 0, 0, .87) !important; background-color: #ff6e40 !important } .mdui-color-deep-orange-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #ff9e80 !important } .mdui-color-deep-orange-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #ff6e40 !important } .mdui-color-deep-orange-a400 { color: #fff !important; background-color: #ff3d00 !important } .mdui-color-deep-orange-a700 { color: #fff !important; background-color: #dd2c00 !important } .mdui-color-deep-purple-accent { color: #fff !important; background-color: #7c4dff !important } .mdui-color-deep-purple-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #b388ff !important } .mdui-color-deep-purple-a200 { color: #fff !important; background-color: #7c4dff !important } .mdui-color-deep-purple-a400 { color: #fff !important; background-color: #651fff !important } .mdui-color-deep-purple-a700 { color: #fff !important; background-color: #6200ea !important } .mdui-color-green-accent { color: rgba(0, 0, 0, .87) !important; background-color: #69f0ae !important } .mdui-color-green-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #b9f6ca !important } .mdui-color-green-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #69f0ae !important } .mdui-color-green-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #00e676 !important } .mdui-color-green-a700 { color: rgba(0, 0, 0, .87) !important; background-color: #00c853 !important } .mdui-color-indigo-accent { color: #fff !important; background-color: #536dfe !important } .mdui-color-indigo-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #8c9eff !important } .mdui-color-indigo-a200 { color: #fff !important; background-color: #536dfe !important } .mdui-color-indigo-a400 { color: #fff !important; background-color: #3d5afe !important } .mdui-color-indigo-a700 { color: #fff !important; background-color: #304ffe !important } .mdui-color-light-blue-accent { color: rgba(0, 0, 0, .87) !important; background-color: #40c4ff !important } .mdui-color-light-blue-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #80d8ff !important } .mdui-color-light-blue-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #40c4ff !important } .mdui-color-light-blue-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #00b0ff !important } .mdui-color-light-blue-a700 { color: #fff !important; background-color: #0091ea !important } .mdui-color-light-green-accent { color: rgba(0, 0, 0, .87) !important; background-color: #b2ff59 !important } .mdui-color-light-green-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #ccff90 !important } .mdui-color-light-green-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #b2ff59 !important } .mdui-color-light-green-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #76ff03 !important } .mdui-color-light-green-a700 { color: rgba(0, 0, 0, .87) !important; background-color: #64dd17 !important } .mdui-color-lime-accent { color: rgba(0, 0, 0, .87) !important; background-color: #eeff41 !important } .mdui-color-lime-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #f4ff81 !important } .mdui-color-lime-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #eeff41 !important } .mdui-color-lime-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #c6ff00 !important } .mdui-color-lime-a700 { color: rgba(0, 0, 0, .87) !important; background-color: #aeea00 !important } .mdui-color-orange-accent { color: rgba(0, 0, 0, .87) !important; background-color: #ffab40 !important } .mdui-color-orange-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #ffd180 !important } .mdui-color-orange-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #ffab40 !important } .mdui-color-orange-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #ff9100 !important } .mdui-color-orange-a700 { color: rgba(0, 0, 0, .87) !important; background-color: #ff6d00 !important } .mdui-color-pink-accent { color: #fff !important; background-color: #ff4081 !important } .mdui-color-pink-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #ff80ab !important } .mdui-color-pink-a200 { color: #fff !important; background-color: #ff4081 !important } .mdui-color-pink-a400 { color: #fff !important; background-color: #f50057 !important } .mdui-color-pink-a700 { color: #fff !important; background-color: #c51162 !important } .mdui-color-purple-accent { color: #fff !important; background-color: #e040fb !important } .mdui-color-purple-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #ea80fc !important } .mdui-color-purple-a200 { color: #fff !important; background-color: #e040fb !important } .mdui-color-purple-a400 { color: #fff !important; background-color: #d500f9 !important } .mdui-color-purple-a700 { color: #fff !important; background-color: #a0f !important } .mdui-color-red-accent { color: #fff !important; background-color: #ff5252 !important } .mdui-color-red-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #ff8a80 !important } .mdui-color-red-a200 { color: #fff !important; background-color: #ff5252 !important } .mdui-color-red-a400 { color: #fff !important; background-color: #ff1744 !important } .mdui-color-red-a700 { color: #fff !important; background-color: #d50000 !important } .mdui-color-teal-accent { color: rgba(0, 0, 0, .87) !important; background-color: #64ffda !important } .mdui-color-teal-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #a7ffeb !important } .mdui-color-teal-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #64ffda !important } .mdui-color-teal-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #1de9b6 !important } .mdui-color-teal-a700 { color: rgba(0, 0, 0, .87) !important; background-color: #00bfa5 !important } .mdui-color-yellow-accent { color: rgba(0, 0, 0, .87) !important; background-color: #ff0 !important } .mdui-color-yellow-a100 { color: rgba(0, 0, 0, .87) !important; background-color: #ffff8d !important } .mdui-color-yellow-a200 { color: rgba(0, 0, 0, .87) !important; background-color: #ff0 !important } .mdui-color-yellow-a400 { color: rgba(0, 0, 0, .87) !important; background-color: #ffea00 !important } .mdui-color-yellow-a700 { color: rgba(0, 0, 0, .87) !important; background-color: #ffd600 !important } .mdui-color-black { color: #fff !important; background-color: #000 !important } .mdui-color-white { color: rgba(0, 0, 0, .87) !important; background-color: #fff !important } .mdui-color-transparent { background-color: transparent !important } .mdui-theme-primary-amber .mdui-text-color-theme { color: #ffc107 !important } .mdui-theme-primary-amber .mdui-text-color-theme-50 { color: #fff8e1 !important } .mdui-theme-primary-amber .mdui-text-color-theme-100 { color: #ffecb3 !important } .mdui-theme-primary-amber .mdui-text-color-theme-200 { color: #ffe082 !important } .mdui-theme-primary-amber .mdui-text-color-theme-300 { color: #ffd54f !important } .mdui-theme-primary-amber .mdui-text-color-theme-400 { color: #ffca28 !important } .mdui-theme-primary-amber .mdui-text-color-theme-500 { color: #ffc107 !important } .mdui-theme-primary-amber .mdui-text-color-theme-600 { color: #ffb300 !important } .mdui-theme-primary-amber .mdui-text-color-theme-700 { color: #ffa000 !important } .mdui-theme-primary-amber .mdui-text-color-theme-800 { color: #ff8f00 !important } .mdui-theme-primary-amber .mdui-text-color-theme-900 { color: #ff6f00 !important } .mdui-theme-primary-blue .mdui-text-color-theme { color: #2196f3 !important } .mdui-theme-primary-blue .mdui-text-color-theme-50 { color: #e3f2fd !important } .mdui-theme-primary-blue .mdui-text-color-theme-100 { color: #bbdefb !important } .mdui-theme-primary-blue .mdui-text-color-theme-200 { color: #90caf9 !important } .mdui-theme-primary-blue .mdui-text-color-theme-300 { color: #64b5f6 !important } .mdui-theme-primary-blue .mdui-text-color-theme-400 { color: #42a5f5 !important } .mdui-theme-primary-blue .mdui-text-color-theme-500 { color: #2196f3 !important } .mdui-theme-primary-blue .mdui-text-color-theme-600 { color: #1e88e5 !important } .mdui-theme-primary-blue .mdui-text-color-theme-700 { color: #1976d2 !important } .mdui-theme-primary-blue .mdui-text-color-theme-800 { color: #1565c0 !important } .mdui-theme-primary-blue .mdui-text-color-theme-900 { color: #0d47a1 !important } .mdui-theme-primary-blue-grey .mdui-text-color-theme { color: #607d8b !important } .mdui-theme-primary-blue-grey .mdui-text-color-theme-50 { color: #eceff1 !important } .mdui-theme-primary-blue-grey .mdui-text-color-theme-100 { color: #cfd8dc !important } .mdui-theme-primary-blue-grey .mdui-text-color-theme-200 { color: #b0bec5 !important } .mdui-theme-primary-blue-grey .mdui-text-color-theme-300 { color: #90a4ae !important } .mdui-theme-primary-blue-grey .mdui-text-color-theme-400 { color: #78909c !important } .mdui-theme-primary-blue-grey .mdui-text-color-theme-500 { color: #607d8b !important } .mdui-theme-primary-blue-grey .mdui-text-color-theme-600 { color: #546e7a !important } .mdui-theme-primary-blue-grey .mdui-text-color-theme-700 { color: #455a64 !important } .mdui-theme-primary-blue-grey .mdui-text-color-theme-800 { color: #37474f !important } .mdui-theme-primary-blue-grey .mdui-text-color-theme-900 { color: #263238 !important } .mdui-theme-primary-brown .mdui-text-color-theme { color: #795548 !important } .mdui-theme-primary-brown .mdui-text-color-theme-50 { color: #efebe9 !important } .mdui-theme-primary-brown .mdui-text-color-theme-100 { color: #d7ccc8 !important } .mdui-theme-primary-brown .mdui-text-color-theme-200 { color: #bcaaa4 !important } .mdui-theme-primary-brown .mdui-text-color-theme-300 { color: #a1887f !important } .mdui-theme-primary-brown .mdui-text-color-theme-400 { color: #8d6e63 !important } .mdui-theme-primary-brown .mdui-text-color-theme-500 { color: #795548 !important } .mdui-theme-primary-brown .mdui-text-color-theme-600 { color: #6d4c41 !important } .mdui-theme-primary-brown .mdui-text-color-theme-700 { color: #5d4037 !important } .mdui-theme-primary-brown .mdui-text-color-theme-800 { color: #4e342e !important } .mdui-theme-primary-brown .mdui-text-color-theme-900 { color: #3e2723 !important } .mdui-theme-primary-cyan .mdui-text-color-theme { color: #00bcd4 !important } .mdui-theme-primary-cyan .mdui-text-color-theme-50 { color: #e0f7fa !important } .mdui-theme-primary-cyan .mdui-text-color-theme-100 { color: #b2ebf2 !important } .mdui-theme-primary-cyan .mdui-text-color-theme-200 { color: #80deea !important } .mdui-theme-primary-cyan .mdui-text-color-theme-300 { color: #4dd0e1 !important } .mdui-theme-primary-cyan .mdui-text-color-theme-400 { color: #26c6da !important } .mdui-theme-primary-cyan .mdui-text-color-theme-500 { color: #00bcd4 !important } .mdui-theme-primary-cyan .mdui-text-color-theme-600 { color: #00acc1 !important } .mdui-theme-primary-cyan .mdui-text-color-theme-700 { color: #0097a7 !important } .mdui-theme-primary-cyan .mdui-text-color-theme-800 { color: #00838f !important } .mdui-theme-primary-cyan .mdui-text-color-theme-900 { color: #006064 !important } .mdui-theme-primary-deep-orange .mdui-text-color-theme { color: #ff5722 !important } .mdui-theme-primary-deep-orange .mdui-text-color-theme-50 { color: #fbe9e7 !important } .mdui-theme-primary-deep-orange .mdui-text-color-theme-100 { color: #ffccbc !important } .mdui-theme-primary-deep-orange .mdui-text-color-theme-200 { color: #ffab91 !important } .mdui-theme-primary-deep-orange .mdui-text-color-theme-300 { color: #ff8a65 !important } .mdui-theme-primary-deep-orange .mdui-text-color-theme-400 { color: #ff7043 !important } .mdui-theme-primary-deep-orange .mdui-text-color-theme-500 { color: #ff5722 !important } .mdui-theme-primary-deep-orange .mdui-text-color-theme-600 { color: #f4511e !important } .mdui-theme-primary-deep-orange .mdui-text-color-theme-700 { color: #e64a19 !important } .mdui-theme-primary-deep-orange .mdui-text-color-theme-800 { color: #d84315 !important } .mdui-theme-primary-deep-orange .mdui-text-color-theme-900 { color: #bf360c !important } .mdui-theme-primary-deep-purple .mdui-text-color-theme { color: #673ab7 !important } .mdui-theme-primary-deep-purple .mdui-text-color-theme-50 { color: #ede7f6 !important } .mdui-theme-primary-deep-purple .mdui-text-color-theme-100 { color: #d1c4e9 !important } .mdui-theme-primary-deep-purple .mdui-text-color-theme-200 { color: #b39ddb !important } .mdui-theme-primary-deep-purple .mdui-text-color-theme-300 { color: #9575cd !important } .mdui-theme-primary-deep-purple .mdui-text-color-theme-400 { color: #7e57c2 !important } .mdui-theme-primary-deep-purple .mdui-text-color-theme-500 { color: #673ab7 !important } .mdui-theme-primary-deep-purple .mdui-text-color-theme-600 { color: #5e35b1 !important } .mdui-theme-primary-deep-purple .mdui-text-color-theme-700 { color: #512da8 !important } .mdui-theme-primary-deep-purple .mdui-text-color-theme-800 { color: #4527a0 !important } .mdui-theme-primary-deep-purple .mdui-text-color-theme-900 { color: #311b92 !important } .mdui-theme-primary-green .mdui-text-color-theme { color: #4caf50 !important } .mdui-theme-primary-green .mdui-text-color-theme-50 { color: #e8f5e9 !important } .mdui-theme-primary-green .mdui-text-color-theme-100 { color: #c8e6c9 !important } .mdui-theme-primary-green .mdui-text-color-theme-200 { color: #a5d6a7 !important } .mdui-theme-primary-green .mdui-text-color-theme-300 { color: #81c784 !important } .mdui-theme-primary-green .mdui-text-color-theme-400 { color: #66bb6a !important } .mdui-theme-primary-green .mdui-text-color-theme-500 { color: #4caf50 !important } .mdui-theme-primary-green .mdui-text-color-theme-600 { color: #43a047 !important } .mdui-theme-primary-green .mdui-text-color-theme-700 { color: #388e3c !important } .mdui-theme-primary-green .mdui-text-color-theme-800 { color: #2e7d32 !important } .mdui-theme-primary-green .mdui-text-color-theme-900 { color: #1b5e20 !important } .mdui-theme-primary-grey .mdui-text-color-theme { color: #9e9e9e !important } .mdui-theme-primary-grey .mdui-text-color-theme-50 { color: #fafafa !important } .mdui-theme-primary-grey .mdui-text-color-theme-100 { color: #f5f5f5 !important } .mdui-theme-primary-grey .mdui-text-color-theme-200 { color: #eee !important } .mdui-theme-primary-grey .mdui-text-color-theme-300 { color: #e0e0e0 !important } .mdui-theme-primary-grey .mdui-text-color-theme-400 { color: #bdbdbd !important } .mdui-theme-primary-grey .mdui-text-color-theme-500 { color: #9e9e9e !important } .mdui-theme-primary-grey .mdui-text-color-theme-600 { color: #757575 !important } .mdui-theme-primary-grey .mdui-text-color-theme-700 { color: #616161 !important } .mdui-theme-primary-grey .mdui-text-color-theme-800 { color: #424242 !important } .mdui-theme-primary-grey .mdui-text-color-theme-900 { color: #212121 !important } .mdui-theme-primary-indigo .mdui-text-color-theme { color: #3f51b5 !important } .mdui-theme-primary-indigo .mdui-text-color-theme-50 { color: #e8eaf6 !important } .mdui-theme-primary-indigo .mdui-text-color-theme-100 { color: #c5cae9 !important } .mdui-theme-primary-indigo .mdui-text-color-theme-200 { color: #9fa8da !important } .mdui-theme-primary-indigo .mdui-text-color-theme-300 { color: #7986cb !important } .mdui-theme-primary-indigo .mdui-text-color-theme-400 { color: #5c6bc0 !important } .mdui-theme-primary-indigo .mdui-text-color-theme-500 { color: #3f51b5 !important } .mdui-theme-primary-indigo .mdui-text-color-theme-600 { color: #3949ab !important } .mdui-theme-primary-indigo .mdui-text-color-theme-700 { color: #303f9f !important } .mdui-theme-primary-indigo .mdui-text-color-theme-800 { color: #283593 !important } .mdui-theme-primary-indigo .mdui-text-color-theme-900 { color: #1a237e !important } .mdui-theme-primary-light-blue .mdui-text-color-theme { color: #03a9f4 !important } .mdui-theme-primary-light-blue .mdui-text-color-theme-50 { color: #e1f5fe !important } .mdui-theme-primary-light-blue .mdui-text-color-theme-100 { color: #b3e5fc !important } .mdui-theme-primary-light-blue .mdui-text-color-theme-200 { color: #81d4fa !important } .mdui-theme-primary-light-blue .mdui-text-color-theme-300 { color: #4fc3f7 !important } .mdui-theme-primary-light-blue .mdui-text-color-theme-400 { color: #29b6f6 !important } .mdui-theme-primary-light-blue .mdui-text-color-theme-500 { color: #03a9f4 !important } .mdui-theme-primary-light-blue .mdui-text-color-theme-600 { color: #039be5 !important } .mdui-theme-primary-light-blue .mdui-text-color-theme-700 { color: #0288d1 !important } .mdui-theme-primary-light-blue .mdui-text-color-theme-800 { color: #0277bd !important } .mdui-theme-primary-light-blue .mdui-text-color-theme-900 { color: #01579b !important } .mdui-theme-primary-light-green .mdui-text-color-theme { color: #8bc34a !important } .mdui-theme-primary-light-green .mdui-text-color-theme-50 { color: #f1f8e9 !important } .mdui-theme-primary-light-green .mdui-text-color-theme-100 { color: #dcedc8 !important } .mdui-theme-primary-light-green .mdui-text-color-theme-200 { color: #c5e1a5 !important } .mdui-theme-primary-light-green .mdui-text-color-theme-300 { color: #aed581 !important } .mdui-theme-primary-light-green .mdui-text-color-theme-400 { color: #9ccc65 !important } .mdui-theme-primary-light-green .mdui-text-color-theme-500 { color: #8bc34a !important } .mdui-theme-primary-light-green .mdui-text-color-theme-600 { color: #7cb342 !important } .mdui-theme-primary-light-green .mdui-text-color-theme-700 { color: #689f38 !important } .mdui-theme-primary-light-green .mdui-text-color-theme-800 { color: #558b2f !important } .mdui-theme-primary-light-green .mdui-text-color-theme-900 { color: #33691e !important } .mdui-theme-primary-lime .mdui-text-color-theme { color: #cddc39 !important } .mdui-theme-primary-lime .mdui-text-color-theme-50 { color: #f9fbe7 !important } .mdui-theme-primary-lime .mdui-text-color-theme-100 { color: #f0f4c3 !important } .mdui-theme-primary-lime .mdui-text-color-theme-200 { color: #e6ee9c !important } .mdui-theme-primary-lime .mdui-text-color-theme-300 { color: #dce775 !important } .mdui-theme-primary-lime .mdui-text-color-theme-400 { color: #d4e157 !important } .mdui-theme-primary-lime .mdui-text-color-theme-500 { color: #cddc39 !important } .mdui-theme-primary-lime .mdui-text-color-theme-600 { color: #c0ca33 !important } .mdui-theme-primary-lime .mdui-text-color-theme-700 { color: #afb42b !important } .mdui-theme-primary-lime .mdui-text-color-theme-800 { color: #9e9d24 !important } .mdui-theme-primary-lime .mdui-text-color-theme-900 { color: #827717 !important } .mdui-theme-primary-orange .mdui-text-color-theme { color: #ff9800 !important } .mdui-theme-primary-orange .mdui-text-color-theme-50 { color: #fff3e0 !important } .mdui-theme-primary-orange .mdui-text-color-theme-100 { color: #ffe0b2 !important } .mdui-theme-primary-orange .mdui-text-color-theme-200 { color: #ffcc80 !important } .mdui-theme-primary-orange .mdui-text-color-theme-300 { color: #ffb74d !important } .mdui-theme-primary-orange .mdui-text-color-theme-400 { color: #ffa726 !important } .mdui-theme-primary-orange .mdui-text-color-theme-500 { color: #ff9800 !important } .mdui-theme-primary-orange .mdui-text-color-theme-600 { color: #fb8c00 !important } .mdui-theme-primary-orange .mdui-text-color-theme-700 { color: #f57c00 !important } .mdui-theme-primary-orange .mdui-text-color-theme-800 { color: #ef6c00 !important } .mdui-theme-primary-orange .mdui-text-color-theme-900 { color: #e65100 !important } .mdui-theme-primary-pink .mdui-text-color-theme { color: #e91e63 !important } .mdui-theme-primary-pink .mdui-text-color-theme-50 { color: #fce4ec !important } .mdui-theme-primary-pink .mdui-text-color-theme-100 { color: #f8bbd0 !important } .mdui-theme-primary-pink .mdui-text-color-theme-200 { color: #f48fb1 !important } .mdui-theme-primary-pink .mdui-text-color-theme-300 { color: #f06292 !important } .mdui-theme-primary-pink .mdui-text-color-theme-400 { color: #ec407a !important } .mdui-theme-primary-pink .mdui-text-color-theme-500 { color: #e91e63 !important } .mdui-theme-primary-pink .mdui-text-color-theme-600 { color: #d81b60 !important } .mdui-theme-primary-pink .mdui-text-color-theme-700 { color: #c2185b !important } .mdui-theme-primary-pink .mdui-text-color-theme-800 { color: #ad1457 !important } .mdui-theme-primary-pink .mdui-text-color-theme-900 { color: #880e4f !important } .mdui-theme-primary-purple .mdui-text-color-theme { color: #9c27b0 !important } .mdui-theme-primary-purple .mdui-text-color-theme-50 { color: #f3e5f5 !important } .mdui-theme-primary-purple .mdui-text-color-theme-100 { color: #e1bee7 !important } .mdui-theme-primary-purple .mdui-text-color-theme-200 { color: #ce93d8 !important } .mdui-theme-primary-purple .mdui-text-color-theme-300 { color: #ba68c8 !important } .mdui-theme-primary-purple .mdui-text-color-theme-400 { color: #ab47bc !important } .mdui-theme-primary-purple .mdui-text-color-theme-500 { color: #9c27b0 !important } .mdui-theme-primary-purple .mdui-text-color-theme-600 { color: #8e24aa !important } .mdui-theme-primary-purple .mdui-text-color-theme-700 { color: #7b1fa2 !important } .mdui-theme-primary-purple .mdui-text-color-theme-800 { color: #6a1b9a !important } .mdui-theme-primary-purple .mdui-text-color-theme-900 { color: #4a148c !important } .mdui-theme-primary-red .mdui-text-color-theme { color: #f44336 !important } .mdui-theme-primary-red .mdui-text-color-theme-50 { color: #ffebee !important } .mdui-theme-primary-red .mdui-text-color-theme-100 { color: #ffcdd2 !important } .mdui-theme-primary-red .mdui-text-color-theme-200 { color: #ef9a9a !important } .mdui-theme-primary-red .mdui-text-color-theme-300 { color: #e57373 !important } .mdui-theme-primary-red .mdui-text-color-theme-400 { color: #ef5350 !important } .mdui-theme-primary-red .mdui-text-color-theme-500 { color: #f44336 !important } .mdui-theme-primary-red .mdui-text-color-theme-600 { color: #e53935 !important } .mdui-theme-primary-red .mdui-text-color-theme-700 { color: #d32f2f !important } .mdui-theme-primary-red .mdui-text-color-theme-800 { color: #c62828 !important } .mdui-theme-primary-red .mdui-text-color-theme-900 { color: #b71c1c !important } .mdui-theme-primary-teal .mdui-text-color-theme { color: #009688 !important } .mdui-theme-primary-teal .mdui-text-color-theme-50 { color: #e0f2f1 !important } .mdui-theme-primary-teal .mdui-text-color-theme-100 { color: #b2dfdb !important } .mdui-theme-primary-teal .mdui-text-color-theme-200 { color: #80cbc4 !important } .mdui-theme-primary-teal .mdui-text-color-theme-300 { color: #4db6ac !important } .mdui-theme-primary-teal .mdui-text-color-theme-400 { color: #26a69a !important } .mdui-theme-primary-teal .mdui-text-color-theme-500 { color: #009688 !important } .mdui-theme-primary-teal .mdui-text-color-theme-600 { color: #00897b !important } .mdui-theme-primary-teal .mdui-text-color-theme-700 { color: #00796b !important } .mdui-theme-primary-teal .mdui-text-color-theme-800 { color: #00695c !important } .mdui-theme-primary-teal .mdui-text-color-theme-900 { color: #004d40 !important } .mdui-theme-primary-yellow .mdui-text-color-theme { color: #ffeb3b !important } .mdui-theme-primary-yellow .mdui-text-color-theme-50 { color: #fffde7 !important } .mdui-theme-primary-yellow .mdui-text-color-theme-100 { color: #fff9c4 !important } .mdui-theme-primary-yellow .mdui-text-color-theme-200 { color: #fff59d !important } .mdui-theme-primary-yellow .mdui-text-color-theme-300 { color: #fff176 !important } .mdui-theme-primary-yellow .mdui-text-color-theme-400 { color: #ffee58 !important } .mdui-theme-primary-yellow .mdui-text-color-theme-500 { color: #ffeb3b !important } .mdui-theme-primary-yellow .mdui-text-color-theme-600 { color: #fdd835 !important } .mdui-theme-primary-yellow .mdui-text-color-theme-700 { color: #fbc02d !important } .mdui-theme-primary-yellow .mdui-text-color-theme-800 { color: #f9a825 !important } .mdui-theme-primary-yellow .mdui-text-color-theme-900 { color: #f57f17 !important } .mdui-theme-accent-amber .mdui-text-color-theme-accent { color: #ffd740 !important } .mdui-theme-accent-amber .mdui-text-color-theme-a100 { color: #ffe57f !important } .mdui-theme-accent-amber .mdui-text-color-theme-a200 { color: #ffd740 !important } .mdui-theme-accent-amber .mdui-text-color-theme-a400 { color: #ffc400 !important } .mdui-theme-accent-amber .mdui-text-color-theme-a700 { color: #ffab00 !important } .mdui-theme-accent-blue .mdui-text-color-theme-accent { color: #448aff !important } .mdui-theme-accent-blue .mdui-text-color-theme-a100 { color: #82b1ff !important } .mdui-theme-accent-blue .mdui-text-color-theme-a200 { color: #448aff !important } .mdui-theme-accent-blue .mdui-text-color-theme-a400 { color: #2979ff !important } .mdui-theme-accent-blue .mdui-text-color-theme-a700 { color: #2962ff !important } .mdui-theme-accent-cyan .mdui-text-color-theme-accent { color: #18ffff !important } .mdui-theme-accent-cyan .mdui-text-color-theme-a100 { color: #84ffff !important } .mdui-theme-accent-cyan .mdui-text-color-theme-a200 { color: #18ffff !important } .mdui-theme-accent-cyan .mdui-text-color-theme-a400 { color: #00e5ff !important } .mdui-theme-accent-cyan .mdui-text-color-theme-a700 { color: #00b8d4 !important } .mdui-theme-accent-deep-orange .mdui-text-color-theme-accent { color: #ff6e40 !important } .mdui-theme-accent-deep-orange .mdui-text-color-theme-a100 { color: #ff9e80 !important } .mdui-theme-accent-deep-orange .mdui-text-color-theme-a200 { color: #ff6e40 !important } .mdui-theme-accent-deep-orange .mdui-text-color-theme-a400 { color: #ff3d00 !important } .mdui-theme-accent-deep-orange .mdui-text-color-theme-a700 { color: #dd2c00 !important } .mdui-theme-accent-deep-purple .mdui-text-color-theme-accent { color: #7c4dff !important } .mdui-theme-accent-deep-purple .mdui-text-color-theme-a100 { color: #b388ff !important } .mdui-theme-accent-deep-purple .mdui-text-color-theme-a200 { color: #7c4dff !important } .mdui-theme-accent-deep-purple .mdui-text-color-theme-a400 { color: #651fff !important } .mdui-theme-accent-deep-purple .mdui-text-color-theme-a700 { color: #6200ea !important } .mdui-theme-accent-green .mdui-text-color-theme-accent { color: #69f0ae !important } .mdui-theme-accent-green .mdui-text-color-theme-a100 { color: #b9f6ca !important } .mdui-theme-accent-green .mdui-text-color-theme-a200 { color: #69f0ae !important } .mdui-theme-accent-green .mdui-text-color-theme-a400 { color: #00e676 !important } .mdui-theme-accent-green .mdui-text-color-theme-a700 { color: #00c853 !important } .mdui-theme-accent-indigo .mdui-text-color-theme-accent { color: #536dfe !important } .mdui-theme-accent-indigo .mdui-text-color-theme-a100 { color: #8c9eff !important } .mdui-theme-accent-indigo .mdui-text-color-theme-a200 { color: #536dfe !important } .mdui-theme-accent-indigo .mdui-text-color-theme-a400 { color: #3d5afe !important } .mdui-theme-accent-indigo .mdui-text-color-theme-a700 { color: #304ffe !important } .mdui-theme-accent-light-blue .mdui-text-color-theme-accent { color: #40c4ff !important } .mdui-theme-accent-light-blue .mdui-text-color-theme-a100 { color: #80d8ff !important } .mdui-theme-accent-light-blue .mdui-text-color-theme-a200 { color: #40c4ff !important } .mdui-theme-accent-light-blue .mdui-text-color-theme-a400 { color: #00b0ff !important } .mdui-theme-accent-light-blue .mdui-text-color-theme-a700 { color: #0091ea !important } .mdui-theme-accent-light-green .mdui-text-color-theme-accent { color: #b2ff59 !important } .mdui-theme-accent-light-green .mdui-text-color-theme-a100 { color: #ccff90 !important } .mdui-theme-accent-light-green .mdui-text-color-theme-a200 { color: #b2ff59 !important } .mdui-theme-accent-light-green .mdui-text-color-theme-a400 { color: #76ff03 !important } .mdui-theme-accent-light-green .mdui-text-color-theme-a700 { color: #64dd17 !important } .mdui-theme-accent-lime .mdui-text-color-theme-accent { color: #eeff41 !important } .mdui-theme-accent-lime .mdui-text-color-theme-a100 { color: #f4ff81 !important } .mdui-theme-accent-lime .mdui-text-color-theme-a200 { color: #eeff41 !important } .mdui-theme-accent-lime .mdui-text-color-theme-a400 { color: #c6ff00 !important } .mdui-theme-accent-lime .mdui-text-color-theme-a700 { color: #aeea00 !important } .mdui-theme-accent-orange .mdui-text-color-theme-accent { color: #ffab40 !important } .mdui-theme-accent-orange .mdui-text-color-theme-a100 { color: #ffd180 !important } .mdui-theme-accent-orange .mdui-text-color-theme-a200 { color: #ffab40 !important } .mdui-theme-accent-orange .mdui-text-color-theme-a400 { color: #ff9100 !important } .mdui-theme-accent-orange .mdui-text-color-theme-a700 { color: #ff6d00 !important } .mdui-theme-accent-pink .mdui-text-color-theme-accent { color: #ff4081 !important } .mdui-theme-accent-pink .mdui-text-color-theme-a100 { color: #ff80ab !important } .mdui-theme-accent-pink .mdui-text-color-theme-a200 { color: #ff4081 !important } .mdui-theme-accent-pink .mdui-text-color-theme-a400 { color: #f50057 !important } .mdui-theme-accent-pink .mdui-text-color-theme-a700 { color: #c51162 !important } .mdui-theme-accent-purple .mdui-text-color-theme-accent { color: #e040fb !important } .mdui-theme-accent-purple .mdui-text-color-theme-a100 { color: #ea80fc !important } .mdui-theme-accent-purple .mdui-text-color-theme-a200 { color: #e040fb !important } .mdui-theme-accent-purple .mdui-text-color-theme-a400 { color: #d500f9 !important } .mdui-theme-accent-purple .mdui-text-color-theme-a700 { color: #a0f !important } .mdui-theme-accent-red .mdui-text-color-theme-accent { color: #ff5252 !important } .mdui-theme-accent-red .mdui-text-color-theme-a100 { color: #ff8a80 !important } .mdui-theme-accent-red .mdui-text-color-theme-a200 { color: #ff5252 !important } .mdui-theme-accent-red .mdui-text-color-theme-a400 { color: #ff1744 !important } .mdui-theme-accent-red .mdui-text-color-theme-a700 { color: #d50000 !important } .mdui-theme-accent-teal .mdui-text-color-theme-accent { color: #64ffda !important } .mdui-theme-accent-teal .mdui-text-color-theme-a100 { color: #a7ffeb !important } .mdui-theme-accent-teal .mdui-text-color-theme-a200 { color: #64ffda !important } .mdui-theme-accent-teal .mdui-text-color-theme-a400 { color: #1de9b6 !important } .mdui-theme-accent-teal .mdui-text-color-theme-a700 { color: #00bfa5 !important } .mdui-theme-accent-yellow .mdui-text-color-theme-accent { color: #ff0 !important } .mdui-theme-accent-yellow .mdui-text-color-theme-a100 { color: #ffff8d !important } .mdui-theme-accent-yellow .mdui-text-color-theme-a200 { color: #ff0 !important } .mdui-theme-accent-yellow .mdui-text-color-theme-a400 { color: #ffea00 !important } .mdui-theme-accent-yellow .mdui-text-color-theme-a700 { color: #ffd600 !important } .mdui-text-color-amber { color: #ffc107 !important } .mdui-text-color-amber-50 { color: #fff8e1 !important } .mdui-text-color-amber-100 { color: #ffecb3 !important } .mdui-text-color-amber-200 { color: #ffe082 !important } .mdui-text-color-amber-300 { color: #ffd54f !important } .mdui-text-color-amber-400 { color: #ffca28 !important } .mdui-text-color-amber-500 { color: #ffc107 !important } .mdui-text-color-amber-600 { color: #ffb300 !important } .mdui-text-color-amber-700 { color: #ffa000 !important } .mdui-text-color-amber-800 { color: #ff8f00 !important } .mdui-text-color-amber-900 { color: #ff6f00 !important } .mdui-text-color-blue { color: #2196f3 !important } .mdui-text-color-blue-50 { color: #e3f2fd !important } .mdui-text-color-blue-100 { color: #bbdefb !important } .mdui-text-color-blue-200 { color: #90caf9 !important } .mdui-text-color-blue-300 { color: #64b5f6 !important } .mdui-text-color-blue-400 { color: #42a5f5 !important } .mdui-text-color-blue-500 { color: #2196f3 !important } .mdui-text-color-blue-600 { color: #1e88e5 !important } .mdui-text-color-blue-700 { color: #1976d2 !important } .mdui-text-color-blue-800 { color: #1565c0 !important } .mdui-text-color-blue-900 { color: #0d47a1 !important } .mdui-text-color-blue-grey { color: #607d8b !important } .mdui-text-color-blue-grey-50 { color: #eceff1 !important } .mdui-text-color-blue-grey-100 { color: #cfd8dc !important } .mdui-text-color-blue-grey-200 { color: #b0bec5 !important } .mdui-text-color-blue-grey-300 { color: #90a4ae !important } .mdui-text-color-blue-grey-400 { color: #78909c !important } .mdui-text-color-blue-grey-500 { color: #607d8b !important } .mdui-text-color-blue-grey-600 { color: #546e7a !important } .mdui-text-color-blue-grey-700 { color: #455a64 !important } .mdui-text-color-blue-grey-800 { color: #37474f !important } .mdui-text-color-blue-grey-900 { color: #263238 !important } .mdui-text-color-brown { color: #795548 !important } .mdui-text-color-brown-50 { color: #efebe9 !important } .mdui-text-color-brown-100 { color: #d7ccc8 !important } .mdui-text-color-brown-200 { color: #bcaaa4 !important } .mdui-text-color-brown-300 { color: #a1887f !important } .mdui-text-color-brown-400 { color: #8d6e63 !important } .mdui-text-color-brown-500 { color: #795548 !important } .mdui-text-color-brown-600 { color: #6d4c41 !important } .mdui-text-color-brown-700 { color: #5d4037 !important } .mdui-text-color-brown-800 { color: #4e342e !important } .mdui-text-color-brown-900 { color: #3e2723 !important } .mdui-text-color-cyan { color: #00bcd4 !important } .mdui-text-color-cyan-50 { color: #e0f7fa !important } .mdui-text-color-cyan-100 { color: #b2ebf2 !important } .mdui-text-color-cyan-200 { color: #80deea !important } .mdui-text-color-cyan-300 { color: #4dd0e1 !important } .mdui-text-color-cyan-400 { color: #26c6da !important } .mdui-text-color-cyan-500 { color: #00bcd4 !important } .mdui-text-color-cyan-600 { color: #00acc1 !important } .mdui-text-color-cyan-700 { color: #0097a7 !important } .mdui-text-color-cyan-800 { color: #00838f !important } .mdui-text-color-cyan-900 { color: #006064 !important } .mdui-text-color-deep-orange { color: #ff5722 !important } .mdui-text-color-deep-orange-50 { color: #fbe9e7 !important } .mdui-text-color-deep-orange-100 { color: #ffccbc !important } .mdui-text-color-deep-orange-200 { color: #ffab91 !important } .mdui-text-color-deep-orange-300 { color: #ff8a65 !important } .mdui-text-color-deep-orange-400 { color: #ff7043 !important } .mdui-text-color-deep-orange-500 { color: #ff5722 !important } .mdui-text-color-deep-orange-600 { color: #f4511e !important } .mdui-text-color-deep-orange-700 { color: #e64a19 !important } .mdui-text-color-deep-orange-800 { color: #d84315 !important } .mdui-text-color-deep-orange-900 { color: #bf360c !important } .mdui-text-color-deep-purple { color: #673ab7 !important } .mdui-text-color-deep-purple-50 { color: #ede7f6 !important } .mdui-text-color-deep-purple-100 { color: #d1c4e9 !important } .mdui-text-color-deep-purple-200 { color: #b39ddb !important } .mdui-text-color-deep-purple-300 { color: #9575cd !important } .mdui-text-color-deep-purple-400 { color: #7e57c2 !important } .mdui-text-color-deep-purple-500 { color: #673ab7 !important } .mdui-text-color-deep-purple-600 { color: #5e35b1 !important } .mdui-text-color-deep-purple-700 { color: #512da8 !important } .mdui-text-color-deep-purple-800 { color: #4527a0 !important } .mdui-text-color-deep-purple-900 { color: #311b92 !important } .mdui-text-color-green { color: #4caf50 !important } .mdui-text-color-green-50 { color: #e8f5e9 !important } .mdui-text-color-green-100 { color: #c8e6c9 !important } .mdui-text-color-green-200 { color: #a5d6a7 !important } .mdui-text-color-green-300 { color: #81c784 !important } .mdui-text-color-green-400 { color: #66bb6a !important } .mdui-text-color-green-500 { color: #4caf50 !important } .mdui-text-color-green-600 { color: #43a047 !important } .mdui-text-color-green-700 { color: #388e3c !important } .mdui-text-color-green-800 { color: #2e7d32 !important } .mdui-text-color-green-900 { color: #1b5e20 !important } .mdui-text-color-grey { color: #9e9e9e !important } .mdui-text-color-grey-50 { color: #fafafa !important } .mdui-text-color-grey-100 { color: #f5f5f5 !important } .mdui-text-color-grey-200 { color: #eee !important } .mdui-text-color-grey-300 { color: #e0e0e0 !important } .mdui-text-color-grey-400 { color: #bdbdbd !important } .mdui-text-color-grey-500 { color: #9e9e9e !important } .mdui-text-color-grey-600 { color: #757575 !important } .mdui-text-color-grey-700 { color: #616161 !important } .mdui-text-color-grey-800 { color: #424242 !important } .mdui-text-color-grey-900 { color: #212121 !important } .mdui-text-color-indigo { color: #3f51b5 !important } .mdui-text-color-indigo-50 { color: #e8eaf6 !important } .mdui-text-color-indigo-100 { color: #c5cae9 !important } .mdui-text-color-indigo-200 { color: #9fa8da !important } .mdui-text-color-indigo-300 { color: #7986cb !important } .mdui-text-color-indigo-400 { color: #5c6bc0 !important } .mdui-text-color-indigo-500 { color: #3f51b5 !important } .mdui-text-color-indigo-600 { color: #3949ab !important } .mdui-text-color-indigo-700 { color: #303f9f !important } .mdui-text-color-indigo-800 { color: #283593 !important } .mdui-text-color-indigo-900 { color: #1a237e !important } .mdui-text-color-light-blue { color: #03a9f4 !important } .mdui-text-color-light-blue-50 { color: #e1f5fe !important } .mdui-text-color-light-blue-100 { color: #b3e5fc !important } .mdui-text-color-light-blue-200 { color: #81d4fa !important } .mdui-text-color-light-blue-300 { color: #4fc3f7 !important } .mdui-text-color-light-blue-400 { color: #29b6f6 !important } .mdui-text-color-light-blue-500 { color: #03a9f4 !important } .mdui-text-color-light-blue-600 { color: #039be5 !important } .mdui-text-color-light-blue-700 { color: #0288d1 !important } .mdui-text-color-light-blue-800 { color: #0277bd !important } .mdui-text-color-light-blue-900 { color: #01579b !important } .mdui-text-color-light-green { color: #8bc34a !important } .mdui-text-color-light-green-50 { color: #f1f8e9 !important } .mdui-text-color-light-green-100 { color: #dcedc8 !important } .mdui-text-color-light-green-200 { color: #c5e1a5 !important } .mdui-text-color-light-green-300 { color: #aed581 !important } .mdui-text-color-light-green-400 { color: #9ccc65 !important } .mdui-text-color-light-green-500 { color: #8bc34a !important } .mdui-text-color-light-green-600 { color: #7cb342 !important } .mdui-text-color-light-green-700 { color: #689f38 !important } .mdui-text-color-light-green-800 { color: #558b2f !important } .mdui-text-color-light-green-900 { color: #33691e !important } .mdui-text-color-lime { color: #cddc39 !important } .mdui-text-color-lime-50 { color: #f9fbe7 !important } .mdui-text-color-lime-100 { color: #f0f4c3 !important } .mdui-text-color-lime-200 { color: #e6ee9c !important } .mdui-text-color-lime-300 { color: #dce775 !important } .mdui-text-color-lime-400 { color: #d4e157 !important } .mdui-text-color-lime-500 { color: #cddc39 !important } .mdui-text-color-lime-600 { color: #c0ca33 !important } .mdui-text-color-lime-700 { color: #afb42b !important } .mdui-text-color-lime-800 { color: #9e9d24 !important } .mdui-text-color-lime-900 { color: #827717 !important } .mdui-text-color-orange { color: #ff9800 !important } .mdui-text-color-orange-50 { color: #fff3e0 !important } .mdui-text-color-orange-100 { color: #ffe0b2 !important } .mdui-text-color-orange-200 { color: #ffcc80 !important } .mdui-text-color-orange-300 { color: #ffb74d !important } .mdui-text-color-orange-400 { color: #ffa726 !important } .mdui-text-color-orange-500 { color: #ff9800 !important } .mdui-text-color-orange-600 { color: #fb8c00 !important } .mdui-text-color-orange-700 { color: #f57c00 !important } .mdui-text-color-orange-800 { color: #ef6c00 !important } .mdui-text-color-orange-900 { color: #e65100 !important } .mdui-text-color-pink { color: #e91e63 !important } .mdui-text-color-pink-50 { color: #fce4ec !important } .mdui-text-color-pink-100 { color: #f8bbd0 !important } .mdui-text-color-pink-200 { color: #f48fb1 !important } .mdui-text-color-pink-300 { color: #f06292 !important } .mdui-text-color-pink-400 { color: #ec407a !important } .mdui-text-color-pink-500 { color: #e91e63 !important } .mdui-text-color-pink-600 { color: #d81b60 !important } .mdui-text-color-pink-700 { color: #c2185b !important } .mdui-text-color-pink-800 { color: #ad1457 !important } .mdui-text-color-pink-900 { color: #880e4f !important } .mdui-text-color-purple { color: #9c27b0 !important } .mdui-text-color-purple-50 { color: #f3e5f5 !important } .mdui-text-color-purple-100 { color: #e1bee7 !important } .mdui-text-color-purple-200 { color: #ce93d8 !important } .mdui-text-color-purple-300 { color: #ba68c8 !important } .mdui-text-color-purple-400 { color: #ab47bc !important } .mdui-text-color-purple-500 { color: #9c27b0 !important } .mdui-text-color-purple-600 { color: #8e24aa !important } .mdui-text-color-purple-700 { color: #7b1fa2 !important } .mdui-text-color-purple-800 { color: #6a1b9a !important } .mdui-text-color-purple-900 { color: #4a148c !important } .mdui-text-color-red { color: #f44336 !important } .mdui-text-color-red-50 { color: #ffebee !important } .mdui-text-color-red-100 { color: #ffcdd2 !important } .mdui-text-color-red-200 { color: #ef9a9a !important } .mdui-text-color-red-300 { color: #e57373 !important } .mdui-text-color-red-400 { color: #ef5350 !important } .mdui-text-color-red-500 { color: #f44336 !important } .mdui-text-color-red-600 { color: #e53935 !important } .mdui-text-color-red-700 { color: #d32f2f !important } .mdui-text-color-red-800 { color: #c62828 !important } .mdui-text-color-red-900 { color: #b71c1c !important } .mdui-text-color-teal { color: #009688 !important } .mdui-text-color-teal-50 { color: #e0f2f1 !important } .mdui-text-color-teal-100 { color: #b2dfdb !important } .mdui-text-color-teal-200 { color: #80cbc4 !important } .mdui-text-color-teal-300 { color: #4db6ac !important } .mdui-text-color-teal-400 { color: #26a69a !important } .mdui-text-color-teal-500 { color: #009688 !important } .mdui-text-color-teal-600 { color: #00897b !important } .mdui-text-color-teal-700 { color: #00796b !important } .mdui-text-color-teal-800 { color: #00695c !important } .mdui-text-color-teal-900 { color: #004d40 !important } .mdui-text-color-yellow { color: #ffeb3b !important } .mdui-text-color-yellow-50 { color: #fffde7 !important } .mdui-text-color-yellow-100 { color: #fff9c4 !important } .mdui-text-color-yellow-200 { color: #fff59d !important } .mdui-text-color-yellow-300 { color: #fff176 !important } .mdui-text-color-yellow-400 { color: #ffee58 !important } .mdui-text-color-yellow-500 { color: #ffeb3b !important } .mdui-text-color-yellow-600 { color: #fdd835 !important } .mdui-text-color-yellow-700 { color: #fbc02d !important } .mdui-text-color-yellow-800 { color: #f9a825 !important } .mdui-text-color-yellow-900 { color: #f57f17 !important } .mdui-text-color-amber-accent { color: #ffd740 !important } .mdui-text-color-amber-a100 { color: #ffe57f !important } .mdui-text-color-amber-a200 { color: #ffd740 !important } .mdui-text-color-amber-a400 { color: #ffc400 !important } .mdui-text-color-amber-a700 { color: #ffab00 !important } .mdui-text-color-blue-accent { color: #448aff !important } .mdui-text-color-blue-a100 { color: #82b1ff !important } .mdui-text-color-blue-a200 { color: #448aff !important } .mdui-text-color-blue-a400 { color: #2979ff !important } .mdui-text-color-blue-a700 { color: #2962ff !important } .mdui-text-color-cyan-accent { color: #18ffff !important } .mdui-text-color-cyan-a100 { color: #84ffff !important } .mdui-text-color-cyan-a200 { color: #18ffff !important } .mdui-text-color-cyan-a400 { color: #00e5ff !important } .mdui-text-color-cyan-a700 { color: #00b8d4 !important } .mdui-text-color-deep-orange-accent { color: #ff6e40 !important } .mdui-text-color-deep-orange-a100 { color: #ff9e80 !important } .mdui-text-color-deep-orange-a200 { color: #ff6e40 !important } .mdui-text-color-deep-orange-a400 { color: #ff3d00 !important } .mdui-text-color-deep-orange-a700 { color: #dd2c00 !important } .mdui-text-color-deep-purple-accent { color: #7c4dff !important } .mdui-text-color-deep-purple-a100 { color: #b388ff !important } .mdui-text-color-deep-purple-a200 { color: #7c4dff !important } .mdui-text-color-deep-purple-a400 { color: #651fff !important } .mdui-text-color-deep-purple-a700 { color: #6200ea !important } .mdui-text-color-green-accent { color: #69f0ae !important } .mdui-text-color-green-a100 { color: #b9f6ca !important } .mdui-text-color-green-a200 { color: #69f0ae !important } .mdui-text-color-green-a400 { color: #00e676 !important } .mdui-text-color-green-a700 { color: #00c853 !important } .mdui-text-color-indigo-accent { color: #536dfe !important } .mdui-text-color-indigo-a100 { color: #8c9eff !important } .mdui-text-color-indigo-a200 { color: #536dfe !important } .mdui-text-color-indigo-a400 { color: #3d5afe !important } .mdui-text-color-indigo-a700 { color: #304ffe !important } .mdui-text-color-light-blue-accent { color: #40c4ff !important } .mdui-text-color-light-blue-a100 { color: #80d8ff !important } .mdui-text-color-light-blue-a200 { color: #40c4ff !important } .mdui-text-color-light-blue-a400 { color: #00b0ff !important } .mdui-text-color-light-blue-a700 { color: #0091ea !important } .mdui-text-color-light-green-accent { color: #b2ff59 !important } .mdui-text-color-light-green-a100 { color: #ccff90 !important } .mdui-text-color-light-green-a200 { color: #b2ff59 !important } .mdui-text-color-light-green-a400 { color: #76ff03 !important } .mdui-text-color-light-green-a700 { color: #64dd17 !important } .mdui-text-color-lime-accent { color: #eeff41 !important } .mdui-text-color-lime-a100 { color: #f4ff81 !important } .mdui-text-color-lime-a200 { color: #eeff41 !important } .mdui-text-color-lime-a400 { color: #c6ff00 !important } .mdui-text-color-lime-a700 { color: #aeea00 !important } .mdui-text-color-orange-accent { color: #ffab40 !important } .mdui-text-color-orange-a100 { color: #ffd180 !important } .mdui-text-color-orange-a200 { color: #ffab40 !important } .mdui-text-color-orange-a400 { color: #ff9100 !important } .mdui-text-color-orange-a700 { color: #ff6d00 !important } .mdui-text-color-pink-accent { color: #ff4081 !important } .mdui-text-color-pink-a100 { color: #ff80ab !important } .mdui-text-color-pink-a200 { color: #ff4081 !important } .mdui-text-color-pink-a400 { color: #f50057 !important } .mdui-text-color-pink-a700 { color: #c51162 !important } .mdui-text-color-purple-accent { color: #e040fb !important } .mdui-text-color-purple-a100 { color: #ea80fc !important } .mdui-text-color-purple-a200 { color: #e040fb !important } .mdui-text-color-purple-a400 { color: #d500f9 !important } .mdui-text-color-purple-a700 { color: #a0f !important } .mdui-text-color-red-accent { color: #ff5252 !important } .mdui-text-color-red-a100 { color: #ff8a80 !important } .mdui-text-color-red-a200 { color: #ff5252 !important } .mdui-text-color-red-a400 { color: #ff1744 !important } .mdui-text-color-red-a700 { color: #d50000 !important } .mdui-text-color-teal-accent { color: #64ffda !important } .mdui-text-color-teal-a100 { color: #a7ffeb !important } .mdui-text-color-teal-a200 { color: #64ffda !important } .mdui-text-color-teal-a400 { color: #1de9b6 !important } .mdui-text-color-teal-a700 { color: #00bfa5 !important } .mdui-text-color-yellow-accent { color: #ff0 !important } .mdui-text-color-yellow-a100 { color: #ffff8d !important } .mdui-text-color-yellow-a200 { color: #ff0 !important } .mdui-text-color-yellow-a400 { color: #ffea00 !important } .mdui-text-color-yellow-a700 { color: #ffd600 !important } .mdui-text-color-black { color: #000 !important } .mdui-text-color-black-text, .mdui-text-color-theme-text { color: rgba(0, 0, 0, .87) !important } .mdui-text-color-black-secondary, .mdui-text-color-theme-secondary { color: rgba(0, 0, 0, .54) !important } .mdui-text-color-black-disabled, .mdui-text-color-theme-disabled { color: rgba(0, 0, 0, .38) !important } .mdui-text-color-black-divider, .mdui-text-color-theme-divider { color: rgba(0, 0, 0, .12) !important } .mdui-text-color-black-icon, .mdui-text-color-theme-icon { color: rgba(0, 0, 0, .54) !important } .mdui-text-color-black-icon-disabled, .mdui-text-color-theme-icon-disabled { color: rgba(0, 0, 0, .26) !important } .mdui-text-color-white { color: #fff !important } .mdui-text-color-white-text { color: #fff !important } .mdui-text-color-white-secondary { color: rgba(255, 255, 255, .7) !important } .mdui-text-color-white-disabled { color: rgba(255, 255, 255, .5) !important } .mdui-text-color-white-divider { color: rgba(255, 255, 255, .12) !important } .mdui-text-color-white-icon { color: #fff !important } .mdui-text-color-white-icon-disabled { color: rgba(255, 255, 255, .3) !important } .mdui-theme-layout-dark .mdui-text-color-theme-text { color: #fff !important } .mdui-theme-layout-dark .mdui-text-color-theme-secondary { color: rgba(255, 255, 255, .7) !important } .mdui-theme-layout-dark .mdui-text-color-theme-disabled { color: rgba(255, 255, 255, .5) !important } .mdui-theme-layout-dark .mdui-text-color-theme-divider { color: rgba(255, 255, 255, .12) !important } .mdui-theme-layout-dark .mdui-text-color-theme-icon { color: #fff !important } .mdui-theme-layout-dark .mdui-text-color-theme-icon-disabled { color: rgba(255, 255, 255, .3) !important } .mdui-m-a-0 { margin: 0 !important } .mdui-m-t-0 { margin-top: 0 !important } .mdui-m-r-0 { margin-right: 0 !important } .mdui-m-b-0 { margin-bottom: 0 !important } .mdui-m-l-0 { margin-left: 0 !important } .mdui-m-x-0 { margin-right: 0 !important; margin-left: 0 !important } .mdui-m-y-0 { margin-top: 0 !important; margin-bottom: 0 !important } .mdui-p-a-0 { padding: 0 !important } .mdui-p-t-0 { padding-top: 0 !important } .mdui-p-r-0 { padding-right: 0 !important } .mdui-p-b-0 { padding-bottom: 0 !important } .mdui-p-l-0 { padding-left: 0 !important } .mdui-p-x-0 { padding-right: 0 !important; padding-left: 0 !important } .mdui-p-y-0 { padding-top: 0 !important; padding-bottom: 0 !important } .mdui-m-a-1 { margin: 8px !important } .mdui-m-t-1 { margin-top: 8px !important } .mdui-m-r-1 { margin-right: 8px !important } .mdui-m-b-1 { margin-bottom: 8px !important } .mdui-m-l-1 { margin-left: 8px !important } .mdui-m-x-1 { margin-right: 8px !important; margin-left: 8px !important } .mdui-m-y-1 { margin-top: 8px !important; margin-bottom: 8px !important } .mdui-p-a-1 { padding: 8px !important } .mdui-p-t-1 { padding-top: 8px !important } .mdui-p-r-1 { padding-right: 8px !important } .mdui-p-b-1 { padding-bottom: 8px !important } .mdui-p-l-1 { padding-left: 8px !important } .mdui-p-x-1 { padding-right: 8px !important; padding-left: 8px !important } .mdui-p-y-1 { padding-top: 8px !important; padding-bottom: 8px !important } .mdui-m-a-2 { margin: 16px !important } .mdui-m-t-2 { margin-top: 16px !important } .mdui-m-r-2 { margin-right: 16px !important } .mdui-m-b-2 { margin-bottom: 16px !important } .mdui-m-l-2 { margin-left: 16px !important } .mdui-m-x-2 { margin-right: 16px !important; margin-left: 16px !important } .mdui-m-y-2 { margin-top: 16px !important; margin-bottom: 16px !important } .mdui-p-a-2 { padding: 16px !important } .mdui-p-t-2 { padding-top: 16px !important } .mdui-p-r-2 { padding-right: 16px !important } .mdui-p-b-2 { padding-bottom: 16px !important } .mdui-p-l-2 { padding-left: 16px !important } .mdui-p-x-2 { padding-right: 16px !important; padding-left: 16px !important } .mdui-p-y-2 { padding-top: 16px !important; padding-bottom: 16px !important } .mdui-m-a-3 { margin: 24px !important } .mdui-m-t-3 { margin-top: 24px !important } .mdui-m-r-3 { margin-right: 24px !important } .mdui-m-b-3 { margin-bottom: 24px !important } .mdui-m-l-3 { margin-left: 24px !important } .mdui-m-x-3 { margin-right: 24px !important; margin-left: 24px !important } .mdui-m-y-3 { margin-top: 24px !important; margin-bottom: 24px !important } .mdui-p-a-3 { padding: 24px !important } .mdui-p-t-3 { padding-top: 24px !important } .mdui-p-r-3 { padding-right: 24px !important } .mdui-p-b-3 { padding-bottom: 24px !important } .mdui-p-l-3 { padding-left: 24px !important } .mdui-p-x-3 { padding-right: 24px !important; padding-left: 24px !important } .mdui-p-y-3 { padding-top: 24px !important; padding-bottom: 24px !important } .mdui-m-a-4 { margin: 32px !important } .mdui-m-t-4 { margin-top: 32px !important } .mdui-m-r-4 { margin-right: 32px !important } .mdui-m-b-4 { margin-bottom: 32px !important } .mdui-m-l-4 { margin-left: 32px !important } .mdui-m-x-4 { margin-right: 32px !important; margin-left: 32px !important } .mdui-m-y-4 { margin-top: 32px !important; margin-bottom: 32px !important } .mdui-p-a-4 { padding: 32px !important } .mdui-p-t-4 { padding-top: 32px !important } .mdui-p-r-4 { padding-right: 32px !important } .mdui-p-b-4 { padding-bottom: 32px !important } .mdui-p-l-4 { padding-left: 32px !important } .mdui-p-x-4 { padding-right: 32px !important; padding-left: 32px !important } .mdui-p-y-4 { padding-top: 32px !important; padding-bottom: 32px !important } .mdui-m-a-5 { margin: 40px !important } .mdui-m-t-5 { margin-top: 40px !important } .mdui-m-r-5 { margin-right: 40px !important } .mdui-m-b-5 { margin-bottom: 40px !important } .mdui-m-l-5 { margin-left: 40px !important } .mdui-m-x-5 { margin-right: 40px !important; margin-left: 40px !important } .mdui-m-y-5 { margin-top: 40px !important; margin-bottom: 40px !important } .mdui-p-a-5 { padding: 40px !important } .mdui-p-t-5 { padding-top: 40px !important } .mdui-p-r-5 { padding-right: 40px !important } .mdui-p-b-5 { padding-bottom: 40px !important } .mdui-p-l-5 { padding-left: 40px !important } .mdui-p-x-5 { padding-right: 40px !important; padding-left: 40px !important } .mdui-p-y-5 { padding-top: 40px !important; padding-bottom: 40px !important } .mdui-float-left { float: left !important } .mdui-float-right { float: right !important } .mdui-center { display: block !important; margin-right: auto !important; margin-left: auto !important } .mdui-valign { display: -webkit-box !important; display: -webkit-flex !important; display: -ms-flexbox !important; display: flex !important; -webkit-box-align: center !important; -webkit-align-items: center !important; -ms-flex-align: center !important; align-items: center !important } .mdui-text-left { text-align: left !important } .mdui-text-center { text-align: center !important } .mdui-text-right { text-align: right !important } .mdui-text-lowercase { text-transform: lowercase !important } .mdui-text-uppercase { text-transform: uppercase !important } .mdui-text-capitalize { text-transform: capitalize !important } .mdui-text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap } .mdui-clearfix:after, .mdui-clearfix:before { display: table; content: " " } .mdui-clearfix:after { clear: both } .mdui-hidden, [hidden] { display: none !important } .mdui-invisible { visibility: hidden } @media (max-width: 599px) { .mdui-hidden-xs { display: none !important } } @media (min-width: 600px) and (max-width: 1023px) { .mdui-hidden-sm { display: none !important } } @media (min-width: 1024px) and (max-width: 1439px) { .mdui-hidden-md { display: none !important } } @media (min-width: 1440px) and (max-width: 1919px) { .mdui-hidden-lg { display: none !important } } @media (min-width: 1920px) { .mdui-hidden-xl { display: none !important } } @media (max-width: 599px) { .mdui-hidden-xs-down { display: none !important } } @media (max-width: 1023px) { .mdui-hidden-sm-down { display: none !important } } @media (max-width: 1439px) { .mdui-hidden-md-down { display: none !important } } @media (max-width: 1919px) { .mdui-hidden-lg-down { display: none !important } } .mdui-hidden-xl-down { display: none !important } .mdui-hidden-xs-up { display: none !important } @media (min-width: 600px) { .mdui-hidden-sm-up { display: none !important } } @media (min-width: 1024px) { .mdui-hidden-md-up { display: none !important } } @media (min-width: 1440px) { .mdui-hidden-lg-up { display: none !important } } @media (min-width: 1920px) { .mdui-hidden-xl-up { display: none !important } } /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ html { line-height: 1.15; -webkit-text-size-adjust: 100% } body { margin: 0 } main { display: block } h1 { margin: .67em 0; font-size: 2em } hr { height: 0; -webkit-box-sizing: content-box; box-sizing: content-box; overflow: visible } pre { font-family: monospace, monospace; font-size: 1em } a { background-color: transparent } abbr[title] { text-decoration: underline; text-decoration: underline dotted; border-bottom: none; -webkit-text-decoration: underline dotted; -moz-text-decoration: underline dotted } b, strong { font-weight: bolder } code, kbd, samp { font-family: monospace, monospace; font-size: 1em } small { font-size: 80% } sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline } sub { bottom: -.25em } sup { top: -.5em } img { border-style: none } button, input, optgroup, select, textarea { margin: 0; font-family: inherit; font-size: 100%; line-height: 1.15 } button, input { overflow: visible } button, select { text-transform: none } [type=button], [type=reset], [type=submit], button { -webkit-appearance: button } [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner, button::-moz-focus-inner { padding: 0; border-style: none } [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring, button:-moz-focusring { outline: 1px dotted ButtonText } fieldset { padding: .35em .75em .625em } legend { display: table; max-width: 100%; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 0; color: inherit; white-space: normal } progress { vertical-align: baseline } textarea { overflow: auto } [type=checkbox], [type=radio] { -webkit-box-sizing: border-box; box-sizing: border-box; padding: 0 } [type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button { height: auto } [type=search] { -webkit-appearance: textfield; outline-offset: -2px } [type=search]::-webkit-search-decoration { -webkit-appearance: none } ::-webkit-file-upload-button { -webkit-appearance: button; font: inherit } details { display: block } summary { display: list-item } template { display: none } [hidden] { display: none } body { font-family: Roboto, Noto, Helvetica, Arial, sans-serif; font-size: 14px; color: rgba(0, 0, 0, .87); background-color: #fff } @media (min-width: 600px) { body { font-size: 14.5px } } @media (min-width: 1024px) { body { font-size: 15px } } body ::-webkit-scrollbar { width: 5px; height: 5px; background: 0 0 } @media (min-width: 1024px) { body ::-webkit-scrollbar { width: 8px; height: 8px } } body ::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, .2) } body.mdui-theme-layout-dark ::-webkit-scrollbar { width: 5px; height: 5px; background: 0 0 } @media (min-width: 1024px) { body.mdui-theme-layout-dark ::-webkit-scrollbar { width: 8px; height: 8px } } body.mdui-theme-layout-dark ::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, .3) } * { -webkit-tap-highlight-color: transparent } body.mdui-locked { overflow: hidden } .mdui-overlay { position: fixed; top: -5000px; right: -5000px; bottom: -5000px; left: -5000px; z-index: 2000; visibility: hidden; background: rgba(0, 0, 0, .4); opacity: 0; -webkit-transition-duration: .3s; transition-duration: .3s; -webkit-transition-property: opacity, visibility; transition-property: opacity, visibility; -webkit-backface-visibility: hidden; backface-visibility: hidden; will-change: opacity } .mdui-overlay-show { visibility: visible; opacity: 1 } .mdui-no-transition { -webkit-transition-property: none !important; transition-property: none !important } .mdui-theme-layout-dark { color: #fff; background-color: #303030 } .mdui-icon, .mdui-icon::before { font-size: 24px; font-style: normal; font-weight: 400; line-height: 1; color: inherit; text-transform: none; letter-spacing: normal; word-wrap: normal; white-space: nowrap; vertical-align: middle; direction: ltr } .mdui-icon { display: inline-block; text-align: center } .mdui-icon::before { display: block !important; width: 24px; height: 24px } @font-face { font-family: 'Material Icons'; font-style: normal; font-weight: 400; src: local('Material Icons'), local('MaterialIcons-Regular'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/MaterialIcons-Regular.woff2) format('woff2'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/MaterialIcons-Regular.woff) format('woff') } .material-icons { font-family: 'Material Icons'; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; -moz-osx-font-smoothing: grayscale; -webkit-font-feature-settings: 'liga'; -moz-font-feature-settings: 'liga'; font-feature-settings: 'liga' } @font-face { font-family: Roboto; font-style: normal; font-weight: 100; src: local('Roboto Thin'), local('Roboto-Thin'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-Thin.woff2) format('woff2'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-Thin.woff) format('woff') } @font-face { font-family: Roboto; font-style: italic; font-weight: 100; src: local('Roboto ThinItalic'), local('Roboto-ThinItalic'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-ThinItalic.woff2) format('woff2'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-ThinItalic.woff) format('woff') } @font-face { font-family: Roboto; font-style: normal; font-weight: 300; src: local('Roboto Light'), local('Roboto-Light'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-Light.woff2) format('woff2'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-Light.woff) format('woff') } @font-face { font-family: Roboto; font-style: italic; font-weight: 300; src: local('Roboto LightItalic'), local('Roboto-LightItalic'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-LightItalic.woff2) format('woff2'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-LightItalic.woff) format('woff') } @font-face { font-family: Roboto; font-style: normal; font-weight: 400; src: local('Roboto Regular'), local('Roboto-Regular'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-Regular.woff2) format('woff2'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-Regular.woff) format('woff') } @font-face { font-family: Roboto; font-style: italic; font-weight: 400; src: local('Roboto RegularItalic'), local('Roboto-RegularItalic'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-RegularItalic.woff2) format('woff2'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-RegularItalic.woff) format('woff') } @font-face { font-family: Roboto; font-style: normal; font-weight: 500; src: local('Roboto Medium'), local('Roboto-Medium'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-Medium.woff2) format('woff2'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-Medium.woff) format('woff') } @font-face { font-family: Roboto; font-style: italic; font-weight: 500; src: local('Roboto MediumItalic'), local('Roboto-MediumItalic'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-MediumItalic.woff2) format('woff2'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-MediumItalic.woff) format('woff') } @font-face { font-family: Roboto; font-style: normal; font-weight: 700; src: local('Roboto Bold'), local('Roboto-Bold'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-Bold.woff2) format('woff2'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-Bold.woff) format('woff') } @font-face { font-family: Roboto; font-style: italic; font-weight: 700; src: local('Roboto BoldItalic'), local('Roboto-BoldItalic'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-BoldItalic.woff2) format('woff2'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-BoldItalic.woff) format('woff') } @font-face { font-family: Roboto; font-style: normal; font-weight: 900; src: local('Roboto Black'), local('Roboto-Black'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-Black.woff2) format('woff2'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-Black.woff) format('woff') } @font-face { font-family: Roboto; font-style: italic; font-weight: 900; src: local('Roboto BlackItalic'), local('Roboto-BlackItalic'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-BlackItalic.woff2) format('woff2'), url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/file/Roboto-BlackItalic.woff) format('woff') } .mdui-typo-display-4, .mdui-typo-display-4-opacity { font-size: 112px; font-weight: 300; letter-spacing: -.04em } .mdui-typo-display-4-opacity { opacity: .54 } .mdui-typo-display-3, .mdui-typo-display-3-opacity { font-size: 56px; font-weight: 400; letter-spacing: -.02em } .mdui-typo-display-3-opacity { opacity: .54 } .mdui-typo-display-2, .mdui-typo-display-2-opacity { font-size: 45px; font-weight: 400; letter-spacing: 0 } .mdui-typo-display-2-opacity { opacity: .54 } .mdui-typo-display-1, .mdui-typo-display-1-opacity { font-size: 34px; font-weight: 400; letter-spacing: 0 } .mdui-typo-display-1-opacity { opacity: .54 } .mdui-typo-headline, .mdui-typo-headline-opacity { font-size: 24px; font-weight: 400; -moz-osx-font-smoothing: grayscale } .mdui-typo-headline-opacity { opacity: .87 } .mdui-typo-title, .mdui-typo-title-opacity { font-size: 20px; font-weight: 500; letter-spacing: .02em } .mdui-typo-title-opacity { opacity: .87 } .mdui-typo-subheading, .mdui-typo-subheading-opacity { font-size: 16px; font-weight: 400; letter-spacing: .04em } .mdui-typo-subheading-opacity { opacity: .87 } .mdui-typo-body-2, .mdui-typo-body-2-opacity { font-size: 14px; font-weight: 500; letter-spacing: .04em } .mdui-typo-body-2-opacity { opacity: .87 } .mdui-typo-body-1, .mdui-typo-body-1-opacity { font-size: 14px; font-weight: 400; letter-spacing: .04em } .mdui-typo-body-1-opacity { opacity: .87 } .mdui-typo-caption, .mdui-typo-caption-opacity { font-size: 12px; font-weight: 400; letter-spacing: .08em } .mdui-typo-caption-opacity { opacity: .54 } .mdui-typo { line-height: 1.8; word-wrap: break-word } .mdui-typo address, .mdui-typo caption, .mdui-typo cite, .mdui-typo code, .mdui-typo dfn, .mdui-typo th { font-style: normal; font-weight: 400 } .mdui-typo caption, .mdui-typo th { text-align: left } .mdui-typo q:after, .mdui-typo q:before { content: '' } .mdui-typo code, .mdui-typo kbd, .mdui-typo pre, .mdui-typo pre tt, .mdui-typo samp { font-family: Consolas, Courier, 'Courier New', monospace } .mdui-typo figcaption { font-size: 80%; color: rgba(0, 0, 0, .54) } .mdui-typo [draggable=true], .mdui-typo [draggable] { cursor: move } .mdui-typo [draggable=false] { cursor: inherit } .mdui-typo .mdui-table, .mdui-typo .mdui-table-fluid, .mdui-typo dl, .mdui-typo figure, .mdui-typo form, .mdui-typo hr, .mdui-typo ol, .mdui-typo p, .mdui-typo pre, .mdui-typo table, .mdui-typo ul { margin: 0 0 1.2em 0 } .mdui-typo a { position: relative; display: inline-block; overflow: hidden; color: #ff4081; text-decoration: none; vertical-align: top; outline: 0 } .mdui-typo a:before { position: absolute; top: auto; bottom: 1px; left: 0; width: 100%; height: 1px; content: ' '; background-color: #ff4081; -webkit-transition: all .2s; transition: all .2s; -webkit-transform: scaleX(0); transform: scaleX(0); -webkit-backface-visibility: hidden; backface-visibility: hidden } .mdui-typo a:focus:before, .mdui-typo a:hover:before { -webkit-transform: scaleX(1); transform: scaleX(1) } .mdui-typo small { font-size: 80% } .mdui-typo blockquote { padding-left: 1em; margin: 1em 3em 1em 2em; font-weight: 400; border-left: 4px solid rgba(0, 0, 0, .12) } @media only screen and (max-width: 599px) { .mdui-typo blockquote { margin: 1em 0 } } .mdui-typo blockquote footer { font-size: 86%; color: rgba(0, 0, 0, .54) } .mdui-typo mark { padding: 2px; margin: 0 5px; background: #fffdd1; border-bottom: 1px solid #ffedce } .mdui-typo h1, .mdui-typo h2, .mdui-typo h3, .mdui-typo h4, .mdui-typo h5, .mdui-typo h6 { margin-top: 1.2em; margin-bottom: .6em; font-family: inherit; font-weight: 400; line-height: 1.35; color: inherit } .mdui-typo h1 small, .mdui-typo h2 small, .mdui-typo h3 small, .mdui-typo h4 small, .mdui-typo h5 small, .mdui-typo h6 small { font-size: 65%; font-weight: 400; line-height: 1; color: rgba(0, 0, 0, .54) } .mdui-typo h1 { font-size: 2em } .mdui-typo h2 { font-size: 1.8em } .mdui-typo h3 { font-size: 1.6em } .mdui-typo h4 { font-size: 1.4em } .mdui-typo h5 { font-size: 1.2em } .mdui-typo h6 { font-size: 1.1em } .mdui-typo code { padding: 2px 6px; color: #c7254e; background-color: #f7f7f9; border-radius: 2px } .mdui-typo pre code { padding: 0; font-size: inherit; line-height: 1.7; color: inherit; background-color: transparent; border-radius: 0 } .mdui-typo abbr[title] { text-decoration: none; cursor: help; border-bottom: 1px dotted } .mdui-typo ins { text-decoration: none; border-bottom: 1px solid } .mdui-typo u { text-decoration: none; border-bottom: 1px solid } .mdui-typo del { text-decoration: line-through } .mdui-typo hr { height: 10px; margin-bottom: .8em; border: none; border-bottom: 1px solid rgba(0, 0, 0, .12) } .mdui-typo pre { padding: 12px 16px; overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid rgba(0, 0, 0, .12); border-radius: 2px } .mdui-typo kbd { padding: 2px 6px; font-size: 90%; color: #fff; background-color: #333; border-radius: 2px } .mdui-typo ul { padding-left: 2em; list-style: disc } .mdui-typo ol { padding-left: 2em; list-style: decimal } .mdui-typo li ol, .mdui-typo li ul { margin: .8em 0 } .mdui-typo li ul { list-style: circle } .mdui-typo img { max-width: 100% } .mdui-theme-accent-amber .mdui-typo a { color: #ffd740 } .mdui-theme-accent-amber .mdui-typo a:before { background-color: #ffd740 } .mdui-theme-accent-blue .mdui-typo a { color: #448aff } .mdui-theme-accent-blue .mdui-typo a:before { background-color: #448aff } .mdui-theme-accent-cyan .mdui-typo a { color: #18ffff } .mdui-theme-accent-cyan .mdui-typo a:before { background-color: #18ffff } .mdui-theme-accent-deep-orange .mdui-typo a { color: #ff6e40 } .mdui-theme-accent-deep-orange .mdui-typo a:before { background-color: #ff6e40 } .mdui-theme-accent-deep-purple .mdui-typo a { color: #7c4dff } .mdui-theme-accent-deep-purple .mdui-typo a:before { background-color: #7c4dff } .mdui-theme-accent-green .mdui-typo a { color: #69f0ae } .mdui-theme-accent-green .mdui-typo a:before { background-color: #69f0ae } .mdui-theme-accent-indigo .mdui-typo a { color: #536dfe } .mdui-theme-accent-indigo .mdui-typo a:before { background-color: #536dfe } .mdui-theme-accent-light-blue .mdui-typo a { color: #40c4ff } .mdui-theme-accent-light-blue .mdui-typo a:before { background-color: #40c4ff } .mdui-theme-accent-light-green .mdui-typo a { color: #b2ff59 } .mdui-theme-accent-light-green .mdui-typo a:before { background-color: #b2ff59 } .mdui-theme-accent-lime .mdui-typo a { color: #eeff41 } .mdui-theme-accent-lime .mdui-typo a:before { background-color: #eeff41 } .mdui-theme-accent-orange .mdui-typo a { color: #ffab40 } .mdui-theme-accent-orange .mdui-typo a:before { background-color: #ffab40 } .mdui-theme-accent-pink .mdui-typo a { color: #ff4081 } .mdui-theme-accent-pink .mdui-typo a:before { background-color: #ff4081 } .mdui-theme-accent-purple .mdui-typo a { color: #e040fb } .mdui-theme-accent-purple .mdui-typo a:before { background-color: #e040fb } .mdui-theme-accent-red .mdui-typo a { color: #ff5252 } .mdui-theme-accent-red .mdui-typo a:before { background-color: #ff5252 } .mdui-theme-accent-teal .mdui-typo a { color: #64ffda } .mdui-theme-accent-teal .mdui-typo a:before { background-color: #64ffda } .mdui-theme-accent-yellow .mdui-typo a { color: #ff0 } .mdui-theme-accent-yellow .mdui-typo a:before { background-color: #ff0 } .mdui-theme-layout-dark .mdui-typo blockquote { border-left-color: rgba(255, 255, 255, .12) } .mdui-theme-layout-dark .mdui-typo blockquote footer { color: rgba(255, 255, 255, .7) } .mdui-theme-layout-dark .mdui-typo figcaption { color: rgba(255, 255, 255, .7) } .mdui-theme-layout-dark .mdui-typo mark { background: #aaa; border-bottom-color: #bbb } .mdui-theme-layout-dark .mdui-typo h1 small, .mdui-theme-layout-dark .mdui-typo h2 small, .mdui-theme-layout-dark .mdui-typo h3 small, .mdui-theme-layout-dark .mdui-typo h4 small, .mdui-theme-layout-dark .mdui-typo h5 small, .mdui-theme-layout-dark .mdui-typo h6 small { color: rgba(255, 255, 255, .7) } .mdui-theme-layout-dark .mdui-typo code { color: #ffcdd2; background-color: #424242 } .mdui-theme-layout-dark .mdui-typo pre { background: #424242; border-color: rgba(255, 255, 255, .12) } .mdui-theme-layout-dark .mdui-typo kbd { background: #424242 } .mdui-theme-layout-dark .mdui-typo hr { border-color: rgba(255, 255, 255, .12) } .mdui-headroom { -webkit-transition: all .3s cubic-bezier(.4, 0, .2, 1) !important; transition: all .3s cubic-bezier(.4, 0, .2, 1) !important } .mdui-headroom-pinned-top { -webkit-transform: translate3d(0, 0, 0) !important; transform: translate3d(0, 0, 0) !important } .mdui-headroom-unpinned-top { -webkit-box-shadow: none !important; box-shadow: none !important; -webkit-transform: translate3d(0, -100%, 0) !important; transform: translate3d(0, -100%, 0) !important } .mdui-headroom-pinned-down { -webkit-transform: translate3d(0, 0, 0) !important; transform: translate3d(0, 0, 0) !important } .mdui-headroom-unpinned-down { -webkit-box-shadow: none !important; box-shadow: none !important; -webkit-transform: translate3d(0, 100%, 0) !important; transform: translate3d(0, 100%, 0) !important } .mdui-headroom-pinned-toolbar { -webkit-transform: translate3d(0, 0, 0) !important; transform: translate3d(0, 0, 0) !important } .mdui-headroom-unpinned-toolbar { -webkit-transform: translate3d(0, -56px, 0) !important; transform: translate3d(0, -56px, 0) !important } @media (min-width: 600px) { .mdui-headroom-unpinned-toolbar { -webkit-transform: translate3d(0, -64px, 0) !important; transform: translate3d(0, -64px, 0) !important } } @media (orientation: landscape) and (max-width: 959px) { .mdui-headroom-unpinned-toolbar { -webkit-transform: translate3d(0, -48px, 0) !important; transform: translate3d(0, -48px, 0) !important } } .mdui-collapse-item-header .mdui-collapse-item-arrow, .mdui-collapse-item-header.mdui-collapse-item-arrow { -webkit-transition: -webkit-transform .3s cubic-bezier(.4, 0, .2, 1); transition: -webkit-transform .3s cubic-bezier(.4, 0, .2, 1); transition: transform .3s cubic-bezier(.4, 0, .2, 1); transition: transform .3s cubic-bezier(.4, 0, .2, 1), -webkit-transform .3s cubic-bezier(.4, 0, .2, 1); -webkit-transform: rotate(0); transform: rotate(0); will-change: transform } .mdui-collapse-item-body { height: 0; padding-top: 0; padding-bottom: 0; margin-top: 0; margin-bottom: 0; overflow: hidden; -webkit-transition: all .3s cubic-bezier(.4, 0, .2, 1); transition: all .3s cubic-bezier(.4, 0, .2, 1); will-change: height } .mdui-collapse-item-body .mdui-list-item { padding-left: 72px } .mdui-collapse-item-open > .mdui-collapse-item-header .mdui-collapse-item-arrow, .mdui-collapse-item-open > .mdui-collapse-item-header.mdui-collapse-item-arrow { -webkit-transform: rotate(180deg); transform: rotate(180deg) } .mdui-collapse-item-open > .mdui-collapse-item-body { height: auto } .mdui-table { position: relative; width: 100%; border-spacing: 0; border-collapse: separate; background-color: #fff; border: 1px solid rgba(0, 0, 0, .12); border-bottom: none; -webkit-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12); box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12) } .mdui-table tbody tr { position: relative; -webkit-transition: background-color .28s cubic-bezier(.4, 0, .2, 1); transition: background-color .28s cubic-bezier(.4, 0, .2, 1) } .mdui-table td, .mdui-table th { position: relative; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 12px 28px; text-align: left; vertical-align: middle; border-bottom: 1px solid rgba(0, 0, 0, .12) } .mdui-table td:last-child, .mdui-table th:last-child { padding-right: 24px } .mdui-table td:first-child, .mdui-table th:first-child { padding-right: 0; padding-left: 24px } .mdui-table td:nth-child(2), .mdui-table th:nth-child(2) { padding-left: 24px } .mdui-table th { overflow: hidden; font-size: 13px; font-weight: 700; line-height: 32px; color: rgba(0, 0, 0, .54); text-overflow: ellipsis; white-space: nowrap } .mdui-table td { font-size: 14px; line-height: 24px; color: rgba(0, 0, 0, .87) } .mdui-table-cell-checkbox { padding-top: 0 !important; padding-bottom: 0 !important; padding-left: 24px !important } .mdui-table-cell-checkbox .mdui-checkbox { margin-top: 7px } .mdui-table-cell-checkbox + td, .mdui-table-cell-checkbox + th { padding-left: 6px !important } th.mdui-table-cell-checkbox .mdui-checkbox { margin-top: 11px } .mdui-table-hoverable tbody tr:hover { background-color: #eee } .mdui-table-fluid { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid rgba(0, 0, 0, .12); border-bottom: none; -webkit-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12); box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12) } .mdui-table-fluid .mdui-table { margin: 0; border: none; -webkit-box-shadow: none; box-shadow: none } .mdui-table-col-numeric { text-align: right !important } .mdui-table-row-selected { background-color: #f5f5f5 } .mdui-theme-layout-dark .mdui-table { background-color: #303030; border: 1px solid rgba(255, 255, 255, .12); border-bottom: none } .mdui-theme-layout-dark .mdui-table td, .mdui-theme-layout-dark .mdui-table th { border-bottom: 1px solid rgba(255, 255, 255, .12) } .mdui-theme-layout-dark .mdui-table th { color: rgba(255, 255, 255, .7) } .mdui-theme-layout-dark .mdui-table td { color: #fff } .mdui-theme-layout-dark .mdui-table-hoverable tbody tr:hover { background-color: #616161 } .mdui-theme-layout-dark .mdui-table-fluid { border: 1px solid rgba(255, 255, 255, .12); border-bottom: none } .mdui-theme-layout-dark .mdui-table-fluid .mdui-table { border: none; -webkit-box-shadow: none; box-shadow: none } .mdui-theme-layout-dark .mdui-table-row-selected { background-color: #424242 } .mdui-divider, .mdui-divider-dark, .mdui-divider-inset, .mdui-divider-inset-dark, .mdui-divider-inset-light, .mdui-divider-light { height: 1px; margin: -1px 0 0 0; border: none } .mdui-divider-inset, .mdui-divider-inset-dark, .mdui-divider-inset-light { margin-left: 72px } .mdui-divider, .mdui-divider-inset { background-color: rgba(0, 0, 0, .12) } .mdui-theme-layout-dark .mdui-divider, .mdui-theme-layout-dark .mdui-divider-inset { background-color: rgba(255, 255, 255, .12) } .mdui-divider-inset-light, .mdui-divider-light { background-color: rgba(255, 255, 255, .12) } .mdui-divider-dark, .mdui-divider-inset-dark { background-color: rgba(0, 0, 0, .12) } .mdui-img-fluid, .mdui-video-fluid { display: block; max-width: 100%; height: auto } .mdui-img-rounded { border-radius: 2px } .mdui-img-circle { border-radius: 50% } .mdui-video-container { position: relative; height: 0; padding-bottom: 56.25%; overflow: hidden } .mdui-video-container embed, .mdui-video-container iframe, .mdui-video-container object { position: absolute; top: 0; left: 0; width: 100%; height: 100% } .mdui-ripple { position: relative; overflow: hidden; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none } .mdui-ripple-wave { position: absolute !important; top: 0; left: 0; z-index: 1; padding: 0; margin: 0; font-size: 0; pointer-events: none; background-color: rgba(0, 0, 0, .1); border-radius: 50%; -webkit-transition-duration: 1.4s; transition-duration: 1.4s; -webkit-transform: translate3d(0, 0, 0) scale(0); transform: translate3d(0, 0, 0) scale(0) } .mdui-ripple[class*=mdui-color-] .mdui-ripple-wave { background-color: rgba(255, 255, 255, .3) } .mdui-ripple-white .mdui-ripple-wave { background-color: rgba(255, 255, 255, .3) !important } .mdui-ripple-black .mdui-ripple-wave { background-color: rgba(0, 0, 0, .1) !important } .mdui-ripple-wave-fill { opacity: .35; -webkit-transition-duration: .3s; transition-duration: .3s } .mdui-ripple-wave-out { opacity: 0; -webkit-transition-duration: .6s; transition-duration: .6s } .mdui-ripple-amber .mdui-ripple-wave { background-color: rgba(255, 193, 7, .3) !important } .mdui-ripple-blue .mdui-ripple-wave { background-color: rgba(33, 150, 243, .3) !important } .mdui-ripple-blue-grey .mdui-ripple-wave { background-color: rgba(96, 125, 139, .3) !important } .mdui-ripple-brown .mdui-ripple-wave { background-color: rgba(121, 85, 72, .3) !important } .mdui-ripple-cyan .mdui-ripple-wave { background-color: rgba(0, 188, 212, .3) !important } .mdui-ripple-deep-orange .mdui-ripple-wave { background-color: rgba(255, 87, 34, .3) !important } .mdui-ripple-deep-purple .mdui-ripple-wave { background-color: rgba(103, 58, 183, .3) !important } .mdui-ripple-green .mdui-ripple-wave { background-color: rgba(76, 175, 80, .3) !important } .mdui-ripple-grey .mdui-ripple-wave { background-color: rgba(158, 158, 158, .3) !important } .mdui-ripple-indigo .mdui-ripple-wave { background-color: rgba(63, 81, 181, .3) !important } .mdui-ripple-light-blue .mdui-ripple-wave { background-color: rgba(3, 169, 244, .3) !important } .mdui-ripple-light-green .mdui-ripple-wave { background-color: rgba(139, 195, 74, .3) !important } .mdui-ripple-lime .mdui-ripple-wave { background-color: rgba(205, 220, 57, .3) !important } .mdui-ripple-orange .mdui-ripple-wave { background-color: rgba(255, 152, 0, .3) !important } .mdui-ripple-pink .mdui-ripple-wave { background-color: rgba(233, 30, 99, .3) !important } .mdui-ripple-purple .mdui-ripple-wave { background-color: rgba(156, 39, 176, .3) !important } .mdui-ripple-red .mdui-ripple-wave { background-color: rgba(244, 67, 54, .3) !important } .mdui-ripple-teal .mdui-ripple-wave { background-color: rgba(0, 150, 136, .3) !important } .mdui-ripple-yellow .mdui-ripple-wave { background-color: rgba(255, 235, 59, .3) !important } .mdui-theme-layout-dark .mdui-ripple-wave { background-color: rgba(255, 255, 255, .3) } .mdui-textfield { position: relative; padding-top: 16px; padding-bottom: 8px; overflow: hidden } .mdui-textfield-has-bottom { padding-bottom: 28px } .mdui-textfield-input { display: block; width: 100%; height: 36px; -webkit-box-sizing: border-box; box-sizing: border-box; -webkit-appearance: none; padding: 8px 0; margin: 0; overflow: hidden; font-family: inherit; font-size: 16px; line-height: 20px; color: rgba(0, 0, 0, .87); resize: none; background: 0 0; border: none; border-bottom: 1px solid rgba(0, 0, 0, .42); border-radius: 0; outline: 0; -webkit-box-shadow: none; box-shadow: none; -webkit-transition-timing-function: cubic-bezier(.4, 0, .2, 1); transition-timing-function: cubic-bezier(.4, 0, .2, 1); -webkit-transition-duration: .2s; transition-duration: .2s; -webkit-transition-property: border-bottom-color, padding-right, -webkit-box-shadow; transition-property: border-bottom-color, padding-right, -webkit-box-shadow; transition-property: border-bottom-color, padding-right, box-shadow; transition-property: border-bottom-color, padding-right, box-shadow, -webkit-box-shadow; -moz-appearance: none; appearance: none } .mdui-textfield-input::-webkit-input-placeholder { color: inherit; opacity: .42 } .mdui-textfield-input:not([disabled]):hover { cursor: pointer; border-bottom: 1px solid rgba(0, 0, 0, .87); -webkit-box-shadow: 0 1px 0 0 rgba(0, 0, 0, .87); box-shadow: 0 1px 0 0 rgba(0, 0, 0, .87) } .mdui-textfield-input[rows] { height: auto !important; overflow: auto; -webkit-overflow-scrolling: touch } .mdui-textfield-label { display: block; width: 100%; font-size: 16px; color: rgba(0, 0, 0, .54); pointer-events: none; -webkit-transition: all .2s; transition: all .2s; -webkit-transform: scale(.75) translateY(0); transform: scale(.75) translateY(0); -webkit-transform-origin: left; transform-origin: left } .mdui-textfield-error, .mdui-textfield-helper { position: absolute; bottom: 8px; height: 12px; overflow: hidden; font-size: 12px; line-height: 12px; text-overflow: ellipsis; white-space: nowrap } .mdui-textfield-error { color: rgba(255, 23, 68, .87); visibility: hidden } .mdui-textfield-helper { color: rgba(0, 0, 0, .54) } .mdui-textfield .mdui-icon { position: absolute; bottom: 8px; padding: 6px; color: rgba(0, 0, 0, .54) } .mdui-textfield .mdui-icon ~ .mdui-textfield-error, .mdui-textfield .mdui-icon ~ .mdui-textfield-flex-wrap, .mdui-textfield .mdui-icon ~ .mdui-textfield-helper, .mdui-textfield .mdui-icon ~ .mdui-textfield-input, .mdui-textfield .mdui-icon ~ .mdui-textfield-label { width: calc(100% - 56px); margin-left: 56px } .mdui-textfield-has-bottom .mdui-icon { bottom: 28px } .mdui-textfield-focus .mdui-textfield-input, .mdui-textfield-focus .mdui-textfield-input:hover { border-bottom-color: #c51162; -webkit-box-shadow: 0 1px 0 0 #c51162; box-shadow: 0 1px 0 0 #c51162 } .mdui-textfield-focus .mdui-icon, .mdui-textfield-focus .mdui-textfield-label { color: rgba(197, 17, 98, .87) } .mdui-textfield-floating-label .mdui-textfield-label { color: rgba(0, 0, 0, .35); -webkit-transform: scale(1) translateY(27px); transform: scale(1) translateY(27px) } .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-textfield-floating-label.mdui-textfield-not-empty .mdui-textfield-label { color: rgba(0, 0, 0, .65); -webkit-transform: scale(.75) translateY(0); transform: scale(.75) translateY(0) } .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label { color: #e91e63 } .mdui-textfield-expandable { width: 36px; min-height: 36px; padding: 1px 0; -webkit-transition: width .3s cubic-bezier(.4, 0, .2, 1); transition: width .3s cubic-bezier(.4, 0, .2, 1) } .mdui-textfield-expandable .mdui-icon { bottom: 0; padding: 0 } .mdui-textfield-expandable .mdui-textfield-input { width: calc(100% - 36px); padding-right: 0; margin-left: 36px } .mdui-textfield-expandable .mdui-textfield-icon { position: absolute; top: 0; left: 0 } .mdui-textfield-expandable .mdui-textfield-close { position: absolute; top: 0; right: 0; -webkit-transform: scale(0); transform: scale(0) } .mdui-textfield-expandable.mdui-textfield-expanded { width: 100% } .mdui-textfield-expandable.mdui-textfield-expanded .mdui-textfield-input { padding-right: 36px } .mdui-textfield-expandable.mdui-textfield-expanded .mdui-textfield-close { -webkit-transform: scale(1); transform: scale(1) } .mdui-textfield-invalid .mdui-textfield-input, .mdui-textfield-invalid-html5 .mdui-textfield-input, .mdui-textfield-invalid-html5.mdui-textfield-focus .mdui-textfield-input, .mdui-textfield-invalid.mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #ff1744 !important; -webkit-box-shadow: 0 1px 0 0 #ff1744 !important; box-shadow: 0 1px 0 0 #ff1744 !important } .mdui-textfield-invalid .mdui-textfield-label, .mdui-textfield-invalid-html5 .mdui-textfield-label { color: #ff1744 !important } .mdui-textfield-invalid-html5.mdui-textfield-floating-label .mdui-textfield-label, .mdui-textfield-invalid.mdui-textfield-floating-label .mdui-textfield-label { color: rgba(255, 23, 68, .35) !important } .mdui-textfield-invalid-html5.mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-textfield-invalid-html5.mdui-textfield-floating-label.mdui-textfield-not-empty .mdui-textfield-label, .mdui-textfield-invalid.mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-textfield-invalid.mdui-textfield-floating-label.mdui-textfield-not-empty .mdui-textfield-label { color: #ff1744 !important } .mdui-textfield-invalid .mdui-textfield-error, .mdui-textfield-invalid-html5 .mdui-textfield-error { visibility: visible } .mdui-textfield-invalid .mdui-textfield-error + .mdui-textfield-helper, .mdui-textfield-invalid-html5 .mdui-textfield-error + .mdui-textfield-helper { visibility: hidden } .mdui-textfield-disabled .mdui-textfield-input::-webkit-input-placeholder, .mdui-textfield-disabled .mdui-textfield-label { color: rgba(0, 0, 0, .38) } .mdui-textfield-disabled .mdui-textfield-input { color: rgba(0, 0, 0, .42); cursor: default } .mdui-textfield-disabled .mdui-textfield-input { border-bottom: 1px dashed rgba(0, 0, 0, .42) } .mdui-textfield-counter { position: absolute; right: 8px; bottom: 8px; height: 12px; font-size: 12px; line-height: 12px; color: rgba(0, 0, 0, .54) } .mdui-theme-layout-dark .mdui-textfield-input { color: #fff; border-bottom-color: rgba(255, 255, 255, .7) } .mdui-theme-layout-dark .mdui-textfield-input::-webkit-input-placeholder { color: rgba(255, 255, 255, .5) } .mdui-theme-layout-dark .mdui-textfield-input:not([disabled]):hover { border-bottom-color: #fff; -webkit-box-shadow: 0 1px 0 0 #fff; box-shadow: 0 1px 0 0 #fff } .mdui-theme-layout-dark .mdui-textfield .mdui-icon { color: rgba(255, 255, 255, .7) } .mdui-theme-layout-dark .mdui-textfield-label { color: rgba(255, 255, 255, .7) } .mdui-theme-layout-dark .mdui-textfield-floating-label .mdui-textfield-label { color: rgba(255, 255, 255, .35) } .mdui-theme-layout-dark .mdui-textfield-error { color: #ff1744 } .mdui-theme-layout-dark .mdui-textfield-helper { color: rgba(255, 255, 255, .7) } .mdui-theme-layout-dark .mdui-textfield-counter { color: rgba(255, 255, 255, .7) } .mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input, .mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input:hover { border-bottom-color: #ff4081; -webkit-box-shadow: 0 1px 0 0 #ff4081; box-shadow: 0 1px 0 0 #ff4081 } .mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #ff4081 } .mdui-theme-layout-dark .mdui-textfield-disabled .mdui-textfield-input::-webkit-input-placeholder, .mdui-theme-layout-dark .mdui-textfield-disabled .mdui-textfield-label { color: rgba(255, 255, 255, .5) } .mdui-theme-layout-dark .mdui-textfield-disabled .mdui-textfield-input { color: rgba(255, 255, 255, .5) } .mdui-theme-layout-dark .mdui-textfield-disabled .mdui-textfield-input { border-bottom-color: rgba(255, 255, 255, .7) } .mdui-theme-accent-amber .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #ffab00; -webkit-box-shadow: 0 1px 0 0 #ffab00; box-shadow: 0 1px 0 0 #ffab00 } .mdui-theme-accent-amber .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-amber .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-amber .mdui-textfield-focus .mdui-textfield-label { color: rgba(255, 171, 0, .87) } .mdui-theme-accent-amber.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #ffd740; -webkit-box-shadow: 0 1px 0 0 #ffd740; box-shadow: 0 1px 0 0 #ffd740 } .mdui-theme-accent-amber.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-amber.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-amber.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #ffd740 } .mdui-theme-accent-blue .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #2962ff; -webkit-box-shadow: 0 1px 0 0 #2962ff; box-shadow: 0 1px 0 0 #2962ff } .mdui-theme-accent-blue .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-blue .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-blue .mdui-textfield-focus .mdui-textfield-label { color: rgba(41, 98, 255, .87) } .mdui-theme-accent-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #448aff; -webkit-box-shadow: 0 1px 0 0 #448aff; box-shadow: 0 1px 0 0 #448aff } .mdui-theme-accent-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #448aff } .mdui-theme-accent-cyan .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #00b8d4; -webkit-box-shadow: 0 1px 0 0 #00b8d4; box-shadow: 0 1px 0 0 #00b8d4 } .mdui-theme-accent-cyan .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-cyan .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-cyan .mdui-textfield-focus .mdui-textfield-label { color: rgba(0, 184, 212, .87) } .mdui-theme-accent-cyan.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #18ffff; -webkit-box-shadow: 0 1px 0 0 #18ffff; box-shadow: 0 1px 0 0 #18ffff } .mdui-theme-accent-cyan.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-cyan.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-cyan.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #18ffff } .mdui-theme-accent-deep-orange .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #dd2c00; -webkit-box-shadow: 0 1px 0 0 #dd2c00; box-shadow: 0 1px 0 0 #dd2c00 } .mdui-theme-accent-deep-orange .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-deep-orange .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-deep-orange .mdui-textfield-focus .mdui-textfield-label { color: rgba(221, 44, 0, .87) } .mdui-theme-accent-deep-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #ff6e40; -webkit-box-shadow: 0 1px 0 0 #ff6e40; box-shadow: 0 1px 0 0 #ff6e40 } .mdui-theme-accent-deep-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-deep-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-deep-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #ff6e40 } .mdui-theme-accent-deep-purple .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #6200ea; -webkit-box-shadow: 0 1px 0 0 #6200ea; box-shadow: 0 1px 0 0 #6200ea } .mdui-theme-accent-deep-purple .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-deep-purple .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-deep-purple .mdui-textfield-focus .mdui-textfield-label { color: rgba(98, 0, 234, .87) } .mdui-theme-accent-deep-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #7c4dff; -webkit-box-shadow: 0 1px 0 0 #7c4dff; box-shadow: 0 1px 0 0 #7c4dff } .mdui-theme-accent-deep-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-deep-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-deep-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #7c4dff } .mdui-theme-accent-green .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #00c853; -webkit-box-shadow: 0 1px 0 0 #00c853; box-shadow: 0 1px 0 0 #00c853 } .mdui-theme-accent-green .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-green .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-green .mdui-textfield-focus .mdui-textfield-label { color: rgba(0, 200, 83, .87) } .mdui-theme-accent-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #69f0ae; -webkit-box-shadow: 0 1px 0 0 #69f0ae; box-shadow: 0 1px 0 0 #69f0ae } .mdui-theme-accent-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #69f0ae } .mdui-theme-accent-indigo .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #304ffe; -webkit-box-shadow: 0 1px 0 0 #304ffe; box-shadow: 0 1px 0 0 #304ffe } .mdui-theme-accent-indigo .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-indigo .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-indigo .mdui-textfield-focus .mdui-textfield-label { color: rgba(48, 79, 254, .87) } .mdui-theme-accent-indigo.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #536dfe; -webkit-box-shadow: 0 1px 0 0 #536dfe; box-shadow: 0 1px 0 0 #536dfe } .mdui-theme-accent-indigo.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-indigo.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-indigo.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #536dfe } .mdui-theme-accent-light-blue .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #0091ea; -webkit-box-shadow: 0 1px 0 0 #0091ea; box-shadow: 0 1px 0 0 #0091ea } .mdui-theme-accent-light-blue .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-light-blue .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-light-blue .mdui-textfield-focus .mdui-textfield-label { color: rgba(0, 145, 234, .87) } .mdui-theme-accent-light-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #40c4ff; -webkit-box-shadow: 0 1px 0 0 #40c4ff; box-shadow: 0 1px 0 0 #40c4ff } .mdui-theme-accent-light-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-light-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-light-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #40c4ff } .mdui-theme-accent-light-green .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #64dd17; -webkit-box-shadow: 0 1px 0 0 #64dd17; box-shadow: 0 1px 0 0 #64dd17 } .mdui-theme-accent-light-green .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-light-green .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-light-green .mdui-textfield-focus .mdui-textfield-label { color: rgba(100, 221, 23, .87) } .mdui-theme-accent-light-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #b2ff59; -webkit-box-shadow: 0 1px 0 0 #b2ff59; box-shadow: 0 1px 0 0 #b2ff59 } .mdui-theme-accent-light-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-light-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-light-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #b2ff59 } .mdui-theme-accent-lime .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #aeea00; -webkit-box-shadow: 0 1px 0 0 #aeea00; box-shadow: 0 1px 0 0 #aeea00 } .mdui-theme-accent-lime .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-lime .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-lime .mdui-textfield-focus .mdui-textfield-label { color: rgba(174, 234, 0, .87) } .mdui-theme-accent-lime.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #eeff41; -webkit-box-shadow: 0 1px 0 0 #eeff41; box-shadow: 0 1px 0 0 #eeff41 } .mdui-theme-accent-lime.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-lime.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-lime.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #eeff41 } .mdui-theme-accent-orange .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #ff6d00; -webkit-box-shadow: 0 1px 0 0 #ff6d00; box-shadow: 0 1px 0 0 #ff6d00 } .mdui-theme-accent-orange .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-orange .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-orange .mdui-textfield-focus .mdui-textfield-label { color: rgba(255, 109, 0, .87) } .mdui-theme-accent-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #ffab40; -webkit-box-shadow: 0 1px 0 0 #ffab40; box-shadow: 0 1px 0 0 #ffab40 } .mdui-theme-accent-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #ffab40 } .mdui-theme-accent-pink .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #c51162; -webkit-box-shadow: 0 1px 0 0 #c51162; box-shadow: 0 1px 0 0 #c51162 } .mdui-theme-accent-pink .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-pink .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-pink .mdui-textfield-focus .mdui-textfield-label { color: rgba(197, 17, 98, .87) } .mdui-theme-accent-pink.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #ff4081; -webkit-box-shadow: 0 1px 0 0 #ff4081; box-shadow: 0 1px 0 0 #ff4081 } .mdui-theme-accent-pink.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-pink.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-pink.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #ff4081 } .mdui-theme-accent-purple .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #a0f; -webkit-box-shadow: 0 1px 0 0 #a0f; box-shadow: 0 1px 0 0 #a0f } .mdui-theme-accent-purple .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-purple .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-purple .mdui-textfield-focus .mdui-textfield-label { color: rgba(170, 0, 255, .87) } .mdui-theme-accent-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #e040fb; -webkit-box-shadow: 0 1px 0 0 #e040fb; box-shadow: 0 1px 0 0 #e040fb } .mdui-theme-accent-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #e040fb } .mdui-theme-accent-red .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #d50000; -webkit-box-shadow: 0 1px 0 0 #d50000; box-shadow: 0 1px 0 0 #d50000 } .mdui-theme-accent-red .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-red .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-red .mdui-textfield-focus .mdui-textfield-label { color: rgba(213, 0, 0, .87) } .mdui-theme-accent-red.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #ff5252; -webkit-box-shadow: 0 1px 0 0 #ff5252; box-shadow: 0 1px 0 0 #ff5252 } .mdui-theme-accent-red.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-red.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-red.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #ff5252 } .mdui-theme-accent-teal .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #00bfa5; -webkit-box-shadow: 0 1px 0 0 #00bfa5; box-shadow: 0 1px 0 0 #00bfa5 } .mdui-theme-accent-teal .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-teal .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-teal .mdui-textfield-focus .mdui-textfield-label { color: rgba(0, 191, 165, .87) } .mdui-theme-accent-teal.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #64ffda; -webkit-box-shadow: 0 1px 0 0 #64ffda; box-shadow: 0 1px 0 0 #64ffda } .mdui-theme-accent-teal.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-teal.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-teal.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #64ffda } .mdui-theme-accent-yellow .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #ffd600; -webkit-box-shadow: 0 1px 0 0 #ffd600; box-shadow: 0 1px 0 0 #ffd600 } .mdui-theme-accent-yellow .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-yellow .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-yellow .mdui-textfield-focus .mdui-textfield-label { color: rgba(255, 214, 0, .87) } .mdui-theme-accent-yellow.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input { border-bottom-color: #ff0; -webkit-box-shadow: 0 1px 0 0 #ff0; box-shadow: 0 1px 0 0 #ff0 } .mdui-theme-accent-yellow.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon, .mdui-theme-accent-yellow.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label, .mdui-theme-accent-yellow.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label { color: #ff0 } .mdui-checkbox { position: relative; display: inline-block; height: 36px; padding-left: 36px; line-height: 36px; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none } .mdui-checkbox input[type=checkbox] { position: absolute; width: 0; height: 0; overflow: hidden; opacity: 0 } .mdui-checkbox-icon { position: absolute; top: 9px; left: 0; display: inline-block; width: 18px; height: 18px; vertical-align: middle; background-color: transparent; border: none; border-radius: 18px; -webkit-transition: -webkit-box-shadow .14s cubic-bezier(.4, 0, .2, 1); transition: -webkit-box-shadow .14s cubic-bezier(.4, 0, .2, 1); transition: box-shadow .14s cubic-bezier(.4, 0, .2, 1); transition: box-shadow .14s cubic-bezier(.4, 0, .2, 1), -webkit-box-shadow .14s cubic-bezier(.4, 0, .2, 1) } .mdui-checkbox-icon:after { position: absolute; top: 0; left: 0; z-index: 0; width: 18px; height: 18px; -webkit-box-sizing: border-box; box-sizing: border-box; content: ' '; border: 2px solid rgba(0, 0, 0, .54); border-radius: 2px; -webkit-transition: all .3s cubic-bezier(.4, 0, .2, 1); transition: all .3s cubic-bezier(.4, 0, .2, 1) } .mdui-checkbox-icon:before { position: absolute; top: 2px; left: 0; z-index: 1; width: 8px; height: 13px; -webkit-box-sizing: border-box; box-sizing: border-box; content: ' '; border-right: 2px solid #fff; border-bottom: 2px solid #fff; opacity: 0; -webkit-transition: all .3s cubic-bezier(.4, 0, .2, 1); transition: all .3s cubic-bezier(.4, 0, .2, 1); -webkit-transform: rotateZ(37deg) scale(0); transform: rotateZ(37deg) scale(0); -webkit-transform-origin: 100% 100%; transform-origin: 100% 100% } .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after { background-color: #ff4081; border-color: #ff4081 } .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:before { opacity: 1; -webkit-transform: rotateZ(37deg) scale(1); transform: rotateZ(37deg) scale(1) } .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #ff4081; border-color: #ff4081 } .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:before { top: 8px; left: 3px; width: 12px; height: 0; border-right: none; border-bottom: 2px solid #fff; border-radius: 1px; opacity: 1; -webkit-transform: rotateZ(0) scale(1); transform: rotateZ(0) scale(1) } .mdui-checkbox input[type=checkbox]:disabled + .mdui-checkbox-icon:after { border-color: rgba(0, 0, 0, .26) } .mdui-checkbox input[type=checkbox]:disabled:checked + .mdui-checkbox-icon:after, .mdui-checkbox input[type=checkbox]:disabled:indeterminate + .mdui-checkbox-icon:after { background-color: rgba(0, 0, 0, .26) !important; border-color: transparent !important } .mdui-checkbox input[type=checkbox]:focus + .mdui-checkbox-icon, .mdui-checkbox:active input[type=checkbox] + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(0, 0, 0, .1); box-shadow: 0 0 0 15px rgba(0, 0, 0, .1) } .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(255, 64, 129, .16); box-shadow: 0 0 0 15px rgba(255, 64, 129, .16) } .mdui-theme-accent-amber .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after, .mdui-theme-accent-amber .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #ffd740; border-color: #ffd740 } .mdui-theme-accent-amber .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-amber .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-theme-accent-amber .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-amber .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(255, 215, 64, .16); box-shadow: 0 0 0 15px rgba(255, 215, 64, .16) } .mdui-theme-accent-blue .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after, .mdui-theme-accent-blue .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #448aff; border-color: #448aff } .mdui-theme-accent-blue .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-blue .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-theme-accent-blue .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-blue .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(68, 138, 255, .16); box-shadow: 0 0 0 15px rgba(68, 138, 255, .16) } .mdui-theme-accent-cyan .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after, .mdui-theme-accent-cyan .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #18ffff; border-color: #18ffff } .mdui-theme-accent-cyan .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-cyan .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-theme-accent-cyan .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-cyan .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(24, 255, 255, .16); box-shadow: 0 0 0 15px rgba(24, 255, 255, .16) } .mdui-theme-accent-deep-orange .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after, .mdui-theme-accent-deep-orange .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #ff6e40; border-color: #ff6e40 } .mdui-theme-accent-deep-orange .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-deep-orange .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-theme-accent-deep-orange .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-deep-orange .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(255, 110, 64, .16); box-shadow: 0 0 0 15px rgba(255, 110, 64, .16) } .mdui-theme-accent-deep-purple .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after, .mdui-theme-accent-deep-purple .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #7c4dff; border-color: #7c4dff } .mdui-theme-accent-deep-purple .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-deep-purple .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-theme-accent-deep-purple .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-deep-purple .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(124, 77, 255, .16); box-shadow: 0 0 0 15px rgba(124, 77, 255, .16) } .mdui-theme-accent-green .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after, .mdui-theme-accent-green .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #69f0ae; border-color: #69f0ae } .mdui-theme-accent-green .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-green .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-theme-accent-green .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-green .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(105, 240, 174, .16); box-shadow: 0 0 0 15px rgba(105, 240, 174, .16) } .mdui-theme-accent-indigo .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after, .mdui-theme-accent-indigo .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #536dfe; border-color: #536dfe } .mdui-theme-accent-indigo .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-indigo .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-theme-accent-indigo .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-indigo .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(83, 109, 254, .16); box-shadow: 0 0 0 15px rgba(83, 109, 254, .16) } .mdui-theme-accent-light-blue .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after, .mdui-theme-accent-light-blue .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #40c4ff; border-color: #40c4ff } .mdui-theme-accent-light-blue .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-light-blue .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-theme-accent-light-blue .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-light-blue .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(64, 196, 255, .16); box-shadow: 0 0 0 15px rgba(64, 196, 255, .16) } .mdui-theme-accent-light-green .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after, .mdui-theme-accent-light-green .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #b2ff59; border-color: #b2ff59 } .mdui-theme-accent-light-green .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-light-green .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-theme-accent-light-green .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-light-green .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(178, 255, 89, .16); box-shadow: 0 0 0 15px rgba(178, 255, 89, .16) } .mdui-theme-accent-lime .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after, .mdui-theme-accent-lime .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #eeff41; border-color: #eeff41 } .mdui-theme-accent-lime .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-lime .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-theme-accent-lime .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-lime .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(238, 255, 65, .16); box-shadow: 0 0 0 15px rgba(238, 255, 65, .16) } .mdui-theme-accent-orange .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after, .mdui-theme-accent-orange .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #ffab40; border-color: #ffab40 } .mdui-theme-accent-orange .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-orange .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-theme-accent-orange .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-orange .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(255, 171, 64, .16); box-shadow: 0 0 0 15px rgba(255, 171, 64, .16) } .mdui-theme-accent-pink .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after, .mdui-theme-accent-pink .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #ff4081; border-color: #ff4081 } .mdui-theme-accent-pink .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-pink .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-theme-accent-pink .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-pink .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(255, 64, 129, .16); box-shadow: 0 0 0 15px rgba(255, 64, 129, .16) } .mdui-theme-accent-purple .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after, .mdui-theme-accent-purple .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #e040fb; border-color: #e040fb } .mdui-theme-accent-purple .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-purple .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-theme-accent-purple .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-purple .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(224, 64, 251, .16); box-shadow: 0 0 0 15px rgba(224, 64, 251, .16) } .mdui-theme-accent-red .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after, .mdui-theme-accent-red .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #ff5252; border-color: #ff5252 } .mdui-theme-accent-red .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-red .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-theme-accent-red .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-red .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(255, 82, 82, .16); box-shadow: 0 0 0 15px rgba(255, 82, 82, .16) } .mdui-theme-accent-teal .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after, .mdui-theme-accent-teal .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #64ffda; border-color: #64ffda } .mdui-theme-accent-teal .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-teal .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-theme-accent-teal .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-teal .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(100, 255, 218, .16); box-shadow: 0 0 0 15px rgba(100, 255, 218, .16) } .mdui-theme-accent-yellow .mdui-checkbox input[type=checkbox]:checked + .mdui-checkbox-icon:after, .mdui-theme-accent-yellow .mdui-checkbox input[type=checkbox]:indeterminate + .mdui-checkbox-icon:after { background-color: #ff0; border-color: #ff0 } .mdui-theme-accent-yellow .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-yellow .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate + .mdui-checkbox-icon, .mdui-theme-accent-yellow .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked + .mdui-checkbox-icon, .mdui-theme-accent-yellow .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(255, 255, 0, .16); box-shadow: 0 0 0 15px rgba(255, 255, 0, .16) } .mdui-theme-layout-dark .mdui-checkbox-icon:after { border-color: rgba(255, 255, 255, .7) } .mdui-theme-layout-dark .mdui-checkbox-icon:before { border-right-color: #303030 !important; border-bottom-color: #303030 !important } .mdui-theme-layout-dark .mdui-checkbox input[type=checkbox]:disabled + .mdui-checkbox-icon:after { border-color: rgba(255, 255, 255, .3) } .mdui-theme-layout-dark .mdui-checkbox input[type=checkbox]:disabled:checked + .mdui-checkbox-icon:after, .mdui-theme-layout-dark .mdui-checkbox input[type=checkbox]:disabled:indeterminate + .mdui-checkbox-icon:after { background-color: rgba(255, 255, 255, .3) !important; border-color: transparent !important } .mdui-theme-layout-dark .mdui-checkbox input[type=checkbox]:focus + .mdui-checkbox-icon, .mdui-theme-layout-dark .mdui-checkbox:active input[type=checkbox] + .mdui-checkbox-icon { -webkit-box-shadow: 0 0 0 15px rgba(255, 255, 255, .1); box-shadow: 0 0 0 15px rgba(255, 255, 255, .1) } .mdui-radio { position: relative; display: inline-block; height: 36px; padding-left: 36px; line-height: 36px; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none } .mdui-radio input { position: absolute; width: 0; height: 0; overflow: hidden; opacity: 0 } .mdui-radio-icon { position: absolute; top: 9px; left: 0; display: inline-block; width: 18px; height: 18px; -webkit-box-sizing: border-box; box-sizing: border-box; vertical-align: middle; border: 2px solid rgba(0, 0, 0, .54); border-radius: 18px; -webkit-transition: all .3s cubic-bezier(.4, 0, .2, 1), -webkit-box-shadow .14s cubic-bezier(.4, 0, .2, 1); transition: all .3s cubic-bezier(.4, 0, .2, 1), -webkit-box-shadow .14s cubic-bezier(.4, 0, .2, 1); transition: all .3s cubic-bezier(.4, 0, .2, 1), box-shadow .14s cubic-bezier(.4, 0, .2, 1); transition: all .3s cubic-bezier(.4, 0, .2, 1), box-shadow .14s cubic-bezier(.4, 0, .2, 1), -webkit-box-shadow .14s cubic-bezier(.4, 0, .2, 1) } .mdui-radio-icon:before { position: absolute; top: 0; left: 0; width: 14px; height: 14px; content: ' '; background-color: #ff4081; border-radius: 14px; opacity: 0; -webkit-transition: all .3s cubic-bezier(.4, 0, .2, 1); transition: all .3s cubic-bezier(.4, 0, .2, 1); -webkit-transform: scale(0); transform: scale(0) } .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #ff4081 } .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { opacity: 1; -webkit-transform: scale(.68); transform: scale(.68) } .mdui-radio input[type=radio]:disabled + .mdui-radio-icon { border-color: rgba(0, 0, 0, .26) !important } .mdui-radio input[type=radio]:disabled:checked + .mdui-radio-icon:before { background-color: rgba(0, 0, 0, .26) !important } .mdui-radio input[type=radio]:focus + .mdui-radio-icon, .mdui-radio:active input[type=radio] + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(0, 0, 0, .1); box-shadow: 0 0 0 15px rgba(0, 0, 0, .1) } .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(255, 64, 129, .16); box-shadow: 0 0 0 15px rgba(255, 64, 129, .16) } .mdui-theme-accent-amber .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #ffd740 } .mdui-theme-accent-amber .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { background-color: #ffd740 } .mdui-theme-accent-amber .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-theme-accent-amber .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(255, 215, 64, .16); box-shadow: 0 0 0 15px rgba(255, 215, 64, .16) } .mdui-theme-accent-blue .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #448aff } .mdui-theme-accent-blue .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { background-color: #448aff } .mdui-theme-accent-blue .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-theme-accent-blue .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(68, 138, 255, .16); box-shadow: 0 0 0 15px rgba(68, 138, 255, .16) } .mdui-theme-accent-cyan .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #18ffff } .mdui-theme-accent-cyan .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { background-color: #18ffff } .mdui-theme-accent-cyan .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-theme-accent-cyan .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(24, 255, 255, .16); box-shadow: 0 0 0 15px rgba(24, 255, 255, .16) } .mdui-theme-accent-deep-orange .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #ff6e40 } .mdui-theme-accent-deep-orange .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { background-color: #ff6e40 } .mdui-theme-accent-deep-orange .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-theme-accent-deep-orange .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(255, 110, 64, .16); box-shadow: 0 0 0 15px rgba(255, 110, 64, .16) } .mdui-theme-accent-deep-purple .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #7c4dff } .mdui-theme-accent-deep-purple .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { background-color: #7c4dff } .mdui-theme-accent-deep-purple .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-theme-accent-deep-purple .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(124, 77, 255, .16); box-shadow: 0 0 0 15px rgba(124, 77, 255, .16) } .mdui-theme-accent-green .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #69f0ae } .mdui-theme-accent-green .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { background-color: #69f0ae } .mdui-theme-accent-green .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-theme-accent-green .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(105, 240, 174, .16); box-shadow: 0 0 0 15px rgba(105, 240, 174, .16) } .mdui-theme-accent-indigo .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #536dfe } .mdui-theme-accent-indigo .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { background-color: #536dfe } .mdui-theme-accent-indigo .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-theme-accent-indigo .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(83, 109, 254, .16); box-shadow: 0 0 0 15px rgba(83, 109, 254, .16) } .mdui-theme-accent-light-blue .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #40c4ff } .mdui-theme-accent-light-blue .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { background-color: #40c4ff } .mdui-theme-accent-light-blue .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-theme-accent-light-blue .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(64, 196, 255, .16); box-shadow: 0 0 0 15px rgba(64, 196, 255, .16) } .mdui-theme-accent-light-green .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #b2ff59 } .mdui-theme-accent-light-green .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { background-color: #b2ff59 } .mdui-theme-accent-light-green .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-theme-accent-light-green .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(178, 255, 89, .16); box-shadow: 0 0 0 15px rgba(178, 255, 89, .16) } .mdui-theme-accent-lime .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #eeff41 } .mdui-theme-accent-lime .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { background-color: #eeff41 } .mdui-theme-accent-lime .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-theme-accent-lime .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(238, 255, 65, .16); box-shadow: 0 0 0 15px rgba(238, 255, 65, .16) } .mdui-theme-accent-orange .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #ffab40 } .mdui-theme-accent-orange .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { background-color: #ffab40 } .mdui-theme-accent-orange .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-theme-accent-orange .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(255, 171, 64, .16); box-shadow: 0 0 0 15px rgba(255, 171, 64, .16) } .mdui-theme-accent-pink .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #ff4081 } .mdui-theme-accent-pink .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { background-color: #ff4081 } .mdui-theme-accent-pink .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-theme-accent-pink .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(255, 64, 129, .16); box-shadow: 0 0 0 15px rgba(255, 64, 129, .16) } .mdui-theme-accent-purple .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #e040fb } .mdui-theme-accent-purple .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { background-color: #e040fb } .mdui-theme-accent-purple .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-theme-accent-purple .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(224, 64, 251, .16); box-shadow: 0 0 0 15px rgba(224, 64, 251, .16) } .mdui-theme-accent-red .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #ff5252 } .mdui-theme-accent-red .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { background-color: #ff5252 } .mdui-theme-accent-red .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-theme-accent-red .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(255, 82, 82, .16); box-shadow: 0 0 0 15px rgba(255, 82, 82, .16) } .mdui-theme-accent-teal .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #64ffda } .mdui-theme-accent-teal .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { background-color: #64ffda } .mdui-theme-accent-teal .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-theme-accent-teal .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(100, 255, 218, .16); box-shadow: 0 0 0 15px rgba(100, 255, 218, .16) } .mdui-theme-accent-yellow .mdui-radio input[type=radio]:checked + .mdui-radio-icon { border-color: #ff0 } .mdui-theme-accent-yellow .mdui-radio input[type=radio]:checked + .mdui-radio-icon:before { background-color: #ff0 } .mdui-theme-accent-yellow .mdui-radio input[type=radio]:focus:checked:not(:disabled) + .mdui-radio-icon, .mdui-theme-accent-yellow .mdui-radio:active input[type=radio]:checked:not(:disabled) + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(255, 255, 0, .16); box-shadow: 0 0 0 15px rgba(255, 255, 0, .16) } .mdui-theme-layout-dark .mdui-radio-icon { border-color: rgba(255, 255, 255, .7) } .mdui-theme-layout-dark .mdui-radio input[type=radio]:disabled + .mdui-radio-icon { border-color: rgba(255, 255, 255, .3) !important } .mdui-theme-layout-dark .mdui-radio input[type=radio]:disabled:checked + .mdui-radio-icon:before { background-color: rgba(255, 255, 255, .3) !important } .mdui-theme-layout-dark .mdui-radio input[type=radio]:focus + .mdui-radio-icon, .mdui-theme-layout-dark .mdui-radio:active input[type=radio] + .mdui-radio-icon { -webkit-box-shadow: 0 0 0 15px rgba(255, 255, 255, .1); box-shadow: 0 0 0 15px rgba(255, 255, 255, .1) } .mdui-switch { display: inline-block; height: 36px; line-height: 36px; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none } .mdui-switch input { position: absolute; width: 0; height: 0; overflow: hidden; opacity: 0 } .mdui-switch-icon { position: relative; display: inline-block; width: 36px; height: 14px; vertical-align: middle; background-color: rgba(0, 0, 0, .38); border-radius: 14px; -webkit-transition: background-color .3s cubic-bezier(.4, 0, .2, 1); transition: background-color .3s cubic-bezier(.4, 0, .2, 1) } .mdui-switch-icon:before { position: absolute; top: -3px; left: -3px; display: inline-block; width: 20px; height: 20px; content: ' '; background-color: #fafafa; border-radius: 20px; -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12); -webkit-transition: background-color .3s cubic-bezier(.4, 0, .2, 1), left .3s cubic-bezier(.4, 0, .2, 1), -webkit-box-shadow .14s cubic-bezier(.4, 0, .2, 1); transition: background-color .3s cubic-bezier(.4, 0, .2, 1), left .3s cubic-bezier(.4, 0, .2, 1), -webkit-box-shadow .14s cubic-bezier(.4, 0, .2, 1); transition: box-shadow .14s cubic-bezier(.4, 0, .2, 1), background-color .3s cubic-bezier(.4, 0, .2, 1), left .3s cubic-bezier(.4, 0, .2, 1); transition: box-shadow .14s cubic-bezier(.4, 0, .2, 1), background-color .3s cubic-bezier(.4, 0, .2, 1), left .3s cubic-bezier(.4, 0, .2, 1), -webkit-box-shadow .14s cubic-bezier(.4, 0, .2, 1) } .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(255, 64, 129, .5) } .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { left: 20px; background-color: #ff4081 } .mdui-switch input[type=checkbox]:focus + .mdui-switch-icon:before, .mdui-switch:active input[type=checkbox] + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(0, 0, 0, .1); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(0, 0, 0, .1) } .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(255, 64, 129, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(255, 64, 129, .16) } .mdui-switch input[type=checkbox]:disabled + .mdui-switch-icon { background-color: rgba(0, 0, 0, .12) !important } .mdui-switch input[type=checkbox]:disabled + .mdui-switch-icon:before { background-color: #bdbdbd !important } .mdui-theme-accent-amber .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(255, 215, 64, .5) } .mdui-theme-accent-amber .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #ffd740 } .mdui-theme-accent-amber .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-theme-accent-amber .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(255, 215, 64, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(255, 215, 64, .16) } .mdui-theme-accent-blue .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(68, 138, 255, .5) } .mdui-theme-accent-blue .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #448aff } .mdui-theme-accent-blue .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-theme-accent-blue .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(68, 138, 255, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(68, 138, 255, .16) } .mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(24, 255, 255, .5) } .mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #18ffff } .mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-theme-accent-cyan .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(24, 255, 255, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(24, 255, 255, .16) } .mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(255, 110, 64, .5) } .mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #ff6e40 } .mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-theme-accent-deep-orange .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(255, 110, 64, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(255, 110, 64, .16) } .mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(124, 77, 255, .5) } .mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #7c4dff } .mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-theme-accent-deep-purple .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(124, 77, 255, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(124, 77, 255, .16) } .mdui-theme-accent-green .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(105, 240, 174, .5) } .mdui-theme-accent-green .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #69f0ae } .mdui-theme-accent-green .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-theme-accent-green .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(105, 240, 174, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(105, 240, 174, .16) } .mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(83, 109, 254, .5) } .mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #536dfe } .mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-theme-accent-indigo .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(83, 109, 254, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(83, 109, 254, .16) } .mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(64, 196, 255, .5) } .mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #40c4ff } .mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-theme-accent-light-blue .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(64, 196, 255, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(64, 196, 255, .16) } .mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(178, 255, 89, .5) } .mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #b2ff59 } .mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-theme-accent-light-green .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(178, 255, 89, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(178, 255, 89, .16) } .mdui-theme-accent-lime .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(238, 255, 65, .5) } .mdui-theme-accent-lime .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #eeff41 } .mdui-theme-accent-lime .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-theme-accent-lime .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(238, 255, 65, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(238, 255, 65, .16) } .mdui-theme-accent-orange .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(255, 171, 64, .5) } .mdui-theme-accent-orange .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #ffab40 } .mdui-theme-accent-orange .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-theme-accent-orange .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(255, 171, 64, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(255, 171, 64, .16) } .mdui-theme-accent-pink .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(255, 64, 129, .5) } .mdui-theme-accent-pink .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #ff4081 } .mdui-theme-accent-pink .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-theme-accent-pink .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(255, 64, 129, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(255, 64, 129, .16) } .mdui-theme-accent-purple .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(224, 64, 251, .5) } .mdui-theme-accent-purple .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #e040fb } .mdui-theme-accent-purple .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-theme-accent-purple .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(224, 64, 251, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(224, 64, 251, .16) } .mdui-theme-accent-red .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(255, 82, 82, .5) } .mdui-theme-accent-red .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #ff5252 } .mdui-theme-accent-red .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-theme-accent-red .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(255, 82, 82, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(255, 82, 82, .16) } .mdui-theme-accent-teal .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(100, 255, 218, .5) } .mdui-theme-accent-teal .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #64ffda } .mdui-theme-accent-teal .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-theme-accent-teal .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(100, 255, 218, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(100, 255, 218, .16) } .mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(255, 255, 0, .5) } .mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #ff0 } .mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:focus:checked:not(:disabled) + .mdui-switch-icon:before, .mdui-theme-accent-yellow .mdui-switch:active input[type=checkbox]:checked:not(:disabled) + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(255, 255, 0, .16); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(255, 255, 0, .16) } .mdui-theme-layout-dark .mdui-switch-icon { background-color: rgba(255, 255, 255, .3) } .mdui-theme-layout-dark .mdui-switch-icon:before { background-color: #bdbdbd } .mdui-theme-layout-dark.mdui-theme-accent-amber .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(255, 229, 127, .5) } .mdui-theme-layout-dark.mdui-theme-accent-amber .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #ffe57f } .mdui-theme-layout-dark.mdui-theme-accent-blue .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(130, 177, 255, .5) } .mdui-theme-layout-dark.mdui-theme-accent-blue .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #82b1ff } .mdui-theme-layout-dark.mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(132, 255, 255, .5) } .mdui-theme-layout-dark.mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #84ffff } .mdui-theme-layout-dark.mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(255, 158, 128, .5) } .mdui-theme-layout-dark.mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #ff9e80 } .mdui-theme-layout-dark.mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(179, 136, 255, .5) } .mdui-theme-layout-dark.mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #b388ff } .mdui-theme-layout-dark.mdui-theme-accent-green .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(185, 246, 202, .5) } .mdui-theme-layout-dark.mdui-theme-accent-green .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #b9f6ca } .mdui-theme-layout-dark.mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(140, 158, 255, .5) } .mdui-theme-layout-dark.mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #8c9eff } .mdui-theme-layout-dark.mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(128, 216, 255, .5) } .mdui-theme-layout-dark.mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #80d8ff } .mdui-theme-layout-dark.mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(204, 255, 144, .5) } .mdui-theme-layout-dark.mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #ccff90 } .mdui-theme-layout-dark.mdui-theme-accent-lime .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(244, 255, 129, .5) } .mdui-theme-layout-dark.mdui-theme-accent-lime .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #f4ff81 } .mdui-theme-layout-dark.mdui-theme-accent-orange .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(255, 209, 128, .5) } .mdui-theme-layout-dark.mdui-theme-accent-orange .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #ffd180 } .mdui-theme-layout-dark.mdui-theme-accent-pink .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(255, 128, 171, .5) } .mdui-theme-layout-dark.mdui-theme-accent-pink .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #ff80ab } .mdui-theme-layout-dark.mdui-theme-accent-purple .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(234, 128, 252, .5) } .mdui-theme-layout-dark.mdui-theme-accent-purple .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #ea80fc } .mdui-theme-layout-dark.mdui-theme-accent-red .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(255, 138, 128, .5) } .mdui-theme-layout-dark.mdui-theme-accent-red .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #ff8a80 } .mdui-theme-layout-dark.mdui-theme-accent-teal .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(167, 255, 235, .5) } .mdui-theme-layout-dark.mdui-theme-accent-teal .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #a7ffeb } .mdui-theme-layout-dark.mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon { background-color: rgba(255, 255, 141, .5) } .mdui-theme-layout-dark.mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:checked + .mdui-switch-icon:before { background-color: #ffff8d } .mdui-theme-layout-dark .mdui-switch input[type=checkbox]:focus + .mdui-switch-icon:before, .mdui-theme-layout-dark .mdui-switch:active input[type=checkbox] + .mdui-switch-icon:before { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(255, 255, 255, .1); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 0 15px rgba(255, 255, 255, .1) } .mdui-theme-layout-dark .mdui-switch input[type=checkbox]:disabled + .mdui-switch-icon { background-color: rgba(255, 255, 255, .1) !important } .mdui-theme-layout-dark .mdui-switch input[type=checkbox]:disabled + .mdui-switch-icon:before { background-color: #424242 !important } .mdui-slider { position: relative; display: block; width: 100%; height: 36px } .mdui-slider input[type=range] { position: absolute; top: 50%; z-index: 2; width: 100%; height: 20px; -webkit-appearance: none; margin-top: -10px; cursor: pointer; opacity: 0; -moz-appearance: none; appearance: none } .mdui-slider-fill, .mdui-slider-track { position: absolute; top: 50%; height: 2px; -webkit-box-sizing: border-box; box-sizing: border-box; margin-top: -1px } .mdui-slider-fill:before, .mdui-slider-track:before { display: block; width: 100%; height: 100%; content: ' ' } .mdui-slider-track { right: 0 } .mdui-slider-track:before { background-color: #bdbdbd; -webkit-transition: background-color .3s cubic-bezier(.4, 0, .2, 1); transition: background-color .3s cubic-bezier(.4, 0, .2, 1) } .mdui-slider-fill { left: 0 } .mdui-slider-fill:before { background-color: #ff4081 } .mdui-slider-thumb { position: absolute; top: 50%; width: 12px; height: 12px; -webkit-box-sizing: border-box; box-sizing: border-box; margin-top: -6px; background-color: #ff4081; border: 2px solid #ff4081; border-radius: 50%; -webkit-transition: background .45s cubic-bezier(.4, 0, .2, 1), border-color .45s cubic-bezier(.4, 0, .2, 1), border-radius .2s cubic-bezier(.4, 0, .2, 1), -webkit-transform .2s cubic-bezier(.4, 0, .2, 1); transition: background .45s cubic-bezier(.4, 0, .2, 1), border-color .45s cubic-bezier(.4, 0, .2, 1), border-radius .2s cubic-bezier(.4, 0, .2, 1), -webkit-transform .2s cubic-bezier(.4, 0, .2, 1); transition: background .45s cubic-bezier(.4, 0, .2, 1), border-color .45s cubic-bezier(.4, 0, .2, 1), transform .2s cubic-bezier(.4, 0, .2, 1), border-radius .2s cubic-bezier(.4, 0, .2, 1); transition: background .45s cubic-bezier(.4, 0, .2, 1), border-color .45s cubic-bezier(.4, 0, .2, 1), transform .2s cubic-bezier(.4, 0, .2, 1), border-radius .2s cubic-bezier(.4, 0, .2, 1), -webkit-transform .2s cubic-bezier(.4, 0, .2, 1); -webkit-transform: translate(-50%); transform: translate(-50%); will-change: background, border-color, transform, border-radius } .mdui-theme-accent-amber .mdui-slider-fill:before { background-color: #ffd740 } .mdui-theme-accent-amber .mdui-slider-thumb { background-color: #ffd740; border: 2px solid #ffd740 } .mdui-theme-accent-blue .mdui-slider-fill:before { background-color: #448aff } .mdui-theme-accent-blue .mdui-slider-thumb { background-color: #448aff; border: 2px solid #448aff } .mdui-theme-accent-cyan .mdui-slider-fill:before { background-color: #18ffff } .mdui-theme-accent-cyan .mdui-slider-thumb { background-color: #18ffff; border: 2px solid #18ffff } .mdui-theme-accent-deep-orange .mdui-slider-fill:before { background-color: #ff6e40 } .mdui-theme-accent-deep-orange .mdui-slider-thumb { background-color: #ff6e40; border: 2px solid #ff6e40 } .mdui-theme-accent-deep-purple .mdui-slider-fill:before { background-color: #7c4dff } .mdui-theme-accent-deep-purple .mdui-slider-thumb { background-color: #7c4dff; border: 2px solid #7c4dff } .mdui-theme-accent-green .mdui-slider-fill:before { background-color: #69f0ae } .mdui-theme-accent-green .mdui-slider-thumb { background-color: #69f0ae; border: 2px solid #69f0ae } .mdui-theme-accent-indigo .mdui-slider-fill:before { background-color: #536dfe } .mdui-theme-accent-indigo .mdui-slider-thumb { background-color: #536dfe; border: 2px solid #536dfe } .mdui-theme-accent-light-blue .mdui-slider-fill:before { background-color: #40c4ff } .mdui-theme-accent-light-blue .mdui-slider-thumb { background-color: #40c4ff; border: 2px solid #40c4ff } .mdui-theme-accent-light-green .mdui-slider-fill:before { background-color: #b2ff59 } .mdui-theme-accent-light-green .mdui-slider-thumb { background-color: #b2ff59; border: 2px solid #b2ff59 } .mdui-theme-accent-lime .mdui-slider-fill:before { background-color: #eeff41 } .mdui-theme-accent-lime .mdui-slider-thumb { background-color: #eeff41; border: 2px solid #eeff41 } .mdui-theme-accent-orange .mdui-slider-fill:before { background-color: #ffab40 } .mdui-theme-accent-orange .mdui-slider-thumb { background-color: #ffab40; border: 2px solid #ffab40 } .mdui-theme-accent-pink .mdui-slider-fill:before { background-color: #ff4081 } .mdui-theme-accent-pink .mdui-slider-thumb { background-color: #ff4081; border: 2px solid #ff4081 } .mdui-theme-accent-purple .mdui-slider-fill:before { background-color: #e040fb } .mdui-theme-accent-purple .mdui-slider-thumb { background-color: #e040fb; border: 2px solid #e040fb } .mdui-theme-accent-red .mdui-slider-fill:before { background-color: #ff5252 } .mdui-theme-accent-red .mdui-slider-thumb { background-color: #ff5252; border: 2px solid #ff5252 } .mdui-theme-accent-teal .mdui-slider-fill:before { background-color: #64ffda } .mdui-theme-accent-teal .mdui-slider-thumb { background-color: #64ffda; border: 2px solid #64ffda } .mdui-theme-accent-yellow .mdui-slider-fill:before { background-color: #ff0 } .mdui-theme-accent-yellow .mdui-slider-thumb { background-color: #ff0; border: 2px solid #ff0 } .mdui-slider-focus .mdui-slider-track:before { background-color: #9e9e9e } .mdui-slider-focus .mdui-slider-thumb { -webkit-transform: translate(-50%) scale(1.6); transform: translate(-50%) scale(1.6) } .mdui-slider-zero .mdui-slider-thumb { background-color: #fff; border-color: #bdbdbd } .mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb { border-color: #9e9e9e } .mdui-slider-disabled input[type=range] { cursor: default } .mdui-slider-disabled .mdui-slider-track:before { background-color: #bdbdbd } .mdui-slider-disabled .mdui-slider-fill:before { background-color: #bdbdbd } .mdui-slider-disabled .mdui-slider-thumb { background-color: #bdbdbd; border-color: transparent !important; -webkit-transform: translate(-50%) scale(.72); transform: translate(-50%) scale(.72) } .mdui-slider-discrete .mdui-slider-thumb { width: 30px; height: 30px; margin-top: -15px; margin-left: -15px; border: none; -webkit-transform: rotate(-45deg) scale(.4); transform: rotate(-45deg) scale(.4) } .mdui-slider-discrete .mdui-slider-thumb span { position: absolute; top: 9px; left: -1px; width: 100%; font-size: 12px; color: #fff; text-align: center; opacity: 0; -webkit-transition: opacity .25s cubic-bezier(.4, 0, .2, 1); transition: opacity .25s cubic-bezier(.4, 0, .2, 1); -webkit-transform: rotate(45deg); transform: rotate(45deg) } .mdui-slider-discrete.mdui-slider-focus .mdui-slider-thumb { border-radius: 15px 15px 15px 0; -webkit-transform: rotate(-45deg) scale(1) translate(22px, -22px); transform: rotate(-45deg) scale(1) translate(22px, -22px) } .mdui-slider-discrete.mdui-slider-focus .mdui-slider-thumb span { opacity: 1 } .mdui-slider-discrete.mdui-slider-zero .mdui-slider-thumb { background-color: #323232 } .mdui-slider-discrete.mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb { background-color: #bdbdbd } .mdui-slider-discrete.mdui-slider-disabled .mdui-slider-thumb { -webkit-transform: rotate(-45deg) scale(.288); transform: rotate(-45deg) scale(.288) } .mdui-slider-discrete.mdui-slider-zero.mdui-slider-disabled .mdui-slider-thumb { background-color: #bdbdbd } .mdui-theme-layout-dark .mdui-slider-track:before { background-color: #4c4c4c } .mdui-theme-layout-dark .mdui-slider-focus .mdui-slider-track:before { background-color: #4c4c4c } .mdui-theme-layout-dark .mdui-slider-zero .mdui-slider-thumb { background-color: #303030; border-color: #4c4c4c } .mdui-theme-layout-dark .mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb { border-color: #4c4c4c } .mdui-theme-layout-dark .mdui-slider-disabled .mdui-slider-track:before { background-color: #4c4c4c } .mdui-theme-layout-dark .mdui-slider-disabled .mdui-slider-fill:before { background-color: #4c4c4c } .mdui-theme-layout-dark .mdui-slider-disabled .mdui-slider-thumb { background-color: #4c4c4c } .mdui-theme-layout-dark .mdui-slider-discrete.mdui-slider-zero .mdui-slider-thumb { background-color: #fefefe } .mdui-theme-layout-dark .mdui-slider-discrete.mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb { background-color: #5c5c5c } .mdui-theme-layout-dark .mdui-slider-discrete.mdui-slider-zero.mdui-slider-disabled .mdui-slider-thumb { background-color: #4c4c4c } .mdui-btn, .mdui-fab { position: relative; display: inline-block; min-width: 88px; height: 36px; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 0 16px; margin: 0; overflow: hidden; font-size: 14px; font-weight: 500; line-height: 36px; color: inherit; text-align: center; text-decoration: none; text-transform: uppercase; letter-spacing: .04em; white-space: nowrap; vertical-align: middle; -ms-touch-action: manipulation; touch-action: manipulation; cursor: pointer; zoom: 1; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background: 0 0; border: none; border-radius: 2px; outline: 0; -webkit-transition: all .2s cubic-bezier(.4, 0, .2, 1), -webkit-box-shadow .2s cubic-bezier(.4, 0, 1, 1); transition: all .2s cubic-bezier(.4, 0, .2, 1), -webkit-box-shadow .2s cubic-bezier(.4, 0, 1, 1); transition: all .2s cubic-bezier(.4, 0, .2, 1), box-shadow .2s cubic-bezier(.4, 0, 1, 1); transition: all .2s cubic-bezier(.4, 0, .2, 1), box-shadow .2s cubic-bezier(.4, 0, 1, 1), -webkit-box-shadow .2s cubic-bezier(.4, 0, 1, 1); will-change: box-shadow; -webkit-user-drag: none } .mdui-btn:hover, .mdui-fab:hover { background-color: rgba(0, 0, 0, .1) } .mdui-btn:not(.mdui-ripple):active, .mdui-fab:not(.mdui-ripple):active { background-color: rgba(0, 0, 0, .165) } .mdui-btn[class*=mdui-color-]:hover, .mdui-fab[class*=mdui-color-]:hover { opacity: .87 } .mdui-btn:not(.mdui-ripple)[class*=mdui-color-]:active, .mdui-fab:not(.mdui-ripple)[class*=mdui-color-]:active { opacity: .76 } .mdui-btn .mdui-icon-left, .mdui-btn .mdui-icon-left::before, .mdui-btn .mdui-icon-right, .mdui-btn .mdui-icon-right::before { height: inherit; font-size: 1.3em; line-height: inherit } .mdui-btn .mdui-icon-left { float: left; margin-right: .4em } .mdui-btn .mdui-icon-right { float: right; margin-left: .4em } input.mdui-btn[type=submit] { -webkit-appearance: none; -moz-appearance: none; appearance: none } .mdui-btn-raised { -webkit-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12); box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12) } .mdui-btn-raised:hover { -webkit-box-shadow: 0 2px 4px -1px rgba(0, 0, 0, .2), 0 4px 5px 0 rgba(0, 0, 0, .14), 0 1px 10px 0 rgba(0, 0, 0, .12); box-shadow: 0 2px 4px -1px rgba(0, 0, 0, .2), 0 4px 5px 0 rgba(0, 0, 0, .14), 0 1px 10px 0 rgba(0, 0, 0, .12) } .mdui-btn-raised:active { -webkit-box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12); box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12) } .mdui-btn[disabled], .mdui-btn[disabled]:active, .mdui-btn[disabled]:focus, .mdui-btn[disabled]:hover, .mdui-fab[disabled], .mdui-fab[disabled]:active, .mdui-fab[disabled]:focus, .mdui-fab[disabled]:hover { color: rgba(0, 0, 0, .26) !important; cursor: default !important; background-color: transparent !important; -webkit-box-shadow: none !important; box-shadow: none !important; opacity: 1 !important } .mdui-btn[disabled] .mdui-icon, .mdui-btn[disabled]:active .mdui-icon, .mdui-btn[disabled]:focus .mdui-icon, .mdui-btn[disabled]:hover .mdui-icon, .mdui-fab[disabled] .mdui-icon, .mdui-fab[disabled]:active .mdui-icon, .mdui-fab[disabled]:focus .mdui-icon, .mdui-fab[disabled]:hover .mdui-icon { color: rgba(0, 0, 0, .26) !important } .mdui-btn-raised[disabled], .mdui-btn-raised[disabled]:active, .mdui-btn-raised[disabled]:focus, .mdui-btn-raised[disabled]:hover, .mdui-fab[disabled], .mdui-fab[disabled]:active, .mdui-fab[disabled]:focus, .mdui-fab[disabled]:hover { background-color: rgba(0, 0, 0, .12) !important; -webkit-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12) !important; box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12) !important } .mdui-btn-bold { font-weight: 700 } .mdui-btn-icon { width: 36px; min-width: 36px; height: 36px; padding: 0; margin-right: 0; margin-left: 0; overflow: hidden; font-size: 24px; line-height: normal; border-radius: 50% } .mdui-btn-icon .mdui-icon { position: absolute; top: 50%; left: 50%; width: 24px; line-height: 24px; -webkit-transform: translate(-12px, -12px); transform: translate(-12px, -12px) } .mdui-btn-icon.mdui-ripple { -webkit-transform: translateZ(0); transform: translateZ(0) } .mdui-btn-block { display: block; width: 100% } .mdui-btn-dense { height: 32px; font-size: 13px; line-height: 32px } .mdui-btn-dense.mdui-btn-icon { width: 32px; min-width: 32px } .mdui-btn-group { position: relative; display: inline-block; vertical-align: middle } .mdui-btn-group .mdui-btn { float: left; min-width: inherit; padding: 0 12px; color: rgba(0, 0, 0, .54); border-radius: 0 } .mdui-btn-group .mdui-btn:before { position: absolute; top: 0; bottom: 0; left: 0; content: ' '; border-left: 1px solid transparent } .mdui-btn-group .mdui-btn:first-child { border-top-left-radius: 2px; border-bottom-left-radius: 2px } .mdui-btn-group .mdui-btn:first-child:before { border-left: none } .mdui-btn-group .mdui-btn:last-child { border-top-right-radius: 2px; border-bottom-right-radius: 2px } .mdui-btn-group .mdui-btn.mdui-btn-active { color: rgba(0, 0, 0, .87); background-color: rgba(0, 0, 0, .215) } .mdui-btn-group .mdui-btn.mdui-btn-active + .mdui-btn-active:before { border-left: 1px solid rgba(0, 0, 0, .145) } .mdui-theme-layout-dark .mdui-btn:hover, .mdui-theme-layout-dark .mdui-fab:hover { background-color: rgba(255, 255, 255, .1) } .mdui-theme-layout-dark .mdui-btn:not(.mdui-ripple):active, .mdui-theme-layout-dark .mdui-fab:not(.mdui-ripple):active { background-color: rgba(255, 255, 255, .165) } .mdui-theme-layout-dark .mdui-btn[class*=mdui-color-]:hover, .mdui-theme-layout-dark .mdui-fab[class*=mdui-color-]:hover { opacity: .87 } .mdui-theme-layout-dark .mdui-btn:not(.mdui-ripple)[class*=mdui-color-]:active, .mdui-theme-layout-dark .mdui-fab:not(.mdui-ripple)[class*=mdui-color-]:active { opacity: .76 } .mdui-theme-layout-dark .mdui-btn[disabled], .mdui-theme-layout-dark .mdui-btn[disabled]:active, .mdui-theme-layout-dark .mdui-btn[disabled]:focus, .mdui-theme-layout-dark .mdui-btn[disabled]:hover, .mdui-theme-layout-dark .mdui-fab[disabled], .mdui-theme-layout-dark .mdui-fab[disabled]:active, .mdui-theme-layout-dark .mdui-fab[disabled]:focus, .mdui-theme-layout-dark .mdui-fab[disabled]:hover { color: rgba(255, 255, 255, .3) !important; background-color: transparent !important } .mdui-theme-layout-dark .mdui-btn[disabled] .mdui-icon, .mdui-theme-layout-dark .mdui-btn[disabled]:active .mdui-icon, .mdui-theme-layout-dark .mdui-btn[disabled]:focus .mdui-icon, .mdui-theme-layout-dark .mdui-btn[disabled]:hover .mdui-icon, .mdui-theme-layout-dark .mdui-fab[disabled] .mdui-icon, .mdui-theme-layout-dark .mdui-fab[disabled]:active .mdui-icon, .mdui-theme-layout-dark .mdui-fab[disabled]:focus .mdui-icon, .mdui-theme-layout-dark .mdui-fab[disabled]:hover .mdui-icon { color: rgba(255, 255, 255, .3) !important } .mdui-theme-layout-dark .mdui-btn-raised[disabled], .mdui-theme-layout-dark .mdui-btn-raised[disabled]:active, .mdui-theme-layout-dark .mdui-btn-raised[disabled]:focus, .mdui-theme-layout-dark .mdui-btn-raised[disabled]:hover, .mdui-theme-layout-dark .mdui-fab[disabled], .mdui-theme-layout-dark .mdui-fab[disabled]:active, .mdui-theme-layout-dark .mdui-fab[disabled]:focus, .mdui-theme-layout-dark .mdui-fab[disabled]:hover { background-color: rgba(255, 255, 255, .12) !important } .mdui-fab { width: 56px; min-width: 56px; height: 56px; padding: 0 !important; margin: auto; overflow: hidden; font-size: 24px; line-height: normal !important; border-radius: 50%; -webkit-box-shadow: 0 3px 5px -1px rgba(0, 0, 0, .2), 0 6px 10px 0 rgba(0, 0, 0, .14), 0 1px 18px 0 rgba(0, 0, 0, .12); box-shadow: 0 3px 5px -1px rgba(0, 0, 0, .2), 0 6px 10px 0 rgba(0, 0, 0, .14), 0 1px 18px 0 rgba(0, 0, 0, .12) } .mdui-fab:hover { -webkit-box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12); box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12) } .mdui-fab:active { -webkit-box-shadow: 0 7px 8px -4px rgba(0, 0, 0, .2), 0 12px 17px 2px rgba(0, 0, 0, .14), 0 5px 22px 4px rgba(0, 0, 0, .12); box-shadow: 0 7px 8px -4px rgba(0, 0, 0, .2), 0 12px 17px 2px rgba(0, 0, 0, .14), 0 5px 22px 4px rgba(0, 0, 0, .12) } .mdui-fab .mdui-icon { position: absolute; top: 0; left: 0; width: 24px; margin-top: 16px; margin-left: 16px; line-height: 24px } .mdui-fab-mini { width: 40px; min-width: 40px; height: 40px } .mdui-fab-mini .mdui-icon { margin-top: 8px; margin-left: 8px } .mdui-fab-fixed, .mdui-fab-wrapper { position: fixed !important; right: 16px; bottom: 16px } @media (min-width: 1024px) { .mdui-fab-fixed, .mdui-fab-wrapper { right: 24px; bottom: 24px } } .mdui-fab-wrapper { position: relative; z-index: 4000; width: 56px; height: 56px; padding-top: 8px; text-align: center } .mdui-fab-wrapper > .mdui-fab .mdui-icon:not(.mdui-fab-opened) { opacity: 1; -webkit-transition: all .2s cubic-bezier(.4, 0, .2, 1); transition: all .2s cubic-bezier(.4, 0, .2, 1); will-change: opacity, transform } .mdui-fab-wrapper > .mdui-fab .mdui-icon.mdui-fab-opened { opacity: 0; -webkit-transition: all .2s cubic-bezier(.4, 0, .2, 1); transition: all .2s cubic-bezier(.4, 0, .2, 1); -webkit-transform: rotate(225deg); transform: rotate(225deg); will-change: opacity, transform } .mdui-fab-wrapper > .mdui-fab.mdui-fab-opened .mdui-icon:not(.mdui-fab-opened) { opacity: 0; -webkit-transform: rotate(225deg); transform: rotate(225deg) } .mdui-fab-wrapper > .mdui-fab.mdui-fab-opened .mdui-icon.mdui-fab-opened { opacity: 1; -webkit-transform: rotate(360deg); transform: rotate(360deg) } .mdui-fab-wrapper > .mdui-fab-mini { margin-top: 8px } .mdui-fab-wrapper .mdui-fab-dial { position: absolute; right: 0; bottom: 64px; left: 0; height: 0; text-align: center; visibility: visible } .mdui-fab-wrapper .mdui-fab-dial .mdui-fab { margin: 8px 0; opacity: 0; -webkit-transition: color .2s cubic-bezier(.4, 0, .2, 1), opacity 150ms cubic-bezier(.4, 0, .2, 1), -webkit-box-shadow .2s cubic-bezier(.4, 0, 1, 1), -webkit-transform 150ms cubic-bezier(.4, 0, .2, 1); transition: color .2s cubic-bezier(.4, 0, .2, 1), opacity 150ms cubic-bezier(.4, 0, .2, 1), -webkit-box-shadow .2s cubic-bezier(.4, 0, 1, 1), -webkit-transform 150ms cubic-bezier(.4, 0, .2, 1); transition: box-shadow .2s cubic-bezier(.4, 0, 1, 1), color .2s cubic-bezier(.4, 0, .2, 1), transform 150ms cubic-bezier(.4, 0, .2, 1), opacity 150ms cubic-bezier(.4, 0, .2, 1); transition: box-shadow .2s cubic-bezier(.4, 0, 1, 1), color .2s cubic-bezier(.4, 0, .2, 1), transform 150ms cubic-bezier(.4, 0, .2, 1), opacity 150ms cubic-bezier(.4, 0, .2, 1), -webkit-box-shadow .2s cubic-bezier(.4, 0, 1, 1), -webkit-transform 150ms cubic-bezier(.4, 0, .2, 1); -webkit-transform: scale(0); transform: scale(0) } .mdui-fab-wrapper .mdui-fab-dial.mdui-fab-dial-show .mdui-fab { opacity: 1; -webkit-transform: scale(1); transform: scale(1) } .mdui-fab, .mdui-fab-mini, .mdui-fab-wrapper { -webkit-transition: all .2s cubic-bezier(.4, 0, .2, 1), -webkit-box-shadow .2s cubic-bezier(.4, 0, 1, 1), -webkit-transform .2s; transition: all .2s cubic-bezier(.4, 0, .2, 1), -webkit-box-shadow .2s cubic-bezier(.4, 0, 1, 1), -webkit-transform .2s; transition: all .2s cubic-bezier(.4, 0, .2, 1), box-shadow .2s cubic-bezier(.4, 0, 1, 1), transform .2s; transition: all .2s cubic-bezier(.4, 0, .2, 1), box-shadow .2s cubic-bezier(.4, 0, 1, 1), transform .2s, -webkit-box-shadow .2s cubic-bezier(.4, 0, 1, 1), -webkit-transform .2s; -webkit-transform: scale(1) translateZ(0); transform: scale(1) translateZ(0); will-change: transform } .mdui-fab-mini.mdui-fab-hide, .mdui-fab-wrapper.mdui-fab-hide, .mdui-fab.mdui-fab-hide { -webkit-transform: scale(0) translateZ(0); transform: scale(0) translateZ(0) } .mdui-select { position: relative; display: inline-block; max-width: 100%; height: 36px; -webkit-box-sizing: border-box; box-sizing: border-box; -webkit-appearance: none; padding-right: 24px; padding-left: 0; font-family: Roboto, Noto, Helvetica, Arial, sans-serif; font-size: 16px; vertical-align: middle; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2210%22%20height%3D%2210%22%20viewBox%3D%220%200%2010%2010%22%3E%3Cpath%20d%3D%22m-0.00254%2C2.5l5%2C5l5%2C-5l-10%2C0z%22%20fill%3D%22%23000000%22%20opacity%3D%220.54%22%2F%3E%3C%2Fsvg%3E%0A); background-repeat: no-repeat; background-position: right center; border: none; border-bottom: 1px solid rgba(0, 0, 0, .12); outline: 0; -webkit-transition-timing-function: cubic-bezier(.4, 0, .2, 1); transition-timing-function: cubic-bezier(.4, 0, .2, 1); -webkit-transition-duration: .2s; transition-duration: .2s; -webkit-transition-property: background-color, background-position-x, -webkit-box-shadow; transition-property: background-color, background-position-x, -webkit-box-shadow; transition-property: background-color, box-shadow, background-position-x; transition-property: background-color, box-shadow, background-position-x, -webkit-box-shadow; -moz-appearance: none; appearance: none; will-change: background-color, box-shadow, background-position-x } .mdui-select.mdui-select-open { border-bottom: none } .mdui-select-position-top { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2210%22%20height%3D%2210%22%20viewBox%3D%220%200%2010%2010%22%3E%3Cpath%20d%3D%22m-0.00254%2C2.5l5%2C5l5%2C-5l-10%2C0z%22%20fill%3D%22%23000000%22%20opacity%3D%220.54%22%20transform%3D%22rotate(-180%205%2C5)%22%2F%3E%3C%2Fsvg%3E%0A") } .mdui-select-open.mdui-select-position-bottom, .mdui-select-open.mdui-select-position-top { z-index: 99999; background-color: #fff; background-position-x: calc(100% - 12px); border-radius: 2px } .mdui-select-open.mdui-select-position-top { border-top: 1px solid rgba(0, 0, 0, .12); border-bottom: 2px solid transparent; border-top-left-radius: 0; border-top-right-radius: 0; -webkit-box-shadow: 0 10px 10px -3px rgba(0, 0, 0, .2), 0 0 14px 1px rgba(0, 0, 0, .14), 0 -7px 24px 2px rgba(0, 0, 0, .12); box-shadow: 0 10px 10px -3px rgba(0, 0, 0, .2), 0 0 14px 1px rgba(0, 0, 0, .14), 0 -7px 24px 2px rgba(0, 0, 0, .12) } .mdui-select-open.mdui-select-position-top .mdui-select-menu { border-bottom-right-radius: 0; border-bottom-left-radius: 0; -webkit-box-shadow: 0 -4px 4px -2px rgba(0, 0, 0, .06), 8px 0 8px -4px rgba(0, 0, 0, .12), -8px 0 8px -4px rgba(0, 0, 0, .12); box-shadow: 0 -4px 4px -2px rgba(0, 0, 0, .06), 8px 0 8px -4px rgba(0, 0, 0, .12), -8px 0 8px -4px rgba(0, 0, 0, .12) } .mdui-select-open.mdui-select-position-bottom { border-bottom: 1px solid rgba(0, 0, 0, .12); border-bottom-right-radius: 0; border-bottom-left-radius: 0; -webkit-box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12); box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12) } .mdui-select-open.mdui-select-position-bottom .mdui-select-menu { border-top-left-radius: 0; border-top-right-radius: 0; -webkit-box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 9px 9px 1px rgba(0, 0, 0, .14), 0 8px 8px 2px rgba(0, 0, 0, .06); box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 9px 9px 1px rgba(0, 0, 0, .14), 0 8px 8px 2px rgba(0, 0, 0, .06) } .mdui-select-selected { position: absolute; top: 50%; right: 24px; left: 0; display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; -webkit-transition: left .2s cubic-bezier(0, 0, .2, 1); transition: left .2s cubic-bezier(0, 0, .2, 1); -webkit-transform: translateY(-50%); transform: translateY(-50%) } .mdui-select-open .mdui-select-selected { right: 32px; left: 16px } .mdui-select-open.mdui-select-position-auto .mdui-select-selected { visibility: hidden } .mdui-select-menu { position: relative; z-index: 99999; height: 36px; -webkit-box-sizing: border-box; box-sizing: border-box; margin: 0 -24px 0 0; overflow-y: scroll; -webkit-overflow-scrolling: touch; color: rgba(0, 0, 0, .87); cursor: default; visibility: hidden; background-color: #fff; border-radius: 2px; -webkit-box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12); box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12); opacity: 0; -webkit-transition-timing-function: cubic-bezier(0, 0, .2, 1); transition-timing-function: cubic-bezier(0, 0, .2, 1); -webkit-transition-duration: .2s; transition-duration: .2s; -webkit-transition-property: opacity, visibility, -webkit-transform; transition-property: opacity, visibility, -webkit-transform; transition-property: transform, opacity, visibility; transition-property: transform, opacity, visibility, -webkit-transform; -webkit-transform: scale(1, 0); transform: scale(1, 0); will-change: transform, opacity, visibility } .mdui-select-open .mdui-select-menu { overflow-y: hidden; visibility: visible; opacity: 1; -webkit-transform: scale(1, 1); transform: scale(1, 1) } .mdui-select-closing .mdui-select-menu { overflow-y: hidden; visibility: visible; -webkit-box-shadow: none; box-shadow: none; opacity: 0; -webkit-transform: scale(1, 1); transform: scale(1, 1) } .mdui-select-menu-item { height: 48px; padding: 0 16px; overflow: hidden; line-height: 48px; text-overflow: ellipsis; white-space: nowrap; cursor: pointer } .mdui-select-menu-item:hover { background-color: #eee } .mdui-select-menu-item:first-child { margin-top: 8px } .mdui-select-menu-item:last-child { margin-bottom: 8px } .mdui-select-menu-item[disabled] { color: rgba(0, 0, 0, .38) !important; cursor: default } .mdui-select-menu-item[disabled]:hover { background-color: inherit !important } .mdui-select-menu-item[selected] { color: #ff4081 } select.mdui-select { background-color: transparent } select.mdui-select option { color: rgba(0, 0, 0, .87) } select.mdui-select::-ms-expand { display: none } select.mdui-select[multiple] { height: auto; padding: 0; font-size: 15px; cursor: default; background-color: #fff; background-image: none; border: 1px solid rgba(0, 0, 0, .38) } select.mdui-select[multiple] optgroup { padding: 0 0 0 16px; margin: 8px 0 0 0; color: rgba(0, 0, 0, .38) } select.mdui-select[multiple] optgroup:last-child { margin-bottom: 8px } select.mdui-select[multiple] optgroup:not(:first-child) { padding-top: 8px; border-top: 1px solid rgba(0, 0, 0, .12) } select.mdui-select[multiple] option { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; height: 32px; padding: 0 16px; margin: 0 0 0 -16px; color: rgba(0, 0, 0, .87); -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center } select.mdui-select[multiple] option:first-child { margin-top: 8px } select.mdui-select[multiple] option:last-child { margin-bottom: 8px } .mdui-theme-accent-amber .mdui-select-menu-item[selected] { color: #ffc107 } .mdui-theme-accent-blue .mdui-select-menu-item[selected] { color: #2196f3 } .mdui-theme-accent-cyan .mdui-select-menu-item[selected] { color: #00bcd4 } .mdui-theme-accent-deep-orange .mdui-select-menu-item[selected] { color: #ff5722 } .mdui-theme-accent-deep-purple .mdui-select-menu-item[selected] { color: #673ab7 } .mdui-theme-accent-green .mdui-select-menu-item[selected] { color: #4caf50 } .mdui-theme-accent-indigo .mdui-select-menu-item[selected] { color: #3f51b5 } .mdui-theme-accent-light-blue .mdui-select-menu-item[selected] { color: #03a9f4 } .mdui-theme-accent-light-green .mdui-select-menu-item[selected] { color: #8bc34a } .mdui-theme-accent-lime .mdui-select-menu-item[selected] { color: #cddc39 } .mdui-theme-accent-orange .mdui-select-menu-item[selected] { color: #ff9800 } .mdui-theme-accent-pink .mdui-select-menu-item[selected] { color: #e91e63 } .mdui-theme-accent-purple .mdui-select-menu-item[selected] { color: #9c27b0 } .mdui-theme-accent-red .mdui-select-menu-item[selected] { color: #f44336 } .mdui-theme-accent-teal .mdui-select-menu-item[selected] { color: #009688 } .mdui-theme-accent-yellow .mdui-select-menu-item[selected] { color: #ffeb3b } .mdui-theme-layout-dark .mdui-select { background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2210%22%20height%3D%2210%22%20viewBox%3D%220%200%2010%2010%22%3E%3Cpath%20d%3D%22m-0.00254%2C2.5l5%2C5l5%2C-5l-10%2C0z%22%20fill%3D%22%23FFFFFF%22%2F%3E%3C%2Fsvg%3E%0A); border-bottom: 1px solid rgba(255, 255, 255, .12) } .mdui-theme-layout-dark .mdui-select-position-top { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2210%22%20height%3D%2210%22%20viewBox%3D%220%200%2010%2010%22%3E%3Cpath%20d%3D%22m-0.00254%2C2.5l5%2C5l5%2C-5l-10%2C0z%22%20fill%3D%22%23FFFFFF%22%20transform%3D%22rotate(-180%205%2C5)%22%2F%3E%3C%2Fsvg%3E%0A") } .mdui-theme-layout-dark .mdui-select-open.mdui-select-position-bottom, .mdui-theme-layout-dark .mdui-select-open.mdui-select-position-top { background-color: #424242 } .mdui-theme-layout-dark .mdui-select-open.mdui-select-position-top { border-top: 1px solid rgba(255, 255, 255, .12) } .mdui-theme-layout-dark .mdui-select-open.mdui-select-position-bottom { border-bottom: 1px solid rgba(255, 255, 255, .12) } .mdui-theme-layout-dark .mdui-select-menu { color: #fff; background-color: #424242 } .mdui-theme-layout-dark .mdui-select-menu-item:hover { background-color: #616161 } .mdui-theme-layout-dark .mdui-select-menu-item[disabled] { color: rgba(255, 255, 255, .5) !important } .mdui-theme-layout-dark select.mdui-select { color: #fff; background-color: #303030 } .mdui-theme-layout-dark select.mdui-select option { color: #fff; background-color: #303030 } .mdui-theme-layout-dark select.mdui-select[multiple] { border: 1px solid rgba(255, 255, 255, .5) } .mdui-theme-layout-dark select.mdui-select[multiple] optgroup { color: rgba(255, 255, 255, .5) } .mdui-theme-layout-dark select.mdui-select[multiple] optgroup:not(:first-child) { border-top: 1px solid rgba(255, 255, 255, .12) } .mdui-container, .mdui-container-fluid { -webkit-box-sizing: border-box; box-sizing: border-box; padding-right: 8px; padding-left: 8px; margin-right: auto; margin-left: auto } .mdui-container-fluid:after, .mdui-container:after { display: table; clear: both; content: '' } .mdui-container { width: 96%; max-width: 1280px } @media (min-width: 600px) { .mdui-container { width: 94% } } @media (min-width: 1024px) { .mdui-container { width: 92% } } .mdui-row, [class*=mdui-row-] { margin-right: -8px; margin-left: -8px } .mdui-row:after, [class*=mdui-row-]:after { display: table; clear: both; content: '' } .mdui-col, [class*=mdui-col-lg-], [class*=mdui-col-md-], [class*=mdui-col-sm-], [class*=mdui-col-xl-], [class*=mdui-col-xs-] { position: relative; min-height: 1px; -webkit-box-sizing: border-box; box-sizing: border-box; padding-right: 8px; padding-left: 8px } .mdui-row-gapless .mdui-col, .mdui-row-gapless [class*=mdui-col-lg-], .mdui-row-gapless [class*=mdui-col-md-], .mdui-row-gapless [class*=mdui-col-sm-], .mdui-row-gapless [class*=mdui-col-xl-], .mdui-row-gapless [class*=mdui-col-xs-] { padding-right: 0; padding-left: 0 } .mdui-row-gapless .mdui-row, .mdui-row-gapless [class*=mdui-row-] { margin-right: 0; margin-left: 0 } .mdui-col-xs-1 { float: left; width: 8.333333% } .mdui-col-offset-xs-1 { margin-left: 8.333333% } .mdui-row-xs-1 .mdui-col { float: left; width: 100% } .mdui-col-xs-2 { float: left; width: 16.666667% } .mdui-col-offset-xs-2 { margin-left: 16.666667% } .mdui-row-xs-2 .mdui-col { float: left; width: 50% } .mdui-col-xs-3 { float: left; width: 25% } .mdui-col-offset-xs-3 { margin-left: 25% } .mdui-row-xs-3 .mdui-col { float: left; width: 33.333333% } .mdui-col-xs-4 { float: left; width: 33.333333% } .mdui-col-offset-xs-4 { margin-left: 33.333333% } .mdui-row-xs-4 .mdui-col { float: left; width: 25% } .mdui-col-xs-5 { float: left; width: 41.666667% } .mdui-col-offset-xs-5 { margin-left: 41.666667% } .mdui-row-xs-5 .mdui-col { float: left; width: 20% } .mdui-col-xs-6 { float: left; width: 50% } .mdui-col-offset-xs-6 { margin-left: 50% } .mdui-row-xs-6 .mdui-col { float: left; width: 16.666667% } .mdui-col-xs-7 { float: left; width: 58.333333% } .mdui-col-offset-xs-7 { margin-left: 58.333333% } .mdui-row-xs-7 .mdui-col { float: left; width: 14.285714% } .mdui-col-xs-8 { float: left; width: 66.666667% } .mdui-col-offset-xs-8 { margin-left: 66.666667% } .mdui-row-xs-8 .mdui-col { float: left; width: 12.5% } .mdui-col-xs-9 { float: left; width: 75% } .mdui-col-offset-xs-9 { margin-left: 75% } .mdui-row-xs-9 .mdui-col { float: left; width: 11.111111% } .mdui-col-xs-10 { float: left; width: 83.333333% } .mdui-col-offset-xs-10 { margin-left: 83.333333% } .mdui-row-xs-10 .mdui-col { float: left; width: 10% } .mdui-col-xs-11 { float: left; width: 91.666667% } .mdui-col-offset-xs-11 { margin-left: 91.666667% } .mdui-row-xs-11 .mdui-col { float: left; width: 9.090909% } .mdui-col-xs-12 { float: left; width: 100% } .mdui-col-offset-xs-12 { margin-left: 100% } .mdui-row-xs-12 .mdui-col { float: left; width: 8.333333% } @media (min-width: 600px) { .mdui-col-sm-1 { float: left; width: 8.333333% } .mdui-col-offset-sm-1 { margin-left: 8.333333% } .mdui-row-sm-1 .mdui-col { float: left; width: 100% } .mdui-col-sm-2 { float: left; width: 16.666667% } .mdui-col-offset-sm-2 { margin-left: 16.666667% } .mdui-row-sm-2 .mdui-col { float: left; width: 50% } .mdui-col-sm-3 { float: left; width: 25% } .mdui-col-offset-sm-3 { margin-left: 25% } .mdui-row-sm-3 .mdui-col { float: left; width: 33.333333% } .mdui-col-sm-4 { float: left; width: 33.333333% } .mdui-col-offset-sm-4 { margin-left: 33.333333% } .mdui-row-sm-4 .mdui-col { float: left; width: 25% } .mdui-col-sm-5 { float: left; width: 41.666667% } .mdui-col-offset-sm-5 { margin-left: 41.666667% } .mdui-row-sm-5 .mdui-col { float: left; width: 20% } .mdui-col-sm-6 { float: left; width: 50% } .mdui-col-offset-sm-6 { margin-left: 50% } .mdui-row-sm-6 .mdui-col { float: left; width: 16.666667% } .mdui-col-sm-7 { float: left; width: 58.333333% } .mdui-col-offset-sm-7 { margin-left: 58.333333% } .mdui-row-sm-7 .mdui-col { float: left; width: 14.285714% } .mdui-col-sm-8 { float: left; width: 66.666667% } .mdui-col-offset-sm-8 { margin-left: 66.666667% } .mdui-row-sm-8 .mdui-col { float: left; width: 12.5% } .mdui-col-sm-9 { float: left; width: 75% } .mdui-col-offset-sm-9 { margin-left: 75% } .mdui-row-sm-9 .mdui-col { float: left; width: 11.111111% } .mdui-col-sm-10 { float: left; width: 83.333333% } .mdui-col-offset-sm-10 { margin-left: 83.333333% } .mdui-row-sm-10 .mdui-col { float: left; width: 10% } .mdui-col-sm-11 { float: left; width: 91.666667% } .mdui-col-offset-sm-11 { margin-left: 91.666667% } .mdui-row-sm-11 .mdui-col { float: left; width: 9.090909% } .mdui-col-sm-12 { float: left; width: 100% } .mdui-col-offset-sm-12 { margin-left: 100% } .mdui-row-sm-12 .mdui-col { float: left; width: 8.333333% } } @media (min-width: 1024px) { .mdui-col-md-1 { float: left; width: 8.333333% } .mdui-col-offset-md-1 { margin-left: 8.333333% } .mdui-row-md-1 .mdui-col { float: left; width: 100% } .mdui-col-md-2 { float: left; width: 16.666667% } .mdui-col-offset-md-2 { margin-left: 16.666667% } .mdui-row-md-2 .mdui-col { float: left; width: 50% } .mdui-col-md-3 { float: left; width: 25% } .mdui-col-offset-md-3 { margin-left: 25% } .mdui-row-md-3 .mdui-col { float: left; width: 33.333333% } .mdui-col-md-4 { float: left; width: 33.333333% } .mdui-col-offset-md-4 { margin-left: 33.333333% } .mdui-row-md-4 .mdui-col { float: left; width: 25% } .mdui-col-md-5 { float: left; width: 41.666667% } .mdui-col-offset-md-5 { margin-left: 41.666667% } .mdui-row-md-5 .mdui-col { float: left; width: 20% } .mdui-col-md-6 { float: left; width: 50% } .mdui-col-offset-md-6 { margin-left: 50% } .mdui-row-md-6 .mdui-col { float: left; width: 16.666667% } .mdui-col-md-7 { float: left; width: 58.333333% } .mdui-col-offset-md-7 { margin-left: 58.333333% } .mdui-row-md-7 .mdui-col { float: left; width: 14.285714% } .mdui-col-md-8 { float: left; width: 66.666667% } .mdui-col-offset-md-8 { margin-left: 66.666667% } .mdui-row-md-8 .mdui-col { float: left; width: 12.5% } .mdui-col-md-9 { float: left; width: 75% } .mdui-col-offset-md-9 { margin-left: 75% } .mdui-row-md-9 .mdui-col { float: left; width: 11.111111% } .mdui-col-md-10 { float: left; width: 83.333333% } .mdui-col-offset-md-10 { margin-left: 83.333333% } .mdui-row-md-10 .mdui-col { float: left; width: 10% } .mdui-col-md-11 { float: left; width: 91.666667% } .mdui-col-offset-md-11 { margin-left: 91.666667% } .mdui-row-md-11 .mdui-col { float: left; width: 9.090909% } .mdui-col-md-12 { float: left; width: 100% } .mdui-col-offset-md-12 { margin-left: 100% } .mdui-row-md-12 .mdui-col { float: left; width: 8.333333% } } @media (min-width: 1440px) { .mdui-col-lg-1 { float: left; width: 8.333333% } .mdui-col-offset-lg-1 { margin-left: 8.333333% } .mdui-row-lg-1 .mdui-col { float: left; width: 100% } .mdui-col-lg-2 { float: left; width: 16.666667% } .mdui-col-offset-lg-2 { margin-left: 16.666667% } .mdui-row-lg-2 .mdui-col { float: left; width: 50% } .mdui-col-lg-3 { float: left; width: 25% } .mdui-col-offset-lg-3 { margin-left: 25% } .mdui-row-lg-3 .mdui-col { float: left; width: 33.333333% } .mdui-col-lg-4 { float: left; width: 33.333333% } .mdui-col-offset-lg-4 { margin-left: 33.333333% } .mdui-row-lg-4 .mdui-col { float: left; width: 25% } .mdui-col-lg-5 { float: left; width: 41.666667% } .mdui-col-offset-lg-5 { margin-left: 41.666667% } .mdui-row-lg-5 .mdui-col { float: left; width: 20% } .mdui-col-lg-6 { float: left; width: 50% } .mdui-col-offset-lg-6 { margin-left: 50% } .mdui-row-lg-6 .mdui-col { float: left; width: 16.666667% } .mdui-col-lg-7 { float: left; width: 58.333333% } .mdui-col-offset-lg-7 { margin-left: 58.333333% } .mdui-row-lg-7 .mdui-col { float: left; width: 14.285714% } .mdui-col-lg-8 { float: left; width: 66.666667% } .mdui-col-offset-lg-8 { margin-left: 66.666667% } .mdui-row-lg-8 .mdui-col { float: left; width: 12.5% } .mdui-col-lg-9 { float: left; width: 75% } .mdui-col-offset-lg-9 { margin-left: 75% } .mdui-row-lg-9 .mdui-col { float: left; width: 11.111111% } .mdui-col-lg-10 { float: left; width: 83.333333% } .mdui-col-offset-lg-10 { margin-left: 83.333333% } .mdui-row-lg-10 .mdui-col { float: left; width: 10% } .mdui-col-lg-11 { float: left; width: 91.666667% } .mdui-col-offset-lg-11 { margin-left: 91.666667% } .mdui-row-lg-11 .mdui-col { float: left; width: 9.090909% } .mdui-col-lg-12 { float: left; width: 100% } .mdui-col-offset-lg-12 { margin-left: 100% } .mdui-row-lg-12 .mdui-col { float: left; width: 8.333333% } } @media (min-width: 1920px) { .mdui-col-xl-1 { float: left; width: 8.333333% } .mdui-col-offset-xl-1 { margin-left: 8.333333% } .mdui-row-xl-1 .mdui-col { float: left; width: 100% } .mdui-col-xl-2 { float: left; width: 16.666667% } .mdui-col-offset-xl-2 { margin-left: 16.666667% } .mdui-row-xl-2 .mdui-col { float: left; width: 50% } .mdui-col-xl-3 { float: left; width: 25% } .mdui-col-offset-xl-3 { margin-left: 25% } .mdui-row-xl-3 .mdui-col { float: left; width: 33.333333% } .mdui-col-xl-4 { float: left; width: 33.333333% } .mdui-col-offset-xl-4 { margin-left: 33.333333% } .mdui-row-xl-4 .mdui-col { float: left; width: 25% } .mdui-col-xl-5 { float: left; width: 41.666667% } .mdui-col-offset-xl-5 { margin-left: 41.666667% } .mdui-row-xl-5 .mdui-col { float: left; width: 20% } .mdui-col-xl-6 { float: left; width: 50% } .mdui-col-offset-xl-6 { margin-left: 50% } .mdui-row-xl-6 .mdui-col { float: left; width: 16.666667% } .mdui-col-xl-7 { float: left; width: 58.333333% } .mdui-col-offset-xl-7 { margin-left: 58.333333% } .mdui-row-xl-7 .mdui-col { float: left; width: 14.285714% } .mdui-col-xl-8 { float: left; width: 66.666667% } .mdui-col-offset-xl-8 { margin-left: 66.666667% } .mdui-row-xl-8 .mdui-col { float: left; width: 12.5% } .mdui-col-xl-9 { float: left; width: 75% } .mdui-col-offset-xl-9 { margin-left: 75% } .mdui-row-xl-9 .mdui-col { float: left; width: 11.111111% } .mdui-col-xl-10 { float: left; width: 83.333333% } .mdui-col-offset-xl-10 { margin-left: 83.333333% } .mdui-row-xl-10 .mdui-col { float: left; width: 10% } .mdui-col-xl-11 { float: left; width: 91.666667% } .mdui-col-offset-xl-11 { margin-left: 91.666667% } .mdui-row-xl-11 .mdui-col { float: left; width: 9.090909% } .mdui-col-xl-12 { float: left; width: 100% } .mdui-col-offset-xl-12 { margin-left: 100% } .mdui-row-xl-12 .mdui-col { float: left; width: 8.333333% } } .mdui-toolbar { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; width: 100%; -webkit-box-sizing: border-box; box-sizing: border-box; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center } .mdui-toolbar > * { margin: 0 16px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap } .mdui-toolbar[class*=mdui-color-]:not(.mdui-color-transparent) .mdui-btn:hover { background-color: rgba(255, 255, 255, .1) } .mdui-toolbar[class*=mdui-color-]:not(.mdui-color-transparent) .mdui-btn:active { background-color: rgba(255, 255, 255, .165) } .mdui-toolbar > a { color: inherit; text-decoration: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none } .mdui-toolbar > .mdui-btn-icon { width: 48px; min-width: 48px; height: 48px } @media (orientation: landscape) and (max-width: 959px) { .mdui-toolbar > .mdui-btn-icon { width: 40px; min-width: 40px; height: 40px } } .mdui-toolbar > .mdui-btn-icon .mdui-icon { height: 24px; line-height: 24px } .mdui-toolbar .mdui-icon { color: inherit } .mdui-toolbar-spacer { margin: 0; -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; flex-grow: 1 } .mdui-toolbar { height: 56px; line-height: 56px } .mdui-toolbar > .mdui-btn { margin: 0 4px } .mdui-toolbar > .mdui-btn + .mdui-btn { margin-left: 0 } @media (min-width: 600px) { .mdui-appbar .mdui-toolbar { height: 64px; line-height: 64px } .mdui-appbar .mdui-toolbar > .mdui-btn { margin: 0 8px } .mdui-appbar .mdui-toolbar > .mdui-btn + .mdui-btn { margin-left: 0 } } @media (orientation: landscape) and (max-width: 959px) { .mdui-appbar .mdui-toolbar { height: 48px; line-height: 48px } .mdui-appbar .mdui-toolbar > .mdui-btn { margin: 0 4px } .mdui-appbar .mdui-toolbar > .mdui-btn + .mdui-btn { margin-left: 0 } } .mdui-appbar { z-index: 1000; -webkit-box-shadow: 0 2px 4px -1px rgba(0, 0, 0, .2), 0 4px 5px 0 rgba(0, 0, 0, .14), 0 1px 10px 0 rgba(0, 0, 0, .12); box-shadow: 0 2px 4px -1px rgba(0, 0, 0, .2), 0 4px 5px 0 rgba(0, 0, 0, .14), 0 1px 10px 0 rgba(0, 0, 0, .12) } .mdui-appbar-fixed { position: fixed; top: 0; right: 0; left: 0; -webkit-transition-timing-function: cubic-bezier(0, 0, .2, 1); transition-timing-function: cubic-bezier(0, 0, .2, 1); -webkit-transition-duration: .3s; transition-duration: .3s; -webkit-transition-property: left, right; transition-property: left, right; will-change: left, right } @media (min-width: 1024px) { .mdui-drawer-body-left .mdui-appbar-inset.mdui-appbar-fixed { left: 240px } } @media (min-width: 1024px) { .mdui-drawer-body-right .mdui-appbar-inset.mdui-appbar-fixed { right: 240px } } .mdui-appbar-with-toolbar { padding-top: 56px } @media (min-width: 600px) { .mdui-appbar-with-toolbar { padding-top: 64px } } @media (orientation: landscape) and (max-width: 959px) { .mdui-appbar-with-toolbar { padding-top: 48px } } .mdui-appbar-with-tab { padding-top: 48px } .mdui-appbar-with-tab-larger { padding-top: 72px } .mdui-appbar-with-toolbar.mdui-appbar-with-tab { padding-top: 104px } @media (min-width: 600px) { .mdui-appbar-with-toolbar.mdui-appbar-with-tab { padding-top: 112px } } @media (orientation: landscape) and (max-width: 959px) { .mdui-appbar-with-toolbar.mdui-appbar-with-tab { padding-top: 96px } } .mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger { padding-top: 128px } @media (min-width: 600px) { .mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger { padding-top: 136px } } @media (orientation: landscape) and (max-width: 959px) { .mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger { padding-top: 120px } } .mdui-theme-layout-dark .mdui-appbar > [class*=mdui-color-]:not(.mdui-color-transparent) { color: #fff !important; background-color: #212121 !important } .mdui-card { position: relative; -webkit-box-sizing: border-box; box-sizing: border-box; overflow: hidden; color: #000; background-color: #fff; border-radius: 2px; -webkit-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12); box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12) } .mdui-card-header { position: relative; height: 72px; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 16px } .mdui-card-header-avatar { float: left; width: 40px; height: 40px; border-radius: 50% } .mdui-card-header-title { display: block; margin-left: 52px; overflow: hidden; font-size: 16px; font-weight: 500; line-height: 20px; text-overflow: ellipsis; white-space: nowrap; opacity: .87 } .mdui-card-header-subtitle { display: block; margin-left: 52px; overflow: hidden; font-size: 14px; font-weight: 400; line-height: 20px; text-overflow: ellipsis; white-space: nowrap; opacity: .54 } .mdui-card-primary { position: relative; padding: 24px 16px 16px 16px } .mdui-card-primary-title { display: block; font-size: 24px; line-height: 36px; opacity: .87 } .mdui-card-primary-subtitle { display: block; font-size: 14px; line-height: 24px; opacity: .54 } .mdui-card-content { position: relative; padding: 16px; font-size: 14px; line-height: 24px } .mdui-card-menu { position: absolute; top: 16px; right: 16px; z-index: 1 } .mdui-card-menu .mdui-btn { margin-left: 8px } .mdui-card-actions { position: relative; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 8px } .mdui-card-actions:after, .mdui-card-actions:before { display: table; content: " " } .mdui-card-actions:after { clear: both } .mdui-card-actions:after, .mdui-card-actions:before { display: table; content: " " } .mdui-card-actions:after { clear: both } .mdui-card-actions .mdui-btn { max-width: 100%; margin: 0 8px 0 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap } .mdui-card-actions .mdui-btn-icon { width: 36px; height: 36px; margin: 0 8px } .mdui-card-actions-stacked .mdui-btn { display: block; margin: 0 0 4px 0 } .mdui-card-actions-stacked .mdui-btn:last-child { margin: 0 } .mdui-card-media { position: relative } .mdui-card-media img, .mdui-card-media video { display: block; width: 100% } .mdui-card-media-covered { position: absolute; right: 0; bottom: 0; left: 0; color: #fff; background: rgba(0, 0, 0, .2) } .mdui-card-media-covered .mdui-card-primary-title { opacity: 1 } .mdui-card-media-covered .mdui-card-primary-subtitle { opacity: .7 } .mdui-card-media-covered-top { top: 0; bottom: auto } .mdui-card-media-covered-transparent { background: 0 0 } .mdui-card-media-covered-gradient { background: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, .26)), to(rgba(0, 0, 0, 0))); background: linear-gradient(to top, rgba(0, 0, 0, .26), rgba(0, 0, 0, 0)) } .mdui-card-media-covered-gradient.mdui-card-media-covered-top { background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, .26)), to(rgba(0, 0, 0, 0))); background: linear-gradient(to bottom, rgba(0, 0, 0, .26), rgba(0, 0, 0, 0)) } .mdui-theme-layout-dark .mdui-card { color: #fff; background-color: #424242 } .mdui-tab { position: relative; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; min-height: 48px; max-height: 72px; padding: 0; margin: 0 auto; overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; white-space: nowrap } .mdui-tab a { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; min-width: 72px; min-height: 48px; max-height: 72px; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 12px; overflow: hidden; font-size: 14px; color: inherit; text-align: center; text-decoration: none; text-overflow: ellipsis; text-transform: uppercase; cursor: pointer; flex-direction: column; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; outline: 0; opacity: .7; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center } .mdui-tab a .mdui-icon { opacity: .7 } @media (min-width: 600px) { .mdui-tab a { min-width: 99px; max-width: 264px; padding: 12px 24px; -webkit-box-flex: 0; -webkit-flex: none; -ms-flex: none; flex: none } } @media (min-width: 1024px) { .mdui-tab a { min-width: 112px } } @media (min-width: 1440px) { .mdui-tab a { min-width: 136px } } @media (min-width: 1920px) { .mdui-tab a { min-width: 160px } } .mdui-tab a label { display: block; width: 100%; cursor: pointer } .mdui-tab a .mdui-icon + label { margin-top: 8px } .mdui-tab a[disabled] { cursor: default; opacity: .38 } .mdui-tab a[disabled] label { cursor: default } .mdui-tab .mdui-tab-active { color: #3f51b5; opacity: 1 } .mdui-tab .mdui-tab-active .mdui-icon { opacity: 1 } @media (min-width: 600px) { .mdui-tab-centered:before { content: ' '; -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; flex-grow: 1 } .mdui-tab-centered:after { content: ' '; -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; flex-grow: 1 } .mdui-tab-centered a { -webkit-box-flex: 0; -webkit-flex: none; -ms-flex: none; flex: none } } .mdui-tab-full-width a { max-width: none; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1 } .mdui-tab-scrollable { padding-left: 56px } .mdui-tab-scrollable a { -webkit-box-flex: 0; -webkit-flex: none; -ms-flex: none; flex: none } @media (max-width: 599px) { .mdui-tab-scrollable { padding-left: 60px } } .mdui-tab-indicator { position: absolute; bottom: 0; height: 2px; background-color: #3f51b5; -webkit-transition: all .35s cubic-bezier(.4, 0, .2, 1); transition: all .35s cubic-bezier(.4, 0, .2, 1); will-change: left, width } .mdui-theme-primary-amber .mdui-tab .mdui-tab-active { color: #ffc107 } .mdui-theme-primary-amber .mdui-tab-indicator { background-color: #ffc107 } .mdui-theme-primary-blue .mdui-tab .mdui-tab-active { color: #2196f3 } .mdui-theme-primary-blue .mdui-tab-indicator { background-color: #2196f3 } .mdui-theme-primary-blue-grey .mdui-tab .mdui-tab-active { color: #607d8b } .mdui-theme-primary-blue-grey .mdui-tab-indicator { background-color: #607d8b } .mdui-theme-primary-brown .mdui-tab .mdui-tab-active { color: #795548 } .mdui-theme-primary-brown .mdui-tab-indicator { background-color: #795548 } .mdui-theme-primary-cyan .mdui-tab .mdui-tab-active { color: #00bcd4 } .mdui-theme-primary-cyan .mdui-tab-indicator { background-color: #00bcd4 } .mdui-theme-primary-deep-orange .mdui-tab .mdui-tab-active { color: #ff5722 } .mdui-theme-primary-deep-orange .mdui-tab-indicator { background-color: #ff5722 } .mdui-theme-primary-deep-purple .mdui-tab .mdui-tab-active { color: #673ab7 } .mdui-theme-primary-deep-purple .mdui-tab-indicator { background-color: #673ab7 } .mdui-theme-primary-green .mdui-tab .mdui-tab-active { color: #4caf50 } .mdui-theme-primary-green .mdui-tab-indicator { background-color: #4caf50 } .mdui-theme-primary-grey .mdui-tab .mdui-tab-active { color: #9e9e9e } .mdui-theme-primary-grey .mdui-tab-indicator { background-color: #9e9e9e } .mdui-theme-primary-indigo .mdui-tab .mdui-tab-active { color: #3f51b5 } .mdui-theme-primary-indigo .mdui-tab-indicator { background-color: #3f51b5 } .mdui-theme-primary-light-blue .mdui-tab .mdui-tab-active { color: #03a9f4 } .mdui-theme-primary-light-blue .mdui-tab-indicator { background-color: #03a9f4 } .mdui-theme-primary-light-green .mdui-tab .mdui-tab-active { color: #8bc34a } .mdui-theme-primary-light-green .mdui-tab-indicator { background-color: #8bc34a } .mdui-theme-primary-lime .mdui-tab .mdui-tab-active { color: #cddc39 } .mdui-theme-primary-lime .mdui-tab-indicator { background-color: #cddc39 } .mdui-theme-primary-orange .mdui-tab .mdui-tab-active { color: #ff9800 } .mdui-theme-primary-orange .mdui-tab-indicator { background-color: #ff9800 } .mdui-theme-primary-pink .mdui-tab .mdui-tab-active { color: #e91e63 } .mdui-theme-primary-pink .mdui-tab-indicator { background-color: #e91e63 } .mdui-theme-primary-purple .mdui-tab .mdui-tab-active { color: #9c27b0 } .mdui-theme-primary-purple .mdui-tab-indicator { background-color: #9c27b0 } .mdui-theme-primary-red .mdui-tab .mdui-tab-active { color: #f44336 } .mdui-theme-primary-red .mdui-tab-indicator { background-color: #f44336 } .mdui-theme-primary-teal .mdui-tab .mdui-tab-active { color: #009688 } .mdui-theme-primary-teal .mdui-tab-indicator { background-color: #009688 } .mdui-theme-primary-yellow .mdui-tab .mdui-tab-active { color: #ffeb3b } .mdui-theme-primary-yellow .mdui-tab-indicator { background-color: #ffeb3b } .mdui-tab[class*=mdui-color-]:not(.mdui-color-white) .mdui-tab-active { color: inherit } .mdui-tab[class*=mdui-color-]:not(.mdui-color-white) .mdui-tab-indicator { background-color: #fff } .mdui-tab[class*=mdui-color-]:not(.mdui-color-white)::-webkit-scrollbar { width: 5px; height: 5px; background: 0 0 } @media (min-width: 1024px) { .mdui-tab[class*=mdui-color-]:not(.mdui-color-white)::-webkit-scrollbar { width: 8px; height: 8px } } .mdui-tab[class*=mdui-color-]:not(.mdui-color-white)::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, .3) } .mdui-subheader, .mdui-subheader-inset { position: relative; height: 48px; -webkit-box-sizing: border-box; box-sizing: border-box; padding-right: 16px; padding-left: 16px; overflow: hidden; font-size: 14px; font-weight: 500; line-height: 48px; color: rgba(0, 0, 0, .54); text-overflow: ellipsis; white-space: nowrap; cursor: default } .mdui-subheader-inset { padding-left: 72px } .mdui-theme-layout-dark .mdui-subheader, .mdui-theme-layout-dark .mdui-subheader-inset { color: rgba(255, 255, 255, .7) } .mdui-grid-list { margin: 0 -2px } .mdui-grid-list .mdui-col, .mdui-grid-list [class*=mdui-col-lg-], .mdui-grid-list [class*=mdui-col-md-], .mdui-grid-list [class*=mdui-col-sm-], .mdui-grid-list [class*=mdui-col-xl-], .mdui-grid-list [class*=mdui-col-xs-] { padding-right: 2px; padding-left: 2px } .mdui-grid-tile { position: relative; -webkit-box-sizing: border-box; box-sizing: border-box; margin-bottom: 4px; overflow: hidden } .mdui-grid-tile img { display: block; width: 100% } .mdui-grid-tile-actions { position: absolute; right: 0; bottom: 0; left: 0; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; min-height: 48px; max-height: 68px; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 16px; color: #fff; background: rgba(0, 0, 0, .2); -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center } .mdui-grid-tile-actions .mdui-icon { color: #fff } .mdui-grid-tile-text { overflow: hidden; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1 } .mdui-grid-tile-title { height: 16px; overflow: hidden; font-size: 16px; line-height: 16px; text-overflow: ellipsis; white-space: nowrap } .mdui-grid-tile-title .mdui-icon { margin-right: 8px } .mdui-grid-tile-subtitle { height: 18px; margin-top: 4px; overflow: hidden; font-size: 12px; line-height: 18px; text-overflow: ellipsis; white-space: nowrap } .mdui-grid-tile-subtitle .mdui-icon { margin-right: 8px; font-size: 18px } .mdui-grid-tile-buttons { margin: -8px; white-space: nowrap; -webkit-box-flex: 0; -webkit-flex: none; -ms-flex: none; flex: none } .mdui-grid-tile-buttons .mdui-btn { margin-left: 8px } .mdui-grid-tile-buttons .mdui-btn:first-child { margin-left: 0 } .mdui-grid-tile-text + .mdui-grid-tile-buttons { margin-left: 8px } .mdui-grid-tile-buttons + .mdui-grid-tile-text { margin-left: 16px } .mdui-grid-tile-actions-top { top: 0; bottom: auto } .mdui-grid-tile-actions-transparent { background: 0 0 } .mdui-grid-tile-actions-gradient { background: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, .26)), to(rgba(0, 0, 0, 0))); background: linear-gradient(to top, rgba(0, 0, 0, .26), rgba(0, 0, 0, 0)) } .mdui-grid-tile-actions-gradient.mdui-grid-tile-actions-top { background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, .26)), to(rgba(0, 0, 0, 0))); background: linear-gradient(to bottom, rgba(0, 0, 0, .26), rgba(0, 0, 0, 0)) } .mdui-list { padding: 8px 0; margin: 0; list-style: none; background-color: transparent } .mdui-list .mdui-list { padding: 0 } .mdui-list > .mdui-divider, .mdui-list > .mdui-divider-dark, .mdui-list > .mdui-divider-inset, .mdui-list > .mdui-divider-inset-dark, .mdui-list > .mdui-divider-inset-light, .mdui-list > .mdui-divider-light { margin-top: 8px; margin-bottom: 8px } .mdui-list a { color: inherit; text-decoration: none } .mdui-list .mdui-subheader, .mdui-list .mdui-subheader-inset { margin-top: 8px } .mdui-list .mdui-subheader-inset:before, .mdui-list .mdui-subheader:before { position: absolute; right: 0; left: 0; display: block; height: 1px; content: ' '; background-color: rgba(0, 0, 0, .12) } .mdui-list .mdui-subheader-inset:first-child, .mdui-list .mdui-subheader:first-child { margin-top: -8px } .mdui-list .mdui-subheader-inset:first-child:before, .mdui-list .mdui-subheader:first-child:before { background-color: transparent } .mdui-list .mdui-subheader-inset:before { left: 72px } .mdui-list-item { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; min-height: 48px; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 0 16px; text-decoration: none; cursor: pointer; -webkit-transition: background-color .3s cubic-bezier(.4, 0, .2, 1); transition: background-color .3s cubic-bezier(.4, 0, .2, 1); -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center } .mdui-list-item:hover { background-color: rgba(0, 0, 0, .08) } .mdui-list-item:after { height: 48px; visibility: hidden; content: ' ' } .mdui-list-item-icon { width: 24px; min-width: 24px; height: 24px; color: rgba(0, 0, 0, .54) } .mdui-list-item-avatar { min-width: 40px; max-width: 40px; height: 40px; margin-top: 8px; margin-bottom: 8px; line-height: 40px; color: #fff; text-align: center; background-color: #bdbdbd; border-radius: 50% } .mdui-list-item-avatar img { width: 100%; height: 100%; border-radius: 50% } .mdui-list-item-content { padding-top: 14px; padding-bottom: 14px; font-size: 16px; font-weight: 400; line-height: 20px; -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; flex-grow: 1 } .mdui-list-item-text { font-size: 14px; opacity: .54 } .mdui-list-item-title ~ .mdui-list-item-text { margin-top: 4px } .mdui-list-item-active { font-weight: 700; background-color: rgba(0, 0, 0, .08) } .mdui-list-item-active .mdui-list-item-content { font-weight: 700 } .mdui-list-item-active .mdui-list-item-text { font-weight: 400 } .mdui-list-item-one-line, .mdui-list-item-three-line, .mdui-list-item-two-line { display: -webkit-box; overflow: hidden; text-overflow: ellipsis; -webkit-box-orient: vertical } .mdui-list-item-one-line { height: 20px; -webkit-line-clamp: 1 } .mdui-list-item-two-line { height: 40px; -webkit-line-clamp: 2 } .mdui-list-item-three-line { height: 60px; -webkit-line-clamp: 3 } .mdui-list-item-icon ~ .mdui-list-item-content { margin-left: 32px } .mdui-checkbox ~ .mdui-list-item-content, .mdui-radio ~ .mdui-list-item-content, .mdui-switch ~ .mdui-list-item-content { margin-left: 20px } .mdui-list-item-avatar ~ .mdui-list-item-content { margin-left: 16px } .mdui-list-item-content ~ .mdui-checkbox, .mdui-list-item-content ~ .mdui-list-item-avatar, .mdui-list-item-content ~ .mdui-list-item-icon, .mdui-list-item-content ~ .mdui-radio, .mdui-list-item-content ~ .mdui-switch { margin-left: 16px } .mdui-list-item-content ~ .mdui-checkbox, .mdui-list-item-content ~ .mdui-radio { padding-left: 24px } .mdui-list-dense { padding: 4px 0; font-size: 13px } .mdui-list-dense > .mdui-divider, .mdui-list-dense > .mdui-divider-dark, .mdui-list-dense > .mdui-divider-inset, .mdui-list-dense > .mdui-divider-inset-dark, .mdui-list-dense > .mdui-divider-inset-light, .mdui-list-dense > .mdui-divider-light { margin-top: 4px; margin-bottom: 4px } .mdui-list-dense .mdui-subheader, .mdui-list-dense .mdui-subheader-inset { height: 40px; margin-top: 4px; font-size: 12px; line-height: 40px } .mdui-list-dense .mdui-subheader-inset:first-child, .mdui-list-dense .mdui-subheader:first-child { margin-top: -4px } .mdui-list-dense .mdui-list-item { min-height: 40px } .mdui-list-dense .mdui-list-item:after { height: 40px } .mdui-list-dense .mdui-list-item-icon { width: 20px; height: 20px; font-size: 20px } .mdui-list-dense .mdui-list-item-avatar { width: 36px; min-width: 36px; height: 36px; min-height: 36px } .mdui-list-dense .mdui-list-item-content { padding-top: 11px; padding-bottom: 11px; font-size: 13px; line-height: 18px } .mdui-list-dense .mdui-list-item-text { font-size: 13px } .mdui-list-dense .mdui-list-item-title ~ .mdui-list-item-text { margin-top: 2px } .mdui-list-dense .mdui-list-item-one-line { height: 18px } .mdui-list-dense .mdui-list-item-two-line { height: 36px } .mdui-list-dense .mdui-list-item-three-line { height: 54px } .mdui-theme-layout-dark .mdui-list .mdui-subheader-inset:before, .mdui-theme-layout-dark .mdui-list .mdui-subheader:before { background-color: rgba(255, 255, 255, .12) } .mdui-theme-layout-dark .mdui-list .mdui-subheader-inset:first-child:before, .mdui-theme-layout-dark .mdui-list .mdui-subheader:first-child:before { background-color: transparent } .mdui-theme-layout-dark .mdui-list-item { color: #fff } .mdui-theme-layout-dark .mdui-list-item:hover { background-color: rgba(255, 255, 255, .08) } .mdui-theme-layout-dark .mdui-list-item-icon { color: #fff } .mdui-theme-layout-dark .mdui-list-item-text { opacity: .7 } .mdui-theme-layout-dark .mdui-list-item-active { background-color: rgba(255, 255, 255, .08) } [class*=mdui-color-] .mdui-list-item { color: inherit } [class*=mdui-color-] .mdui-list-item-icon { color: inherit } body.mdui-loaded { -webkit-transition: padding .3s cubic-bezier(0, 0, .2, 1); transition: padding .3s cubic-bezier(0, 0, .2, 1) } body.mdui-loaded .mdui-drawer { -webkit-transition: all .3s cubic-bezier(0, 0, .2, 1); transition: all .3s cubic-bezier(0, 0, .2, 1) } .mdui-drawer { position: fixed; top: 0; bottom: 0; left: 0; z-index: 5000; width: calc(100% - 56px); max-width: 280px; -webkit-box-sizing: border-box; box-sizing: border-box; margin: 0; overflow-x: hidden; overflow-y: auto; -webkit-overflow-scrolling: touch; white-space: nowrap; will-change: transform } @media (max-width: 1023px) { .mdui-drawer:not(.mdui-drawer-open) { -webkit-box-shadow: none !important; box-shadow: none !important } } @media (min-width: 600px) { .mdui-drawer { width: calc(100% - 64px); max-width: 320px } } @media (min-width: 1024px) { .mdui-drawer { width: 240px; max-width: none } .mdui-drawer.mdui-drawer-close { -webkit-box-shadow: none !important; box-shadow: none !important } } .mdui-drawer-right { right: 0; left: auto } @media (max-width: 1023px) { .mdui-drawer { background-color: #fff; -webkit-box-shadow: 0 8px 10px -5px rgba(0, 0, 0, .2), 0 16px 24px 2px rgba(0, 0, 0, .14), 0 6px 30px 5px rgba(0, 0, 0, .12); box-shadow: 0 8px 10px -5px rgba(0, 0, 0, .2), 0 16px 24px 2px rgba(0, 0, 0, .14), 0 6px 30px 5px rgba(0, 0, 0, .12); -webkit-transform: translateX(-330px); transform: translateX(-330px) } .mdui-drawer-right { -webkit-transform: translateX(330px); transform: translateX(330px) } } @media (max-width: 599px) { .mdui-drawer { -webkit-transform: translateX(-290px); transform: translateX(-290px) } .mdui-drawer-right { -webkit-transform: translateX(290px); transform: translateX(290px) } } .mdui-drawer-close { -webkit-transform: translateX(-290px); transform: translateX(-290px) } .mdui-drawer-close.mdui-drawer-right { -webkit-transform: translateX(290px); transform: translateX(290px) } @media (min-width: 600px) { .mdui-drawer-close { -webkit-transform: translateX(-330px); transform: translateX(-330px) } .mdui-drawer-close.mdui-drawer-right { -webkit-transform: translateX(330px); transform: translateX(330px) } } @media (min-width: 1024px) { .mdui-drawer-close { -webkit-transform: translateX(-250px); transform: translateX(-250px) } .mdui-drawer-close.mdui-drawer-right { -webkit-transform: translateX(250px); transform: translateX(250px) } } .mdui-drawer-open { -webkit-transform: translateX(0) !important; transform: translateX(0) !important } @media (min-width: 1024px) { .mdui-drawer-body-left { padding-left: 240px } .mdui-drawer-body-right { padding-right: 240px } .mdui-appbar-with-toolbar .mdui-drawer { top: 64px } .mdui-appbar-with-tab .mdui-drawer { top: 48px } .mdui-appbar-with-tab-larger .mdui-drawer { top: 72px } .mdui-appbar-with-toolbar.mdui-appbar-with-tab .mdui-drawer { top: 112px } .mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger .mdui-drawer { top: 136px } } .mdui-drawer[class*=mdui-color-]:not(.mdui-color-transparent) { -webkit-box-shadow: 0 8px 10px -5px rgba(0, 0, 0, .2), 0 16px 24px 2px rgba(0, 0, 0, .14), 0 6px 30px 5px rgba(0, 0, 0, .12); box-shadow: 0 8px 10px -5px rgba(0, 0, 0, .2), 0 16px 24px 2px rgba(0, 0, 0, .14), 0 6px 30px 5px rgba(0, 0, 0, .12) } .mdui-drawer-full-height { top: 0 !important } @media (max-width: 1023px) { .mdui-theme-layout-dark .mdui-drawer { background-color: #424242 } } .mdui-dialog { position: fixed; right: 0; left: 0; z-index: 6000; display: none; width: 92%; min-width: 180px; max-width: 728px; max-height: 90%; -webkit-box-sizing: border-box; box-sizing: border-box; margin: auto; overflow: hidden; color: #000; background-color: #fff; border-radius: 2px; -webkit-box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12); box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12); opacity: 0; -webkit-transition-duration: .3s; transition-duration: .3s; -webkit-transition-property: opacity, visibility, -webkit-transform; transition-property: opacity, visibility, -webkit-transform; transition-property: transform, opacity, visibility; transition-property: transform, opacity, visibility, -webkit-transform; -webkit-transform: scale(.95); transform: scale(.95); will-change: top, opacity, transform } @media (min-width: 600px) { .mdui-dialog { width: 85%; max-height: 85% } } @media (min-width: 1024px) { .mdui-dialog { width: 80%; max-height: 80% } } .mdui-dialog-open { opacity: 1; -webkit-transform: scale(1); transform: scale(1) } .mdui-dialog-title { -webkit-box-sizing: border-box; box-sizing: border-box; font-size: 20px; font-weight: 500; line-height: 24px; text-align: left } .mdui-dialog > .mdui-dialog-title { padding: 24px 24px 20px 24px } .mdui-dialog-content { -webkit-box-sizing: border-box; box-sizing: border-box; padding: 24px; overflow-y: auto; -webkit-overflow-scrolling: touch; font-size: 15px; line-height: 1.5; color: rgba(0, 0, 0, .7) } .mdui-dialog-content > .mdui-dialog-title { padding-bottom: 20px } .mdui-dialog-title + .mdui-dialog-content { padding-top: 0 } .mdui-dialog-actions { -webkit-box-sizing: border-box; box-sizing: border-box; padding: 8px; text-align: right } .mdui-dialog-actions .mdui-btn { min-width: 64px; margin-left: 8px; color: #e91e63 } .mdui-dialog-actions .mdui-btn:first-child { margin-left: 0 } .mdui-dialog-content > .mdui-dialog-actions { padding-top: 32px; margin: 0 -24px -24px -24px } .mdui-dialog-actions-stacked { padding: 8px 0 8px 0 } .mdui-dialog-actions-stacked .mdui-btn { width: 100%; height: 48px; margin: 0; line-height: 48px !important; text-align: right; border-radius: 0 } .mdui-theme-accent-amber .mdui-dialog-actions .mdui-btn { color: #ffc107 } .mdui-theme-accent-blue .mdui-dialog-actions .mdui-btn { color: #2196f3 } .mdui-theme-accent-cyan .mdui-dialog-actions .mdui-btn { color: #00bcd4 } .mdui-theme-accent-deep-orange .mdui-dialog-actions .mdui-btn { color: #ff5722 } .mdui-theme-accent-deep-purple .mdui-dialog-actions .mdui-btn { color: #673ab7 } .mdui-theme-accent-green .mdui-dialog-actions .mdui-btn { color: #4caf50 } .mdui-theme-accent-indigo .mdui-dialog-actions .mdui-btn { color: #3f51b5 } .mdui-theme-accent-light-blue .mdui-dialog-actions .mdui-btn { color: #03a9f4 } .mdui-theme-accent-light-green .mdui-dialog-actions .mdui-btn { color: #8bc34a } .mdui-theme-accent-lime .mdui-dialog-actions .mdui-btn { color: #cddc39 } .mdui-theme-accent-orange .mdui-dialog-actions .mdui-btn { color: #ff9800 } .mdui-theme-accent-pink .mdui-dialog-actions .mdui-btn { color: #e91e63 } .mdui-theme-accent-purple .mdui-dialog-actions .mdui-btn { color: #9c27b0 } .mdui-theme-accent-red .mdui-dialog-actions .mdui-btn { color: #f44336 } .mdui-theme-accent-teal .mdui-dialog-actions .mdui-btn { color: #009688 } .mdui-theme-accent-yellow .mdui-dialog-actions .mdui-btn { color: #ffeb3b } .mdui-theme-layout-dark .mdui-dialog { color: #fff; background-color: #424242 } .mdui-theme-layout-dark .mdui-dialog-content { color: rgba(255, 255, 255, .7) } .mdui-dialog-alert { max-width: 448px } .mdui-dialog-confirm { max-width: 448px } .mdui-dialog-prompt { max-width: 448px } .mdui-dialog-prompt .mdui-textfield { padding-top: 0 } .mdui-shadow-0 { -webkit-box-shadow: none; box-shadow: none } .mdui-shadow-1 { -webkit-box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12); box-shadow: 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 1px 0 rgba(0, 0, 0, .14), 0 1px 3px 0 rgba(0, 0, 0, .12) } .mdui-shadow-2 { -webkit-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12); box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12) } .mdui-shadow-3 { -webkit-box-shadow: 0 3px 3px -2px rgba(0, 0, 0, .2), 0 3px 4px 0 rgba(0, 0, 0, .14), 0 1px 8px 0 rgba(0, 0, 0, .12); box-shadow: 0 3px 3px -2px rgba(0, 0, 0, .2), 0 3px 4px 0 rgba(0, 0, 0, .14), 0 1px 8px 0 rgba(0, 0, 0, .12) } .mdui-shadow-4 { -webkit-box-shadow: 0 2px 4px -1px rgba(0, 0, 0, .2), 0 4px 5px 0 rgba(0, 0, 0, .14), 0 1px 10px 0 rgba(0, 0, 0, .12); box-shadow: 0 2px 4px -1px rgba(0, 0, 0, .2), 0 4px 5px 0 rgba(0, 0, 0, .14), 0 1px 10px 0 rgba(0, 0, 0, .12) } .mdui-shadow-5 { -webkit-box-shadow: 0 3px 5px -1px rgba(0, 0, 0, .2), 0 5px 8px 0 rgba(0, 0, 0, .14), 0 1px 14px 0 rgba(0, 0, 0, .12); box-shadow: 0 3px 5px -1px rgba(0, 0, 0, .2), 0 5px 8px 0 rgba(0, 0, 0, .14), 0 1px 14px 0 rgba(0, 0, 0, .12) } .mdui-shadow-6 { -webkit-box-shadow: 0 3px 5px -1px rgba(0, 0, 0, .2), 0 6px 10px 0 rgba(0, 0, 0, .14), 0 1px 18px 0 rgba(0, 0, 0, .12); box-shadow: 0 3px 5px -1px rgba(0, 0, 0, .2), 0 6px 10px 0 rgba(0, 0, 0, .14), 0 1px 18px 0 rgba(0, 0, 0, .12) } .mdui-shadow-7 { -webkit-box-shadow: 0 4px 5px -2px rgba(0, 0, 0, .2), 0 7px 10px 1px rgba(0, 0, 0, .14), 0 2px 16px 1px rgba(0, 0, 0, .12); box-shadow: 0 4px 5px -2px rgba(0, 0, 0, .2), 0 7px 10px 1px rgba(0, 0, 0, .14), 0 2px 16px 1px rgba(0, 0, 0, .12) } .mdui-shadow-8 { -webkit-box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12); box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12) } .mdui-shadow-9 { -webkit-box-shadow: 0 5px 6px -3px rgba(0, 0, 0, .2), 0 9px 12px 1px rgba(0, 0, 0, .14), 0 3px 16px 2px rgba(0, 0, 0, .12); box-shadow: 0 5px 6px -3px rgba(0, 0, 0, .2), 0 9px 12px 1px rgba(0, 0, 0, .14), 0 3px 16px 2px rgba(0, 0, 0, .12) } .mdui-shadow-10 { -webkit-box-shadow: 0 6px 6px -3px rgba(0, 0, 0, .2), 0 10px 14px 1px rgba(0, 0, 0, .14), 0 4px 18px 3px rgba(0, 0, 0, .12); box-shadow: 0 6px 6px -3px rgba(0, 0, 0, .2), 0 10px 14px 1px rgba(0, 0, 0, .14), 0 4px 18px 3px rgba(0, 0, 0, .12) } .mdui-shadow-11 { -webkit-box-shadow: 0 6px 7px -4px rgba(0, 0, 0, .2), 0 11px 15px 1px rgba(0, 0, 0, .14), 0 4px 20px 3px rgba(0, 0, 0, .12); box-shadow: 0 6px 7px -4px rgba(0, 0, 0, .2), 0 11px 15px 1px rgba(0, 0, 0, .14), 0 4px 20px 3px rgba(0, 0, 0, .12) } .mdui-shadow-12 { -webkit-box-shadow: 0 7px 8px -4px rgba(0, 0, 0, .2), 0 12px 17px 2px rgba(0, 0, 0, .14), 0 5px 22px 4px rgba(0, 0, 0, .12); box-shadow: 0 7px 8px -4px rgba(0, 0, 0, .2), 0 12px 17px 2px rgba(0, 0, 0, .14), 0 5px 22px 4px rgba(0, 0, 0, .12) } .mdui-shadow-13 { -webkit-box-shadow: 0 7px 8px -4px rgba(0, 0, 0, .2), 0 13px 19px 2px rgba(0, 0, 0, .14), 0 5px 24px 4px rgba(0, 0, 0, .12); box-shadow: 0 7px 8px -4px rgba(0, 0, 0, .2), 0 13px 19px 2px rgba(0, 0, 0, .14), 0 5px 24px 4px rgba(0, 0, 0, .12) } .mdui-shadow-14 { -webkit-box-shadow: 0 7px 9px -4px rgba(0, 0, 0, .2), 0 14px 21px 2px rgba(0, 0, 0, .14), 0 5px 26px 4px rgba(0, 0, 0, .12); box-shadow: 0 7px 9px -4px rgba(0, 0, 0, .2), 0 14px 21px 2px rgba(0, 0, 0, .14), 0 5px 26px 4px rgba(0, 0, 0, .12) } .mdui-shadow-15 { -webkit-box-shadow: 0 8px 9px -5px rgba(0, 0, 0, .2), 0 15px 22px 2px rgba(0, 0, 0, .14), 0 6px 28px 5px rgba(0, 0, 0, .12); box-shadow: 0 8px 9px -5px rgba(0, 0, 0, .2), 0 15px 22px 2px rgba(0, 0, 0, .14), 0 6px 28px 5px rgba(0, 0, 0, .12) } .mdui-shadow-16 { -webkit-box-shadow: 0 8px 10px -5px rgba(0, 0, 0, .2), 0 16px 24px 2px rgba(0, 0, 0, .14), 0 6px 30px 5px rgba(0, 0, 0, .12); box-shadow: 0 8px 10px -5px rgba(0, 0, 0, .2), 0 16px 24px 2px rgba(0, 0, 0, .14), 0 6px 30px 5px rgba(0, 0, 0, .12) } .mdui-shadow-17 { -webkit-box-shadow: 0 8px 11px -5px rgba(0, 0, 0, .2), 0 17px 26px 2px rgba(0, 0, 0, .14), 0 6px 32px 5px rgba(0, 0, 0, .12); box-shadow: 0 8px 11px -5px rgba(0, 0, 0, .2), 0 17px 26px 2px rgba(0, 0, 0, .14), 0 6px 32px 5px rgba(0, 0, 0, .12) } .mdui-shadow-18 { -webkit-box-shadow: 0 9px 11px -5px rgba(0, 0, 0, .2), 0 18px 28px 2px rgba(0, 0, 0, .14), 0 7px 34px 6px rgba(0, 0, 0, .12); box-shadow: 0 9px 11px -5px rgba(0, 0, 0, .2), 0 18px 28px 2px rgba(0, 0, 0, .14), 0 7px 34px 6px rgba(0, 0, 0, .12) } .mdui-shadow-19 { -webkit-box-shadow: 0 9px 12px -6px rgba(0, 0, 0, .2), 0 19px 29px 2px rgba(0, 0, 0, .14), 0 7px 36px 6px rgba(0, 0, 0, .12); box-shadow: 0 9px 12px -6px rgba(0, 0, 0, .2), 0 19px 29px 2px rgba(0, 0, 0, .14), 0 7px 36px 6px rgba(0, 0, 0, .12) } .mdui-shadow-20 { -webkit-box-shadow: 0 10px 13px -6px rgba(0, 0, 0, .2), 0 20px 31px 3px rgba(0, 0, 0, .14), 0 8px 38px 7px rgba(0, 0, 0, .12); box-shadow: 0 10px 13px -6px rgba(0, 0, 0, .2), 0 20px 31px 3px rgba(0, 0, 0, .14), 0 8px 38px 7px rgba(0, 0, 0, .12) } .mdui-shadow-21 { -webkit-box-shadow: 0 10px 13px -6px rgba(0, 0, 0, .2), 0 21px 33px 3px rgba(0, 0, 0, .14), 0 8px 40px 7px rgba(0, 0, 0, .12); box-shadow: 0 10px 13px -6px rgba(0, 0, 0, .2), 0 21px 33px 3px rgba(0, 0, 0, .14), 0 8px 40px 7px rgba(0, 0, 0, .12) } .mdui-shadow-22 { -webkit-box-shadow: 0 10px 14px -6px rgba(0, 0, 0, .2), 0 22px 35px 3px rgba(0, 0, 0, .14), 0 8px 42px 7px rgba(0, 0, 0, .12); box-shadow: 0 10px 14px -6px rgba(0, 0, 0, .2), 0 22px 35px 3px rgba(0, 0, 0, .14), 0 8px 42px 7px rgba(0, 0, 0, .12) } .mdui-shadow-23 { -webkit-box-shadow: 0 11px 14px -7px rgba(0, 0, 0, .2), 0 23px 36px 3px rgba(0, 0, 0, .14), 0 9px 44px 8px rgba(0, 0, 0, .12); box-shadow: 0 11px 14px -7px rgba(0, 0, 0, .2), 0 23px 36px 3px rgba(0, 0, 0, .14), 0 9px 44px 8px rgba(0, 0, 0, .12) } .mdui-shadow-24 { -webkit-box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12); box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12) } .mdui-hoverable { -webkit-transition: -webkit-box-shadow .25s cubic-bezier(.4, 0, .2, 1); transition: -webkit-box-shadow .25s cubic-bezier(.4, 0, .2, 1); transition: box-shadow .25s cubic-bezier(.4, 0, .2, 1); transition: box-shadow .25s cubic-bezier(.4, 0, .2, 1), -webkit-box-shadow .25s cubic-bezier(.4, 0, .2, 1); will-change: box-shadow } .mdui-hoverable:focus, .mdui-hoverable:hover { -webkit-box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12); box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12) } .mdui-tooltip { position: absolute; z-index: 9000; display: inline-block; max-width: 180px; min-height: 32px; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 8px 16px; font-size: 14px; font-weight: 500; line-height: 22px; color: #fff; text-align: left; background-color: rgba(97, 97, 97, .9); border-radius: 2px; opacity: 0; -webkit-transition-timing-function: cubic-bezier(.4, 0, .2, 1); transition-timing-function: cubic-bezier(.4, 0, .2, 1); -webkit-transition-duration: .15s; transition-duration: .15s; -webkit-transition-property: opacity, -webkit-transform; transition-property: opacity, -webkit-transform; transition-property: opacity, transform; transition-property: opacity, transform, -webkit-transform; -webkit-transform: scale(0); transform: scale(0); will-change: opacity, transform } @media (min-width: 1024px) { .mdui-tooltip { max-width: 200px; min-height: 24px; padding: 4px 8px; font-size: 12px; line-height: 18px } } .mdui-tooltip-open { opacity: 1; -webkit-transform: scale(1); transform: scale(1) } .mdui-snackbar { position: fixed; z-index: 7000; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; width: 100%; min-height: 48px; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 0 24px 0 24px; font-size: 14px; line-height: 20px; color: #fff; background-color: #323232; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; will-change: transform } @media (min-width: 600px) { .mdui-snackbar { width: auto; min-width: 288px; max-width: 568px; border-radius: 2px } } .mdui-snackbar-bottom, .mdui-snackbar-left-bottom, .mdui-snackbar-left-top, .mdui-snackbar-right-bottom, .mdui-snackbar-right-top, .mdui-snackbar-top { -webkit-transition: -webkit-transform .3s cubic-bezier(.4, 0, .2, 1); transition: -webkit-transform .3s cubic-bezier(.4, 0, .2, 1); transition: transform .3s cubic-bezier(.4, 0, .2, 1); transition: transform .3s cubic-bezier(.4, 0, .2, 1), -webkit-transform .3s cubic-bezier(.4, 0, .2, 1) } .mdui-snackbar-bottom, .mdui-snackbar-left-bottom, .mdui-snackbar-right-bottom { bottom: 0 } .mdui-snackbar-left-top, .mdui-snackbar-right-top, .mdui-snackbar-top { top: 0 } .mdui-snackbar-bottom, .mdui-snackbar-top { left: 50% } @media (min-width: 600px) { .mdui-snackbar-left-top { top: 24px; left: 24px } .mdui-snackbar-left-bottom { bottom: 24px; left: 24px } .mdui-snackbar-right-top { top: 24px; right: 24px } .mdui-snackbar-right-bottom { right: 24px; bottom: 24px } } .mdui-snackbar-text { position: relative; max-width: 100%; padding: 14px 0 14px 0; overflow: hidden; text-overflow: ellipsis } .mdui-snackbar-action { margin-right: -16px; color: #ff80ab; white-space: nowrap } .mdui-theme-accent-amber .mdui-snackbar-action { color: #ffe57f } .mdui-theme-accent-blue .mdui-snackbar-action { color: #82b1ff } .mdui-theme-accent-cyan .mdui-snackbar-action { color: #84ffff } .mdui-theme-accent-deep-orange .mdui-snackbar-action { color: #ff9e80 } .mdui-theme-accent-deep-purple .mdui-snackbar-action { color: #b388ff } .mdui-theme-accent-green .mdui-snackbar-action { color: #b9f6ca } .mdui-theme-accent-indigo .mdui-snackbar-action { color: #8c9eff } .mdui-theme-accent-light-blue .mdui-snackbar-action { color: #80d8ff } .mdui-theme-accent-light-green .mdui-snackbar-action { color: #ccff90 } .mdui-theme-accent-lime .mdui-snackbar-action { color: #f4ff81 } .mdui-theme-accent-orange .mdui-snackbar-action { color: #ffd180 } .mdui-theme-accent-pink .mdui-snackbar-action { color: #ff80ab } .mdui-theme-accent-purple .mdui-snackbar-action { color: #ea80fc } .mdui-theme-accent-red .mdui-snackbar-action { color: #ff8a80 } .mdui-theme-accent-teal .mdui-snackbar-action { color: #a7ffeb } .mdui-theme-accent-yellow .mdui-snackbar-action { color: #ffff8d } .mdui-theme-layout-dark .mdui-snackbar { background-color: #5d5d5d } .mdui-chip { display: inline-block; height: 32px; -webkit-box-sizing: border-box; box-sizing: border-box; margin: 2px 0; white-space: nowrap; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background-color: #e0e0e0; border-radius: 16px; -webkit-transition: -webkit-box-shadow .25s cubic-bezier(.4, 0, .2, 1); transition: -webkit-box-shadow .25s cubic-bezier(.4, 0, .2, 1); transition: box-shadow .25s cubic-bezier(.4, 0, .2, 1); transition: box-shadow .25s cubic-bezier(.4, 0, .2, 1), -webkit-box-shadow .25s cubic-bezier(.4, 0, .2, 1); will-change: box-shadow } .mdui-chip:focus, .mdui-chip:hover { -webkit-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12); box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12) } .mdui-chip:active { background-color: #d6d6d6 } .mdui-chip-icon { position: relative; display: inline-block; width: 32px; height: 32px; margin-right: -4px; overflow: hidden; font-size: 18px; line-height: 32px; color: #fff; text-align: center; vertical-align: middle; background-color: #989898; border-radius: 50% } .mdui-chip-icon .mdui-icon { position: absolute; top: 4px; left: 4px; color: #fff } .mdui-chip-title { display: inline-block; height: 32px; padding-right: 12px; padding-left: 12px; font-size: 14px; line-height: 32px; vertical-align: middle } .mdui-chip-delete { display: inline-block; width: 24px; height: 24px; margin-right: 4px; margin-left: -8px; overflow: hidden; text-align: center; text-decoration: none; vertical-align: middle; cursor: pointer; border-radius: 50%; opacity: .54; -webkit-transition: opacity .25s cubic-bezier(.4, 0, .2, 1); transition: opacity .25s cubic-bezier(.4, 0, .2, 1); will-change: opacity } .mdui-chip-delete:focus, .mdui-chip-delete:hover { opacity: .87 } .mdui-theme-layout-dark .mdui-chip { background-color: #484848 } .mdui-theme-layout-dark .mdui-chip:active { background-color: #5d5d5d } .mdui-bottom-nav { position: relative; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; height: 56px; padding: 0; margin: 0 auto; overflow: hidden; white-space: nowrap } @media (min-width: 600px) { .mdui-bottom-nav:before { content: ' '; -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; flex-grow: 1 } .mdui-bottom-nav:after { content: ' '; -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; flex-grow: 1 } } .mdui-bottom-nav a { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; min-width: 32px; max-width: none; padding: 8px 12px 10px 12px; overflow: hidden; font-size: 12px; color: inherit; text-align: center; text-decoration: none; text-overflow: ellipsis; cursor: pointer; flex-direction: column; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; opacity: .7; -webkit-transition: all .2s cubic-bezier(.4, 0, .2, 1); transition: all .2s cubic-bezier(.4, 0, .2, 1); -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; will-change: padding } @media (min-width: 600px) { .mdui-bottom-nav a { max-width: 144px } } .mdui-bottom-nav a .mdui-icon { opacity: .7 } .mdui-bottom-nav a label { display: block; width: 100%; cursor: pointer; -webkit-transition: -webkit-transform .2s cubic-bezier(.4, 0, .2, 1); transition: -webkit-transform .2s cubic-bezier(.4, 0, .2, 1); transition: transform .2s cubic-bezier(.4, 0, .2, 1); transition: transform .2s cubic-bezier(.4, 0, .2, 1), -webkit-transform .2s cubic-bezier(.4, 0, .2, 1); will-change: font-size } .mdui-bottom-nav a .mdui-icon + label { margin-top: 6px } .mdui-bottom-nav a.mdui-bottom-nav-active { font-size: 14px; color: #3f51b5; opacity: 1 } .mdui-bottom-nav a.mdui-bottom-nav-active .mdui-icon { opacity: 1 } .mdui-bottom-nav-text-auto a { min-width: 32px; padding-right: 0; padding-left: 0 } @media (min-width: 600px) { .mdui-bottom-nav-text-auto a { max-width: 156px } } .mdui-bottom-nav-text-auto a .mdui-icon { padding-top: 16px; -webkit-transition: padding-top .2s cubic-bezier(.4, 0, .2, 1); transition: padding-top .2s cubic-bezier(.4, 0, .2, 1); will-change: padding-top } .mdui-bottom-nav-text-auto a label { -webkit-transform: scale(0); transform: scale(0) } .mdui-bottom-nav-text-auto a.mdui-bottom-nav-active { padding-right: 18px; padding-left: 18px } .mdui-bottom-nav-text-auto a.mdui-bottom-nav-active .mdui-icon { padding-top: 0 } .mdui-bottom-nav-text-auto a.mdui-bottom-nav-active label { -webkit-transform: scale(1); transform: scale(1) } .mdui-bottom-nav-fixed { padding-bottom: 56px } .mdui-bottom-nav-fixed .mdui-bottom-nav { position: fixed; right: 0; bottom: 0; left: 0 } .mdui-theme-primary-amber .mdui-bottom-nav a.mdui-bottom-nav-active { color: #ffc107 } .mdui-theme-primary-blue .mdui-bottom-nav a.mdui-bottom-nav-active { color: #2196f3 } .mdui-theme-primary-blue-grey .mdui-bottom-nav a.mdui-bottom-nav-active { color: #607d8b } .mdui-theme-primary-brown .mdui-bottom-nav a.mdui-bottom-nav-active { color: #795548 } .mdui-theme-primary-cyan .mdui-bottom-nav a.mdui-bottom-nav-active { color: #00bcd4 } .mdui-theme-primary-deep-orange .mdui-bottom-nav a.mdui-bottom-nav-active { color: #ff5722 } .mdui-theme-primary-deep-purple .mdui-bottom-nav a.mdui-bottom-nav-active { color: #673ab7 } .mdui-theme-primary-green .mdui-bottom-nav a.mdui-bottom-nav-active { color: #4caf50 } .mdui-theme-primary-grey .mdui-bottom-nav a.mdui-bottom-nav-active { color: #9e9e9e } .mdui-theme-primary-indigo .mdui-bottom-nav a.mdui-bottom-nav-active { color: #3f51b5 } .mdui-theme-primary-light-blue .mdui-bottom-nav a.mdui-bottom-nav-active { color: #03a9f4 } .mdui-theme-primary-light-green .mdui-bottom-nav a.mdui-bottom-nav-active { color: #8bc34a } .mdui-theme-primary-lime .mdui-bottom-nav a.mdui-bottom-nav-active { color: #cddc39 } .mdui-theme-primary-orange .mdui-bottom-nav a.mdui-bottom-nav-active { color: #ff9800 } .mdui-theme-primary-pink .mdui-bottom-nav a.mdui-bottom-nav-active { color: #e91e63 } .mdui-theme-primary-purple .mdui-bottom-nav a.mdui-bottom-nav-active { color: #9c27b0 } .mdui-theme-primary-red .mdui-bottom-nav a.mdui-bottom-nav-active { color: #f44336 } .mdui-theme-primary-teal .mdui-bottom-nav a.mdui-bottom-nav-active { color: #009688 } .mdui-theme-primary-yellow .mdui-bottom-nav a.mdui-bottom-nav-active { color: #ffeb3b } .mdui-bottom-nav[class*=mdui-color-] .mdui-bottom-nav-active { color: inherit !important } .mdui-progress { position: relative; display: block; width: 100%; height: 4px; overflow: hidden; background-color: rgba(63, 81, 181, .2); border-radius: 2px } .mdui-progress-determinate { position: absolute; top: 0; bottom: 0; left: 0; background-color: #3f51b5; -webkit-transition: width .3s linear; transition: width .3s linear } .mdui-progress-indeterminate { background-color: #3f51b5 } .mdui-progress-indeterminate:before { position: absolute; top: 0; bottom: 0; left: 0; content: ' '; background-color: inherit; -webkit-animation: mdui-progress-indeterminate 2s linear infinite; animation: mdui-progress-indeterminate 2s linear infinite; will-change: left, width } .mdui-progress-indeterminate:after { position: absolute; top: 0; bottom: 0; left: 0; content: ' '; background-color: inherit; -webkit-animation: mdui-progress-indeterminate-short 2s linear infinite; animation: mdui-progress-indeterminate-short 2s linear infinite; will-change: left, width } @-webkit-keyframes mdui-progress-indeterminate { 0% { left: 0; width: 0 } 50% { left: 30%; width: 70% } 75% { left: 100%; width: 0 } } @keyframes mdui-progress-indeterminate { 0% { left: 0; width: 0 } 50% { left: 30%; width: 70% } 75% { left: 100%; width: 0 } } @-webkit-keyframes mdui-progress-indeterminate-short { 0% { left: 0; width: 0 } 50% { left: 0; width: 0 } 75% { left: 0; width: 25% } 100% { left: 100%; width: 0 } } @keyframes mdui-progress-indeterminate-short { 0% { left: 0; width: 0 } 50% { left: 0; width: 0 } 75% { left: 0; width: 25% } 100% { left: 100%; width: 0 } } .mdui-theme-primary-amber .mdui-progress { background-color: rgba(255, 193, 7, .2) } .mdui-theme-primary-amber .mdui-progress-determinate, .mdui-theme-primary-amber .mdui-progress-indeterminate { background-color: #ffc107 } .mdui-theme-primary-blue .mdui-progress { background-color: rgba(33, 150, 243, .2) } .mdui-theme-primary-blue .mdui-progress-determinate, .mdui-theme-primary-blue .mdui-progress-indeterminate { background-color: #2196f3 } .mdui-theme-primary-blue-grey .mdui-progress { background-color: rgba(96, 125, 139, .2) } .mdui-theme-primary-blue-grey .mdui-progress-determinate, .mdui-theme-primary-blue-grey .mdui-progress-indeterminate { background-color: #607d8b } .mdui-theme-primary-brown .mdui-progress { background-color: rgba(121, 85, 72, .2) } .mdui-theme-primary-brown .mdui-progress-determinate, .mdui-theme-primary-brown .mdui-progress-indeterminate { background-color: #795548 } .mdui-theme-primary-cyan .mdui-progress { background-color: rgba(0, 188, 212, .2) } .mdui-theme-primary-cyan .mdui-progress-determinate, .mdui-theme-primary-cyan .mdui-progress-indeterminate { background-color: #00bcd4 } .mdui-theme-primary-deep-orange .mdui-progress { background-color: rgba(255, 87, 34, .2) } .mdui-theme-primary-deep-orange .mdui-progress-determinate, .mdui-theme-primary-deep-orange .mdui-progress-indeterminate { background-color: #ff5722 } .mdui-theme-primary-deep-purple .mdui-progress { background-color: rgba(103, 58, 183, .2) } .mdui-theme-primary-deep-purple .mdui-progress-determinate, .mdui-theme-primary-deep-purple .mdui-progress-indeterminate { background-color: #673ab7 } .mdui-theme-primary-green .mdui-progress { background-color: rgba(76, 175, 80, .2) } .mdui-theme-primary-green .mdui-progress-determinate, .mdui-theme-primary-green .mdui-progress-indeterminate { background-color: #4caf50 } .mdui-theme-primary-grey .mdui-progress { background-color: rgba(158, 158, 158, .2) } .mdui-theme-primary-grey .mdui-progress-determinate, .mdui-theme-primary-grey .mdui-progress-indeterminate { background-color: #9e9e9e } .mdui-theme-primary-indigo .mdui-progress { background-color: rgba(63, 81, 181, .2) } .mdui-theme-primary-indigo .mdui-progress-determinate, .mdui-theme-primary-indigo .mdui-progress-indeterminate { background-color: #3f51b5 } .mdui-theme-primary-light-blue .mdui-progress { background-color: rgba(3, 169, 244, .2) } .mdui-theme-primary-light-blue .mdui-progress-determinate, .mdui-theme-primary-light-blue .mdui-progress-indeterminate { background-color: #03a9f4 } .mdui-theme-primary-light-green .mdui-progress { background-color: rgba(139, 195, 74, .2) } .mdui-theme-primary-light-green .mdui-progress-determinate, .mdui-theme-primary-light-green .mdui-progress-indeterminate { background-color: #8bc34a } .mdui-theme-primary-lime .mdui-progress { background-color: rgba(205, 220, 57, .2) } .mdui-theme-primary-lime .mdui-progress-determinate, .mdui-theme-primary-lime .mdui-progress-indeterminate { background-color: #cddc39 } .mdui-theme-primary-orange .mdui-progress { background-color: rgba(255, 152, 0, .2) } .mdui-theme-primary-orange .mdui-progress-determinate, .mdui-theme-primary-orange .mdui-progress-indeterminate { background-color: #ff9800 } .mdui-theme-primary-pink .mdui-progress { background-color: rgba(233, 30, 99, .2) } .mdui-theme-primary-pink .mdui-progress-determinate, .mdui-theme-primary-pink .mdui-progress-indeterminate { background-color: #e91e63 } .mdui-theme-primary-purple .mdui-progress { background-color: rgba(156, 39, 176, .2) } .mdui-theme-primary-purple .mdui-progress-determinate, .mdui-theme-primary-purple .mdui-progress-indeterminate { background-color: #9c27b0 } .mdui-theme-primary-red .mdui-progress { background-color: rgba(244, 67, 54, .2) } .mdui-theme-primary-red .mdui-progress-determinate, .mdui-theme-primary-red .mdui-progress-indeterminate { background-color: #f44336 } .mdui-theme-primary-teal .mdui-progress { background-color: rgba(0, 150, 136, .2) } .mdui-theme-primary-teal .mdui-progress-determinate, .mdui-theme-primary-teal .mdui-progress-indeterminate { background-color: #009688 } .mdui-theme-primary-yellow .mdui-progress { background-color: rgba(255, 235, 59, .2) } .mdui-theme-primary-yellow .mdui-progress-determinate, .mdui-theme-primary-yellow .mdui-progress-indeterminate { background-color: #ffeb3b } .mdui-spinner { position: relative; display: inline-block; width: 28px; height: 28px; -webkit-animation: mdui-spinner 1568ms linear infinite; animation: mdui-spinner 1568ms linear infinite } @-webkit-keyframes mdui-spinner { to { -webkit-transform: rotate(360deg); transform: rotate(360deg) } } @keyframes mdui-spinner { to { -webkit-transform: rotate(360deg); transform: rotate(360deg) } } .mdui-spinner-layer { position: absolute; width: 100%; height: 100%; border-color: #3f51b5; opacity: 0; opacity: 1; -webkit-animation: mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4, 0, .2, 1) infinite both; animation: mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4, 0, .2, 1) infinite both } .mdui-spinner-layer-1 { border-color: #42a5f5 !important; -webkit-animation: mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4, 0, .2, 1) infinite both, mdui-spinner-layer-1-fade-in-out 5332ms cubic-bezier(.4, 0, .2, 1) infinite both; animation: mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4, 0, .2, 1) infinite both, mdui-spinner-layer-1-fade-in-out 5332ms cubic-bezier(.4, 0, .2, 1) infinite both } .mdui-spinner-layer-2 { border-color: #f44336 !important; -webkit-animation: mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4, 0, .2, 1) infinite both, mdui-spinner-layer-2-fade-in-out 5332ms cubic-bezier(.4, 0, .2, 1) infinite both; animation: mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4, 0, .2, 1) infinite both, mdui-spinner-layer-2-fade-in-out 5332ms cubic-bezier(.4, 0, .2, 1) infinite both } .mdui-spinner-layer-3 { border-color: #fdd835 !important; -webkit-animation: mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4, 0, .2, 1) infinite both, mdui-spinner-layer-3-fade-in-out 5332ms cubic-bezier(.4, 0, .2, 1) infinite both; animation: mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4, 0, .2, 1) infinite both, mdui-spinner-layer-3-fade-in-out 5332ms cubic-bezier(.4, 0, .2, 1) infinite both } .mdui-spinner-layer-4 { border-color: #4caf50 !important; -webkit-animation: mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4, 0, .2, 1) infinite both, mdui-spinner-layer-4-fade-in-out 5332ms cubic-bezier(.4, 0, .2, 1) infinite both; animation: mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4, 0, .2, 1) infinite both, mdui-spinner-layer-4-fade-in-out 5332ms cubic-bezier(.4, 0, .2, 1) infinite both } @-webkit-keyframes mdui-spinner-layer-fill-unfill-rotate { 12.5% { -webkit-transform: rotate(135deg); transform: rotate(135deg) } 25% { -webkit-transform: rotate(270deg); transform: rotate(270deg) } 37.5% { -webkit-transform: rotate(405deg); transform: rotate(405deg) } 50% { -webkit-transform: rotate(540deg); transform: rotate(540deg) } 62.5% { -webkit-transform: rotate(675deg); transform: rotate(675deg) } 75% { -webkit-transform: rotate(810deg); transform: rotate(810deg) } 87.5% { -webkit-transform: rotate(945deg); transform: rotate(945deg) } to { -webkit-transform: rotate(1080deg); transform: rotate(1080deg) } } @keyframes mdui-spinner-layer-fill-unfill-rotate { 12.5% { -webkit-transform: rotate(135deg); transform: rotate(135deg) } 25% { -webkit-transform: rotate(270deg); transform: rotate(270deg) } 37.5% { -webkit-transform: rotate(405deg); transform: rotate(405deg) } 50% { -webkit-transform: rotate(540deg); transform: rotate(540deg) } 62.5% { -webkit-transform: rotate(675deg); transform: rotate(675deg) } 75% { -webkit-transform: rotate(810deg); transform: rotate(810deg) } 87.5% { -webkit-transform: rotate(945deg); transform: rotate(945deg) } to { -webkit-transform: rotate(1080deg); transform: rotate(1080deg) } } @-webkit-keyframes mdui-spinner-layer-1-fade-in-out { from { opacity: 1 } 25% { opacity: 1 } 26% { opacity: 0 } 89% { opacity: 0 } 90% { opacity: 1 } 100% { opacity: 1 } } @keyframes mdui-spinner-layer-1-fade-in-out { from { opacity: 1 } 25% { opacity: 1 } 26% { opacity: 0 } 89% { opacity: 0 } 90% { opacity: 1 } 100% { opacity: 1 } } @-webkit-keyframes mdui-spinner-layer-2-fade-in-out { from { opacity: 0 } 15% { opacity: 0 } 25% { opacity: 1 } 50% { opacity: 1 } 51% { opacity: 0 } } @keyframes mdui-spinner-layer-2-fade-in-out { from { opacity: 0 } 15% { opacity: 0 } 25% { opacity: 1 } 50% { opacity: 1 } 51% { opacity: 0 } } @-webkit-keyframes mdui-spinner-layer-3-fade-in-out { from { opacity: 0 } 40% { opacity: 0 } 50% { opacity: 1 } 75% { opacity: 1 } 76% { opacity: 0 } } @keyframes mdui-spinner-layer-3-fade-in-out { from { opacity: 0 } 40% { opacity: 0 } 50% { opacity: 1 } 75% { opacity: 1 } 76% { opacity: 0 } } @-webkit-keyframes mdui-spinner-layer-4-fade-in-out { from { opacity: 0 } 65% { opacity: 0 } 75% { opacity: 1 } 90% { opacity: 1 } 100% { opacity: 0 } } @keyframes mdui-spinner-layer-4-fade-in-out { from { opacity: 0 } 65% { opacity: 0 } 75% { opacity: 1 } 90% { opacity: 1 } 100% { opacity: 0 } } .mdui-spinner-gap-patch { position: absolute; top: 0; left: 45%; width: 10%; height: 100%; overflow: hidden; border-color: inherit } .mdui-spinner-gap-patch .mdui-spinner-circle { left: -450%; width: 1000%; -webkit-box-sizing: border-box; box-sizing: border-box } .mdui-spinner-circle-clipper { position: relative; display: inline-block; width: 50%; height: 100%; overflow: hidden; border-color: inherit } .mdui-spinner-circle-clipper .mdui-spinner-circle { position: absolute; top: 0; right: 0; bottom: 0; width: 200%; height: 100%; -webkit-box-sizing: border-box; box-sizing: border-box; border-color: inherit; border-style: solid; border-width: 3px; border-bottom-color: transparent !important; border-radius: 50%; -webkit-animation: none; animation: none } .mdui-spinner-circle-clipper.mdui-spinner-left { float: left } .mdui-spinner-circle-clipper.mdui-spinner-left .mdui-spinner-circle { left: 0; border-right-color: transparent !important; -webkit-transform: rotate(129deg); transform: rotate(129deg); -webkit-animation: mdui-spinner-left-spin 1333ms cubic-bezier(.4, 0, .2, 1) infinite both; animation: mdui-spinner-left-spin 1333ms cubic-bezier(.4, 0, .2, 1) infinite both } .mdui-spinner-circle-clipper.mdui-spinner-right { float: right } .mdui-spinner-circle-clipper.mdui-spinner-right .mdui-spinner-circle { left: -100%; border-left-color: transparent !important; -webkit-transform: rotate(-129deg); transform: rotate(-129deg); -webkit-animation: mdui-spinner-right-spin 1333ms cubic-bezier(.4, 0, .2, 1) infinite both; animation: mdui-spinner-right-spin 1333ms cubic-bezier(.4, 0, .2, 1) infinite both } @-webkit-keyframes mdui-spinner-left-spin { from { -webkit-transform: rotate(130deg); transform: rotate(130deg) } 50% { -webkit-transform: rotate(-5deg); transform: rotate(-5deg) } to { -webkit-transform: rotate(130deg); transform: rotate(130deg) } } @keyframes mdui-spinner-left-spin { from { -webkit-transform: rotate(130deg); transform: rotate(130deg) } 50% { -webkit-transform: rotate(-5deg); transform: rotate(-5deg) } to { -webkit-transform: rotate(130deg); transform: rotate(130deg) } } @-webkit-keyframes mdui-spinner-right-spin { from { -webkit-transform: rotate(-130deg); transform: rotate(-130deg) } 50% { -webkit-transform: rotate(5deg); transform: rotate(5deg) } to { -webkit-transform: rotate(-130deg); transform: rotate(-130deg) } } @keyframes mdui-spinner-right-spin { from { -webkit-transform: rotate(-130deg); transform: rotate(-130deg) } 50% { -webkit-transform: rotate(5deg); transform: rotate(5deg) } to { -webkit-transform: rotate(-130deg); transform: rotate(-130deg) } } .mdui-theme-primary-amber .mdui-spinner-layer { border-color: #ffc107 } .mdui-theme-primary-blue .mdui-spinner-layer { border-color: #2196f3 } .mdui-theme-primary-blue-grey .mdui-spinner-layer { border-color: #607d8b } .mdui-theme-primary-brown .mdui-spinner-layer { border-color: #795548 } .mdui-theme-primary-cyan .mdui-spinner-layer { border-color: #00bcd4 } .mdui-theme-primary-deep-orange .mdui-spinner-layer { border-color: #ff5722 } .mdui-theme-primary-deep-purple .mdui-spinner-layer { border-color: #673ab7 } .mdui-theme-primary-green .mdui-spinner-layer { border-color: #4caf50 } .mdui-theme-primary-grey .mdui-spinner-layer { border-color: #9e9e9e } .mdui-theme-primary-indigo .mdui-spinner-layer { border-color: #3f51b5 } .mdui-theme-primary-light-blue .mdui-spinner-layer { border-color: #03a9f4 } .mdui-theme-primary-light-green .mdui-spinner-layer { border-color: #8bc34a } .mdui-theme-primary-lime .mdui-spinner-layer { border-color: #cddc39 } .mdui-theme-primary-orange .mdui-spinner-layer { border-color: #ff9800 } .mdui-theme-primary-pink .mdui-spinner-layer { border-color: #e91e63 } .mdui-theme-primary-purple .mdui-spinner-layer { border-color: #9c27b0 } .mdui-theme-primary-red .mdui-spinner-layer { border-color: #f44336 } .mdui-theme-primary-teal .mdui-spinner-layer { border-color: #009688 } .mdui-theme-primary-yellow .mdui-spinner-layer { border-color: #ffeb3b } .mdui-panel { width: 100%; -webkit-box-sizing: border-box; box-sizing: border-box } .mdui-panel-item { color: rgba(0, 0, 0, .87); background-color: #fff; border-bottom: 1px solid rgba(0, 0, 0, .12); -webkit-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12); box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12); -webkit-transition: margin .3s cubic-bezier(.4, 0, .2, 1); transition: margin .3s cubic-bezier(.4, 0, .2, 1); will-change: margin } .mdui-panel-item:last-child { border-bottom: none } .mdui-panel-item-header { position: relative; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; width: 100%; height: 48px; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 0 24px; overflow: hidden; font-size: 15px; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; -webkit-transition: all .3s cubic-bezier(.4, 0, .2, 1); transition: all .3s cubic-bezier(.4, 0, .2, 1); -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; will-change: height, background-color } .mdui-panel-item-header:active { background-color: #eee } .mdui-panel-item-title { width: 36%; min-width: 36%; -webkit-box-sizing: border-box; box-sizing: border-box; padding-right: 16px; overflow: hidden; font-weight: 500; text-overflow: ellipsis; white-space: nowrap } .mdui-panel-item-summary { -webkit-box-sizing: border-box; box-sizing: border-box; padding-right: 16px; overflow: hidden; color: rgba(0, 0, 0, .54); text-overflow: ellipsis; white-space: nowrap; -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; flex-grow: 1 } .mdui-panel-item-arrow { position: absolute; top: 12px; right: 24px; color: rgba(0, 0, 0, .54); -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-transition: all .3s cubic-bezier(.4, 0, .2, 1); transition: all .3s cubic-bezier(.4, 0, .2, 1); -webkit-transform: rotate(0); transform: rotate(0); will-change: transform, top } .mdui-panel-item-summary + .mdui-panel-item-arrow { position: relative; top: 0 !important; right: 0 } .mdui-panel-item-body { height: 0; padding: 0 24px; overflow: hidden; -webkit-transition: height .3s cubic-bezier(.4, 0, .2, 1); transition: height .3s cubic-bezier(.4, 0, .2, 1); will-change: height } .mdui-panel-item-body:after, .mdui-panel-item-body:before { display: table; content: " " } .mdui-panel-item-body:after { clear: both } .mdui-panel-item-body:after, .mdui-panel-item-body:before { display: table; content: " " } .mdui-panel-item-body:after { clear: both } .mdui-panel-item-body:after { height: 16px } .mdui-panel-item-actions { display: block; width: 100%; padding: 16px 24px 0 24px; margin: 16px -24px 0 -24px; text-align: right; border-top: 1px solid rgba(0, 0, 0, .12) } .mdui-panel-item-actions .mdui-btn { margin-left: 8px } .mdui-panel-item-actions .mdui-btn:first-child { margin-left: 0 } .mdui-panel-gapless { -webkit-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12); box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12) } .mdui-panel-gapless .mdui-panel-item { -webkit-box-shadow: none; box-shadow: none } .mdui-panel-gapless .mdui-panel-item-open { margin-top: 0; margin-bottom: 0 } .mdui-panel-popout .mdui-panel-item-open { margin-right: -16px; margin-left: -16px } .mdui-panel-item-open { height: auto; margin-top: 16px; margin-bottom: 16px } .mdui-panel-item-open > .mdui-panel-item-header { height: 64px } .mdui-panel-item-open > .mdui-panel-item-header .mdui-panel-item-arrow { top: 20px; -webkit-transform: rotate(180deg); transform: rotate(180deg) } .mdui-panel-item-open > .mdui-panel-item-body { height: auto } .mdui-theme-layout-dark .mdui-panel-item { color: #fff; background-color: #303030; border-bottom: 1px solid rgba(255, 255, 255, .12) } .mdui-theme-layout-dark .mdui-panel-item:last-child { border-bottom: none } .mdui-theme-layout-dark .mdui-panel-item-header:active { background-color: #424242 } .mdui-theme-layout-dark .mdui-panel-item-summary { color: rgba(255, 255, 255, .7) } .mdui-theme-layout-dark .mdui-panel-item-arrow { color: #fff } .mdui-theme-layout-dark .mdui-panel-item-actions { border-top: 1px solid rgba(255, 255, 255, .12) } .mdui-menu { position: fixed; z-index: 99999; display: block; width: 168px; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 8px 0; margin: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; font-size: 16px; color: rgba(0, 0, 0, .87); list-style: none; visibility: hidden; background-color: #fff; border-radius: 2px; -webkit-box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12); box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12); opacity: 0; -webkit-transition-timing-function: cubic-bezier(0, 0, .2, 1); transition-timing-function: cubic-bezier(0, 0, .2, 1); -webkit-transition-duration: .3s; transition-duration: .3s; -webkit-transition-property: opacity, visibility, -webkit-transform; transition-property: opacity, visibility, -webkit-transform; transition-property: transform, opacity, visibility; transition-property: transform, opacity, visibility, -webkit-transform; -webkit-transform: scale(0); transform: scale(0); will-change: transform, opacity, visibility } .mdui-menu .mdui-divider { margin-top: 8px; margin-bottom: 8px } .mdui-menu-open { visibility: visible; opacity: 1; -webkit-transform: scale(1); transform: scale(1) } .mdui-menu-closing { visibility: visible; opacity: 0; -webkit-transform: scale(1); transform: scale(1) } .mdui-menu-item { position: relative } .mdui-menu-item > a { position: relative; display: block; height: 48px; padding: 0 16px; overflow: hidden; line-height: 48px; color: inherit; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none } .mdui-menu-item > a:hover { background-color: #eee } .mdui-menu-item > .mdui-menu { position: absolute; -webkit-box-shadow: 0 5px 6px -3px rgba(0, 0, 0, .2), 0 9px 12px 1px rgba(0, 0, 0, .14), 0 3px 16px 2px rgba(0, 0, 0, .12); box-shadow: 0 5px 6px -3px rgba(0, 0, 0, .2), 0 9px 12px 1px rgba(0, 0, 0, .14), 0 3px 16px 2px rgba(0, 0, 0, .12) } .mdui-menu-item[disabled] > a { color: rgba(0, 0, 0, .38) !important; cursor: default } .mdui-menu-item[disabled] > a:hover { background-color: inherit !important } .mdui-menu-item[disabled] > a .mdui-icon { color: rgba(0, 0, 0, .26) } .mdui-menu-item-active { background-color: #eee } .mdui-menu-item-icon { display: inline-block; width: 40px; -webkit-box-sizing: border-box; box-sizing: border-box; padding-right: 16px; color: rgba(0, 0, 0, .54) } .mdui-menu-item-helper { float: right } .mdui-menu-item-more { float: right; width: 24px; height: 24px; margin: 4px 0; background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M7%2010l5%205%205-5z%22%20opacity%3D%220.54%22%20transform%3D%22rotate(-90%2012%2C12.5)%22%20fill%3D%22%23000000%22%2F%3E%3C%2Fsvg%3E%0A") } .mdui-menu-cascade { width: 320px; padding: 16px 0; overflow-y: visible; font-size: 15px } .mdui-menu-cascade > .mdui-menu-item > a { height: 32px; padding: 0 24px; line-height: 32px } .mdui-theme-layout-dark .mdui-menu { color: #fff; background-color: #424242 } .mdui-theme-layout-dark .mdui-menu-item > a:hover { background-color: #616161 } .mdui-theme-layout-dark .mdui-menu-item[disabled] > a { color: rgba(255, 255, 255, .5) !important } .mdui-theme-layout-dark .mdui-menu-item[disabled] > a .mdui-icon { color: rgba(255, 255, 255, .3) } .mdui-theme-layout-dark .mdui-menu-item-active { background-color: #616161 } .mdui-theme-layout-dark .mdui-menu-item-icon { color: #fff } .mdui-theme-layout-dark .mdui-menu-item-more { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M7%2010l5%205%205-5z%22%20transform%3D%22rotate(-90%2012%2C12.5)%22%20fill%3D%22%23FFFFFF%22%2F%3E%3C%2Fsvg%3E%0A") } /*# sourceMappingURL=mdui.min.css.map */ \ No newline at end of file diff --git a/css/mdui_v2.min.css b/css/mdui_v2.min.css deleted file mode 100644 index f7456f1..0000000 --- a/css/mdui_v2.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * mdui v0.4.3 (https://mdui.org) - * Copyright 2016-2019 zdhxiong - * Licensed under MIT - */.mdui-theme-primary-amber .mdui-color-theme{color:rgba(0,0,0,.87)!important;background-color:#ffc107!important}.mdui-theme-primary-amber .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#fff8e1!important}.mdui-theme-primary-amber .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#ffecb3!important}.mdui-theme-primary-amber .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#ffe082!important}.mdui-theme-primary-amber .mdui-color-theme-300{color:rgba(0,0,0,.87)!important;background-color:#ffd54f!important}.mdui-theme-primary-amber .mdui-color-theme-400{color:rgba(0,0,0,.87)!important;background-color:#ffca28!important}.mdui-theme-primary-amber .mdui-color-theme-500{color:rgba(0,0,0,.87)!important;background-color:#ffc107!important}.mdui-theme-primary-amber .mdui-color-theme-600{color:rgba(0,0,0,.87)!important;background-color:#ffb300!important}.mdui-theme-primary-amber .mdui-color-theme-700{color:rgba(0,0,0,.87)!important;background-color:#ffa000!important}.mdui-theme-primary-amber .mdui-color-theme-800{color:rgba(0,0,0,.87)!important;background-color:#ff8f00!important}.mdui-theme-primary-amber .mdui-color-theme-900{color:rgba(0,0,0,.87)!important;background-color:#ff6f00!important}.mdui-theme-primary-blue .mdui-color-theme{color:rgba(0,0,0,.87)!important;background-color:#2196f3!important}.mdui-theme-primary-blue .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#e3f2fd!important}.mdui-theme-primary-blue .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#bbdefb!important}.mdui-theme-primary-blue .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#90caf9!important}.mdui-theme-primary-blue .mdui-color-theme-300{color:rgba(0,0,0,.87)!important;background-color:#64b5f6!important}.mdui-theme-primary-blue .mdui-color-theme-400{color:rgba(0,0,0,.87)!important;background-color:#42a5f5!important}.mdui-theme-primary-blue .mdui-color-theme-500{color:rgba(0,0,0,.87)!important;background-color:#2196f3!important}.mdui-theme-primary-blue .mdui-color-theme-600{color:#fff!important;background-color:#1e88e5!important}.mdui-theme-primary-blue .mdui-color-theme-700{color:#fff!important;background-color:#1976d2!important}.mdui-theme-primary-blue .mdui-color-theme-800{color:#fff!important;background-color:#1565c0!important}.mdui-theme-primary-blue .mdui-color-theme-900{color:#fff!important;background-color:#0d47a1!important}.mdui-theme-primary-blue-grey .mdui-color-theme{color:#fff!important;background-color:#607d8b!important}.mdui-theme-primary-blue-grey .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#eceff1!important}.mdui-theme-primary-blue-grey .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#cfd8dc!important}.mdui-theme-primary-blue-grey .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#b0bec5!important}.mdui-theme-primary-blue-grey .mdui-color-theme-300{color:rgba(0,0,0,.87)!important;background-color:#90a4ae!important}.mdui-theme-primary-blue-grey .mdui-color-theme-400{color:#fff!important;background-color:#78909c!important}.mdui-theme-primary-blue-grey .mdui-color-theme-500{color:#fff!important;background-color:#607d8b!important}.mdui-theme-primary-blue-grey .mdui-color-theme-600{color:#fff!important;background-color:#546e7a!important}.mdui-theme-primary-blue-grey .mdui-color-theme-700{color:#fff!important;background-color:#455a64!important}.mdui-theme-primary-blue-grey .mdui-color-theme-800{color:#fff!important;background-color:#37474f!important}.mdui-theme-primary-blue-grey .mdui-color-theme-900{color:#fff!important;background-color:#263238!important}.mdui-theme-primary-brown .mdui-color-theme{color:#fff!important;background-color:#795548!important}.mdui-theme-primary-brown .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#efebe9!important}.mdui-theme-primary-brown .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#d7ccc8!important}.mdui-theme-primary-brown .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#bcaaa4!important}.mdui-theme-primary-brown .mdui-color-theme-300{color:#fff!important;background-color:#a1887f!important}.mdui-theme-primary-brown .mdui-color-theme-400{color:#fff!important;background-color:#8d6e63!important}.mdui-theme-primary-brown .mdui-color-theme-500{color:#fff!important;background-color:#795548!important}.mdui-theme-primary-brown .mdui-color-theme-600{color:#fff!important;background-color:#6d4c41!important}.mdui-theme-primary-brown .mdui-color-theme-700{color:#fff!important;background-color:#5d4037!important}.mdui-theme-primary-brown .mdui-color-theme-800{color:#fff!important;background-color:#4e342e!important}.mdui-theme-primary-brown .mdui-color-theme-900{color:#fff!important;background-color:#3e2723!important}.mdui-theme-primary-cyan .mdui-color-theme{color:rgba(0,0,0,.87)!important;background-color:#00bcd4!important}.mdui-theme-primary-cyan .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#e0f7fa!important}.mdui-theme-primary-cyan .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#b2ebf2!important}.mdui-theme-primary-cyan .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#80deea!important}.mdui-theme-primary-cyan .mdui-color-theme-300{color:rgba(0,0,0,.87)!important;background-color:#4dd0e1!important}.mdui-theme-primary-cyan .mdui-color-theme-400{color:rgba(0,0,0,.87)!important;background-color:#26c6da!important}.mdui-theme-primary-cyan .mdui-color-theme-500{color:rgba(0,0,0,.87)!important;background-color:#00bcd4!important}.mdui-theme-primary-cyan .mdui-color-theme-600{color:rgba(0,0,0,.87)!important;background-color:#00acc1!important}.mdui-theme-primary-cyan .mdui-color-theme-700{color:#fff!important;background-color:#0097a7!important}.mdui-theme-primary-cyan .mdui-color-theme-800{color:#fff!important;background-color:#00838f!important}.mdui-theme-primary-cyan .mdui-color-theme-900{color:#fff!important;background-color:#006064!important}.mdui-theme-primary-deep-orange .mdui-color-theme{color:rgba(0,0,0,.87)!important;background-color:#ff5722!important}.mdui-theme-primary-deep-orange .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#fbe9e7!important}.mdui-theme-primary-deep-orange .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#ffccbc!important}.mdui-theme-primary-deep-orange .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#ffab91!important}.mdui-theme-primary-deep-orange .mdui-color-theme-300{color:rgba(0,0,0,.87)!important;background-color:#ff8a65!important}.mdui-theme-primary-deep-orange .mdui-color-theme-400{color:rgba(0,0,0,.87)!important;background-color:#ff7043!important}.mdui-theme-primary-deep-orange .mdui-color-theme-500{color:rgba(0,0,0,.87)!important;background-color:#ff5722!important}.mdui-theme-primary-deep-orange .mdui-color-theme-600{color:#fff!important;background-color:#f4511e!important}.mdui-theme-primary-deep-orange .mdui-color-theme-700{color:#fff!important;background-color:#e64a19!important}.mdui-theme-primary-deep-orange .mdui-color-theme-800{color:#fff!important;background-color:#d84315!important}.mdui-theme-primary-deep-orange .mdui-color-theme-900{color:#fff!important;background-color:#bf360c!important}.mdui-theme-primary-deep-purple .mdui-color-theme{color:#fff!important;background-color:#673ab7!important}.mdui-theme-primary-deep-purple .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#ede7f6!important}.mdui-theme-primary-deep-purple .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#d1c4e9!important}.mdui-theme-primary-deep-purple .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#b39ddb!important}.mdui-theme-primary-deep-purple .mdui-color-theme-300{color:#fff!important;background-color:#9575cd!important}.mdui-theme-primary-deep-purple .mdui-color-theme-400{color:#fff!important;background-color:#7e57c2!important}.mdui-theme-primary-deep-purple .mdui-color-theme-500{color:#fff!important;background-color:#673ab7!important}.mdui-theme-primary-deep-purple .mdui-color-theme-600{color:#fff!important;background-color:#5e35b1!important}.mdui-theme-primary-deep-purple .mdui-color-theme-700{color:#fff!important;background-color:#512da8!important}.mdui-theme-primary-deep-purple .mdui-color-theme-800{color:#fff!important;background-color:#4527a0!important}.mdui-theme-primary-deep-purple .mdui-color-theme-900{color:#fff!important;background-color:#311b92!important}.mdui-theme-primary-green .mdui-color-theme{color:rgba(0,0,0,.87)!important;background-color:#4caf50!important}.mdui-theme-primary-green .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#e8f5e9!important}.mdui-theme-primary-green .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#c8e6c9!important}.mdui-theme-primary-green .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#a5d6a7!important}.mdui-theme-primary-green .mdui-color-theme-300{color:rgba(0,0,0,.87)!important;background-color:#81c784!important}.mdui-theme-primary-green .mdui-color-theme-400{color:rgba(0,0,0,.87)!important;background-color:#66bb6a!important}.mdui-theme-primary-green .mdui-color-theme-500{color:rgba(0,0,0,.87)!important;background-color:#4caf50!important}.mdui-theme-primary-green .mdui-color-theme-600{color:#fff!important;background-color:#43a047!important}.mdui-theme-primary-green .mdui-color-theme-700{color:#fff!important;background-color:#388e3c!important}.mdui-theme-primary-green .mdui-color-theme-800{color:#fff!important;background-color:#2e7d32!important}.mdui-theme-primary-green .mdui-color-theme-900{color:#fff!important;background-color:#1b5e20!important}.mdui-theme-primary-grey .mdui-color-theme{color:rgba(0,0,0,.87)!important;background-color:#9e9e9e!important}.mdui-theme-primary-grey .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#fafafa!important}.mdui-theme-primary-grey .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#f5f5f5!important}.mdui-theme-primary-grey .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#eee!important}.mdui-theme-primary-grey .mdui-color-theme-300{color:rgba(0,0,0,.87)!important;background-color:#e0e0e0!important}.mdui-theme-primary-grey .mdui-color-theme-400{color:rgba(0,0,0,.87)!important;background-color:#bdbdbd!important}.mdui-theme-primary-grey .mdui-color-theme-500{color:rgba(0,0,0,.87)!important;background-color:#9e9e9e!important}.mdui-theme-primary-grey .mdui-color-theme-600{color:#fff!important;background-color:#757575!important}.mdui-theme-primary-grey .mdui-color-theme-700{color:#fff!important;background-color:#616161!important}.mdui-theme-primary-grey .mdui-color-theme-800{color:#fff!important;background-color:#424242!important}.mdui-theme-primary-grey .mdui-color-theme-900{color:#fff!important;background-color:#212121!important}.mdui-theme-primary-indigo .mdui-color-theme{color:#fff!important;background-color:#3f51b5!important}.mdui-theme-primary-indigo .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#e8eaf6!important}.mdui-theme-primary-indigo .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#c5cae9!important}.mdui-theme-primary-indigo .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#9fa8da!important}.mdui-theme-primary-indigo .mdui-color-theme-300{color:#fff!important;background-color:#7986cb!important}.mdui-theme-primary-indigo .mdui-color-theme-400{color:#fff!important;background-color:#5c6bc0!important}.mdui-theme-primary-indigo .mdui-color-theme-500{color:#fff!important;background-color:#3f51b5!important}.mdui-theme-primary-indigo .mdui-color-theme-600{color:#fff!important;background-color:#3949ab!important}.mdui-theme-primary-indigo .mdui-color-theme-700{color:#fff!important;background-color:#303f9f!important}.mdui-theme-primary-indigo .mdui-color-theme-800{color:#fff!important;background-color:#283593!important}.mdui-theme-primary-indigo .mdui-color-theme-900{color:#fff!important;background-color:#1a237e!important}.mdui-theme-primary-light-blue .mdui-color-theme{color:rgba(0,0,0,.87)!important;background-color:#03a9f4!important}.mdui-theme-primary-light-blue .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#e1f5fe!important}.mdui-theme-primary-light-blue .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#b3e5fc!important}.mdui-theme-primary-light-blue .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#81d4fa!important}.mdui-theme-primary-light-blue .mdui-color-theme-300{color:rgba(0,0,0,.87)!important;background-color:#4fc3f7!important}.mdui-theme-primary-light-blue .mdui-color-theme-400{color:rgba(0,0,0,.87)!important;background-color:#29b6f6!important}.mdui-theme-primary-light-blue .mdui-color-theme-500{color:rgba(0,0,0,.87)!important;background-color:#03a9f4!important}.mdui-theme-primary-light-blue .mdui-color-theme-600{color:rgba(0,0,0,.87)!important;background-color:#039be5!important}.mdui-theme-primary-light-blue .mdui-color-theme-700{color:#fff!important;background-color:#0288d1!important}.mdui-theme-primary-light-blue .mdui-color-theme-800{color:#fff!important;background-color:#0277bd!important}.mdui-theme-primary-light-blue .mdui-color-theme-900{color:#fff!important;background-color:#01579b!important}.mdui-theme-primary-light-green .mdui-color-theme{color:rgba(0,0,0,.87)!important;background-color:#8bc34a!important}.mdui-theme-primary-light-green .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#f1f8e9!important}.mdui-theme-primary-light-green .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#dcedc8!important}.mdui-theme-primary-light-green .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#c5e1a5!important}.mdui-theme-primary-light-green .mdui-color-theme-300{color:rgba(0,0,0,.87)!important;background-color:#aed581!important}.mdui-theme-primary-light-green .mdui-color-theme-400{color:rgba(0,0,0,.87)!important;background-color:#9ccc65!important}.mdui-theme-primary-light-green .mdui-color-theme-500{color:rgba(0,0,0,.87)!important;background-color:#8bc34a!important}.mdui-theme-primary-light-green .mdui-color-theme-600{color:rgba(0,0,0,.87)!important;background-color:#7cb342!important}.mdui-theme-primary-light-green .mdui-color-theme-700{color:rgba(0,0,0,.87)!important;background-color:#689f38!important}.mdui-theme-primary-light-green .mdui-color-theme-800{color:#fff!important;background-color:#558b2f!important}.mdui-theme-primary-light-green .mdui-color-theme-900{color:#fff!important;background-color:#33691e!important}.mdui-theme-primary-lime .mdui-color-theme{color:rgba(0,0,0,.87)!important;background-color:#cddc39!important}.mdui-theme-primary-lime .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#f9fbe7!important}.mdui-theme-primary-lime .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#f0f4c3!important}.mdui-theme-primary-lime .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#e6ee9c!important}.mdui-theme-primary-lime .mdui-color-theme-300{color:rgba(0,0,0,.87)!important;background-color:#dce775!important}.mdui-theme-primary-lime .mdui-color-theme-400{color:rgba(0,0,0,.87)!important;background-color:#d4e157!important}.mdui-theme-primary-lime .mdui-color-theme-500{color:rgba(0,0,0,.87)!important;background-color:#cddc39!important}.mdui-theme-primary-lime .mdui-color-theme-600{color:rgba(0,0,0,.87)!important;background-color:#c0ca33!important}.mdui-theme-primary-lime .mdui-color-theme-700{color:rgba(0,0,0,.87)!important;background-color:#afb42b!important}.mdui-theme-primary-lime .mdui-color-theme-800{color:rgba(0,0,0,.87)!important;background-color:#9e9d24!important}.mdui-theme-primary-lime .mdui-color-theme-900{color:#fff!important;background-color:#827717!important}.mdui-theme-primary-orange .mdui-color-theme{color:rgba(0,0,0,.87)!important;background-color:#ff9800!important}.mdui-theme-primary-orange .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#fff3e0!important}.mdui-theme-primary-orange .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#ffe0b2!important}.mdui-theme-primary-orange .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#ffcc80!important}.mdui-theme-primary-orange .mdui-color-theme-300{color:rgba(0,0,0,.87)!important;background-color:#ffb74d!important}.mdui-theme-primary-orange .mdui-color-theme-400{color:rgba(0,0,0,.87)!important;background-color:#ffa726!important}.mdui-theme-primary-orange .mdui-color-theme-500{color:rgba(0,0,0,.87)!important;background-color:#ff9800!important}.mdui-theme-primary-orange .mdui-color-theme-600{color:rgba(0,0,0,.87)!important;background-color:#fb8c00!important}.mdui-theme-primary-orange .mdui-color-theme-700{color:rgba(0,0,0,.87)!important;background-color:#f57c00!important}.mdui-theme-primary-orange .mdui-color-theme-800{color:rgba(0,0,0,.87)!important;background-color:#ef6c00!important}.mdui-theme-primary-orange .mdui-color-theme-900{color:#fff!important;background-color:#e65100!important}.mdui-theme-primary-pink .mdui-color-theme{color:#fff!important;background-color:#e91e63!important}.mdui-theme-primary-pink .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#fce4ec!important}.mdui-theme-primary-pink .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#f8bbd0!important}.mdui-theme-primary-pink .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#f48fb1!important}.mdui-theme-primary-pink .mdui-color-theme-300{color:rgba(0,0,0,.87)!important;background-color:#f06292!important}.mdui-theme-primary-pink .mdui-color-theme-400{color:#fff!important;background-color:#ec407a!important}.mdui-theme-primary-pink .mdui-color-theme-500{color:#fff!important;background-color:#e91e63!important}.mdui-theme-primary-pink .mdui-color-theme-600{color:#fff!important;background-color:#d81b60!important}.mdui-theme-primary-pink .mdui-color-theme-700{color:#fff!important;background-color:#c2185b!important}.mdui-theme-primary-pink .mdui-color-theme-800{color:#fff!important;background-color:#ad1457!important}.mdui-theme-primary-pink .mdui-color-theme-900{color:#fff!important;background-color:#880e4f!important}.mdui-theme-primary-purple .mdui-color-theme{color:#fff!important;background-color:#9c27b0!important}.mdui-theme-primary-purple .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#f3e5f5!important}.mdui-theme-primary-purple .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#e1bee7!important}.mdui-theme-primary-purple .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#ce93d8!important}.mdui-theme-primary-purple .mdui-color-theme-300{color:#fff!important;background-color:#ba68c8!important}.mdui-theme-primary-purple .mdui-color-theme-400{color:#fff!important;background-color:#ab47bc!important}.mdui-theme-primary-purple .mdui-color-theme-500{color:#fff!important;background-color:#9c27b0!important}.mdui-theme-primary-purple .mdui-color-theme-600{color:#fff!important;background-color:#8e24aa!important}.mdui-theme-primary-purple .mdui-color-theme-700{color:#fff!important;background-color:#7b1fa2!important}.mdui-theme-primary-purple .mdui-color-theme-800{color:#fff!important;background-color:#6a1b9a!important}.mdui-theme-primary-purple .mdui-color-theme-900{color:#fff!important;background-color:#4a148c!important}.mdui-theme-primary-red .mdui-color-theme{color:#fff!important;background-color:#f44336!important}.mdui-theme-primary-red .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#ffebee!important}.mdui-theme-primary-red .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#ffcdd2!important}.mdui-theme-primary-red .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#ef9a9a!important}.mdui-theme-primary-red .mdui-color-theme-300{color:rgba(0,0,0,.87)!important;background-color:#e57373!important}.mdui-theme-primary-red .mdui-color-theme-400{color:#fff!important;background-color:#ef5350!important}.mdui-theme-primary-red .mdui-color-theme-500{color:#fff!important;background-color:#f44336!important}.mdui-theme-primary-red .mdui-color-theme-600{color:#fff!important;background-color:#e53935!important}.mdui-theme-primary-red .mdui-color-theme-700{color:#fff!important;background-color:#d32f2f!important}.mdui-theme-primary-red .mdui-color-theme-800{color:#fff!important;background-color:#c62828!important}.mdui-theme-primary-red .mdui-color-theme-900{color:#fff!important;background-color:#b71c1c!important}.mdui-theme-primary-teal .mdui-color-theme{color:#fff!important;background-color:#009688!important}.mdui-theme-primary-teal .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#e0f2f1!important}.mdui-theme-primary-teal .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#b2dfdb!important}.mdui-theme-primary-teal .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#80cbc4!important}.mdui-theme-primary-teal .mdui-color-theme-300{color:rgba(0,0,0,.87)!important;background-color:#4db6ac!important}.mdui-theme-primary-teal .mdui-color-theme-400{color:rgba(0,0,0,.87)!important;background-color:#26a69a!important}.mdui-theme-primary-teal .mdui-color-theme-500{color:#fff!important;background-color:#009688!important}.mdui-theme-primary-teal .mdui-color-theme-600{color:#fff!important;background-color:#00897b!important}.mdui-theme-primary-teal .mdui-color-theme-700{color:#fff!important;background-color:#00796b!important}.mdui-theme-primary-teal .mdui-color-theme-800{color:#fff!important;background-color:#00695c!important}.mdui-theme-primary-teal .mdui-color-theme-900{color:#fff!important;background-color:#004d40!important}.mdui-theme-primary-yellow .mdui-color-theme{color:rgba(0,0,0,.87)!important;background-color:#ffeb3b!important}.mdui-theme-primary-yellow .mdui-color-theme-50{color:rgba(0,0,0,.87)!important;background-color:#fffde7!important}.mdui-theme-primary-yellow .mdui-color-theme-100{color:rgba(0,0,0,.87)!important;background-color:#fff9c4!important}.mdui-theme-primary-yellow .mdui-color-theme-200{color:rgba(0,0,0,.87)!important;background-color:#fff59d!important}.mdui-theme-primary-yellow .mdui-color-theme-300{color:rgba(0,0,0,.87)!important;background-color:#fff176!important}.mdui-theme-primary-yellow .mdui-color-theme-400{color:rgba(0,0,0,.87)!important;background-color:#ffee58!important}.mdui-theme-primary-yellow .mdui-color-theme-500{color:rgba(0,0,0,.87)!important;background-color:#ffeb3b!important}.mdui-theme-primary-yellow .mdui-color-theme-600{color:rgba(0,0,0,.87)!important;background-color:#fdd835!important}.mdui-theme-primary-yellow .mdui-color-theme-700{color:rgba(0,0,0,.87)!important;background-color:#fbc02d!important}.mdui-theme-primary-yellow .mdui-color-theme-800{color:rgba(0,0,0,.87)!important;background-color:#f9a825!important}.mdui-theme-primary-yellow .mdui-color-theme-900{color:rgba(0,0,0,.87)!important;background-color:#f57f17!important}.mdui-theme-accent-amber .mdui-color-theme-accent{color:rgba(0,0,0,.87)!important;background-color:#ffd740!important}.mdui-theme-accent-amber .mdui-color-theme-a100{color:rgba(0,0,0,.87)!important;background-color:#ffe57f!important}.mdui-theme-accent-amber .mdui-color-theme-a200{color:rgba(0,0,0,.87)!important;background-color:#ffd740!important}.mdui-theme-accent-amber .mdui-color-theme-a400{color:rgba(0,0,0,.87)!important;background-color:#ffc400!important}.mdui-theme-accent-amber .mdui-color-theme-a700{color:rgba(0,0,0,.87)!important;background-color:#ffab00!important}.mdui-theme-accent-blue .mdui-color-theme-accent{color:#fff!important;background-color:#448aff!important}.mdui-theme-accent-blue .mdui-color-theme-a100{color:rgba(0,0,0,.87)!important;background-color:#82b1ff!important}.mdui-theme-accent-blue .mdui-color-theme-a200{color:#fff!important;background-color:#448aff!important}.mdui-theme-accent-blue .mdui-color-theme-a400{color:#fff!important;background-color:#2979ff!important}.mdui-theme-accent-blue .mdui-color-theme-a700{color:#fff!important;background-color:#2962ff!important}.mdui-theme-accent-cyan .mdui-color-theme-accent{color:rgba(0,0,0,.87)!important;background-color:#18ffff!important}.mdui-theme-accent-cyan .mdui-color-theme-a100{color:rgba(0,0,0,.87)!important;background-color:#84ffff!important}.mdui-theme-accent-cyan .mdui-color-theme-a200{color:rgba(0,0,0,.87)!important;background-color:#18ffff!important}.mdui-theme-accent-cyan .mdui-color-theme-a400{color:rgba(0,0,0,.87)!important;background-color:#00e5ff!important}.mdui-theme-accent-cyan .mdui-color-theme-a700{color:rgba(0,0,0,.87)!important;background-color:#00b8d4!important}.mdui-theme-accent-deep-orange .mdui-color-theme-accent{color:rgba(0,0,0,.87)!important;background-color:#ff6e40!important}.mdui-theme-accent-deep-orange .mdui-color-theme-a100{color:rgba(0,0,0,.87)!important;background-color:#ff9e80!important}.mdui-theme-accent-deep-orange .mdui-color-theme-a200{color:rgba(0,0,0,.87)!important;background-color:#ff6e40!important}.mdui-theme-accent-deep-orange .mdui-color-theme-a400{color:#fff!important;background-color:#ff3d00!important}.mdui-theme-accent-deep-orange .mdui-color-theme-a700{color:#fff!important;background-color:#dd2c00!important}.mdui-theme-accent-deep-purple .mdui-color-theme-accent{color:#fff!important;background-color:#7c4dff!important}.mdui-theme-accent-deep-purple .mdui-color-theme-a100{color:rgba(0,0,0,.87)!important;background-color:#b388ff!important}.mdui-theme-accent-deep-purple .mdui-color-theme-a200{color:#fff!important;background-color:#7c4dff!important}.mdui-theme-accent-deep-purple .mdui-color-theme-a400{color:#fff!important;background-color:#651fff!important}.mdui-theme-accent-deep-purple .mdui-color-theme-a700{color:#fff!important;background-color:#6200ea!important}.mdui-theme-accent-green .mdui-color-theme-accent{color:rgba(0,0,0,.87)!important;background-color:#69f0ae!important}.mdui-theme-accent-green .mdui-color-theme-a100{color:rgba(0,0,0,.87)!important;background-color:#b9f6ca!important}.mdui-theme-accent-green .mdui-color-theme-a200{color:rgba(0,0,0,.87)!important;background-color:#69f0ae!important}.mdui-theme-accent-green .mdui-color-theme-a400{color:rgba(0,0,0,.87)!important;background-color:#00e676!important}.mdui-theme-accent-green .mdui-color-theme-a700{color:rgba(0,0,0,.87)!important;background-color:#00c853!important}.mdui-theme-accent-indigo .mdui-color-theme-accent{color:#fff!important;background-color:#536dfe!important}.mdui-theme-accent-indigo .mdui-color-theme-a100{color:rgba(0,0,0,.87)!important;background-color:#8c9eff!important}.mdui-theme-accent-indigo .mdui-color-theme-a200{color:#fff!important;background-color:#536dfe!important}.mdui-theme-accent-indigo .mdui-color-theme-a400{color:#fff!important;background-color:#3d5afe!important}.mdui-theme-accent-indigo .mdui-color-theme-a700{color:#fff!important;background-color:#304ffe!important}.mdui-theme-accent-light-blue .mdui-color-theme-accent{color:rgba(0,0,0,.87)!important;background-color:#40c4ff!important}.mdui-theme-accent-light-blue .mdui-color-theme-a100{color:rgba(0,0,0,.87)!important;background-color:#80d8ff!important}.mdui-theme-accent-light-blue .mdui-color-theme-a200{color:rgba(0,0,0,.87)!important;background-color:#40c4ff!important}.mdui-theme-accent-light-blue .mdui-color-theme-a400{color:rgba(0,0,0,.87)!important;background-color:#00b0ff!important}.mdui-theme-accent-light-blue .mdui-color-theme-a700{color:#fff!important;background-color:#0091ea!important}.mdui-theme-accent-light-green .mdui-color-theme-accent{color:rgba(0,0,0,.87)!important;background-color:#b2ff59!important}.mdui-theme-accent-light-green .mdui-color-theme-a100{color:rgba(0,0,0,.87)!important;background-color:#ccff90!important}.mdui-theme-accent-light-green .mdui-color-theme-a200{color:rgba(0,0,0,.87)!important;background-color:#b2ff59!important}.mdui-theme-accent-light-green .mdui-color-theme-a400{color:rgba(0,0,0,.87)!important;background-color:#76ff03!important}.mdui-theme-accent-light-green .mdui-color-theme-a700{color:rgba(0,0,0,.87)!important;background-color:#64dd17!important}.mdui-theme-accent-lime .mdui-color-theme-accent{color:rgba(0,0,0,.87)!important;background-color:#eeff41!important}.mdui-theme-accent-lime .mdui-color-theme-a100{color:rgba(0,0,0,.87)!important;background-color:#f4ff81!important}.mdui-theme-accent-lime .mdui-color-theme-a200{color:rgba(0,0,0,.87)!important;background-color:#eeff41!important}.mdui-theme-accent-lime .mdui-color-theme-a400{color:rgba(0,0,0,.87)!important;background-color:#c6ff00!important}.mdui-theme-accent-lime .mdui-color-theme-a700{color:rgba(0,0,0,.87)!important;background-color:#aeea00!important}.mdui-theme-accent-orange .mdui-color-theme-accent{color:rgba(0,0,0,.87)!important;background-color:#ffab40!important}.mdui-theme-accent-orange .mdui-color-theme-a100{color:rgba(0,0,0,.87)!important;background-color:#ffd180!important}.mdui-theme-accent-orange .mdui-color-theme-a200{color:rgba(0,0,0,.87)!important;background-color:#ffab40!important}.mdui-theme-accent-orange .mdui-color-theme-a400{color:rgba(0,0,0,.87)!important;background-color:#ff9100!important}.mdui-theme-accent-orange .mdui-color-theme-a700{color:rgba(0,0,0,.87)!important;background-color:#ff6d00!important}.mdui-theme-accent-pink .mdui-color-theme-accent{color:#fff!important;background-color:#ff4081!important}.mdui-theme-accent-pink .mdui-color-theme-a100{color:rgba(0,0,0,.87)!important;background-color:#ff80ab!important}.mdui-theme-accent-pink .mdui-color-theme-a200{color:#fff!important;background-color:#ff4081!important}.mdui-theme-accent-pink .mdui-color-theme-a400{color:#fff!important;background-color:#f50057!important}.mdui-theme-accent-pink .mdui-color-theme-a700{color:#fff!important;background-color:#c51162!important}.mdui-theme-accent-purple .mdui-color-theme-accent{color:#fff!important;background-color:#e040fb!important}.mdui-theme-accent-purple .mdui-color-theme-a100{color:rgba(0,0,0,.87)!important;background-color:#ea80fc!important}.mdui-theme-accent-purple .mdui-color-theme-a200{color:#fff!important;background-color:#e040fb!important}.mdui-theme-accent-purple .mdui-color-theme-a400{color:#fff!important;background-color:#d500f9!important}.mdui-theme-accent-purple .mdui-color-theme-a700{color:#fff!important;background-color:#a0f!important}.mdui-theme-accent-red .mdui-color-theme-accent{color:#fff!important;background-color:#ff5252!important}.mdui-theme-accent-red .mdui-color-theme-a100{color:rgba(0,0,0,.87)!important;background-color:#ff8a80!important}.mdui-theme-accent-red .mdui-color-theme-a200{color:#fff!important;background-color:#ff5252!important}.mdui-theme-accent-red .mdui-color-theme-a400{color:#fff!important;background-color:#ff1744!important}.mdui-theme-accent-red .mdui-color-theme-a700{color:#fff!important;background-color:#d50000!important}.mdui-theme-accent-teal .mdui-color-theme-accent{color:rgba(0,0,0,.87)!important;background-color:#64ffda!important}.mdui-theme-accent-teal .mdui-color-theme-a100{color:rgba(0,0,0,.87)!important;background-color:#a7ffeb!important}.mdui-theme-accent-teal .mdui-color-theme-a200{color:rgba(0,0,0,.87)!important;background-color:#64ffda!important}.mdui-theme-accent-teal .mdui-color-theme-a400{color:rgba(0,0,0,.87)!important;background-color:#1de9b6!important}.mdui-theme-accent-teal .mdui-color-theme-a700{color:rgba(0,0,0,.87)!important;background-color:#00bfa5!important}.mdui-theme-accent-yellow .mdui-color-theme-accent{color:rgba(0,0,0,.87)!important;background-color:#ff0!important}.mdui-theme-accent-yellow .mdui-color-theme-a100{color:rgba(0,0,0,.87)!important;background-color:#ffff8d!important}.mdui-theme-accent-yellow .mdui-color-theme-a200{color:rgba(0,0,0,.87)!important;background-color:#ff0!important}.mdui-theme-accent-yellow .mdui-color-theme-a400{color:rgba(0,0,0,.87)!important;background-color:#ffea00!important}.mdui-theme-accent-yellow .mdui-color-theme-a700{color:rgba(0,0,0,.87)!important;background-color:#ffd600!important}.mdui-color-amber{color:rgba(0,0,0,.87)!important;background-color:#ffc107!important}.mdui-color-amber-50{color:rgba(0,0,0,.87)!important;background-color:#fff8e1!important}.mdui-color-amber-100{color:rgba(0,0,0,.87)!important;background-color:#ffecb3!important}.mdui-color-amber-200{color:rgba(0,0,0,.87)!important;background-color:#ffe082!important}.mdui-color-amber-300{color:rgba(0,0,0,.87)!important;background-color:#ffd54f!important}.mdui-color-amber-400{color:rgba(0,0,0,.87)!important;background-color:#ffca28!important}.mdui-color-amber-500{color:rgba(0,0,0,.87)!important;background-color:#ffc107!important}.mdui-color-amber-600{color:rgba(0,0,0,.87)!important;background-color:#ffb300!important}.mdui-color-amber-700{color:rgba(0,0,0,.87)!important;background-color:#ffa000!important}.mdui-color-amber-800{color:rgba(0,0,0,.87)!important;background-color:#ff8f00!important}.mdui-color-amber-900{color:rgba(0,0,0,.87)!important;background-color:#ff6f00!important}.mdui-color-blue{color:rgba(0,0,0,.87)!important;background-color:#2196f3!important}.mdui-color-blue-50{color:rgba(0,0,0,.87)!important;background-color:#e3f2fd!important}.mdui-color-blue-100{color:rgba(0,0,0,.87)!important;background-color:#bbdefb!important}.mdui-color-blue-200{color:rgba(0,0,0,.87)!important;background-color:#90caf9!important}.mdui-color-blue-300{color:rgba(0,0,0,.87)!important;background-color:#64b5f6!important}.mdui-color-blue-400{color:rgba(0,0,0,.87)!important;background-color:#42a5f5!important}.mdui-color-blue-500{color:rgba(0,0,0,.87)!important;background-color:#2196f3!important}.mdui-color-blue-600{color:#fff!important;background-color:#1e88e5!important}.mdui-color-blue-700{color:#fff!important;background-color:#1976d2!important}.mdui-color-blue-800{color:#fff!important;background-color:#1565c0!important}.mdui-color-blue-900{color:#fff!important;background-color:#0d47a1!important}.mdui-color-blue-grey{color:#fff!important;background-color:#607d8b!important}.mdui-color-blue-grey-50{color:rgba(0,0,0,.87)!important;background-color:#eceff1!important}.mdui-color-blue-grey-100{color:rgba(0,0,0,.87)!important;background-color:#cfd8dc!important}.mdui-color-blue-grey-200{color:rgba(0,0,0,.87)!important;background-color:#b0bec5!important}.mdui-color-blue-grey-300{color:rgba(0,0,0,.87)!important;background-color:#90a4ae!important}.mdui-color-blue-grey-400{color:#fff!important;background-color:#78909c!important}.mdui-color-blue-grey-500{color:#fff!important;background-color:#607d8b!important}.mdui-color-blue-grey-600{color:#fff!important;background-color:#546e7a!important}.mdui-color-blue-grey-700{color:#fff!important;background-color:#455a64!important}.mdui-color-blue-grey-800{color:#fff!important;background-color:#37474f!important}.mdui-color-blue-grey-900{color:#fff!important;background-color:#263238!important}.mdui-color-brown{color:#fff!important;background-color:#795548!important}.mdui-color-brown-50{color:rgba(0,0,0,.87)!important;background-color:#efebe9!important}.mdui-color-brown-100{color:rgba(0,0,0,.87)!important;background-color:#d7ccc8!important}.mdui-color-brown-200{color:rgba(0,0,0,.87)!important;background-color:#bcaaa4!important}.mdui-color-brown-300{color:#fff!important;background-color:#a1887f!important}.mdui-color-brown-400{color:#fff!important;background-color:#8d6e63!important}.mdui-color-brown-500{color:#fff!important;background-color:#795548!important}.mdui-color-brown-600{color:#fff!important;background-color:#6d4c41!important}.mdui-color-brown-700{color:#fff!important;background-color:#5d4037!important}.mdui-color-brown-800{color:#fff!important;background-color:#4e342e!important}.mdui-color-brown-900{color:#fff!important;background-color:#3e2723!important}.mdui-color-cyan{color:rgba(0,0,0,.87)!important;background-color:#00bcd4!important}.mdui-color-cyan-50{color:rgba(0,0,0,.87)!important;background-color:#e0f7fa!important}.mdui-color-cyan-100{color:rgba(0,0,0,.87)!important;background-color:#b2ebf2!important}.mdui-color-cyan-200{color:rgba(0,0,0,.87)!important;background-color:#80deea!important}.mdui-color-cyan-300{color:rgba(0,0,0,.87)!important;background-color:#4dd0e1!important}.mdui-color-cyan-400{color:rgba(0,0,0,.87)!important;background-color:#26c6da!important}.mdui-color-cyan-500{color:rgba(0,0,0,.87)!important;background-color:#00bcd4!important}.mdui-color-cyan-600{color:rgba(0,0,0,.87)!important;background-color:#00acc1!important}.mdui-color-cyan-700{color:#fff!important;background-color:#0097a7!important}.mdui-color-cyan-800{color:#fff!important;background-color:#00838f!important}.mdui-color-cyan-900{color:#fff!important;background-color:#006064!important}.mdui-color-deep-orange{color:rgba(0,0,0,.87)!important;background-color:#ff5722!important}.mdui-color-deep-orange-50{color:rgba(0,0,0,.87)!important;background-color:#fbe9e7!important}.mdui-color-deep-orange-100{color:rgba(0,0,0,.87)!important;background-color:#ffccbc!important}.mdui-color-deep-orange-200{color:rgba(0,0,0,.87)!important;background-color:#ffab91!important}.mdui-color-deep-orange-300{color:rgba(0,0,0,.87)!important;background-color:#ff8a65!important}.mdui-color-deep-orange-400{color:rgba(0,0,0,.87)!important;background-color:#ff7043!important}.mdui-color-deep-orange-500{color:rgba(0,0,0,.87)!important;background-color:#ff5722!important}.mdui-color-deep-orange-600{color:#fff!important;background-color:#f4511e!important}.mdui-color-deep-orange-700{color:#fff!important;background-color:#e64a19!important}.mdui-color-deep-orange-800{color:#fff!important;background-color:#d84315!important}.mdui-color-deep-orange-900{color:#fff!important;background-color:#bf360c!important}.mdui-color-deep-purple{color:#fff!important;background-color:#673ab7!important}.mdui-color-deep-purple-50{color:rgba(0,0,0,.87)!important;background-color:#ede7f6!important}.mdui-color-deep-purple-100{color:rgba(0,0,0,.87)!important;background-color:#d1c4e9!important}.mdui-color-deep-purple-200{color:rgba(0,0,0,.87)!important;background-color:#b39ddb!important}.mdui-color-deep-purple-300{color:#fff!important;background-color:#9575cd!important}.mdui-color-deep-purple-400{color:#fff!important;background-color:#7e57c2!important}.mdui-color-deep-purple-500{color:#fff!important;background-color:#673ab7!important}.mdui-color-deep-purple-600{color:#fff!important;background-color:#5e35b1!important}.mdui-color-deep-purple-700{color:#fff!important;background-color:#512da8!important}.mdui-color-deep-purple-800{color:#fff!important;background-color:#4527a0!important}.mdui-color-deep-purple-900{color:#fff!important;background-color:#311b92!important}.mdui-color-green{color:rgba(0,0,0,.87)!important;background-color:#4caf50!important}.mdui-color-green-50{color:rgba(0,0,0,.87)!important;background-color:#e8f5e9!important}.mdui-color-green-100{color:rgba(0,0,0,.87)!important;background-color:#c8e6c9!important}.mdui-color-green-200{color:rgba(0,0,0,.87)!important;background-color:#a5d6a7!important}.mdui-color-green-300{color:rgba(0,0,0,.87)!important;background-color:#81c784!important}.mdui-color-green-400{color:rgba(0,0,0,.87)!important;background-color:#66bb6a!important}.mdui-color-green-500{color:rgba(0,0,0,.87)!important;background-color:#4caf50!important}.mdui-color-green-600{color:#fff!important;background-color:#43a047!important}.mdui-color-green-700{color:#fff!important;background-color:#388e3c!important}.mdui-color-green-800{color:#fff!important;background-color:#2e7d32!important}.mdui-color-green-900{color:#fff!important;background-color:#1b5e20!important}.mdui-color-grey{color:rgba(0,0,0,.87)!important;background-color:#9e9e9e!important}.mdui-color-grey-50{color:rgba(0,0,0,.87)!important;background-color:#fafafa!important}.mdui-color-grey-100{color:rgba(0,0,0,.87)!important;background-color:#f5f5f5!important}.mdui-color-grey-200{color:rgba(0,0,0,.87)!important;background-color:#eee!important}.mdui-color-grey-300{color:rgba(0,0,0,.87)!important;background-color:#e0e0e0!important}.mdui-color-grey-400{color:rgba(0,0,0,.87)!important;background-color:#bdbdbd!important}.mdui-color-grey-500{color:rgba(0,0,0,.87)!important;background-color:#9e9e9e!important}.mdui-color-grey-600{color:#fff!important;background-color:#757575!important}.mdui-color-grey-700{color:#fff!important;background-color:#616161!important}.mdui-color-grey-800{color:#fff!important;background-color:#424242!important}.mdui-color-grey-900{color:#fff!important;background-color:#212121!important}.mdui-color-indigo{color:#fff!important;background-color:#3f51b5!important}.mdui-color-indigo-50{color:rgba(0,0,0,.87)!important;background-color:#e8eaf6!important}.mdui-color-indigo-100{color:rgba(0,0,0,.87)!important;background-color:#c5cae9!important}.mdui-color-indigo-200{color:rgba(0,0,0,.87)!important;background-color:#9fa8da!important}.mdui-color-indigo-300{color:#fff!important;background-color:#7986cb!important}.mdui-color-indigo-400{color:#fff!important;background-color:#5c6bc0!important}.mdui-color-indigo-500{color:#fff!important;background-color:#3f51b5!important}.mdui-color-indigo-600{color:#fff!important;background-color:#3949ab!important}.mdui-color-indigo-700{color:#fff!important;background-color:#303f9f!important}.mdui-color-indigo-800{color:#fff!important;background-color:#283593!important}.mdui-color-indigo-900{color:#fff!important;background-color:#1a237e!important}.mdui-color-light-blue{color:rgba(0,0,0,.87)!important;background-color:#03a9f4!important}.mdui-color-light-blue-50{color:rgba(0,0,0,.87)!important;background-color:#e1f5fe!important}.mdui-color-light-blue-100{color:rgba(0,0,0,.87)!important;background-color:#b3e5fc!important}.mdui-color-light-blue-200{color:rgba(0,0,0,.87)!important;background-color:#81d4fa!important}.mdui-color-light-blue-300{color:rgba(0,0,0,.87)!important;background-color:#4fc3f7!important}.mdui-color-light-blue-400{color:rgba(0,0,0,.87)!important;background-color:#29b6f6!important}.mdui-color-light-blue-500{color:rgba(0,0,0,.87)!important;background-color:#03a9f4!important}.mdui-color-light-blue-600{color:rgba(0,0,0,.87)!important;background-color:#039be5!important}.mdui-color-light-blue-700{color:#fff!important;background-color:#0288d1!important}.mdui-color-light-blue-800{color:#fff!important;background-color:#0277bd!important}.mdui-color-light-blue-900{color:#fff!important;background-color:#01579b!important}.mdui-color-light-green{color:rgba(0,0,0,.87)!important;background-color:#8bc34a!important}.mdui-color-light-green-50{color:rgba(0,0,0,.87)!important;background-color:#f1f8e9!important}.mdui-color-light-green-100{color:rgba(0,0,0,.87)!important;background-color:#dcedc8!important}.mdui-color-light-green-200{color:rgba(0,0,0,.87)!important;background-color:#c5e1a5!important}.mdui-color-light-green-300{color:rgba(0,0,0,.87)!important;background-color:#aed581!important}.mdui-color-light-green-400{color:rgba(0,0,0,.87)!important;background-color:#9ccc65!important}.mdui-color-light-green-500{color:rgba(0,0,0,.87)!important;background-color:#8bc34a!important}.mdui-color-light-green-600{color:rgba(0,0,0,.87)!important;background-color:#7cb342!important}.mdui-color-light-green-700{color:rgba(0,0,0,.87)!important;background-color:#689f38!important}.mdui-color-light-green-800{color:#fff!important;background-color:#558b2f!important}.mdui-color-light-green-900{color:#fff!important;background-color:#33691e!important}.mdui-color-lime{color:rgba(0,0,0,.87)!important;background-color:#cddc39!important}.mdui-color-lime-50{color:rgba(0,0,0,.87)!important;background-color:#f9fbe7!important}.mdui-color-lime-100{color:rgba(0,0,0,.87)!important;background-color:#f0f4c3!important}.mdui-color-lime-200{color:rgba(0,0,0,.87)!important;background-color:#e6ee9c!important}.mdui-color-lime-300{color:rgba(0,0,0,.87)!important;background-color:#dce775!important}.mdui-color-lime-400{color:rgba(0,0,0,.87)!important;background-color:#d4e157!important}.mdui-color-lime-500{color:rgba(0,0,0,.87)!important;background-color:#cddc39!important}.mdui-color-lime-600{color:rgba(0,0,0,.87)!important;background-color:#c0ca33!important}.mdui-color-lime-700{color:rgba(0,0,0,.87)!important;background-color:#afb42b!important}.mdui-color-lime-800{color:rgba(0,0,0,.87)!important;background-color:#9e9d24!important}.mdui-color-lime-900{color:#fff!important;background-color:#827717!important}.mdui-color-orange{color:rgba(0,0,0,.87)!important;background-color:#ff9800!important}.mdui-color-orange-50{color:rgba(0,0,0,.87)!important;background-color:#fff3e0!important}.mdui-color-orange-100{color:rgba(0,0,0,.87)!important;background-color:#ffe0b2!important}.mdui-color-orange-200{color:rgba(0,0,0,.87)!important;background-color:#ffcc80!important}.mdui-color-orange-300{color:rgba(0,0,0,.87)!important;background-color:#ffb74d!important}.mdui-color-orange-400{color:rgba(0,0,0,.87)!important;background-color:#ffa726!important}.mdui-color-orange-500{color:rgba(0,0,0,.87)!important;background-color:#ff9800!important}.mdui-color-orange-600{color:rgba(0,0,0,.87)!important;background-color:#fb8c00!important}.mdui-color-orange-700{color:rgba(0,0,0,.87)!important;background-color:#f57c00!important}.mdui-color-orange-800{color:rgba(0,0,0,.87)!important;background-color:#ef6c00!important}.mdui-color-orange-900{color:#fff!important;background-color:#e65100!important}.mdui-color-pink{color:#fff!important;background-color:#e91e63!important}.mdui-color-pink-50{color:rgba(0,0,0,.87)!important;background-color:#fce4ec!important}.mdui-color-pink-100{color:rgba(0,0,0,.87)!important;background-color:#f8bbd0!important}.mdui-color-pink-200{color:rgba(0,0,0,.87)!important;background-color:#f48fb1!important}.mdui-color-pink-300{color:rgba(0,0,0,.87)!important;background-color:#f06292!important}.mdui-color-pink-400{color:#fff!important;background-color:#ec407a!important}.mdui-color-pink-500{color:#fff!important;background-color:#e91e63!important}.mdui-color-pink-600{color:#fff!important;background-color:#d81b60!important}.mdui-color-pink-700{color:#fff!important;background-color:#c2185b!important}.mdui-color-pink-800{color:#fff!important;background-color:#ad1457!important}.mdui-color-pink-900{color:#fff!important;background-color:#880e4f!important}.mdui-color-purple{color:#fff!important;background-color:#9c27b0!important}.mdui-color-purple-50{color:rgba(0,0,0,.87)!important;background-color:#f3e5f5!important}.mdui-color-purple-100{color:rgba(0,0,0,.87)!important;background-color:#e1bee7!important}.mdui-color-purple-200{color:rgba(0,0,0,.87)!important;background-color:#ce93d8!important}.mdui-color-purple-300{color:#fff!important;background-color:#ba68c8!important}.mdui-color-purple-400{color:#fff!important;background-color:#ab47bc!important}.mdui-color-purple-500{color:#fff!important;background-color:#9c27b0!important}.mdui-color-purple-600{color:#fff!important;background-color:#8e24aa!important}.mdui-color-purple-700{color:#fff!important;background-color:#7b1fa2!important}.mdui-color-purple-800{color:#fff!important;background-color:#6a1b9a!important}.mdui-color-purple-900{color:#fff!important;background-color:#4a148c!important}.mdui-color-red{color:#fff!important;background-color:#f44336!important}.mdui-color-red-50{color:rgba(0,0,0,.87)!important;background-color:#ffebee!important}.mdui-color-red-100{color:rgba(0,0,0,.87)!important;background-color:#ffcdd2!important}.mdui-color-red-200{color:rgba(0,0,0,.87)!important;background-color:#ef9a9a!important}.mdui-color-red-300{color:rgba(0,0,0,.87)!important;background-color:#e57373!important}.mdui-color-red-400{color:#fff!important;background-color:#ef5350!important}.mdui-color-red-500{color:#fff!important;background-color:#f44336!important}.mdui-color-red-600{color:#fff!important;background-color:#e53935!important}.mdui-color-red-700{color:#fff!important;background-color:#d32f2f!important}.mdui-color-red-800{color:#fff!important;background-color:#c62828!important}.mdui-color-red-900{color:#fff!important;background-color:#b71c1c!important}.mdui-color-teal{color:#fff!important;background-color:#009688!important}.mdui-color-teal-50{color:rgba(0,0,0,.87)!important;background-color:#e0f2f1!important}.mdui-color-teal-100{color:rgba(0,0,0,.87)!important;background-color:#b2dfdb!important}.mdui-color-teal-200{color:rgba(0,0,0,.87)!important;background-color:#80cbc4!important}.mdui-color-teal-300{color:rgba(0,0,0,.87)!important;background-color:#4db6ac!important}.mdui-color-teal-400{color:rgba(0,0,0,.87)!important;background-color:#26a69a!important}.mdui-color-teal-500{color:#fff!important;background-color:#009688!important}.mdui-color-teal-600{color:#fff!important;background-color:#00897b!important}.mdui-color-teal-700{color:#fff!important;background-color:#00796b!important}.mdui-color-teal-800{color:#fff!important;background-color:#00695c!important}.mdui-color-teal-900{color:#fff!important;background-color:#004d40!important}.mdui-color-yellow{color:rgba(0,0,0,.87)!important;background-color:#ffeb3b!important}.mdui-color-yellow-50{color:rgba(0,0,0,.87)!important;background-color:#fffde7!important}.mdui-color-yellow-100{color:rgba(0,0,0,.87)!important;background-color:#fff9c4!important}.mdui-color-yellow-200{color:rgba(0,0,0,.87)!important;background-color:#fff59d!important}.mdui-color-yellow-300{color:rgba(0,0,0,.87)!important;background-color:#fff176!important}.mdui-color-yellow-400{color:rgba(0,0,0,.87)!important;background-color:#ffee58!important}.mdui-color-yellow-500{color:rgba(0,0,0,.87)!important;background-color:#ffeb3b!important}.mdui-color-yellow-600{color:rgba(0,0,0,.87)!important;background-color:#fdd835!important}.mdui-color-yellow-700{color:rgba(0,0,0,.87)!important;background-color:#fbc02d!important}.mdui-color-yellow-800{color:rgba(0,0,0,.87)!important;background-color:#f9a825!important}.mdui-color-yellow-900{color:rgba(0,0,0,.87)!important;background-color:#f57f17!important}.mdui-color-amber-accent{color:rgba(0,0,0,.87)!important;background-color:#ffd740!important}.mdui-color-amber-a100{color:rgba(0,0,0,.87)!important;background-color:#ffe57f!important}.mdui-color-amber-a200{color:rgba(0,0,0,.87)!important;background-color:#ffd740!important}.mdui-color-amber-a400{color:rgba(0,0,0,.87)!important;background-color:#ffc400!important}.mdui-color-amber-a700{color:rgba(0,0,0,.87)!important;background-color:#ffab00!important}.mdui-color-blue-accent{color:#fff!important;background-color:#448aff!important}.mdui-color-blue-a100{color:rgba(0,0,0,.87)!important;background-color:#82b1ff!important}.mdui-color-blue-a200{color:#fff!important;background-color:#448aff!important}.mdui-color-blue-a400{color:#fff!important;background-color:#2979ff!important}.mdui-color-blue-a700{color:#fff!important;background-color:#2962ff!important}.mdui-color-cyan-accent{color:rgba(0,0,0,.87)!important;background-color:#18ffff!important}.mdui-color-cyan-a100{color:rgba(0,0,0,.87)!important;background-color:#84ffff!important}.mdui-color-cyan-a200{color:rgba(0,0,0,.87)!important;background-color:#18ffff!important}.mdui-color-cyan-a400{color:rgba(0,0,0,.87)!important;background-color:#00e5ff!important}.mdui-color-cyan-a700{color:rgba(0,0,0,.87)!important;background-color:#00b8d4!important}.mdui-color-deep-orange-accent{color:rgba(0,0,0,.87)!important;background-color:#ff6e40!important}.mdui-color-deep-orange-a100{color:rgba(0,0,0,.87)!important;background-color:#ff9e80!important}.mdui-color-deep-orange-a200{color:rgba(0,0,0,.87)!important;background-color:#ff6e40!important}.mdui-color-deep-orange-a400{color:#fff!important;background-color:#ff3d00!important}.mdui-color-deep-orange-a700{color:#fff!important;background-color:#dd2c00!important}.mdui-color-deep-purple-accent{color:#fff!important;background-color:#7c4dff!important}.mdui-color-deep-purple-a100{color:rgba(0,0,0,.87)!important;background-color:#b388ff!important}.mdui-color-deep-purple-a200{color:#fff!important;background-color:#7c4dff!important}.mdui-color-deep-purple-a400{color:#fff!important;background-color:#651fff!important}.mdui-color-deep-purple-a700{color:#fff!important;background-color:#6200ea!important}.mdui-color-green-accent{color:rgba(0,0,0,.87)!important;background-color:#69f0ae!important}.mdui-color-green-a100{color:rgba(0,0,0,.87)!important;background-color:#b9f6ca!important}.mdui-color-green-a200{color:rgba(0,0,0,.87)!important;background-color:#69f0ae!important}.mdui-color-green-a400{color:rgba(0,0,0,.87)!important;background-color:#00e676!important}.mdui-color-green-a700{color:rgba(0,0,0,.87)!important;background-color:#00c853!important}.mdui-color-indigo-accent{color:#fff!important;background-color:#536dfe!important}.mdui-color-indigo-a100{color:rgba(0,0,0,.87)!important;background-color:#8c9eff!important}.mdui-color-indigo-a200{color:#fff!important;background-color:#536dfe!important}.mdui-color-indigo-a400{color:#fff!important;background-color:#3d5afe!important}.mdui-color-indigo-a700{color:#fff!important;background-color:#304ffe!important}.mdui-color-light-blue-accent{color:rgba(0,0,0,.87)!important;background-color:#40c4ff!important}.mdui-color-light-blue-a100{color:rgba(0,0,0,.87)!important;background-color:#80d8ff!important}.mdui-color-light-blue-a200{color:rgba(0,0,0,.87)!important;background-color:#40c4ff!important}.mdui-color-light-blue-a400{color:rgba(0,0,0,.87)!important;background-color:#00b0ff!important}.mdui-color-light-blue-a700{color:#fff!important;background-color:#0091ea!important}.mdui-color-light-green-accent{color:rgba(0,0,0,.87)!important;background-color:#b2ff59!important}.mdui-color-light-green-a100{color:rgba(0,0,0,.87)!important;background-color:#ccff90!important}.mdui-color-light-green-a200{color:rgba(0,0,0,.87)!important;background-color:#b2ff59!important}.mdui-color-light-green-a400{color:rgba(0,0,0,.87)!important;background-color:#76ff03!important}.mdui-color-light-green-a700{color:rgba(0,0,0,.87)!important;background-color:#64dd17!important}.mdui-color-lime-accent{color:rgba(0,0,0,.87)!important;background-color:#eeff41!important}.mdui-color-lime-a100{color:rgba(0,0,0,.87)!important;background-color:#f4ff81!important}.mdui-color-lime-a200{color:rgba(0,0,0,.87)!important;background-color:#eeff41!important}.mdui-color-lime-a400{color:rgba(0,0,0,.87)!important;background-color:#c6ff00!important}.mdui-color-lime-a700{color:rgba(0,0,0,.87)!important;background-color:#aeea00!important}.mdui-color-orange-accent{color:rgba(0,0,0,.87)!important;background-color:#ffab40!important}.mdui-color-orange-a100{color:rgba(0,0,0,.87)!important;background-color:#ffd180!important}.mdui-color-orange-a200{color:rgba(0,0,0,.87)!important;background-color:#ffab40!important}.mdui-color-orange-a400{color:rgba(0,0,0,.87)!important;background-color:#ff9100!important}.mdui-color-orange-a700{color:rgba(0,0,0,.87)!important;background-color:#ff6d00!important}.mdui-color-pink-accent{color:#fff!important;background-color:#ff4081!important}.mdui-color-pink-a100{color:rgba(0,0,0,.87)!important;background-color:#ff80ab!important}.mdui-color-pink-a200{color:#fff!important;background-color:#ff4081!important}.mdui-color-pink-a400{color:#fff!important;background-color:#f50057!important}.mdui-color-pink-a700{color:#fff!important;background-color:#c51162!important}.mdui-color-purple-accent{color:#fff!important;background-color:#e040fb!important}.mdui-color-purple-a100{color:rgba(0,0,0,.87)!important;background-color:#ea80fc!important}.mdui-color-purple-a200{color:#fff!important;background-color:#e040fb!important}.mdui-color-purple-a400{color:#fff!important;background-color:#d500f9!important}.mdui-color-purple-a700{color:#fff!important;background-color:#a0f!important}.mdui-color-red-accent{color:#fff!important;background-color:#ff5252!important}.mdui-color-red-a100{color:rgba(0,0,0,.87)!important;background-color:#ff8a80!important}.mdui-color-red-a200{color:#fff!important;background-color:#ff5252!important}.mdui-color-red-a400{color:#fff!important;background-color:#ff1744!important}.mdui-color-red-a700{color:#fff!important;background-color:#d50000!important}.mdui-color-teal-accent{color:rgba(0,0,0,.87)!important;background-color:#64ffda!important}.mdui-color-teal-a100{color:rgba(0,0,0,.87)!important;background-color:#a7ffeb!important}.mdui-color-teal-a200{color:rgba(0,0,0,.87)!important;background-color:#64ffda!important}.mdui-color-teal-a400{color:rgba(0,0,0,.87)!important;background-color:#1de9b6!important}.mdui-color-teal-a700{color:rgba(0,0,0,.87)!important;background-color:#00bfa5!important}.mdui-color-yellow-accent{color:rgba(0,0,0,.87)!important;background-color:#ff0!important}.mdui-color-yellow-a100{color:rgba(0,0,0,.87)!important;background-color:#ffff8d!important}.mdui-color-yellow-a200{color:rgba(0,0,0,.87)!important;background-color:#ff0!important}.mdui-color-yellow-a400{color:rgba(0,0,0,.87)!important;background-color:#ffea00!important}.mdui-color-yellow-a700{color:rgba(0,0,0,.87)!important;background-color:#ffd600!important}.mdui-color-black{color:#fff!important;background-color:#000!important}.mdui-color-white{color:rgba(0,0,0,.87)!important;background-color:#fff!important}.mdui-color-transparent{background-color:transparent!important}.mdui-theme-primary-amber .mdui-text-color-theme{color:#ffc107!important}.mdui-theme-primary-amber .mdui-text-color-theme-50{color:#fff8e1!important}.mdui-theme-primary-amber .mdui-text-color-theme-100{color:#ffecb3!important}.mdui-theme-primary-amber .mdui-text-color-theme-200{color:#ffe082!important}.mdui-theme-primary-amber .mdui-text-color-theme-300{color:#ffd54f!important}.mdui-theme-primary-amber .mdui-text-color-theme-400{color:#ffca28!important}.mdui-theme-primary-amber .mdui-text-color-theme-500{color:#ffc107!important}.mdui-theme-primary-amber .mdui-text-color-theme-600{color:#ffb300!important}.mdui-theme-primary-amber .mdui-text-color-theme-700{color:#ffa000!important}.mdui-theme-primary-amber .mdui-text-color-theme-800{color:#ff8f00!important}.mdui-theme-primary-amber .mdui-text-color-theme-900{color:#ff6f00!important}.mdui-theme-primary-blue .mdui-text-color-theme{color:#2196f3!important}.mdui-theme-primary-blue .mdui-text-color-theme-50{color:#e3f2fd!important}.mdui-theme-primary-blue .mdui-text-color-theme-100{color:#bbdefb!important}.mdui-theme-primary-blue .mdui-text-color-theme-200{color:#90caf9!important}.mdui-theme-primary-blue .mdui-text-color-theme-300{color:#64b5f6!important}.mdui-theme-primary-blue .mdui-text-color-theme-400{color:#42a5f5!important}.mdui-theme-primary-blue .mdui-text-color-theme-500{color:#2196f3!important}.mdui-theme-primary-blue .mdui-text-color-theme-600{color:#1e88e5!important}.mdui-theme-primary-blue .mdui-text-color-theme-700{color:#1976d2!important}.mdui-theme-primary-blue .mdui-text-color-theme-800{color:#1565c0!important}.mdui-theme-primary-blue .mdui-text-color-theme-900{color:#0d47a1!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme{color:#607d8b!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-50{color:#eceff1!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-100{color:#cfd8dc!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-200{color:#b0bec5!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-300{color:#90a4ae!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-400{color:#78909c!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-500{color:#607d8b!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-600{color:#546e7a!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-700{color:#455a64!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-800{color:#37474f!important}.mdui-theme-primary-blue-grey .mdui-text-color-theme-900{color:#263238!important}.mdui-theme-primary-brown .mdui-text-color-theme{color:#795548!important}.mdui-theme-primary-brown .mdui-text-color-theme-50{color:#efebe9!important}.mdui-theme-primary-brown .mdui-text-color-theme-100{color:#d7ccc8!important}.mdui-theme-primary-brown .mdui-text-color-theme-200{color:#bcaaa4!important}.mdui-theme-primary-brown .mdui-text-color-theme-300{color:#a1887f!important}.mdui-theme-primary-brown .mdui-text-color-theme-400{color:#8d6e63!important}.mdui-theme-primary-brown .mdui-text-color-theme-500{color:#795548!important}.mdui-theme-primary-brown .mdui-text-color-theme-600{color:#6d4c41!important}.mdui-theme-primary-brown .mdui-text-color-theme-700{color:#5d4037!important}.mdui-theme-primary-brown .mdui-text-color-theme-800{color:#4e342e!important}.mdui-theme-primary-brown .mdui-text-color-theme-900{color:#3e2723!important}.mdui-theme-primary-cyan .mdui-text-color-theme{color:#00bcd4!important}.mdui-theme-primary-cyan .mdui-text-color-theme-50{color:#e0f7fa!important}.mdui-theme-primary-cyan .mdui-text-color-theme-100{color:#b2ebf2!important}.mdui-theme-primary-cyan .mdui-text-color-theme-200{color:#80deea!important}.mdui-theme-primary-cyan .mdui-text-color-theme-300{color:#4dd0e1!important}.mdui-theme-primary-cyan .mdui-text-color-theme-400{color:#26c6da!important}.mdui-theme-primary-cyan .mdui-text-color-theme-500{color:#00bcd4!important}.mdui-theme-primary-cyan .mdui-text-color-theme-600{color:#00acc1!important}.mdui-theme-primary-cyan .mdui-text-color-theme-700{color:#0097a7!important}.mdui-theme-primary-cyan .mdui-text-color-theme-800{color:#00838f!important}.mdui-theme-primary-cyan .mdui-text-color-theme-900{color:#006064!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme{color:#ff5722!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-50{color:#fbe9e7!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-100{color:#ffccbc!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-200{color:#ffab91!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-300{color:#ff8a65!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-400{color:#ff7043!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-500{color:#ff5722!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-600{color:#f4511e!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-700{color:#e64a19!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-800{color:#d84315!important}.mdui-theme-primary-deep-orange .mdui-text-color-theme-900{color:#bf360c!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme{color:#673ab7!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-50{color:#ede7f6!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-100{color:#d1c4e9!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-200{color:#b39ddb!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-300{color:#9575cd!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-400{color:#7e57c2!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-500{color:#673ab7!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-600{color:#5e35b1!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-700{color:#512da8!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-800{color:#4527a0!important}.mdui-theme-primary-deep-purple .mdui-text-color-theme-900{color:#311b92!important}.mdui-theme-primary-green .mdui-text-color-theme{color:#4caf50!important}.mdui-theme-primary-green .mdui-text-color-theme-50{color:#e8f5e9!important}.mdui-theme-primary-green .mdui-text-color-theme-100{color:#c8e6c9!important}.mdui-theme-primary-green .mdui-text-color-theme-200{color:#a5d6a7!important}.mdui-theme-primary-green .mdui-text-color-theme-300{color:#81c784!important}.mdui-theme-primary-green .mdui-text-color-theme-400{color:#66bb6a!important}.mdui-theme-primary-green .mdui-text-color-theme-500{color:#4caf50!important}.mdui-theme-primary-green .mdui-text-color-theme-600{color:#43a047!important}.mdui-theme-primary-green .mdui-text-color-theme-700{color:#388e3c!important}.mdui-theme-primary-green .mdui-text-color-theme-800{color:#2e7d32!important}.mdui-theme-primary-green .mdui-text-color-theme-900{color:#1b5e20!important}.mdui-theme-primary-grey .mdui-text-color-theme{color:#9e9e9e!important}.mdui-theme-primary-grey .mdui-text-color-theme-50{color:#fafafa!important}.mdui-theme-primary-grey .mdui-text-color-theme-100{color:#f5f5f5!important}.mdui-theme-primary-grey .mdui-text-color-theme-200{color:#eee!important}.mdui-theme-primary-grey .mdui-text-color-theme-300{color:#e0e0e0!important}.mdui-theme-primary-grey .mdui-text-color-theme-400{color:#bdbdbd!important}.mdui-theme-primary-grey .mdui-text-color-theme-500{color:#9e9e9e!important}.mdui-theme-primary-grey .mdui-text-color-theme-600{color:#757575!important}.mdui-theme-primary-grey .mdui-text-color-theme-700{color:#616161!important}.mdui-theme-primary-grey .mdui-text-color-theme-800{color:#424242!important}.mdui-theme-primary-grey .mdui-text-color-theme-900{color:#212121!important}.mdui-theme-primary-indigo .mdui-text-color-theme{color:#3f51b5!important}.mdui-theme-primary-indigo .mdui-text-color-theme-50{color:#e8eaf6!important}.mdui-theme-primary-indigo .mdui-text-color-theme-100{color:#c5cae9!important}.mdui-theme-primary-indigo .mdui-text-color-theme-200{color:#9fa8da!important}.mdui-theme-primary-indigo .mdui-text-color-theme-300{color:#7986cb!important}.mdui-theme-primary-indigo .mdui-text-color-theme-400{color:#5c6bc0!important}.mdui-theme-primary-indigo .mdui-text-color-theme-500{color:#3f51b5!important}.mdui-theme-primary-indigo .mdui-text-color-theme-600{color:#3949ab!important}.mdui-theme-primary-indigo .mdui-text-color-theme-700{color:#303f9f!important}.mdui-theme-primary-indigo .mdui-text-color-theme-800{color:#283593!important}.mdui-theme-primary-indigo .mdui-text-color-theme-900{color:#1a237e!important}.mdui-theme-primary-light-blue .mdui-text-color-theme{color:#03a9f4!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-50{color:#e1f5fe!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-100{color:#b3e5fc!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-200{color:#81d4fa!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-300{color:#4fc3f7!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-400{color:#29b6f6!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-500{color:#03a9f4!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-600{color:#039be5!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-700{color:#0288d1!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-800{color:#0277bd!important}.mdui-theme-primary-light-blue .mdui-text-color-theme-900{color:#01579b!important}.mdui-theme-primary-light-green .mdui-text-color-theme{color:#8bc34a!important}.mdui-theme-primary-light-green .mdui-text-color-theme-50{color:#f1f8e9!important}.mdui-theme-primary-light-green .mdui-text-color-theme-100{color:#dcedc8!important}.mdui-theme-primary-light-green .mdui-text-color-theme-200{color:#c5e1a5!important}.mdui-theme-primary-light-green .mdui-text-color-theme-300{color:#aed581!important}.mdui-theme-primary-light-green .mdui-text-color-theme-400{color:#9ccc65!important}.mdui-theme-primary-light-green .mdui-text-color-theme-500{color:#8bc34a!important}.mdui-theme-primary-light-green .mdui-text-color-theme-600{color:#7cb342!important}.mdui-theme-primary-light-green .mdui-text-color-theme-700{color:#689f38!important}.mdui-theme-primary-light-green .mdui-text-color-theme-800{color:#558b2f!important}.mdui-theme-primary-light-green .mdui-text-color-theme-900{color:#33691e!important}.mdui-theme-primary-lime .mdui-text-color-theme{color:#cddc39!important}.mdui-theme-primary-lime .mdui-text-color-theme-50{color:#f9fbe7!important}.mdui-theme-primary-lime .mdui-text-color-theme-100{color:#f0f4c3!important}.mdui-theme-primary-lime .mdui-text-color-theme-200{color:#e6ee9c!important}.mdui-theme-primary-lime .mdui-text-color-theme-300{color:#dce775!important}.mdui-theme-primary-lime .mdui-text-color-theme-400{color:#d4e157!important}.mdui-theme-primary-lime .mdui-text-color-theme-500{color:#cddc39!important}.mdui-theme-primary-lime .mdui-text-color-theme-600{color:#c0ca33!important}.mdui-theme-primary-lime .mdui-text-color-theme-700{color:#afb42b!important}.mdui-theme-primary-lime .mdui-text-color-theme-800{color:#9e9d24!important}.mdui-theme-primary-lime .mdui-text-color-theme-900{color:#827717!important}.mdui-theme-primary-orange .mdui-text-color-theme{color:#ff9800!important}.mdui-theme-primary-orange .mdui-text-color-theme-50{color:#fff3e0!important}.mdui-theme-primary-orange .mdui-text-color-theme-100{color:#ffe0b2!important}.mdui-theme-primary-orange .mdui-text-color-theme-200{color:#ffcc80!important}.mdui-theme-primary-orange .mdui-text-color-theme-300{color:#ffb74d!important}.mdui-theme-primary-orange .mdui-text-color-theme-400{color:#ffa726!important}.mdui-theme-primary-orange .mdui-text-color-theme-500{color:#ff9800!important}.mdui-theme-primary-orange .mdui-text-color-theme-600{color:#fb8c00!important}.mdui-theme-primary-orange .mdui-text-color-theme-700{color:#f57c00!important}.mdui-theme-primary-orange .mdui-text-color-theme-800{color:#ef6c00!important}.mdui-theme-primary-orange .mdui-text-color-theme-900{color:#e65100!important}.mdui-theme-primary-pink .mdui-text-color-theme{color:#e91e63!important}.mdui-theme-primary-pink .mdui-text-color-theme-50{color:#fce4ec!important}.mdui-theme-primary-pink .mdui-text-color-theme-100{color:#f8bbd0!important}.mdui-theme-primary-pink .mdui-text-color-theme-200{color:#f48fb1!important}.mdui-theme-primary-pink .mdui-text-color-theme-300{color:#f06292!important}.mdui-theme-primary-pink .mdui-text-color-theme-400{color:#ec407a!important}.mdui-theme-primary-pink .mdui-text-color-theme-500{color:#e91e63!important}.mdui-theme-primary-pink .mdui-text-color-theme-600{color:#d81b60!important}.mdui-theme-primary-pink .mdui-text-color-theme-700{color:#c2185b!important}.mdui-theme-primary-pink .mdui-text-color-theme-800{color:#ad1457!important}.mdui-theme-primary-pink .mdui-text-color-theme-900{color:#880e4f!important}.mdui-theme-primary-purple .mdui-text-color-theme{color:#9c27b0!important}.mdui-theme-primary-purple .mdui-text-color-theme-50{color:#f3e5f5!important}.mdui-theme-primary-purple .mdui-text-color-theme-100{color:#e1bee7!important}.mdui-theme-primary-purple .mdui-text-color-theme-200{color:#ce93d8!important}.mdui-theme-primary-purple .mdui-text-color-theme-300{color:#ba68c8!important}.mdui-theme-primary-purple .mdui-text-color-theme-400{color:#ab47bc!important}.mdui-theme-primary-purple .mdui-text-color-theme-500{color:#9c27b0!important}.mdui-theme-primary-purple .mdui-text-color-theme-600{color:#8e24aa!important}.mdui-theme-primary-purple .mdui-text-color-theme-700{color:#7b1fa2!important}.mdui-theme-primary-purple .mdui-text-color-theme-800{color:#6a1b9a!important}.mdui-theme-primary-purple .mdui-text-color-theme-900{color:#4a148c!important}.mdui-theme-primary-red .mdui-text-color-theme{color:#f44336!important}.mdui-theme-primary-red .mdui-text-color-theme-50{color:#ffebee!important}.mdui-theme-primary-red .mdui-text-color-theme-100{color:#ffcdd2!important}.mdui-theme-primary-red .mdui-text-color-theme-200{color:#ef9a9a!important}.mdui-theme-primary-red .mdui-text-color-theme-300{color:#e57373!important}.mdui-theme-primary-red .mdui-text-color-theme-400{color:#ef5350!important}.mdui-theme-primary-red .mdui-text-color-theme-500{color:#f44336!important}.mdui-theme-primary-red .mdui-text-color-theme-600{color:#e53935!important}.mdui-theme-primary-red .mdui-text-color-theme-700{color:#d32f2f!important}.mdui-theme-primary-red .mdui-text-color-theme-800{color:#c62828!important}.mdui-theme-primary-red .mdui-text-color-theme-900{color:#b71c1c!important}.mdui-theme-primary-teal .mdui-text-color-theme{color:#009688!important}.mdui-theme-primary-teal .mdui-text-color-theme-50{color:#e0f2f1!important}.mdui-theme-primary-teal .mdui-text-color-theme-100{color:#b2dfdb!important}.mdui-theme-primary-teal .mdui-text-color-theme-200{color:#80cbc4!important}.mdui-theme-primary-teal .mdui-text-color-theme-300{color:#4db6ac!important}.mdui-theme-primary-teal .mdui-text-color-theme-400{color:#26a69a!important}.mdui-theme-primary-teal .mdui-text-color-theme-500{color:#009688!important}.mdui-theme-primary-teal .mdui-text-color-theme-600{color:#00897b!important}.mdui-theme-primary-teal .mdui-text-color-theme-700{color:#00796b!important}.mdui-theme-primary-teal .mdui-text-color-theme-800{color:#00695c!important}.mdui-theme-primary-teal .mdui-text-color-theme-900{color:#004d40!important}.mdui-theme-primary-yellow .mdui-text-color-theme{color:#ffeb3b!important}.mdui-theme-primary-yellow .mdui-text-color-theme-50{color:#fffde7!important}.mdui-theme-primary-yellow .mdui-text-color-theme-100{color:#fff9c4!important}.mdui-theme-primary-yellow .mdui-text-color-theme-200{color:#fff59d!important}.mdui-theme-primary-yellow .mdui-text-color-theme-300{color:#fff176!important}.mdui-theme-primary-yellow .mdui-text-color-theme-400{color:#ffee58!important}.mdui-theme-primary-yellow .mdui-text-color-theme-500{color:#ffeb3b!important}.mdui-theme-primary-yellow .mdui-text-color-theme-600{color:#fdd835!important}.mdui-theme-primary-yellow .mdui-text-color-theme-700{color:#fbc02d!important}.mdui-theme-primary-yellow .mdui-text-color-theme-800{color:#f9a825!important}.mdui-theme-primary-yellow .mdui-text-color-theme-900{color:#f57f17!important}.mdui-theme-accent-amber .mdui-text-color-theme-accent{color:#ffd740!important}.mdui-theme-accent-amber .mdui-text-color-theme-a100{color:#ffe57f!important}.mdui-theme-accent-amber .mdui-text-color-theme-a200{color:#ffd740!important}.mdui-theme-accent-amber .mdui-text-color-theme-a400{color:#ffc400!important}.mdui-theme-accent-amber .mdui-text-color-theme-a700{color:#ffab00!important}.mdui-theme-accent-blue .mdui-text-color-theme-accent{color:#448aff!important}.mdui-theme-accent-blue .mdui-text-color-theme-a100{color:#82b1ff!important}.mdui-theme-accent-blue .mdui-text-color-theme-a200{color:#448aff!important}.mdui-theme-accent-blue .mdui-text-color-theme-a400{color:#2979ff!important}.mdui-theme-accent-blue .mdui-text-color-theme-a700{color:#2962ff!important}.mdui-theme-accent-cyan .mdui-text-color-theme-accent{color:#18ffff!important}.mdui-theme-accent-cyan .mdui-text-color-theme-a100{color:#84ffff!important}.mdui-theme-accent-cyan .mdui-text-color-theme-a200{color:#18ffff!important}.mdui-theme-accent-cyan .mdui-text-color-theme-a400{color:#00e5ff!important}.mdui-theme-accent-cyan .mdui-text-color-theme-a700{color:#00b8d4!important}.mdui-theme-accent-deep-orange .mdui-text-color-theme-accent{color:#ff6e40!important}.mdui-theme-accent-deep-orange .mdui-text-color-theme-a100{color:#ff9e80!important}.mdui-theme-accent-deep-orange .mdui-text-color-theme-a200{color:#ff6e40!important}.mdui-theme-accent-deep-orange .mdui-text-color-theme-a400{color:#ff3d00!important}.mdui-theme-accent-deep-orange .mdui-text-color-theme-a700{color:#dd2c00!important}.mdui-theme-accent-deep-purple .mdui-text-color-theme-accent{color:#7c4dff!important}.mdui-theme-accent-deep-purple .mdui-text-color-theme-a100{color:#b388ff!important}.mdui-theme-accent-deep-purple .mdui-text-color-theme-a200{color:#7c4dff!important}.mdui-theme-accent-deep-purple .mdui-text-color-theme-a400{color:#651fff!important}.mdui-theme-accent-deep-purple .mdui-text-color-theme-a700{color:#6200ea!important}.mdui-theme-accent-green .mdui-text-color-theme-accent{color:#69f0ae!important}.mdui-theme-accent-green .mdui-text-color-theme-a100{color:#b9f6ca!important}.mdui-theme-accent-green .mdui-text-color-theme-a200{color:#69f0ae!important}.mdui-theme-accent-green .mdui-text-color-theme-a400{color:#00e676!important}.mdui-theme-accent-green .mdui-text-color-theme-a700{color:#00c853!important}.mdui-theme-accent-indigo .mdui-text-color-theme-accent{color:#536dfe!important}.mdui-theme-accent-indigo .mdui-text-color-theme-a100{color:#8c9eff!important}.mdui-theme-accent-indigo .mdui-text-color-theme-a200{color:#536dfe!important}.mdui-theme-accent-indigo .mdui-text-color-theme-a400{color:#3d5afe!important}.mdui-theme-accent-indigo .mdui-text-color-theme-a700{color:#304ffe!important}.mdui-theme-accent-light-blue .mdui-text-color-theme-accent{color:#40c4ff!important}.mdui-theme-accent-light-blue .mdui-text-color-theme-a100{color:#80d8ff!important}.mdui-theme-accent-light-blue .mdui-text-color-theme-a200{color:#40c4ff!important}.mdui-theme-accent-light-blue .mdui-text-color-theme-a400{color:#00b0ff!important}.mdui-theme-accent-light-blue .mdui-text-color-theme-a700{color:#0091ea!important}.mdui-theme-accent-light-green .mdui-text-color-theme-accent{color:#b2ff59!important}.mdui-theme-accent-light-green .mdui-text-color-theme-a100{color:#ccff90!important}.mdui-theme-accent-light-green .mdui-text-color-theme-a200{color:#b2ff59!important}.mdui-theme-accent-light-green .mdui-text-color-theme-a400{color:#76ff03!important}.mdui-theme-accent-light-green .mdui-text-color-theme-a700{color:#64dd17!important}.mdui-theme-accent-lime .mdui-text-color-theme-accent{color:#eeff41!important}.mdui-theme-accent-lime .mdui-text-color-theme-a100{color:#f4ff81!important}.mdui-theme-accent-lime .mdui-text-color-theme-a200{color:#eeff41!important}.mdui-theme-accent-lime .mdui-text-color-theme-a400{color:#c6ff00!important}.mdui-theme-accent-lime .mdui-text-color-theme-a700{color:#aeea00!important}.mdui-theme-accent-orange .mdui-text-color-theme-accent{color:#ffab40!important}.mdui-theme-accent-orange .mdui-text-color-theme-a100{color:#ffd180!important}.mdui-theme-accent-orange .mdui-text-color-theme-a200{color:#ffab40!important}.mdui-theme-accent-orange .mdui-text-color-theme-a400{color:#ff9100!important}.mdui-theme-accent-orange .mdui-text-color-theme-a700{color:#ff6d00!important}.mdui-theme-accent-pink .mdui-text-color-theme-accent{color:#ff4081!important}.mdui-theme-accent-pink .mdui-text-color-theme-a100{color:#ff80ab!important}.mdui-theme-accent-pink .mdui-text-color-theme-a200{color:#ff4081!important}.mdui-theme-accent-pink .mdui-text-color-theme-a400{color:#f50057!important}.mdui-theme-accent-pink .mdui-text-color-theme-a700{color:#c51162!important}.mdui-theme-accent-purple .mdui-text-color-theme-accent{color:#e040fb!important}.mdui-theme-accent-purple .mdui-text-color-theme-a100{color:#ea80fc!important}.mdui-theme-accent-purple .mdui-text-color-theme-a200{color:#e040fb!important}.mdui-theme-accent-purple .mdui-text-color-theme-a400{color:#d500f9!important}.mdui-theme-accent-purple .mdui-text-color-theme-a700{color:#a0f!important}.mdui-theme-accent-red .mdui-text-color-theme-accent{color:#ff5252!important}.mdui-theme-accent-red .mdui-text-color-theme-a100{color:#ff8a80!important}.mdui-theme-accent-red .mdui-text-color-theme-a200{color:#ff5252!important}.mdui-theme-accent-red .mdui-text-color-theme-a400{color:#ff1744!important}.mdui-theme-accent-red .mdui-text-color-theme-a700{color:#d50000!important}.mdui-theme-accent-teal .mdui-text-color-theme-accent{color:#64ffda!important}.mdui-theme-accent-teal .mdui-text-color-theme-a100{color:#a7ffeb!important}.mdui-theme-accent-teal .mdui-text-color-theme-a200{color:#64ffda!important}.mdui-theme-accent-teal .mdui-text-color-theme-a400{color:#1de9b6!important}.mdui-theme-accent-teal .mdui-text-color-theme-a700{color:#00bfa5!important}.mdui-theme-accent-yellow .mdui-text-color-theme-accent{color:#ff0!important}.mdui-theme-accent-yellow .mdui-text-color-theme-a100{color:#ffff8d!important}.mdui-theme-accent-yellow .mdui-text-color-theme-a200{color:#ff0!important}.mdui-theme-accent-yellow .mdui-text-color-theme-a400{color:#ffea00!important}.mdui-theme-accent-yellow .mdui-text-color-theme-a700{color:#ffd600!important}.mdui-text-color-amber{color:#ffc107!important}.mdui-text-color-amber-50{color:#fff8e1!important}.mdui-text-color-amber-100{color:#ffecb3!important}.mdui-text-color-amber-200{color:#ffe082!important}.mdui-text-color-amber-300{color:#ffd54f!important}.mdui-text-color-amber-400{color:#ffca28!important}.mdui-text-color-amber-500{color:#ffc107!important}.mdui-text-color-amber-600{color:#ffb300!important}.mdui-text-color-amber-700{color:#ffa000!important}.mdui-text-color-amber-800{color:#ff8f00!important}.mdui-text-color-amber-900{color:#ff6f00!important}.mdui-text-color-blue{color:#2196f3!important}.mdui-text-color-blue-50{color:#e3f2fd!important}.mdui-text-color-blue-100{color:#bbdefb!important}.mdui-text-color-blue-200{color:#90caf9!important}.mdui-text-color-blue-300{color:#64b5f6!important}.mdui-text-color-blue-400{color:#42a5f5!important}.mdui-text-color-blue-500{color:#2196f3!important}.mdui-text-color-blue-600{color:#1e88e5!important}.mdui-text-color-blue-700{color:#1976d2!important}.mdui-text-color-blue-800{color:#1565c0!important}.mdui-text-color-blue-900{color:#0d47a1!important}.mdui-text-color-blue-grey{color:#607d8b!important}.mdui-text-color-blue-grey-50{color:#eceff1!important}.mdui-text-color-blue-grey-100{color:#cfd8dc!important}.mdui-text-color-blue-grey-200{color:#b0bec5!important}.mdui-text-color-blue-grey-300{color:#90a4ae!important}.mdui-text-color-blue-grey-400{color:#78909c!important}.mdui-text-color-blue-grey-500{color:#607d8b!important}.mdui-text-color-blue-grey-600{color:#546e7a!important}.mdui-text-color-blue-grey-700{color:#455a64!important}.mdui-text-color-blue-grey-800{color:#37474f!important}.mdui-text-color-blue-grey-900{color:#263238!important}.mdui-text-color-brown{color:#795548!important}.mdui-text-color-brown-50{color:#efebe9!important}.mdui-text-color-brown-100{color:#d7ccc8!important}.mdui-text-color-brown-200{color:#bcaaa4!important}.mdui-text-color-brown-300{color:#a1887f!important}.mdui-text-color-brown-400{color:#8d6e63!important}.mdui-text-color-brown-500{color:#795548!important}.mdui-text-color-brown-600{color:#6d4c41!important}.mdui-text-color-brown-700{color:#5d4037!important}.mdui-text-color-brown-800{color:#4e342e!important}.mdui-text-color-brown-900{color:#3e2723!important}.mdui-text-color-cyan{color:#00bcd4!important}.mdui-text-color-cyan-50{color:#e0f7fa!important}.mdui-text-color-cyan-100{color:#b2ebf2!important}.mdui-text-color-cyan-200{color:#80deea!important}.mdui-text-color-cyan-300{color:#4dd0e1!important}.mdui-text-color-cyan-400{color:#26c6da!important}.mdui-text-color-cyan-500{color:#00bcd4!important}.mdui-text-color-cyan-600{color:#00acc1!important}.mdui-text-color-cyan-700{color:#0097a7!important}.mdui-text-color-cyan-800{color:#00838f!important}.mdui-text-color-cyan-900{color:#006064!important}.mdui-text-color-deep-orange{color:#ff5722!important}.mdui-text-color-deep-orange-50{color:#fbe9e7!important}.mdui-text-color-deep-orange-100{color:#ffccbc!important}.mdui-text-color-deep-orange-200{color:#ffab91!important}.mdui-text-color-deep-orange-300{color:#ff8a65!important}.mdui-text-color-deep-orange-400{color:#ff7043!important}.mdui-text-color-deep-orange-500{color:#ff5722!important}.mdui-text-color-deep-orange-600{color:#f4511e!important}.mdui-text-color-deep-orange-700{color:#e64a19!important}.mdui-text-color-deep-orange-800{color:#d84315!important}.mdui-text-color-deep-orange-900{color:#bf360c!important}.mdui-text-color-deep-purple{color:#673ab7!important}.mdui-text-color-deep-purple-50{color:#ede7f6!important}.mdui-text-color-deep-purple-100{color:#d1c4e9!important}.mdui-text-color-deep-purple-200{color:#b39ddb!important}.mdui-text-color-deep-purple-300{color:#9575cd!important}.mdui-text-color-deep-purple-400{color:#7e57c2!important}.mdui-text-color-deep-purple-500{color:#673ab7!important}.mdui-text-color-deep-purple-600{color:#5e35b1!important}.mdui-text-color-deep-purple-700{color:#512da8!important}.mdui-text-color-deep-purple-800{color:#4527a0!important}.mdui-text-color-deep-purple-900{color:#311b92!important}.mdui-text-color-green{color:#4caf50!important}.mdui-text-color-green-50{color:#e8f5e9!important}.mdui-text-color-green-100{color:#c8e6c9!important}.mdui-text-color-green-200{color:#a5d6a7!important}.mdui-text-color-green-300{color:#81c784!important}.mdui-text-color-green-400{color:#66bb6a!important}.mdui-text-color-green-500{color:#4caf50!important}.mdui-text-color-green-600{color:#43a047!important}.mdui-text-color-green-700{color:#388e3c!important}.mdui-text-color-green-800{color:#2e7d32!important}.mdui-text-color-green-900{color:#1b5e20!important}.mdui-text-color-grey{color:#9e9e9e!important}.mdui-text-color-grey-50{color:#fafafa!important}.mdui-text-color-grey-100{color:#f5f5f5!important}.mdui-text-color-grey-200{color:#eee!important}.mdui-text-color-grey-300{color:#e0e0e0!important}.mdui-text-color-grey-400{color:#bdbdbd!important}.mdui-text-color-grey-500{color:#9e9e9e!important}.mdui-text-color-grey-600{color:#757575!important}.mdui-text-color-grey-700{color:#616161!important}.mdui-text-color-grey-800{color:#424242!important}.mdui-text-color-grey-900{color:#212121!important}.mdui-text-color-indigo{color:#3f51b5!important}.mdui-text-color-indigo-50{color:#e8eaf6!important}.mdui-text-color-indigo-100{color:#c5cae9!important}.mdui-text-color-indigo-200{color:#9fa8da!important}.mdui-text-color-indigo-300{color:#7986cb!important}.mdui-text-color-indigo-400{color:#5c6bc0!important}.mdui-text-color-indigo-500{color:#3f51b5!important}.mdui-text-color-indigo-600{color:#3949ab!important}.mdui-text-color-indigo-700{color:#303f9f!important}.mdui-text-color-indigo-800{color:#283593!important}.mdui-text-color-indigo-900{color:#1a237e!important}.mdui-text-color-light-blue{color:#03a9f4!important}.mdui-text-color-light-blue-50{color:#e1f5fe!important}.mdui-text-color-light-blue-100{color:#b3e5fc!important}.mdui-text-color-light-blue-200{color:#81d4fa!important}.mdui-text-color-light-blue-300{color:#4fc3f7!important}.mdui-text-color-light-blue-400{color:#29b6f6!important}.mdui-text-color-light-blue-500{color:#03a9f4!important}.mdui-text-color-light-blue-600{color:#039be5!important}.mdui-text-color-light-blue-700{color:#0288d1!important}.mdui-text-color-light-blue-800{color:#0277bd!important}.mdui-text-color-light-blue-900{color:#01579b!important}.mdui-text-color-light-green{color:#8bc34a!important}.mdui-text-color-light-green-50{color:#f1f8e9!important}.mdui-text-color-light-green-100{color:#dcedc8!important}.mdui-text-color-light-green-200{color:#c5e1a5!important}.mdui-text-color-light-green-300{color:#aed581!important}.mdui-text-color-light-green-400{color:#9ccc65!important}.mdui-text-color-light-green-500{color:#8bc34a!important}.mdui-text-color-light-green-600{color:#7cb342!important}.mdui-text-color-light-green-700{color:#689f38!important}.mdui-text-color-light-green-800{color:#558b2f!important}.mdui-text-color-light-green-900{color:#33691e!important}.mdui-text-color-lime{color:#cddc39!important}.mdui-text-color-lime-50{color:#f9fbe7!important}.mdui-text-color-lime-100{color:#f0f4c3!important}.mdui-text-color-lime-200{color:#e6ee9c!important}.mdui-text-color-lime-300{color:#dce775!important}.mdui-text-color-lime-400{color:#d4e157!important}.mdui-text-color-lime-500{color:#cddc39!important}.mdui-text-color-lime-600{color:#c0ca33!important}.mdui-text-color-lime-700{color:#afb42b!important}.mdui-text-color-lime-800{color:#9e9d24!important}.mdui-text-color-lime-900{color:#827717!important}.mdui-text-color-orange{color:#ff9800!important}.mdui-text-color-orange-50{color:#fff3e0!important}.mdui-text-color-orange-100{color:#ffe0b2!important}.mdui-text-color-orange-200{color:#ffcc80!important}.mdui-text-color-orange-300{color:#ffb74d!important}.mdui-text-color-orange-400{color:#ffa726!important}.mdui-text-color-orange-500{color:#ff9800!important}.mdui-text-color-orange-600{color:#fb8c00!important}.mdui-text-color-orange-700{color:#f57c00!important}.mdui-text-color-orange-800{color:#ef6c00!important}.mdui-text-color-orange-900{color:#e65100!important}.mdui-text-color-pink{color:#e91e63!important}.mdui-text-color-pink-50{color:#fce4ec!important}.mdui-text-color-pink-100{color:#f8bbd0!important}.mdui-text-color-pink-200{color:#f48fb1!important}.mdui-text-color-pink-300{color:#f06292!important}.mdui-text-color-pink-400{color:#ec407a!important}.mdui-text-color-pink-500{color:#e91e63!important}.mdui-text-color-pink-600{color:#d81b60!important}.mdui-text-color-pink-700{color:#c2185b!important}.mdui-text-color-pink-800{color:#ad1457!important}.mdui-text-color-pink-900{color:#880e4f!important}.mdui-text-color-purple{color:#9c27b0!important}.mdui-text-color-purple-50{color:#f3e5f5!important}.mdui-text-color-purple-100{color:#e1bee7!important}.mdui-text-color-purple-200{color:#ce93d8!important}.mdui-text-color-purple-300{color:#ba68c8!important}.mdui-text-color-purple-400{color:#ab47bc!important}.mdui-text-color-purple-500{color:#9c27b0!important}.mdui-text-color-purple-600{color:#8e24aa!important}.mdui-text-color-purple-700{color:#7b1fa2!important}.mdui-text-color-purple-800{color:#6a1b9a!important}.mdui-text-color-purple-900{color:#4a148c!important}.mdui-text-color-red{color:#f44336!important}.mdui-text-color-red-50{color:#ffebee!important}.mdui-text-color-red-100{color:#ffcdd2!important}.mdui-text-color-red-200{color:#ef9a9a!important}.mdui-text-color-red-300{color:#e57373!important}.mdui-text-color-red-400{color:#ef5350!important}.mdui-text-color-red-500{color:#f44336!important}.mdui-text-color-red-600{color:#e53935!important}.mdui-text-color-red-700{color:#d32f2f!important}.mdui-text-color-red-800{color:#c62828!important}.mdui-text-color-red-900{color:#b71c1c!important}.mdui-text-color-teal{color:#009688!important}.mdui-text-color-teal-50{color:#e0f2f1!important}.mdui-text-color-teal-100{color:#b2dfdb!important}.mdui-text-color-teal-200{color:#80cbc4!important}.mdui-text-color-teal-300{color:#4db6ac!important}.mdui-text-color-teal-400{color:#26a69a!important}.mdui-text-color-teal-500{color:#009688!important}.mdui-text-color-teal-600{color:#00897b!important}.mdui-text-color-teal-700{color:#00796b!important}.mdui-text-color-teal-800{color:#00695c!important}.mdui-text-color-teal-900{color:#004d40!important}.mdui-text-color-yellow{color:#ffeb3b!important}.mdui-text-color-yellow-50{color:#fffde7!important}.mdui-text-color-yellow-100{color:#fff9c4!important}.mdui-text-color-yellow-200{color:#fff59d!important}.mdui-text-color-yellow-300{color:#fff176!important}.mdui-text-color-yellow-400{color:#ffee58!important}.mdui-text-color-yellow-500{color:#ffeb3b!important}.mdui-text-color-yellow-600{color:#fdd835!important}.mdui-text-color-yellow-700{color:#fbc02d!important}.mdui-text-color-yellow-800{color:#f9a825!important}.mdui-text-color-yellow-900{color:#f57f17!important}.mdui-text-color-amber-accent{color:#ffd740!important}.mdui-text-color-amber-a100{color:#ffe57f!important}.mdui-text-color-amber-a200{color:#ffd740!important}.mdui-text-color-amber-a400{color:#ffc400!important}.mdui-text-color-amber-a700{color:#ffab00!important}.mdui-text-color-blue-accent{color:#448aff!important}.mdui-text-color-blue-a100{color:#82b1ff!important}.mdui-text-color-blue-a200{color:#448aff!important}.mdui-text-color-blue-a400{color:#2979ff!important}.mdui-text-color-blue-a700{color:#2962ff!important}.mdui-text-color-cyan-accent{color:#18ffff!important}.mdui-text-color-cyan-a100{color:#84ffff!important}.mdui-text-color-cyan-a200{color:#18ffff!important}.mdui-text-color-cyan-a400{color:#00e5ff!important}.mdui-text-color-cyan-a700{color:#00b8d4!important}.mdui-text-color-deep-orange-accent{color:#ff6e40!important}.mdui-text-color-deep-orange-a100{color:#ff9e80!important}.mdui-text-color-deep-orange-a200{color:#ff6e40!important}.mdui-text-color-deep-orange-a400{color:#ff3d00!important}.mdui-text-color-deep-orange-a700{color:#dd2c00!important}.mdui-text-color-deep-purple-accent{color:#7c4dff!important}.mdui-text-color-deep-purple-a100{color:#b388ff!important}.mdui-text-color-deep-purple-a200{color:#7c4dff!important}.mdui-text-color-deep-purple-a400{color:#651fff!important}.mdui-text-color-deep-purple-a700{color:#6200ea!important}.mdui-text-color-green-accent{color:#69f0ae!important}.mdui-text-color-green-a100{color:#b9f6ca!important}.mdui-text-color-green-a200{color:#69f0ae!important}.mdui-text-color-green-a400{color:#00e676!important}.mdui-text-color-green-a700{color:#00c853!important}.mdui-text-color-indigo-accent{color:#536dfe!important}.mdui-text-color-indigo-a100{color:#8c9eff!important}.mdui-text-color-indigo-a200{color:#536dfe!important}.mdui-text-color-indigo-a400{color:#3d5afe!important}.mdui-text-color-indigo-a700{color:#304ffe!important}.mdui-text-color-light-blue-accent{color:#40c4ff!important}.mdui-text-color-light-blue-a100{color:#80d8ff!important}.mdui-text-color-light-blue-a200{color:#40c4ff!important}.mdui-text-color-light-blue-a400{color:#00b0ff!important}.mdui-text-color-light-blue-a700{color:#0091ea!important}.mdui-text-color-light-green-accent{color:#b2ff59!important}.mdui-text-color-light-green-a100{color:#ccff90!important}.mdui-text-color-light-green-a200{color:#b2ff59!important}.mdui-text-color-light-green-a400{color:#76ff03!important}.mdui-text-color-light-green-a700{color:#64dd17!important}.mdui-text-color-lime-accent{color:#eeff41!important}.mdui-text-color-lime-a100{color:#f4ff81!important}.mdui-text-color-lime-a200{color:#eeff41!important}.mdui-text-color-lime-a400{color:#c6ff00!important}.mdui-text-color-lime-a700{color:#aeea00!important}.mdui-text-color-orange-accent{color:#ffab40!important}.mdui-text-color-orange-a100{color:#ffd180!important}.mdui-text-color-orange-a200{color:#ffab40!important}.mdui-text-color-orange-a400{color:#ff9100!important}.mdui-text-color-orange-a700{color:#ff6d00!important}.mdui-text-color-pink-accent{color:#ff4081!important}.mdui-text-color-pink-a100{color:#ff80ab!important}.mdui-text-color-pink-a200{color:#ff4081!important}.mdui-text-color-pink-a400{color:#f50057!important}.mdui-text-color-pink-a700{color:#c51162!important}.mdui-text-color-purple-accent{color:#e040fb!important}.mdui-text-color-purple-a100{color:#ea80fc!important}.mdui-text-color-purple-a200{color:#e040fb!important}.mdui-text-color-purple-a400{color:#d500f9!important}.mdui-text-color-purple-a700{color:#a0f!important}.mdui-text-color-red-accent{color:#ff5252!important}.mdui-text-color-red-a100{color:#ff8a80!important}.mdui-text-color-red-a200{color:#ff5252!important}.mdui-text-color-red-a400{color:#ff1744!important}.mdui-text-color-red-a700{color:#d50000!important}.mdui-text-color-teal-accent{color:#64ffda!important}.mdui-text-color-teal-a100{color:#a7ffeb!important}.mdui-text-color-teal-a200{color:#64ffda!important}.mdui-text-color-teal-a400{color:#1de9b6!important}.mdui-text-color-teal-a700{color:#00bfa5!important}.mdui-text-color-yellow-accent{color:#ff0!important}.mdui-text-color-yellow-a100{color:#ffff8d!important}.mdui-text-color-yellow-a200{color:#ff0!important}.mdui-text-color-yellow-a400{color:#ffea00!important}.mdui-text-color-yellow-a700{color:#ffd600!important}.mdui-text-color-black{color:#000!important}.mdui-text-color-black-text,.mdui-text-color-theme-text{color:rgba(0,0,0,.87)!important}.mdui-text-color-black-secondary,.mdui-text-color-theme-secondary{color:rgba(0,0,0,.54)!important}.mdui-text-color-black-disabled,.mdui-text-color-theme-disabled{color:rgba(0,0,0,.38)!important}.mdui-text-color-black-divider,.mdui-text-color-theme-divider{color:rgba(0,0,0,.12)!important}.mdui-text-color-black-icon,.mdui-text-color-theme-icon{color:rgba(0,0,0,.54)!important}.mdui-text-color-black-icon-disabled,.mdui-text-color-theme-icon-disabled{color:rgba(0,0,0,.26)!important}.mdui-text-color-white{color:#fff!important}.mdui-text-color-white-text{color:#fff!important}.mdui-text-color-white-secondary{color:rgba(255,255,255,.7)!important}.mdui-text-color-white-disabled{color:rgba(255,255,255,.5)!important}.mdui-text-color-white-divider{color:rgba(255,255,255,.12)!important}.mdui-text-color-white-icon{color:#fff!important}.mdui-text-color-white-icon-disabled{color:rgba(255,255,255,.3)!important}.mdui-theme-layout-dark .mdui-text-color-theme-text{color:#fff!important}.mdui-theme-layout-dark .mdui-text-color-theme-secondary{color:rgba(255,255,255,.7)!important}.mdui-theme-layout-dark .mdui-text-color-theme-disabled{color:rgba(255,255,255,.5)!important}.mdui-theme-layout-dark .mdui-text-color-theme-divider{color:rgba(255,255,255,.12)!important}.mdui-theme-layout-dark .mdui-text-color-theme-icon{color:#fff!important}.mdui-theme-layout-dark .mdui-text-color-theme-icon-disabled{color:rgba(255,255,255,.3)!important}.mdui-m-a-0{margin:0!important}.mdui-m-t-0{margin-top:0!important}.mdui-m-r-0{margin-right:0!important}.mdui-m-b-0{margin-bottom:0!important}.mdui-m-l-0{margin-left:0!important}.mdui-m-x-0{margin-right:0!important;margin-left:0!important}.mdui-m-y-0{margin-top:0!important;margin-bottom:0!important}.mdui-p-a-0{padding:0!important}.mdui-p-t-0{padding-top:0!important}.mdui-p-r-0{padding-right:0!important}.mdui-p-b-0{padding-bottom:0!important}.mdui-p-l-0{padding-left:0!important}.mdui-p-x-0{padding-right:0!important;padding-left:0!important}.mdui-p-y-0{padding-top:0!important;padding-bottom:0!important}.mdui-m-a-1{margin:8px!important}.mdui-m-t-1{margin-top:8px!important}.mdui-m-r-1{margin-right:8px!important}.mdui-m-b-1{margin-bottom:8px!important}.mdui-m-l-1{margin-left:8px!important}.mdui-m-x-1{margin-right:8px!important;margin-left:8px!important}.mdui-m-y-1{margin-top:8px!important;margin-bottom:8px!important}.mdui-p-a-1{padding:8px!important}.mdui-p-t-1{padding-top:8px!important}.mdui-p-r-1{padding-right:8px!important}.mdui-p-b-1{padding-bottom:8px!important}.mdui-p-l-1{padding-left:8px!important}.mdui-p-x-1{padding-right:8px!important;padding-left:8px!important}.mdui-p-y-1{padding-top:8px!important;padding-bottom:8px!important}.mdui-m-a-2{margin:16px!important}.mdui-m-t-2{margin-top:16px!important}.mdui-m-r-2{margin-right:16px!important}.mdui-m-b-2{margin-bottom:16px!important}.mdui-m-l-2{margin-left:16px!important}.mdui-m-x-2{margin-right:16px!important;margin-left:16px!important}.mdui-m-y-2{margin-top:16px!important;margin-bottom:16px!important}.mdui-p-a-2{padding:16px!important}.mdui-p-t-2{padding-top:16px!important}.mdui-p-r-2{padding-right:16px!important}.mdui-p-b-2{padding-bottom:16px!important}.mdui-p-l-2{padding-left:16px!important}.mdui-p-x-2{padding-right:16px!important;padding-left:16px!important}.mdui-p-y-2{padding-top:16px!important;padding-bottom:16px!important}.mdui-m-a-3{margin:24px!important}.mdui-m-t-3{margin-top:24px!important}.mdui-m-r-3{margin-right:24px!important}.mdui-m-b-3{margin-bottom:24px!important}.mdui-m-l-3{margin-left:24px!important}.mdui-m-x-3{margin-right:24px!important;margin-left:24px!important}.mdui-m-y-3{margin-top:24px!important;margin-bottom:24px!important}.mdui-p-a-3{padding:24px!important}.mdui-p-t-3{padding-top:24px!important}.mdui-p-r-3{padding-right:24px!important}.mdui-p-b-3{padding-bottom:24px!important}.mdui-p-l-3{padding-left:24px!important}.mdui-p-x-3{padding-right:24px!important;padding-left:24px!important}.mdui-p-y-3{padding-top:24px!important;padding-bottom:24px!important}.mdui-m-a-4{margin:32px!important}.mdui-m-t-4{margin-top:32px!important}.mdui-m-r-4{margin-right:32px!important}.mdui-m-b-4{margin-bottom:32px!important}.mdui-m-l-4{margin-left:32px!important}.mdui-m-x-4{margin-right:32px!important;margin-left:32px!important}.mdui-m-y-4{margin-top:32px!important;margin-bottom:32px!important}.mdui-p-a-4{padding:32px!important}.mdui-p-t-4{padding-top:32px!important}.mdui-p-r-4{padding-right:32px!important}.mdui-p-b-4{padding-bottom:32px!important}.mdui-p-l-4{padding-left:32px!important}.mdui-p-x-4{padding-right:32px!important;padding-left:32px!important}.mdui-p-y-4{padding-top:32px!important;padding-bottom:32px!important}.mdui-m-a-5{margin:40px!important}.mdui-m-t-5{margin-top:40px!important}.mdui-m-r-5{margin-right:40px!important}.mdui-m-b-5{margin-bottom:40px!important}.mdui-m-l-5{margin-left:40px!important}.mdui-m-x-5{margin-right:40px!important;margin-left:40px!important}.mdui-m-y-5{margin-top:40px!important;margin-bottom:40px!important}.mdui-p-a-5{padding:40px!important}.mdui-p-t-5{padding-top:40px!important}.mdui-p-r-5{padding-right:40px!important}.mdui-p-b-5{padding-bottom:40px!important}.mdui-p-l-5{padding-left:40px!important}.mdui-p-x-5{padding-right:40px!important;padding-left:40px!important}.mdui-p-y-5{padding-top:40px!important;padding-bottom:40px!important}.mdui-float-left{float:left!important}.mdui-float-right{float:right!important}.mdui-center{display:block!important;margin-right:auto!important;margin-left:auto!important}.mdui-valign{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.mdui-text-left{text-align:left!important}.mdui-text-center{text-align:center!important}.mdui-text-right{text-align:right!important}.mdui-text-lowercase{text-transform:lowercase!important}.mdui-text-uppercase{text-transform:uppercase!important}.mdui-text-capitalize{text-transform:capitalize!important}.mdui-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mdui-clearfix:after,.mdui-clearfix:before{display:table;content:" "}.mdui-clearfix:after{clear:both}.mdui-hidden,[hidden]{display:none!important}.mdui-invisible{visibility:hidden}@media (max-width:599px){.mdui-hidden-xs{display:none!important}}@media (min-width:600px) and (max-width:1023px){.mdui-hidden-sm{display:none!important}}@media (min-width:1024px) and (max-width:1439px){.mdui-hidden-md{display:none!important}}@media (min-width:1440px) and (max-width:1919px){.mdui-hidden-lg{display:none!important}}@media (min-width:1920px){.mdui-hidden-xl{display:none!important}}@media (max-width:599px){.mdui-hidden-xs-down{display:none!important}}@media (max-width:1023px){.mdui-hidden-sm-down{display:none!important}}@media (max-width:1439px){.mdui-hidden-md-down{display:none!important}}@media (max-width:1919px){.mdui-hidden-lg-down{display:none!important}}.mdui-hidden-xl-down{display:none!important}.mdui-hidden-xs-up{display:none!important}@media (min-width:600px){.mdui-hidden-sm-up{display:none!important}}@media (min-width:1024px){.mdui-hidden-md-up{display:none!important}}@media (min-width:1440px){.mdui-hidden-lg-up{display:none!important}}@media (min-width:1920px){.mdui-hidden-xl-up{display:none!important}}/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{margin:.67em 0;font-size:2em}hr{height:0;-webkit-box-sizing:content-box;box-sizing:content-box;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{text-decoration:underline;text-decoration:underline dotted;border-bottom:none;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{display:table;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0;color:inherit;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}body{font-family:Roboto,Noto,Helvetica,Arial,sans-serif;font-size:14px;color:rgba(0,0,0,.87);background-color:#fff}@media (min-width:600px){body{font-size:14.5px}}@media (min-width:1024px){body{font-size:15px}}body ::-webkit-scrollbar{width:5px;height:5px;background:0 0}@media (min-width:1024px){body ::-webkit-scrollbar{width:8px;height:8px}}body ::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2)}body.mdui-theme-layout-dark ::-webkit-scrollbar{width:5px;height:5px;background:0 0}@media (min-width:1024px){body.mdui-theme-layout-dark ::-webkit-scrollbar{width:8px;height:8px}}body.mdui-theme-layout-dark ::-webkit-scrollbar-thumb{background:rgba(255,255,255,.3)}*{-webkit-tap-highlight-color:transparent}body.mdui-locked{overflow:hidden}.mdui-overlay{position:fixed;top:-5000px;right:-5000px;bottom:-5000px;left:-5000px;z-index:2000;visibility:hidden;background:rgba(0,0,0,.4);opacity:0;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-property:opacity,visibility;transition-property:opacity,visibility;-webkit-backface-visibility:hidden;backface-visibility:hidden;will-change:opacity}.mdui-overlay-show{visibility:visible;opacity:1}.mdui-no-transition{-webkit-transition-property:none!important;transition-property:none!important}.mdui-theme-layout-dark{color:#fff;background-color:#303030}.mdui-icon,.mdui-icon::before{font-size:24px;font-style:normal;font-weight:400;line-height:1;color:inherit;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;vertical-align:middle;direction:ltr}.mdui-icon{display:inline-block;text-align:center}.mdui-icon::before{display:block!important;width:24px;height:24px}@font-face{font-family:'Material Icons';font-style:normal;font-weight:400;src:local('Material Icons'),local('MaterialIcons-Regular'),url(../file/MaterialIcons-Regular.woff2) format('woff2'),url(../file/MaterialIcons-Regular.woff) format('woff')}.material-icons{font-family:'Material Icons';-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;-webkit-font-feature-settings:'liga';-moz-font-feature-settings:'liga';font-feature-settings:'liga'}@font-face{font-family:Roboto;font-style:normal;font-weight:100;src:local('Roboto Thin'),local('Roboto-Thin'),url(../file/Roboto-Thin.woff2) format('woff2'),url(../file/Roboto-Thin.woff) format('woff')}@font-face{font-family:Roboto;font-style:italic;font-weight:100;src:local('Roboto ThinItalic'),local('Roboto-ThinItalic'),url(../file/Roboto-ThinItalic.woff2) format('woff2'),url(../file/Roboto-ThinItalic.woff) format('woff')}@font-face{font-family:Roboto;font-style:normal;font-weight:300;src:local('Roboto Light'),local('Roboto-Light'),url(../file/Roboto-Light.woff2) format('woff2'),url(../file/Roboto-Light.woff) format('woff')}@font-face{font-family:Roboto;font-style:italic;font-weight:300;src:local('Roboto LightItalic'),local('Roboto-LightItalic'),url(../file/Roboto-LightItalic.woff2) format('woff2'),url(../file/Roboto-LightItalic.woff) format('woff')}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:local('Roboto Regular'),local('Roboto-Regular'),url(../file/Roboto-Regular.woff2) format('woff2'),url(../file/Roboto-Regular.woff) format('woff')}@font-face{font-family:Roboto;font-style:italic;font-weight:400;src:local('Roboto RegularItalic'),local('Roboto-RegularItalic'),url(../file/Roboto-RegularItalic.woff2) format('woff2'),url(../file/Roboto-RegularItalic.woff) format('woff')}@font-face{font-family:Roboto;font-style:normal;font-weight:500;src:local('Roboto Medium'),local('Roboto-Medium'),url(../file/Roboto-Medium.woff2) format('woff2'),url(../file/Roboto-Medium.woff) format('woff')}@font-face{font-family:Roboto;font-style:italic;font-weight:500;src:local('Roboto MediumItalic'),local('Roboto-MediumItalic'),url(../file/Roboto-MediumItalic.woff2) format('woff2'),url(../file/Roboto-MediumItalic.woff) format('woff')}@font-face{font-family:Roboto;font-style:normal;font-weight:700;src:local('Roboto Bold'),local('Roboto-Bold'),url(../file/Roboto-Bold.woff2) format('woff2'),url(../file/Roboto-Bold.woff) format('woff')}@font-face{font-family:Roboto;font-style:italic;font-weight:700;src:local('Roboto BoldItalic'),local('Roboto-BoldItalic'),url(../file/Roboto-BoldItalic.woff2) format('woff2'),url(../file/Roboto-BoldItalic.woff) format('woff')}@font-face{font-family:Roboto;font-style:normal;font-weight:900;src:local('Roboto Black'),local('Roboto-Black'),url(../file/Roboto-Black.woff2) format('woff2'),url(../file/Roboto-Black.woff) format('woff')}@font-face{font-family:Roboto;font-style:italic;font-weight:900;src:local('Roboto BlackItalic'),local('Roboto-BlackItalic'),url(../file/Roboto-BlackItalic.woff2) format('woff2'),url(../file/Roboto-BlackItalic.woff) format('woff')}.mdui-typo-display-4,.mdui-typo-display-4-opacity{font-size:112px;font-weight:300;letter-spacing:-.04em}.mdui-typo-display-4-opacity{opacity:.54}.mdui-typo-display-3,.mdui-typo-display-3-opacity{font-size:56px;font-weight:400;letter-spacing:-.02em}.mdui-typo-display-3-opacity{opacity:.54}.mdui-typo-display-2,.mdui-typo-display-2-opacity{font-size:45px;font-weight:400;letter-spacing:0}.mdui-typo-display-2-opacity{opacity:.54}.mdui-typo-display-1,.mdui-typo-display-1-opacity{font-size:34px;font-weight:400;letter-spacing:0}.mdui-typo-display-1-opacity{opacity:.54}.mdui-typo-headline,.mdui-typo-headline-opacity{font-size:24px;font-weight:400;-moz-osx-font-smoothing:grayscale}.mdui-typo-headline-opacity{opacity:.87}.mdui-typo-title,.mdui-typo-title-opacity{font-size:20px;font-weight:500;letter-spacing:.02em}.mdui-typo-title-opacity{opacity:.87}.mdui-typo-subheading,.mdui-typo-subheading-opacity{font-size:16px;font-weight:400;letter-spacing:.04em}.mdui-typo-subheading-opacity{opacity:.87}.mdui-typo-body-2,.mdui-typo-body-2-opacity{font-size:14px;font-weight:500;letter-spacing:.04em}.mdui-typo-body-2-opacity{opacity:.87}.mdui-typo-body-1,.mdui-typo-body-1-opacity{font-size:14px;font-weight:400;letter-spacing:.04em}.mdui-typo-body-1-opacity{opacity:.87}.mdui-typo-caption,.mdui-typo-caption-opacity{font-size:12px;font-weight:400;letter-spacing:.08em}.mdui-typo-caption-opacity{opacity:.54}.mdui-typo{line-height:1.8;word-wrap:break-word}.mdui-typo address,.mdui-typo caption,.mdui-typo cite,.mdui-typo code,.mdui-typo dfn,.mdui-typo th{font-style:normal;font-weight:400}.mdui-typo caption,.mdui-typo th{text-align:left}.mdui-typo q:after,.mdui-typo q:before{content:''}.mdui-typo code,.mdui-typo kbd,.mdui-typo pre,.mdui-typo pre tt,.mdui-typo samp{font-family:Consolas,Courier,'Courier New',monospace}.mdui-typo figcaption{font-size:80%;color:rgba(0,0,0,.54)}.mdui-typo [draggable=true],.mdui-typo [draggable]{cursor:move}.mdui-typo [draggable=false]{cursor:inherit}.mdui-typo .mdui-table,.mdui-typo .mdui-table-fluid,.mdui-typo dl,.mdui-typo figure,.mdui-typo form,.mdui-typo hr,.mdui-typo ol,.mdui-typo p,.mdui-typo pre,.mdui-typo table,.mdui-typo ul{margin:0 0 1.2em 0}.mdui-typo a{position:relative;display:inline-block;overflow:hidden;color:#ff4081;text-decoration:none;vertical-align:top;outline:0}.mdui-typo a:before{position:absolute;top:auto;bottom:1px;left:0;width:100%;height:1px;content:' ';background-color:#ff4081;-webkit-transition:all .2s;transition:all .2s;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.mdui-typo a:focus:before,.mdui-typo a:hover:before{-webkit-transform:scaleX(1);transform:scaleX(1)}.mdui-typo small{font-size:80%}.mdui-typo blockquote{padding-left:1em;margin:1em 3em 1em 2em;font-weight:400;border-left:4px solid rgba(0,0,0,.12)}@media only screen and (max-width:599px){.mdui-typo blockquote{margin:1em 0}}.mdui-typo blockquote footer{font-size:86%;color:rgba(0,0,0,.54)}.mdui-typo mark{padding:2px;margin:0 5px;background:#fffdd1;border-bottom:1px solid #ffedce}.mdui-typo h1,.mdui-typo h2,.mdui-typo h3,.mdui-typo h4,.mdui-typo h5,.mdui-typo h6{margin-top:1.2em;margin-bottom:.6em;font-family:inherit;font-weight:400;line-height:1.35;color:inherit}.mdui-typo h1 small,.mdui-typo h2 small,.mdui-typo h3 small,.mdui-typo h4 small,.mdui-typo h5 small,.mdui-typo h6 small{font-size:65%;font-weight:400;line-height:1;color:rgba(0,0,0,.54)}.mdui-typo h1{font-size:2em}.mdui-typo h2{font-size:1.8em}.mdui-typo h3{font-size:1.6em}.mdui-typo h4{font-size:1.4em}.mdui-typo h5{font-size:1.2em}.mdui-typo h6{font-size:1.1em}.mdui-typo code{padding:2px 6px;color:#c7254e;background-color:#f7f7f9;border-radius:2px}.mdui-typo pre code{padding:0;font-size:inherit;line-height:1.7;color:inherit;background-color:transparent;border-radius:0}.mdui-typo abbr[title]{text-decoration:none;cursor:help;border-bottom:1px dotted}.mdui-typo ins{text-decoration:none;border-bottom:1px solid}.mdui-typo u{text-decoration:none;border-bottom:1px solid}.mdui-typo del{text-decoration:line-through}.mdui-typo hr{height:10px;margin-bottom:.8em;border:none;border-bottom:1px solid rgba(0,0,0,.12)}.mdui-typo pre{padding:12px 16px;overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid rgba(0,0,0,.12);border-radius:2px}.mdui-typo kbd{padding:2px 6px;font-size:90%;color:#fff;background-color:#333;border-radius:2px}.mdui-typo ul{padding-left:2em;list-style:disc}.mdui-typo ol{padding-left:2em;list-style:decimal}.mdui-typo li ol,.mdui-typo li ul{margin:.8em 0}.mdui-typo li ul{list-style:circle}.mdui-typo img{max-width:100%}.mdui-theme-accent-amber .mdui-typo a{color:#ffd740}.mdui-theme-accent-amber .mdui-typo a:before{background-color:#ffd740}.mdui-theme-accent-blue .mdui-typo a{color:#448aff}.mdui-theme-accent-blue .mdui-typo a:before{background-color:#448aff}.mdui-theme-accent-cyan .mdui-typo a{color:#18ffff}.mdui-theme-accent-cyan .mdui-typo a:before{background-color:#18ffff}.mdui-theme-accent-deep-orange .mdui-typo a{color:#ff6e40}.mdui-theme-accent-deep-orange .mdui-typo a:before{background-color:#ff6e40}.mdui-theme-accent-deep-purple .mdui-typo a{color:#7c4dff}.mdui-theme-accent-deep-purple .mdui-typo a:before{background-color:#7c4dff}.mdui-theme-accent-green .mdui-typo a{color:#69f0ae}.mdui-theme-accent-green .mdui-typo a:before{background-color:#69f0ae}.mdui-theme-accent-indigo .mdui-typo a{color:#536dfe}.mdui-theme-accent-indigo .mdui-typo a:before{background-color:#536dfe}.mdui-theme-accent-light-blue .mdui-typo a{color:#40c4ff}.mdui-theme-accent-light-blue .mdui-typo a:before{background-color:#40c4ff}.mdui-theme-accent-light-green .mdui-typo a{color:#b2ff59}.mdui-theme-accent-light-green .mdui-typo a:before{background-color:#b2ff59}.mdui-theme-accent-lime .mdui-typo a{color:#eeff41}.mdui-theme-accent-lime .mdui-typo a:before{background-color:#eeff41}.mdui-theme-accent-orange .mdui-typo a{color:#ffab40}.mdui-theme-accent-orange .mdui-typo a:before{background-color:#ffab40}.mdui-theme-accent-pink .mdui-typo a{color:#ff4081}.mdui-theme-accent-pink .mdui-typo a:before{background-color:#ff4081}.mdui-theme-accent-purple .mdui-typo a{color:#e040fb}.mdui-theme-accent-purple .mdui-typo a:before{background-color:#e040fb}.mdui-theme-accent-red .mdui-typo a{color:#ff5252}.mdui-theme-accent-red .mdui-typo a:before{background-color:#ff5252}.mdui-theme-accent-teal .mdui-typo a{color:#64ffda}.mdui-theme-accent-teal .mdui-typo a:before{background-color:#64ffda}.mdui-theme-accent-yellow .mdui-typo a{color:#ff0}.mdui-theme-accent-yellow .mdui-typo a:before{background-color:#ff0}.mdui-theme-layout-dark .mdui-typo blockquote{border-left-color:rgba(255,255,255,.12)}.mdui-theme-layout-dark .mdui-typo blockquote footer{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-typo figcaption{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-typo mark{background:#aaa;border-bottom-color:#bbb}.mdui-theme-layout-dark .mdui-typo h1 small,.mdui-theme-layout-dark .mdui-typo h2 small,.mdui-theme-layout-dark .mdui-typo h3 small,.mdui-theme-layout-dark .mdui-typo h4 small,.mdui-theme-layout-dark .mdui-typo h5 small,.mdui-theme-layout-dark .mdui-typo h6 small{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-typo code{color:#ffcdd2;background-color:#424242}.mdui-theme-layout-dark .mdui-typo pre{background:#424242;border-color:rgba(255,255,255,.12)}.mdui-theme-layout-dark .mdui-typo kbd{background:#424242}.mdui-theme-layout-dark .mdui-typo hr{border-color:rgba(255,255,255,.12)}.mdui-headroom{-webkit-transition:all .3s cubic-bezier(.4,0,.2,1)!important;transition:all .3s cubic-bezier(.4,0,.2,1)!important}.mdui-headroom-pinned-top{-webkit-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!important}.mdui-headroom-unpinned-top{-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-transform:translate3d(0,-100%,0)!important;transform:translate3d(0,-100%,0)!important}.mdui-headroom-pinned-down{-webkit-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!important}.mdui-headroom-unpinned-down{-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-transform:translate3d(0,100%,0)!important;transform:translate3d(0,100%,0)!important}.mdui-headroom-pinned-toolbar{-webkit-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!important}.mdui-headroom-unpinned-toolbar{-webkit-transform:translate3d(0,-56px,0)!important;transform:translate3d(0,-56px,0)!important}@media (min-width:600px){.mdui-headroom-unpinned-toolbar{-webkit-transform:translate3d(0,-64px,0)!important;transform:translate3d(0,-64px,0)!important}}@media (orientation:landscape) and (max-width:959px){.mdui-headroom-unpinned-toolbar{-webkit-transform:translate3d(0,-48px,0)!important;transform:translate3d(0,-48px,0)!important}}.mdui-collapse-item-header .mdui-collapse-item-arrow,.mdui-collapse-item-header.mdui-collapse-item-arrow{-webkit-transition:-webkit-transform .3s cubic-bezier(.4,0,.2,1);transition:-webkit-transform .3s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1),-webkit-transform .3s cubic-bezier(.4,0,.2,1);-webkit-transform:rotate(0);transform:rotate(0);will-change:transform}.mdui-collapse-item-body{height:0;padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;overflow:hidden;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1);will-change:height}.mdui-collapse-item-body .mdui-list-item{padding-left:72px}.mdui-collapse-item-open>.mdui-collapse-item-header .mdui-collapse-item-arrow,.mdui-collapse-item-open>.mdui-collapse-item-header.mdui-collapse-item-arrow{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.mdui-collapse-item-open>.mdui-collapse-item-body{height:auto}.mdui-table{position:relative;width:100%;border-spacing:0;border-collapse:separate;background-color:#fff;border:1px solid rgba(0,0,0,.12);border-bottom:none;-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mdui-table tbody tr{position:relative;-webkit-transition:background-color .28s cubic-bezier(.4,0,.2,1);transition:background-color .28s cubic-bezier(.4,0,.2,1)}.mdui-table td,.mdui-table th{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;padding:12px 28px;text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12)}.mdui-table td:last-child,.mdui-table th:last-child{padding-right:24px}.mdui-table td:first-child,.mdui-table th:first-child{padding-right:0;padding-left:24px}.mdui-table td:nth-child(2),.mdui-table th:nth-child(2){padding-left:24px}.mdui-table th{overflow:hidden;font-size:13px;font-weight:700;line-height:32px;color:rgba(0,0,0,.54);text-overflow:ellipsis;white-space:nowrap}.mdui-table td{font-size:14px;line-height:24px;color:rgba(0,0,0,.87)}.mdui-table-cell-checkbox{padding-top:0!important;padding-bottom:0!important;padding-left:24px!important}.mdui-table-cell-checkbox .mdui-checkbox{margin-top:7px}.mdui-table-cell-checkbox+td,.mdui-table-cell-checkbox+th{padding-left:6px!important}th.mdui-table-cell-checkbox .mdui-checkbox{margin-top:11px}.mdui-table-hoverable tbody tr:hover{background-color:#eee}.mdui-table-fluid{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid rgba(0,0,0,.12);border-bottom:none;-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mdui-table-fluid .mdui-table{margin:0;border:none;-webkit-box-shadow:none;box-shadow:none}.mdui-table-col-numeric{text-align:right!important}.mdui-table-row-selected{background-color:#f5f5f5}.mdui-theme-layout-dark .mdui-table{background-color:#303030;border:1px solid rgba(255,255,255,.12);border-bottom:none}.mdui-theme-layout-dark .mdui-table td,.mdui-theme-layout-dark .mdui-table th{border-bottom:1px solid rgba(255,255,255,.12)}.mdui-theme-layout-dark .mdui-table th{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-table td{color:#fff}.mdui-theme-layout-dark .mdui-table-hoverable tbody tr:hover{background-color:#616161}.mdui-theme-layout-dark .mdui-table-fluid{border:1px solid rgba(255,255,255,.12);border-bottom:none}.mdui-theme-layout-dark .mdui-table-fluid .mdui-table{border:none;-webkit-box-shadow:none;box-shadow:none}.mdui-theme-layout-dark .mdui-table-row-selected{background-color:#424242}.mdui-divider,.mdui-divider-dark,.mdui-divider-inset,.mdui-divider-inset-dark,.mdui-divider-inset-light,.mdui-divider-light{height:1px;margin:-1px 0 0 0;border:none}.mdui-divider-inset,.mdui-divider-inset-dark,.mdui-divider-inset-light{margin-left:72px}.mdui-divider,.mdui-divider-inset{background-color:rgba(0,0,0,.12)}.mdui-theme-layout-dark .mdui-divider,.mdui-theme-layout-dark .mdui-divider-inset{background-color:rgba(255,255,255,.12)}.mdui-divider-inset-light,.mdui-divider-light{background-color:rgba(255,255,255,.12)}.mdui-divider-dark,.mdui-divider-inset-dark{background-color:rgba(0,0,0,.12)}.mdui-img-fluid,.mdui-video-fluid{display:block;max-width:100%;height:auto}.mdui-img-rounded{border-radius:2px}.mdui-img-circle{border-radius:50%}.mdui-video-container{position:relative;height:0;padding-bottom:56.25%;overflow:hidden}.mdui-video-container embed,.mdui-video-container iframe,.mdui-video-container object{position:absolute;top:0;left:0;width:100%;height:100%}.mdui-ripple{position:relative;overflow:hidden;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdui-ripple-wave{position:absolute!important;top:0;left:0;z-index:1;padding:0;margin:0;font-size:0;pointer-events:none;background-color:rgba(0,0,0,.1);border-radius:50%;-webkit-transition-duration:1.4s;transition-duration:1.4s;-webkit-transform:translate3d(0,0,0) scale(0);transform:translate3d(0,0,0) scale(0)}.mdui-ripple[class*=mdui-color-] .mdui-ripple-wave{background-color:rgba(255,255,255,.3)}.mdui-ripple-white .mdui-ripple-wave{background-color:rgba(255,255,255,.3)!important}.mdui-ripple-black .mdui-ripple-wave{background-color:rgba(0,0,0,.1)!important}.mdui-ripple-wave-fill{opacity:.35;-webkit-transition-duration:.3s;transition-duration:.3s}.mdui-ripple-wave-out{opacity:0;-webkit-transition-duration:.6s;transition-duration:.6s}.mdui-ripple-amber .mdui-ripple-wave{background-color:rgba(255,193,7,.3)!important}.mdui-ripple-blue .mdui-ripple-wave{background-color:rgba(33,150,243,.3)!important}.mdui-ripple-blue-grey .mdui-ripple-wave{background-color:rgba(96,125,139,.3)!important}.mdui-ripple-brown .mdui-ripple-wave{background-color:rgba(121,85,72,.3)!important}.mdui-ripple-cyan .mdui-ripple-wave{background-color:rgba(0,188,212,.3)!important}.mdui-ripple-deep-orange .mdui-ripple-wave{background-color:rgba(255,87,34,.3)!important}.mdui-ripple-deep-purple .mdui-ripple-wave{background-color:rgba(103,58,183,.3)!important}.mdui-ripple-green .mdui-ripple-wave{background-color:rgba(76,175,80,.3)!important}.mdui-ripple-grey .mdui-ripple-wave{background-color:rgba(158,158,158,.3)!important}.mdui-ripple-indigo .mdui-ripple-wave{background-color:rgba(63,81,181,.3)!important}.mdui-ripple-light-blue .mdui-ripple-wave{background-color:rgba(3,169,244,.3)!important}.mdui-ripple-light-green .mdui-ripple-wave{background-color:rgba(139,195,74,.3)!important}.mdui-ripple-lime .mdui-ripple-wave{background-color:rgba(205,220,57,.3)!important}.mdui-ripple-orange .mdui-ripple-wave{background-color:rgba(255,152,0,.3)!important}.mdui-ripple-pink .mdui-ripple-wave{background-color:rgba(233,30,99,.3)!important}.mdui-ripple-purple .mdui-ripple-wave{background-color:rgba(156,39,176,.3)!important}.mdui-ripple-red .mdui-ripple-wave{background-color:rgba(244,67,54,.3)!important}.mdui-ripple-teal .mdui-ripple-wave{background-color:rgba(0,150,136,.3)!important}.mdui-ripple-yellow .mdui-ripple-wave{background-color:rgba(255,235,59,.3)!important}.mdui-theme-layout-dark .mdui-ripple-wave{background-color:rgba(255,255,255,.3)}.mdui-textfield{position:relative;padding-top:16px;padding-bottom:8px;overflow:hidden}.mdui-textfield-has-bottom{padding-bottom:28px}.mdui-textfield-input{display:block;width:100%;height:36px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;padding:8px 0;margin:0;overflow:hidden;font-family:inherit;font-size:16px;line-height:20px;color:rgba(0,0,0,.87);resize:none;background:0 0;border:none;border-bottom:1px solid rgba(0,0,0,.42);border-radius:0;outline:0;-webkit-box-shadow:none;box-shadow:none;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:border-bottom-color,padding-right,-webkit-box-shadow;transition-property:border-bottom-color,padding-right,-webkit-box-shadow;transition-property:border-bottom-color,padding-right,box-shadow;transition-property:border-bottom-color,padding-right,box-shadow,-webkit-box-shadow;-moz-appearance:none;appearance:none}.mdui-textfield-input::-webkit-input-placeholder{color:inherit;opacity:.42}.mdui-textfield-input:not([disabled]):hover{cursor:pointer;border-bottom:1px solid rgba(0,0,0,.87);-webkit-box-shadow:0 1px 0 0 rgba(0,0,0,.87);box-shadow:0 1px 0 0 rgba(0,0,0,.87)}.mdui-textfield-input[rows]{height:auto!important;overflow:auto;-webkit-overflow-scrolling:touch}.mdui-textfield-label{display:block;width:100%;font-size:16px;color:rgba(0,0,0,.54);pointer-events:none;-webkit-transition:all .2s;transition:all .2s;-webkit-transform:scale(.75) translateY(0);transform:scale(.75) translateY(0);-webkit-transform-origin:left;transform-origin:left}.mdui-textfield-error,.mdui-textfield-helper{position:absolute;bottom:8px;height:12px;overflow:hidden;font-size:12px;line-height:12px;text-overflow:ellipsis;white-space:nowrap}.mdui-textfield-error{color:rgba(255,23,68,.87);visibility:hidden}.mdui-textfield-helper{color:rgba(0,0,0,.54)}.mdui-textfield .mdui-icon{position:absolute;bottom:8px;padding:6px;color:rgba(0,0,0,.54)}.mdui-textfield .mdui-icon~.mdui-textfield-error,.mdui-textfield .mdui-icon~.mdui-textfield-flex-wrap,.mdui-textfield .mdui-icon~.mdui-textfield-helper,.mdui-textfield .mdui-icon~.mdui-textfield-input,.mdui-textfield .mdui-icon~.mdui-textfield-label{width:calc(100% - 56px);margin-left:56px}.mdui-textfield-has-bottom .mdui-icon{bottom:28px}.mdui-textfield-focus .mdui-textfield-input,.mdui-textfield-focus .mdui-textfield-input:hover{border-bottom-color:#c51162;-webkit-box-shadow:0 1px 0 0 #c51162;box-shadow:0 1px 0 0 #c51162}.mdui-textfield-focus .mdui-icon,.mdui-textfield-focus .mdui-textfield-label{color:rgba(197,17,98,.87)}.mdui-textfield-floating-label .mdui-textfield-label{color:rgba(0,0,0,.35);-webkit-transform:scale(1) translateY(27px);transform:scale(1) translateY(27px)}.mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-textfield-floating-label.mdui-textfield-not-empty .mdui-textfield-label{color:rgba(0,0,0,.65);-webkit-transform:scale(.75) translateY(0);transform:scale(.75) translateY(0)}.mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label{color:#e91e63}.mdui-textfield-expandable{width:36px;min-height:36px;padding:1px 0;-webkit-transition:width .3s cubic-bezier(.4,0,.2,1);transition:width .3s cubic-bezier(.4,0,.2,1)}.mdui-textfield-expandable .mdui-icon{bottom:0;padding:0}.mdui-textfield-expandable .mdui-textfield-input{width:calc(100% - 36px);padding-right:0;margin-left:36px}.mdui-textfield-expandable .mdui-textfield-icon{position:absolute;top:0;left:0}.mdui-textfield-expandable .mdui-textfield-close{position:absolute;top:0;right:0;-webkit-transform:scale(0);transform:scale(0)}.mdui-textfield-expandable.mdui-textfield-expanded{width:100%}.mdui-textfield-expandable.mdui-textfield-expanded .mdui-textfield-input{padding-right:36px}.mdui-textfield-expandable.mdui-textfield-expanded .mdui-textfield-close{-webkit-transform:scale(1);transform:scale(1)}.mdui-textfield-invalid .mdui-textfield-input,.mdui-textfield-invalid-html5 .mdui-textfield-input,.mdui-textfield-invalid-html5.mdui-textfield-focus .mdui-textfield-input,.mdui-textfield-invalid.mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ff1744!important;-webkit-box-shadow:0 1px 0 0 #ff1744!important;box-shadow:0 1px 0 0 #ff1744!important}.mdui-textfield-invalid .mdui-textfield-label,.mdui-textfield-invalid-html5 .mdui-textfield-label{color:#ff1744!important}.mdui-textfield-invalid-html5.mdui-textfield-floating-label .mdui-textfield-label,.mdui-textfield-invalid.mdui-textfield-floating-label .mdui-textfield-label{color:rgba(255,23,68,.35)!important}.mdui-textfield-invalid-html5.mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-textfield-invalid-html5.mdui-textfield-floating-label.mdui-textfield-not-empty .mdui-textfield-label,.mdui-textfield-invalid.mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-textfield-invalid.mdui-textfield-floating-label.mdui-textfield-not-empty .mdui-textfield-label{color:#ff1744!important}.mdui-textfield-invalid .mdui-textfield-error,.mdui-textfield-invalid-html5 .mdui-textfield-error{visibility:visible}.mdui-textfield-invalid .mdui-textfield-error+.mdui-textfield-helper,.mdui-textfield-invalid-html5 .mdui-textfield-error+.mdui-textfield-helper{visibility:hidden}.mdui-textfield-disabled .mdui-textfield-input::-webkit-input-placeholder,.mdui-textfield-disabled .mdui-textfield-label{color:rgba(0,0,0,.38)}.mdui-textfield-disabled .mdui-textfield-input{color:rgba(0,0,0,.42);cursor:default}.mdui-textfield-disabled .mdui-textfield-input{border-bottom:1px dashed rgba(0,0,0,.42)}.mdui-textfield-counter{position:absolute;right:8px;bottom:8px;height:12px;font-size:12px;line-height:12px;color:rgba(0,0,0,.54)}.mdui-theme-layout-dark .mdui-textfield-input{color:#fff;border-bottom-color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-textfield-input::-webkit-input-placeholder{color:rgba(255,255,255,.5)}.mdui-theme-layout-dark .mdui-textfield-input:not([disabled]):hover{border-bottom-color:#fff;-webkit-box-shadow:0 1px 0 0 #fff;box-shadow:0 1px 0 0 #fff}.mdui-theme-layout-dark .mdui-textfield .mdui-icon{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-textfield-label{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-textfield-floating-label .mdui-textfield-label{color:rgba(255,255,255,.35)}.mdui-theme-layout-dark .mdui-textfield-error{color:#ff1744}.mdui-theme-layout-dark .mdui-textfield-helper{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-textfield-counter{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input,.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input:hover{border-bottom-color:#ff4081;-webkit-box-shadow:0 1px 0 0 #ff4081;box-shadow:0 1px 0 0 #ff4081}.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#ff4081}.mdui-theme-layout-dark .mdui-textfield-disabled .mdui-textfield-input::-webkit-input-placeholder,.mdui-theme-layout-dark .mdui-textfield-disabled .mdui-textfield-label{color:rgba(255,255,255,.5)}.mdui-theme-layout-dark .mdui-textfield-disabled .mdui-textfield-input{color:rgba(255,255,255,.5)}.mdui-theme-layout-dark .mdui-textfield-disabled .mdui-textfield-input{border-bottom-color:rgba(255,255,255,.7)}.mdui-theme-accent-amber .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ffab00;-webkit-box-shadow:0 1px 0 0 #ffab00;box-shadow:0 1px 0 0 #ffab00}.mdui-theme-accent-amber .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-amber .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-amber .mdui-textfield-focus .mdui-textfield-label{color:rgba(255,171,0,.87)}.mdui-theme-accent-amber.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ffd740;-webkit-box-shadow:0 1px 0 0 #ffd740;box-shadow:0 1px 0 0 #ffd740}.mdui-theme-accent-amber.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-amber.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-amber.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#ffd740}.mdui-theme-accent-blue .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#2962ff;-webkit-box-shadow:0 1px 0 0 #2962ff;box-shadow:0 1px 0 0 #2962ff}.mdui-theme-accent-blue .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-blue .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-blue .mdui-textfield-focus .mdui-textfield-label{color:rgba(41,98,255,.87)}.mdui-theme-accent-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#448aff;-webkit-box-shadow:0 1px 0 0 #448aff;box-shadow:0 1px 0 0 #448aff}.mdui-theme-accent-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#448aff}.mdui-theme-accent-cyan .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#00b8d4;-webkit-box-shadow:0 1px 0 0 #00b8d4;box-shadow:0 1px 0 0 #00b8d4}.mdui-theme-accent-cyan .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-cyan .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-cyan .mdui-textfield-focus .mdui-textfield-label{color:rgba(0,184,212,.87)}.mdui-theme-accent-cyan.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#18ffff;-webkit-box-shadow:0 1px 0 0 #18ffff;box-shadow:0 1px 0 0 #18ffff}.mdui-theme-accent-cyan.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-cyan.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-cyan.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#18ffff}.mdui-theme-accent-deep-orange .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#dd2c00;-webkit-box-shadow:0 1px 0 0 #dd2c00;box-shadow:0 1px 0 0 #dd2c00}.mdui-theme-accent-deep-orange .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-deep-orange .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-deep-orange .mdui-textfield-focus .mdui-textfield-label{color:rgba(221,44,0,.87)}.mdui-theme-accent-deep-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ff6e40;-webkit-box-shadow:0 1px 0 0 #ff6e40;box-shadow:0 1px 0 0 #ff6e40}.mdui-theme-accent-deep-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-deep-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-deep-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#ff6e40}.mdui-theme-accent-deep-purple .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#6200ea;-webkit-box-shadow:0 1px 0 0 #6200ea;box-shadow:0 1px 0 0 #6200ea}.mdui-theme-accent-deep-purple .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-deep-purple .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-deep-purple .mdui-textfield-focus .mdui-textfield-label{color:rgba(98,0,234,.87)}.mdui-theme-accent-deep-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#7c4dff;-webkit-box-shadow:0 1px 0 0 #7c4dff;box-shadow:0 1px 0 0 #7c4dff}.mdui-theme-accent-deep-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-deep-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-deep-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#7c4dff}.mdui-theme-accent-green .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#00c853;-webkit-box-shadow:0 1px 0 0 #00c853;box-shadow:0 1px 0 0 #00c853}.mdui-theme-accent-green .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-green .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-green .mdui-textfield-focus .mdui-textfield-label{color:rgba(0,200,83,.87)}.mdui-theme-accent-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#69f0ae;-webkit-box-shadow:0 1px 0 0 #69f0ae;box-shadow:0 1px 0 0 #69f0ae}.mdui-theme-accent-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#69f0ae}.mdui-theme-accent-indigo .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#304ffe;-webkit-box-shadow:0 1px 0 0 #304ffe;box-shadow:0 1px 0 0 #304ffe}.mdui-theme-accent-indigo .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-indigo .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-indigo .mdui-textfield-focus .mdui-textfield-label{color:rgba(48,79,254,.87)}.mdui-theme-accent-indigo.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#536dfe;-webkit-box-shadow:0 1px 0 0 #536dfe;box-shadow:0 1px 0 0 #536dfe}.mdui-theme-accent-indigo.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-indigo.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-indigo.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#536dfe}.mdui-theme-accent-light-blue .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#0091ea;-webkit-box-shadow:0 1px 0 0 #0091ea;box-shadow:0 1px 0 0 #0091ea}.mdui-theme-accent-light-blue .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-light-blue .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-light-blue .mdui-textfield-focus .mdui-textfield-label{color:rgba(0,145,234,.87)}.mdui-theme-accent-light-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#40c4ff;-webkit-box-shadow:0 1px 0 0 #40c4ff;box-shadow:0 1px 0 0 #40c4ff}.mdui-theme-accent-light-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-light-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-light-blue.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#40c4ff}.mdui-theme-accent-light-green .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#64dd17;-webkit-box-shadow:0 1px 0 0 #64dd17;box-shadow:0 1px 0 0 #64dd17}.mdui-theme-accent-light-green .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-light-green .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-light-green .mdui-textfield-focus .mdui-textfield-label{color:rgba(100,221,23,.87)}.mdui-theme-accent-light-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#b2ff59;-webkit-box-shadow:0 1px 0 0 #b2ff59;box-shadow:0 1px 0 0 #b2ff59}.mdui-theme-accent-light-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-light-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-light-green.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#b2ff59}.mdui-theme-accent-lime .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#aeea00;-webkit-box-shadow:0 1px 0 0 #aeea00;box-shadow:0 1px 0 0 #aeea00}.mdui-theme-accent-lime .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-lime .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-lime .mdui-textfield-focus .mdui-textfield-label{color:rgba(174,234,0,.87)}.mdui-theme-accent-lime.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#eeff41;-webkit-box-shadow:0 1px 0 0 #eeff41;box-shadow:0 1px 0 0 #eeff41}.mdui-theme-accent-lime.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-lime.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-lime.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#eeff41}.mdui-theme-accent-orange .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ff6d00;-webkit-box-shadow:0 1px 0 0 #ff6d00;box-shadow:0 1px 0 0 #ff6d00}.mdui-theme-accent-orange .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-orange .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-orange .mdui-textfield-focus .mdui-textfield-label{color:rgba(255,109,0,.87)}.mdui-theme-accent-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ffab40;-webkit-box-shadow:0 1px 0 0 #ffab40;box-shadow:0 1px 0 0 #ffab40}.mdui-theme-accent-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-orange.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#ffab40}.mdui-theme-accent-pink .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#c51162;-webkit-box-shadow:0 1px 0 0 #c51162;box-shadow:0 1px 0 0 #c51162}.mdui-theme-accent-pink .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-pink .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-pink .mdui-textfield-focus .mdui-textfield-label{color:rgba(197,17,98,.87)}.mdui-theme-accent-pink.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ff4081;-webkit-box-shadow:0 1px 0 0 #ff4081;box-shadow:0 1px 0 0 #ff4081}.mdui-theme-accent-pink.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-pink.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-pink.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#ff4081}.mdui-theme-accent-purple .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#a0f;-webkit-box-shadow:0 1px 0 0 #a0f;box-shadow:0 1px 0 0 #a0f}.mdui-theme-accent-purple .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-purple .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-purple .mdui-textfield-focus .mdui-textfield-label{color:rgba(170,0,255,.87)}.mdui-theme-accent-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#e040fb;-webkit-box-shadow:0 1px 0 0 #e040fb;box-shadow:0 1px 0 0 #e040fb}.mdui-theme-accent-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-purple.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#e040fb}.mdui-theme-accent-red .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#d50000;-webkit-box-shadow:0 1px 0 0 #d50000;box-shadow:0 1px 0 0 #d50000}.mdui-theme-accent-red .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-red .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-red .mdui-textfield-focus .mdui-textfield-label{color:rgba(213,0,0,.87)}.mdui-theme-accent-red.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ff5252;-webkit-box-shadow:0 1px 0 0 #ff5252;box-shadow:0 1px 0 0 #ff5252}.mdui-theme-accent-red.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-red.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-red.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#ff5252}.mdui-theme-accent-teal .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#00bfa5;-webkit-box-shadow:0 1px 0 0 #00bfa5;box-shadow:0 1px 0 0 #00bfa5}.mdui-theme-accent-teal .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-teal .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-teal .mdui-textfield-focus .mdui-textfield-label{color:rgba(0,191,165,.87)}.mdui-theme-accent-teal.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#64ffda;-webkit-box-shadow:0 1px 0 0 #64ffda;box-shadow:0 1px 0 0 #64ffda}.mdui-theme-accent-teal.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-teal.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-teal.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#64ffda}.mdui-theme-accent-yellow .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ffd600;-webkit-box-shadow:0 1px 0 0 #ffd600;box-shadow:0 1px 0 0 #ffd600}.mdui-theme-accent-yellow .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-yellow .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-yellow .mdui-textfield-focus .mdui-textfield-label{color:rgba(255,214,0,.87)}.mdui-theme-accent-yellow.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-input{border-bottom-color:#ff0;-webkit-box-shadow:0 1px 0 0 #ff0;box-shadow:0 1px 0 0 #ff0}.mdui-theme-accent-yellow.mdui-theme-layout-dark .mdui-textfield-focus .mdui-icon,.mdui-theme-accent-yellow.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-floating-label.mdui-textfield-focus .mdui-textfield-label,.mdui-theme-accent-yellow.mdui-theme-layout-dark .mdui-textfield-focus .mdui-textfield-label{color:#ff0}.mdui-checkbox{position:relative;display:inline-block;height:36px;padding-left:36px;line-height:36px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdui-checkbox input[type=checkbox]{position:absolute;width:0;height:0;overflow:hidden;opacity:0}.mdui-checkbox-icon{position:absolute;top:9px;left:0;display:inline-block;width:18px;height:18px;vertical-align:middle;background-color:transparent;border:none;border-radius:18px;-webkit-transition:-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1);transition:-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1);transition:box-shadow .14s cubic-bezier(.4,0,.2,1);transition:box-shadow .14s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1)}.mdui-checkbox-icon:after{position:absolute;top:0;left:0;z-index:0;width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;content:' ';border:2px solid rgba(0,0,0,.54);border-radius:2px;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1)}.mdui-checkbox-icon:before{position:absolute;top:2px;left:0;z-index:1;width:8px;height:13px;-webkit-box-sizing:border-box;box-sizing:border-box;content:' ';border-right:2px solid #fff;border-bottom:2px solid #fff;opacity:0;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-transform:rotateZ(37deg) scale(0);transform:rotateZ(37deg) scale(0);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after{background-color:#ff4081;border-color:#ff4081}.mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:before{opacity:1;-webkit-transform:rotateZ(37deg) scale(1);transform:rotateZ(37deg) scale(1)}.mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#ff4081;border-color:#ff4081}.mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:before{top:8px;left:3px;width:12px;height:0;border-right:none;border-bottom:2px solid #fff;border-radius:1px;opacity:1;-webkit-transform:rotateZ(0) scale(1);transform:rotateZ(0) scale(1)}.mdui-checkbox input[type=checkbox]:disabled+.mdui-checkbox-icon:after{border-color:rgba(0,0,0,.26)}.mdui-checkbox input[type=checkbox]:disabled:checked+.mdui-checkbox-icon:after,.mdui-checkbox input[type=checkbox]:disabled:indeterminate+.mdui-checkbox-icon:after{background-color:rgba(0,0,0,.26)!important;border-color:transparent!important}.mdui-checkbox input[type=checkbox]:focus+.mdui-checkbox-icon,.mdui-checkbox:active input[type=checkbox]+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(0,0,0,.1);box-shadow:0 0 0 15px rgba(0,0,0,.1)}.mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,64,129,.16);box-shadow:0 0 0 15px rgba(255,64,129,.16)}.mdui-theme-accent-amber .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after,.mdui-theme-accent-amber .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#ffd740;border-color:#ffd740}.mdui-theme-accent-amber .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-amber .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-amber .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-amber .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,215,64,.16);box-shadow:0 0 0 15px rgba(255,215,64,.16)}.mdui-theme-accent-blue .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after,.mdui-theme-accent-blue .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#448aff;border-color:#448aff}.mdui-theme-accent-blue .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-blue .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-blue .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-blue .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(68,138,255,.16);box-shadow:0 0 0 15px rgba(68,138,255,.16)}.mdui-theme-accent-cyan .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after,.mdui-theme-accent-cyan .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#18ffff;border-color:#18ffff}.mdui-theme-accent-cyan .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-cyan .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-cyan .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-cyan .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(24,255,255,.16);box-shadow:0 0 0 15px rgba(24,255,255,.16)}.mdui-theme-accent-deep-orange .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after,.mdui-theme-accent-deep-orange .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#ff6e40;border-color:#ff6e40}.mdui-theme-accent-deep-orange .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-deep-orange .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-deep-orange .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-deep-orange .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,110,64,.16);box-shadow:0 0 0 15px rgba(255,110,64,.16)}.mdui-theme-accent-deep-purple .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after,.mdui-theme-accent-deep-purple .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#7c4dff;border-color:#7c4dff}.mdui-theme-accent-deep-purple .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-deep-purple .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-deep-purple .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-deep-purple .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(124,77,255,.16);box-shadow:0 0 0 15px rgba(124,77,255,.16)}.mdui-theme-accent-green .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after,.mdui-theme-accent-green .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#69f0ae;border-color:#69f0ae}.mdui-theme-accent-green .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-green .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-green .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-green .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(105,240,174,.16);box-shadow:0 0 0 15px rgba(105,240,174,.16)}.mdui-theme-accent-indigo .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after,.mdui-theme-accent-indigo .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#536dfe;border-color:#536dfe}.mdui-theme-accent-indigo .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-indigo .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-indigo .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-indigo .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(83,109,254,.16);box-shadow:0 0 0 15px rgba(83,109,254,.16)}.mdui-theme-accent-light-blue .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after,.mdui-theme-accent-light-blue .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#40c4ff;border-color:#40c4ff}.mdui-theme-accent-light-blue .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-light-blue .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-light-blue .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-light-blue .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(64,196,255,.16);box-shadow:0 0 0 15px rgba(64,196,255,.16)}.mdui-theme-accent-light-green .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after,.mdui-theme-accent-light-green .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#b2ff59;border-color:#b2ff59}.mdui-theme-accent-light-green .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-light-green .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-light-green .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-light-green .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(178,255,89,.16);box-shadow:0 0 0 15px rgba(178,255,89,.16)}.mdui-theme-accent-lime .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after,.mdui-theme-accent-lime .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#eeff41;border-color:#eeff41}.mdui-theme-accent-lime .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-lime .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-lime .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-lime .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(238,255,65,.16);box-shadow:0 0 0 15px rgba(238,255,65,.16)}.mdui-theme-accent-orange .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after,.mdui-theme-accent-orange .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#ffab40;border-color:#ffab40}.mdui-theme-accent-orange .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-orange .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-orange .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-orange .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,171,64,.16);box-shadow:0 0 0 15px rgba(255,171,64,.16)}.mdui-theme-accent-pink .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after,.mdui-theme-accent-pink .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#ff4081;border-color:#ff4081}.mdui-theme-accent-pink .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-pink .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-pink .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-pink .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,64,129,.16);box-shadow:0 0 0 15px rgba(255,64,129,.16)}.mdui-theme-accent-purple .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after,.mdui-theme-accent-purple .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#e040fb;border-color:#e040fb}.mdui-theme-accent-purple .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-purple .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-purple .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-purple .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(224,64,251,.16);box-shadow:0 0 0 15px rgba(224,64,251,.16)}.mdui-theme-accent-red .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after,.mdui-theme-accent-red .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#ff5252;border-color:#ff5252}.mdui-theme-accent-red .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-red .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-red .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-red .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,82,82,.16);box-shadow:0 0 0 15px rgba(255,82,82,.16)}.mdui-theme-accent-teal .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after,.mdui-theme-accent-teal .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#64ffda;border-color:#64ffda}.mdui-theme-accent-teal .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-teal .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-teal .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-teal .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(100,255,218,.16);box-shadow:0 0 0 15px rgba(100,255,218,.16)}.mdui-theme-accent-yellow .mdui-checkbox input[type=checkbox]:checked+.mdui-checkbox-icon:after,.mdui-theme-accent-yellow .mdui-checkbox input[type=checkbox]:indeterminate+.mdui-checkbox-icon:after{background-color:#ff0;border-color:#ff0}.mdui-theme-accent-yellow .mdui-checkbox input[type=checkbox]:focus:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-yellow .mdui-checkbox input[type=checkbox]:focus:not(:disabled):indeterminate+.mdui-checkbox-icon,.mdui-theme-accent-yellow .mdui-checkbox:active input[type=checkbox]:not(:disabled):checked+.mdui-checkbox-icon,.mdui-theme-accent-yellow .mdui-checkbox:active input[type=checkbox]:not(:disabled):indeterminate+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,255,0,.16);box-shadow:0 0 0 15px rgba(255,255,0,.16)}.mdui-theme-layout-dark .mdui-checkbox-icon:after{border-color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-checkbox-icon:before{border-right-color:#303030!important;border-bottom-color:#303030!important}.mdui-theme-layout-dark .mdui-checkbox input[type=checkbox]:disabled+.mdui-checkbox-icon:after{border-color:rgba(255,255,255,.3)}.mdui-theme-layout-dark .mdui-checkbox input[type=checkbox]:disabled:checked+.mdui-checkbox-icon:after,.mdui-theme-layout-dark .mdui-checkbox input[type=checkbox]:disabled:indeterminate+.mdui-checkbox-icon:after{background-color:rgba(255,255,255,.3)!important;border-color:transparent!important}.mdui-theme-layout-dark .mdui-checkbox input[type=checkbox]:focus+.mdui-checkbox-icon,.mdui-theme-layout-dark .mdui-checkbox:active input[type=checkbox]+.mdui-checkbox-icon{-webkit-box-shadow:0 0 0 15px rgba(255,255,255,.1);box-shadow:0 0 0 15px rgba(255,255,255,.1)}.mdui-radio{position:relative;display:inline-block;height:36px;padding-left:36px;line-height:36px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdui-radio input{position:absolute;width:0;height:0;overflow:hidden;opacity:0}.mdui-radio-icon{position:absolute;top:9px;left:0;display:inline-block;width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;vertical-align:middle;border:2px solid rgba(0,0,0,.54);border-radius:18px;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1),box-shadow .14s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1),box-shadow .14s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1)}.mdui-radio-icon:before{position:absolute;top:0;left:0;width:14px;height:14px;content:' ';background-color:#ff4081;border-radius:14px;opacity:0;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-transform:scale(0);transform:scale(0)}.mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#ff4081}.mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{opacity:1;-webkit-transform:scale(.68);transform:scale(.68)}.mdui-radio input[type=radio]:disabled+.mdui-radio-icon{border-color:rgba(0,0,0,.26)!important}.mdui-radio input[type=radio]:disabled:checked+.mdui-radio-icon:before{background-color:rgba(0,0,0,.26)!important}.mdui-radio input[type=radio]:focus+.mdui-radio-icon,.mdui-radio:active input[type=radio]+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(0,0,0,.1);box-shadow:0 0 0 15px rgba(0,0,0,.1)}.mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,64,129,.16);box-shadow:0 0 0 15px rgba(255,64,129,.16)}.mdui-theme-accent-amber .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#ffd740}.mdui-theme-accent-amber .mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{background-color:#ffd740}.mdui-theme-accent-amber .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-amber .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,215,64,.16);box-shadow:0 0 0 15px rgba(255,215,64,.16)}.mdui-theme-accent-blue .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#448aff}.mdui-theme-accent-blue .mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{background-color:#448aff}.mdui-theme-accent-blue .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-blue .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(68,138,255,.16);box-shadow:0 0 0 15px rgba(68,138,255,.16)}.mdui-theme-accent-cyan .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#18ffff}.mdui-theme-accent-cyan .mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{background-color:#18ffff}.mdui-theme-accent-cyan .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-cyan .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(24,255,255,.16);box-shadow:0 0 0 15px rgba(24,255,255,.16)}.mdui-theme-accent-deep-orange .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#ff6e40}.mdui-theme-accent-deep-orange .mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{background-color:#ff6e40}.mdui-theme-accent-deep-orange .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-deep-orange .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,110,64,.16);box-shadow:0 0 0 15px rgba(255,110,64,.16)}.mdui-theme-accent-deep-purple .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#7c4dff}.mdui-theme-accent-deep-purple .mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{background-color:#7c4dff}.mdui-theme-accent-deep-purple .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-deep-purple .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(124,77,255,.16);box-shadow:0 0 0 15px rgba(124,77,255,.16)}.mdui-theme-accent-green .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#69f0ae}.mdui-theme-accent-green .mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{background-color:#69f0ae}.mdui-theme-accent-green .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-green .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(105,240,174,.16);box-shadow:0 0 0 15px rgba(105,240,174,.16)}.mdui-theme-accent-indigo .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#536dfe}.mdui-theme-accent-indigo .mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{background-color:#536dfe}.mdui-theme-accent-indigo .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-indigo .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(83,109,254,.16);box-shadow:0 0 0 15px rgba(83,109,254,.16)}.mdui-theme-accent-light-blue .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#40c4ff}.mdui-theme-accent-light-blue .mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{background-color:#40c4ff}.mdui-theme-accent-light-blue .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-light-blue .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(64,196,255,.16);box-shadow:0 0 0 15px rgba(64,196,255,.16)}.mdui-theme-accent-light-green .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#b2ff59}.mdui-theme-accent-light-green .mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{background-color:#b2ff59}.mdui-theme-accent-light-green .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-light-green .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(178,255,89,.16);box-shadow:0 0 0 15px rgba(178,255,89,.16)}.mdui-theme-accent-lime .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#eeff41}.mdui-theme-accent-lime .mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{background-color:#eeff41}.mdui-theme-accent-lime .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-lime .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(238,255,65,.16);box-shadow:0 0 0 15px rgba(238,255,65,.16)}.mdui-theme-accent-orange .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#ffab40}.mdui-theme-accent-orange .mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{background-color:#ffab40}.mdui-theme-accent-orange .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-orange .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,171,64,.16);box-shadow:0 0 0 15px rgba(255,171,64,.16)}.mdui-theme-accent-pink .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#ff4081}.mdui-theme-accent-pink .mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{background-color:#ff4081}.mdui-theme-accent-pink .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-pink .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,64,129,.16);box-shadow:0 0 0 15px rgba(255,64,129,.16)}.mdui-theme-accent-purple .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#e040fb}.mdui-theme-accent-purple .mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{background-color:#e040fb}.mdui-theme-accent-purple .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-purple .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(224,64,251,.16);box-shadow:0 0 0 15px rgba(224,64,251,.16)}.mdui-theme-accent-red .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#ff5252}.mdui-theme-accent-red .mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{background-color:#ff5252}.mdui-theme-accent-red .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-red .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,82,82,.16);box-shadow:0 0 0 15px rgba(255,82,82,.16)}.mdui-theme-accent-teal .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#64ffda}.mdui-theme-accent-teal .mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{background-color:#64ffda}.mdui-theme-accent-teal .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-teal .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(100,255,218,.16);box-shadow:0 0 0 15px rgba(100,255,218,.16)}.mdui-theme-accent-yellow .mdui-radio input[type=radio]:checked+.mdui-radio-icon{border-color:#ff0}.mdui-theme-accent-yellow .mdui-radio input[type=radio]:checked+.mdui-radio-icon:before{background-color:#ff0}.mdui-theme-accent-yellow .mdui-radio input[type=radio]:focus:checked:not(:disabled)+.mdui-radio-icon,.mdui-theme-accent-yellow .mdui-radio:active input[type=radio]:checked:not(:disabled)+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,255,0,.16);box-shadow:0 0 0 15px rgba(255,255,0,.16)}.mdui-theme-layout-dark .mdui-radio-icon{border-color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-radio input[type=radio]:disabled+.mdui-radio-icon{border-color:rgba(255,255,255,.3)!important}.mdui-theme-layout-dark .mdui-radio input[type=radio]:disabled:checked+.mdui-radio-icon:before{background-color:rgba(255,255,255,.3)!important}.mdui-theme-layout-dark .mdui-radio input[type=radio]:focus+.mdui-radio-icon,.mdui-theme-layout-dark .mdui-radio:active input[type=radio]+.mdui-radio-icon{-webkit-box-shadow:0 0 0 15px rgba(255,255,255,.1);box-shadow:0 0 0 15px rgba(255,255,255,.1)}.mdui-switch{display:inline-block;height:36px;line-height:36px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdui-switch input{position:absolute;width:0;height:0;overflow:hidden;opacity:0}.mdui-switch-icon{position:relative;display:inline-block;width:36px;height:14px;vertical-align:middle;background-color:rgba(0,0,0,.38);border-radius:14px;-webkit-transition:background-color .3s cubic-bezier(.4,0,.2,1);transition:background-color .3s cubic-bezier(.4,0,.2,1)}.mdui-switch-icon:before{position:absolute;top:-3px;left:-3px;display:inline-block;width:20px;height:20px;content:' ';background-color:#fafafa;border-radius:20px;-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);-webkit-transition:background-color .3s cubic-bezier(.4,0,.2,1),left .3s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1);transition:background-color .3s cubic-bezier(.4,0,.2,1),left .3s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1);transition:box-shadow .14s cubic-bezier(.4,0,.2,1),background-color .3s cubic-bezier(.4,0,.2,1),left .3s cubic-bezier(.4,0,.2,1);transition:box-shadow .14s cubic-bezier(.4,0,.2,1),background-color .3s cubic-bezier(.4,0,.2,1),left .3s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .14s cubic-bezier(.4,0,.2,1)}.mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,64,129,.5)}.mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{left:20px;background-color:#ff4081}.mdui-switch input[type=checkbox]:focus+.mdui-switch-icon:before,.mdui-switch:active input[type=checkbox]+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(0,0,0,.1);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(0,0,0,.1)}.mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,64,129,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,64,129,.16)}.mdui-switch input[type=checkbox]:disabled+.mdui-switch-icon{background-color:rgba(0,0,0,.12)!important}.mdui-switch input[type=checkbox]:disabled+.mdui-switch-icon:before{background-color:#bdbdbd!important}.mdui-theme-accent-amber .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,215,64,.5)}.mdui-theme-accent-amber .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#ffd740}.mdui-theme-accent-amber .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-theme-accent-amber .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,215,64,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,215,64,.16)}.mdui-theme-accent-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(68,138,255,.5)}.mdui-theme-accent-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#448aff}.mdui-theme-accent-blue .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-theme-accent-blue .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(68,138,255,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(68,138,255,.16)}.mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(24,255,255,.5)}.mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#18ffff}.mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-theme-accent-cyan .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(24,255,255,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(24,255,255,.16)}.mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,110,64,.5)}.mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#ff6e40}.mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-theme-accent-deep-orange .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,110,64,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,110,64,.16)}.mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(124,77,255,.5)}.mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#7c4dff}.mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-theme-accent-deep-purple .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(124,77,255,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(124,77,255,.16)}.mdui-theme-accent-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(105,240,174,.5)}.mdui-theme-accent-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#69f0ae}.mdui-theme-accent-green .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-theme-accent-green .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(105,240,174,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(105,240,174,.16)}.mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(83,109,254,.5)}.mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#536dfe}.mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-theme-accent-indigo .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(83,109,254,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(83,109,254,.16)}.mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(64,196,255,.5)}.mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#40c4ff}.mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-theme-accent-light-blue .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(64,196,255,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(64,196,255,.16)}.mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(178,255,89,.5)}.mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#b2ff59}.mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-theme-accent-light-green .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(178,255,89,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(178,255,89,.16)}.mdui-theme-accent-lime .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(238,255,65,.5)}.mdui-theme-accent-lime .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#eeff41}.mdui-theme-accent-lime .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-theme-accent-lime .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(238,255,65,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(238,255,65,.16)}.mdui-theme-accent-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,171,64,.5)}.mdui-theme-accent-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#ffab40}.mdui-theme-accent-orange .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-theme-accent-orange .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,171,64,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,171,64,.16)}.mdui-theme-accent-pink .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,64,129,.5)}.mdui-theme-accent-pink .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#ff4081}.mdui-theme-accent-pink .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-theme-accent-pink .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,64,129,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,64,129,.16)}.mdui-theme-accent-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(224,64,251,.5)}.mdui-theme-accent-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#e040fb}.mdui-theme-accent-purple .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-theme-accent-purple .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(224,64,251,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(224,64,251,.16)}.mdui-theme-accent-red .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,82,82,.5)}.mdui-theme-accent-red .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#ff5252}.mdui-theme-accent-red .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-theme-accent-red .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,82,82,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,82,82,.16)}.mdui-theme-accent-teal .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(100,255,218,.5)}.mdui-theme-accent-teal .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#64ffda}.mdui-theme-accent-teal .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-theme-accent-teal .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(100,255,218,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(100,255,218,.16)}.mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,255,0,.5)}.mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#ff0}.mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:focus:checked:not(:disabled)+.mdui-switch-icon:before,.mdui-theme-accent-yellow .mdui-switch:active input[type=checkbox]:checked:not(:disabled)+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,255,0,.16);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,255,0,.16)}.mdui-theme-layout-dark .mdui-switch-icon{background-color:rgba(255,255,255,.3)}.mdui-theme-layout-dark .mdui-switch-icon:before{background-color:#bdbdbd}.mdui-theme-layout-dark.mdui-theme-accent-amber .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,229,127,.5)}.mdui-theme-layout-dark.mdui-theme-accent-amber .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#ffe57f}.mdui-theme-layout-dark.mdui-theme-accent-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(130,177,255,.5)}.mdui-theme-layout-dark.mdui-theme-accent-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#82b1ff}.mdui-theme-layout-dark.mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(132,255,255,.5)}.mdui-theme-layout-dark.mdui-theme-accent-cyan .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#84ffff}.mdui-theme-layout-dark.mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,158,128,.5)}.mdui-theme-layout-dark.mdui-theme-accent-deep-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#ff9e80}.mdui-theme-layout-dark.mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(179,136,255,.5)}.mdui-theme-layout-dark.mdui-theme-accent-deep-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#b388ff}.mdui-theme-layout-dark.mdui-theme-accent-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(185,246,202,.5)}.mdui-theme-layout-dark.mdui-theme-accent-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#b9f6ca}.mdui-theme-layout-dark.mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(140,158,255,.5)}.mdui-theme-layout-dark.mdui-theme-accent-indigo .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#8c9eff}.mdui-theme-layout-dark.mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(128,216,255,.5)}.mdui-theme-layout-dark.mdui-theme-accent-light-blue .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#80d8ff}.mdui-theme-layout-dark.mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(204,255,144,.5)}.mdui-theme-layout-dark.mdui-theme-accent-light-green .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#ccff90}.mdui-theme-layout-dark.mdui-theme-accent-lime .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(244,255,129,.5)}.mdui-theme-layout-dark.mdui-theme-accent-lime .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#f4ff81}.mdui-theme-layout-dark.mdui-theme-accent-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,209,128,.5)}.mdui-theme-layout-dark.mdui-theme-accent-orange .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#ffd180}.mdui-theme-layout-dark.mdui-theme-accent-pink .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,128,171,.5)}.mdui-theme-layout-dark.mdui-theme-accent-pink .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#ff80ab}.mdui-theme-layout-dark.mdui-theme-accent-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(234,128,252,.5)}.mdui-theme-layout-dark.mdui-theme-accent-purple .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#ea80fc}.mdui-theme-layout-dark.mdui-theme-accent-red .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,138,128,.5)}.mdui-theme-layout-dark.mdui-theme-accent-red .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#ff8a80}.mdui-theme-layout-dark.mdui-theme-accent-teal .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(167,255,235,.5)}.mdui-theme-layout-dark.mdui-theme-accent-teal .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#a7ffeb}.mdui-theme-layout-dark.mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon{background-color:rgba(255,255,141,.5)}.mdui-theme-layout-dark.mdui-theme-accent-yellow .mdui-switch input[type=checkbox]:checked+.mdui-switch-icon:before{background-color:#ffff8d}.mdui-theme-layout-dark .mdui-switch input[type=checkbox]:focus+.mdui-switch-icon:before,.mdui-theme-layout-dark .mdui-switch:active input[type=checkbox]+.mdui-switch-icon:before{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,255,255,.1);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12),0 0 0 15px rgba(255,255,255,.1)}.mdui-theme-layout-dark .mdui-switch input[type=checkbox]:disabled+.mdui-switch-icon{background-color:rgba(255,255,255,.1)!important}.mdui-theme-layout-dark .mdui-switch input[type=checkbox]:disabled+.mdui-switch-icon:before{background-color:#424242!important}.mdui-slider{position:relative;display:block;width:100%;height:36px}.mdui-slider input[type=range]{position:absolute;top:50%;z-index:2;width:100%;height:20px;-webkit-appearance:none;margin-top:-10px;cursor:pointer;opacity:0;-moz-appearance:none;appearance:none}.mdui-slider-fill,.mdui-slider-track{position:absolute;top:50%;height:2px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:-1px}.mdui-slider-fill:before,.mdui-slider-track:before{display:block;width:100%;height:100%;content:' '}.mdui-slider-track{right:0}.mdui-slider-track:before{background-color:#bdbdbd;-webkit-transition:background-color .3s cubic-bezier(.4,0,.2,1);transition:background-color .3s cubic-bezier(.4,0,.2,1)}.mdui-slider-fill{left:0}.mdui-slider-fill:before{background-color:#ff4081}.mdui-slider-thumb{position:absolute;top:50%;width:12px;height:12px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:-6px;background-color:#ff4081;border:2px solid #ff4081;border-radius:50%;-webkit-transition:background .45s cubic-bezier(.4,0,.2,1),border-color .45s cubic-bezier(.4,0,.2,1),border-radius .2s cubic-bezier(.4,0,.2,1),-webkit-transform .2s cubic-bezier(.4,0,.2,1);transition:background .45s cubic-bezier(.4,0,.2,1),border-color .45s cubic-bezier(.4,0,.2,1),border-radius .2s cubic-bezier(.4,0,.2,1),-webkit-transform .2s cubic-bezier(.4,0,.2,1);transition:background .45s cubic-bezier(.4,0,.2,1),border-color .45s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1),border-radius .2s cubic-bezier(.4,0,.2,1);transition:background .45s cubic-bezier(.4,0,.2,1),border-color .45s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1),border-radius .2s cubic-bezier(.4,0,.2,1),-webkit-transform .2s cubic-bezier(.4,0,.2,1);-webkit-transform:translate(-50%);transform:translate(-50%);will-change:background,border-color,transform,border-radius}.mdui-theme-accent-amber .mdui-slider-fill:before{background-color:#ffd740}.mdui-theme-accent-amber .mdui-slider-thumb{background-color:#ffd740;border:2px solid #ffd740}.mdui-theme-accent-blue .mdui-slider-fill:before{background-color:#448aff}.mdui-theme-accent-blue .mdui-slider-thumb{background-color:#448aff;border:2px solid #448aff}.mdui-theme-accent-cyan .mdui-slider-fill:before{background-color:#18ffff}.mdui-theme-accent-cyan .mdui-slider-thumb{background-color:#18ffff;border:2px solid #18ffff}.mdui-theme-accent-deep-orange .mdui-slider-fill:before{background-color:#ff6e40}.mdui-theme-accent-deep-orange .mdui-slider-thumb{background-color:#ff6e40;border:2px solid #ff6e40}.mdui-theme-accent-deep-purple .mdui-slider-fill:before{background-color:#7c4dff}.mdui-theme-accent-deep-purple .mdui-slider-thumb{background-color:#7c4dff;border:2px solid #7c4dff}.mdui-theme-accent-green .mdui-slider-fill:before{background-color:#69f0ae}.mdui-theme-accent-green .mdui-slider-thumb{background-color:#69f0ae;border:2px solid #69f0ae}.mdui-theme-accent-indigo .mdui-slider-fill:before{background-color:#536dfe}.mdui-theme-accent-indigo .mdui-slider-thumb{background-color:#536dfe;border:2px solid #536dfe}.mdui-theme-accent-light-blue .mdui-slider-fill:before{background-color:#40c4ff}.mdui-theme-accent-light-blue .mdui-slider-thumb{background-color:#40c4ff;border:2px solid #40c4ff}.mdui-theme-accent-light-green .mdui-slider-fill:before{background-color:#b2ff59}.mdui-theme-accent-light-green .mdui-slider-thumb{background-color:#b2ff59;border:2px solid #b2ff59}.mdui-theme-accent-lime .mdui-slider-fill:before{background-color:#eeff41}.mdui-theme-accent-lime .mdui-slider-thumb{background-color:#eeff41;border:2px solid #eeff41}.mdui-theme-accent-orange .mdui-slider-fill:before{background-color:#ffab40}.mdui-theme-accent-orange .mdui-slider-thumb{background-color:#ffab40;border:2px solid #ffab40}.mdui-theme-accent-pink .mdui-slider-fill:before{background-color:#ff4081}.mdui-theme-accent-pink .mdui-slider-thumb{background-color:#ff4081;border:2px solid #ff4081}.mdui-theme-accent-purple .mdui-slider-fill:before{background-color:#e040fb}.mdui-theme-accent-purple .mdui-slider-thumb{background-color:#e040fb;border:2px solid #e040fb}.mdui-theme-accent-red .mdui-slider-fill:before{background-color:#ff5252}.mdui-theme-accent-red .mdui-slider-thumb{background-color:#ff5252;border:2px solid #ff5252}.mdui-theme-accent-teal .mdui-slider-fill:before{background-color:#64ffda}.mdui-theme-accent-teal .mdui-slider-thumb{background-color:#64ffda;border:2px solid #64ffda}.mdui-theme-accent-yellow .mdui-slider-fill:before{background-color:#ff0}.mdui-theme-accent-yellow .mdui-slider-thumb{background-color:#ff0;border:2px solid #ff0}.mdui-slider-focus .mdui-slider-track:before{background-color:#9e9e9e}.mdui-slider-focus .mdui-slider-thumb{-webkit-transform:translate(-50%) scale(1.6);transform:translate(-50%) scale(1.6)}.mdui-slider-zero .mdui-slider-thumb{background-color:#fff;border-color:#bdbdbd}.mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb{border-color:#9e9e9e}.mdui-slider-disabled input[type=range]{cursor:default}.mdui-slider-disabled .mdui-slider-track:before{background-color:#bdbdbd}.mdui-slider-disabled .mdui-slider-fill:before{background-color:#bdbdbd}.mdui-slider-disabled .mdui-slider-thumb{background-color:#bdbdbd;border-color:transparent!important;-webkit-transform:translate(-50%) scale(.72);transform:translate(-50%) scale(.72)}.mdui-slider-discrete .mdui-slider-thumb{width:30px;height:30px;margin-top:-15px;margin-left:-15px;border:none;-webkit-transform:rotate(-45deg) scale(.4);transform:rotate(-45deg) scale(.4)}.mdui-slider-discrete .mdui-slider-thumb span{position:absolute;top:9px;left:-1px;width:100%;font-size:12px;color:#fff;text-align:center;opacity:0;-webkit-transition:opacity .25s cubic-bezier(.4,0,.2,1);transition:opacity .25s cubic-bezier(.4,0,.2,1);-webkit-transform:rotate(45deg);transform:rotate(45deg)}.mdui-slider-discrete.mdui-slider-focus .mdui-slider-thumb{border-radius:15px 15px 15px 0;-webkit-transform:rotate(-45deg) scale(1) translate(22px,-22px);transform:rotate(-45deg) scale(1) translate(22px,-22px)}.mdui-slider-discrete.mdui-slider-focus .mdui-slider-thumb span{opacity:1}.mdui-slider-discrete.mdui-slider-zero .mdui-slider-thumb{background-color:#323232}.mdui-slider-discrete.mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb{background-color:#bdbdbd}.mdui-slider-discrete.mdui-slider-disabled .mdui-slider-thumb{-webkit-transform:rotate(-45deg) scale(.288);transform:rotate(-45deg) scale(.288)}.mdui-slider-discrete.mdui-slider-zero.mdui-slider-disabled .mdui-slider-thumb{background-color:#bdbdbd}.mdui-theme-layout-dark .mdui-slider-track:before{background-color:#4c4c4c}.mdui-theme-layout-dark .mdui-slider-focus .mdui-slider-track:before{background-color:#4c4c4c}.mdui-theme-layout-dark .mdui-slider-zero .mdui-slider-thumb{background-color:#303030;border-color:#4c4c4c}.mdui-theme-layout-dark .mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb{border-color:#4c4c4c}.mdui-theme-layout-dark .mdui-slider-disabled .mdui-slider-track:before{background-color:#4c4c4c}.mdui-theme-layout-dark .mdui-slider-disabled .mdui-slider-fill:before{background-color:#4c4c4c}.mdui-theme-layout-dark .mdui-slider-disabled .mdui-slider-thumb{background-color:#4c4c4c}.mdui-theme-layout-dark .mdui-slider-discrete.mdui-slider-zero .mdui-slider-thumb{background-color:#fefefe}.mdui-theme-layout-dark .mdui-slider-discrete.mdui-slider-zero.mdui-slider-focus .mdui-slider-thumb{background-color:#5c5c5c}.mdui-theme-layout-dark .mdui-slider-discrete.mdui-slider-zero.mdui-slider-disabled .mdui-slider-thumb{background-color:#4c4c4c}.mdui-btn,.mdui-fab{position:relative;display:inline-block;min-width:88px;height:36px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 16px;margin:0;overflow:hidden;font-size:14px;font-weight:500;line-height:36px;color:inherit;text-align:center;text-decoration:none;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;zoom:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:0 0;border:none;border-radius:2px;outline:0;-webkit-transition:all .2s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .2s cubic-bezier(.4,0,1,1);transition:all .2s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .2s cubic-bezier(.4,0,1,1);transition:all .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,1,1);transition:all .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,1,1),-webkit-box-shadow .2s cubic-bezier(.4,0,1,1);will-change:box-shadow;-webkit-user-drag:none}.mdui-btn:hover,.mdui-fab:hover{background-color:rgba(0,0,0,.1)}.mdui-btn:not(.mdui-ripple):active,.mdui-fab:not(.mdui-ripple):active{background-color:rgba(0,0,0,.165)}.mdui-btn[class*=mdui-color-]:hover,.mdui-fab[class*=mdui-color-]:hover{opacity:.87}.mdui-btn:not(.mdui-ripple)[class*=mdui-color-]:active,.mdui-fab:not(.mdui-ripple)[class*=mdui-color-]:active{opacity:.76}.mdui-btn .mdui-icon-left,.mdui-btn .mdui-icon-left::before,.mdui-btn .mdui-icon-right,.mdui-btn .mdui-icon-right::before{height:inherit;font-size:1.3em;line-height:inherit}.mdui-btn .mdui-icon-left{float:left;margin-right:.4em}.mdui-btn .mdui-icon-right{float:right;margin-left:.4em}input.mdui-btn[type=submit]{-webkit-appearance:none;-moz-appearance:none;appearance:none}.mdui-btn-raised{-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mdui-btn-raised:hover{-webkit-box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.mdui-btn-raised:active{-webkit-box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mdui-btn[disabled],.mdui-btn[disabled]:active,.mdui-btn[disabled]:focus,.mdui-btn[disabled]:hover,.mdui-fab[disabled],.mdui-fab[disabled]:active,.mdui-fab[disabled]:focus,.mdui-fab[disabled]:hover{color:rgba(0,0,0,.26)!important;cursor:default!important;background-color:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important;opacity:1!important}.mdui-btn[disabled] .mdui-icon,.mdui-btn[disabled]:active .mdui-icon,.mdui-btn[disabled]:focus .mdui-icon,.mdui-btn[disabled]:hover .mdui-icon,.mdui-fab[disabled] .mdui-icon,.mdui-fab[disabled]:active .mdui-icon,.mdui-fab[disabled]:focus .mdui-icon,.mdui-fab[disabled]:hover .mdui-icon{color:rgba(0,0,0,.26)!important}.mdui-btn-raised[disabled],.mdui-btn-raised[disabled]:active,.mdui-btn-raised[disabled]:focus,.mdui-btn-raised[disabled]:hover,.mdui-fab[disabled],.mdui-fab[disabled]:active,.mdui-fab[disabled]:focus,.mdui-fab[disabled]:hover{background-color:rgba(0,0,0,.12)!important;-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)!important;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)!important}.mdui-btn-bold{font-weight:700}.mdui-btn-icon{width:36px;min-width:36px;height:36px;padding:0;margin-right:0;margin-left:0;overflow:hidden;font-size:24px;line-height:normal;border-radius:50%}.mdui-btn-icon .mdui-icon{position:absolute;top:50%;left:50%;width:24px;line-height:24px;-webkit-transform:translate(-12px,-12px);transform:translate(-12px,-12px)}.mdui-btn-icon.mdui-ripple{-webkit-transform:translateZ(0);transform:translateZ(0)}.mdui-btn-block{display:block;width:100%}.mdui-btn-dense{height:32px;font-size:13px;line-height:32px}.mdui-btn-dense.mdui-btn-icon{width:32px;min-width:32px}.mdui-btn-group{position:relative;display:inline-block;vertical-align:middle}.mdui-btn-group .mdui-btn{float:left;min-width:inherit;padding:0 12px;color:rgba(0,0,0,.54);border-radius:0}.mdui-btn-group .mdui-btn:before{position:absolute;top:0;bottom:0;left:0;content:' ';border-left:1px solid transparent}.mdui-btn-group .mdui-btn:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.mdui-btn-group .mdui-btn:first-child:before{border-left:none}.mdui-btn-group .mdui-btn:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px}.mdui-btn-group .mdui-btn.mdui-btn-active{color:rgba(0,0,0,.87);background-color:rgba(0,0,0,.215)}.mdui-btn-group .mdui-btn.mdui-btn-active+.mdui-btn-active:before{border-left:1px solid rgba(0,0,0,.145)}.mdui-theme-layout-dark .mdui-btn:hover,.mdui-theme-layout-dark .mdui-fab:hover{background-color:rgba(255,255,255,.1)}.mdui-theme-layout-dark .mdui-btn:not(.mdui-ripple):active,.mdui-theme-layout-dark .mdui-fab:not(.mdui-ripple):active{background-color:rgba(255,255,255,.165)}.mdui-theme-layout-dark .mdui-btn[class*=mdui-color-]:hover,.mdui-theme-layout-dark .mdui-fab[class*=mdui-color-]:hover{opacity:.87}.mdui-theme-layout-dark .mdui-btn:not(.mdui-ripple)[class*=mdui-color-]:active,.mdui-theme-layout-dark .mdui-fab:not(.mdui-ripple)[class*=mdui-color-]:active{opacity:.76}.mdui-theme-layout-dark .mdui-btn[disabled],.mdui-theme-layout-dark .mdui-btn[disabled]:active,.mdui-theme-layout-dark .mdui-btn[disabled]:focus,.mdui-theme-layout-dark .mdui-btn[disabled]:hover,.mdui-theme-layout-dark .mdui-fab[disabled],.mdui-theme-layout-dark .mdui-fab[disabled]:active,.mdui-theme-layout-dark .mdui-fab[disabled]:focus,.mdui-theme-layout-dark .mdui-fab[disabled]:hover{color:rgba(255,255,255,.3)!important;background-color:transparent!important}.mdui-theme-layout-dark .mdui-btn[disabled] .mdui-icon,.mdui-theme-layout-dark .mdui-btn[disabled]:active .mdui-icon,.mdui-theme-layout-dark .mdui-btn[disabled]:focus .mdui-icon,.mdui-theme-layout-dark .mdui-btn[disabled]:hover .mdui-icon,.mdui-theme-layout-dark .mdui-fab[disabled] .mdui-icon,.mdui-theme-layout-dark .mdui-fab[disabled]:active .mdui-icon,.mdui-theme-layout-dark .mdui-fab[disabled]:focus .mdui-icon,.mdui-theme-layout-dark .mdui-fab[disabled]:hover .mdui-icon{color:rgba(255,255,255,.3)!important}.mdui-theme-layout-dark .mdui-btn-raised[disabled],.mdui-theme-layout-dark .mdui-btn-raised[disabled]:active,.mdui-theme-layout-dark .mdui-btn-raised[disabled]:focus,.mdui-theme-layout-dark .mdui-btn-raised[disabled]:hover,.mdui-theme-layout-dark .mdui-fab[disabled],.mdui-theme-layout-dark .mdui-fab[disabled]:active,.mdui-theme-layout-dark .mdui-fab[disabled]:focus,.mdui-theme-layout-dark .mdui-fab[disabled]:hover{background-color:rgba(255,255,255,.12)!important}.mdui-fab{width:56px;min-width:56px;height:56px;padding:0!important;margin:auto;overflow:hidden;font-size:24px;line-height:normal!important;border-radius:50%;-webkit-box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12);box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.mdui-fab:hover{-webkit-box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mdui-fab:active{-webkit-box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12);box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.mdui-fab .mdui-icon{position:absolute;top:0;left:0;width:24px;margin-top:16px;margin-left:16px;line-height:24px}.mdui-fab-mini{width:40px;min-width:40px;height:40px}.mdui-fab-mini .mdui-icon{margin-top:8px;margin-left:8px}.mdui-fab-fixed,.mdui-fab-wrapper{position:fixed!important;right:16px;bottom:16px}@media (min-width:1024px){.mdui-fab-fixed,.mdui-fab-wrapper{right:24px;bottom:24px}}.mdui-fab-wrapper{position:relative;z-index:4000;width:56px;height:56px;padding-top:8px;text-align:center}.mdui-fab-wrapper>.mdui-fab .mdui-icon:not(.mdui-fab-opened){opacity:1;-webkit-transition:all .2s cubic-bezier(.4,0,.2,1);transition:all .2s cubic-bezier(.4,0,.2,1);will-change:opacity,transform}.mdui-fab-wrapper>.mdui-fab .mdui-icon.mdui-fab-opened{opacity:0;-webkit-transition:all .2s cubic-bezier(.4,0,.2,1);transition:all .2s cubic-bezier(.4,0,.2,1);-webkit-transform:rotate(225deg);transform:rotate(225deg);will-change:opacity,transform}.mdui-fab-wrapper>.mdui-fab.mdui-fab-opened .mdui-icon:not(.mdui-fab-opened){opacity:0;-webkit-transform:rotate(225deg);transform:rotate(225deg)}.mdui-fab-wrapper>.mdui-fab.mdui-fab-opened .mdui-icon.mdui-fab-opened{opacity:1;-webkit-transform:rotate(360deg);transform:rotate(360deg)}.mdui-fab-wrapper>.mdui-fab-mini{margin-top:8px}.mdui-fab-wrapper .mdui-fab-dial{position:absolute;right:0;bottom:64px;left:0;height:0;text-align:center;visibility:visible}.mdui-fab-wrapper .mdui-fab-dial .mdui-fab{margin:8px 0;opacity:0;-webkit-transition:color .2s cubic-bezier(.4,0,.2,1),opacity 150ms cubic-bezier(.4,0,.2,1),-webkit-box-shadow .2s cubic-bezier(.4,0,1,1),-webkit-transform 150ms cubic-bezier(.4,0,.2,1);transition:color .2s cubic-bezier(.4,0,.2,1),opacity 150ms cubic-bezier(.4,0,.2,1),-webkit-box-shadow .2s cubic-bezier(.4,0,1,1),-webkit-transform 150ms cubic-bezier(.4,0,.2,1);transition:box-shadow .2s cubic-bezier(.4,0,1,1),color .2s cubic-bezier(.4,0,.2,1),transform 150ms cubic-bezier(.4,0,.2,1),opacity 150ms cubic-bezier(.4,0,.2,1);transition:box-shadow .2s cubic-bezier(.4,0,1,1),color .2s cubic-bezier(.4,0,.2,1),transform 150ms cubic-bezier(.4,0,.2,1),opacity 150ms cubic-bezier(.4,0,.2,1),-webkit-box-shadow .2s cubic-bezier(.4,0,1,1),-webkit-transform 150ms cubic-bezier(.4,0,.2,1);-webkit-transform:scale(0);transform:scale(0)}.mdui-fab-wrapper .mdui-fab-dial.mdui-fab-dial-show .mdui-fab{opacity:1;-webkit-transform:scale(1);transform:scale(1)}.mdui-fab,.mdui-fab-mini,.mdui-fab-wrapper{-webkit-transition:all .2s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .2s cubic-bezier(.4,0,1,1),-webkit-transform .2s;transition:all .2s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .2s cubic-bezier(.4,0,1,1),-webkit-transform .2s;transition:all .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,1,1),transform .2s;transition:all .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,1,1),transform .2s,-webkit-box-shadow .2s cubic-bezier(.4,0,1,1),-webkit-transform .2s;-webkit-transform:scale(1) translateZ(0);transform:scale(1) translateZ(0);will-change:transform}.mdui-fab-mini.mdui-fab-hide,.mdui-fab-wrapper.mdui-fab-hide,.mdui-fab.mdui-fab-hide{-webkit-transform:scale(0) translateZ(0);transform:scale(0) translateZ(0)}.mdui-select{position:relative;display:inline-block;max-width:100%;height:36px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;padding-right:24px;padding-left:0;font-family:Roboto,Noto,Helvetica,Arial,sans-serif;font-size:16px;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2210%22%20height%3D%2210%22%20viewBox%3D%220%200%2010%2010%22%3E%3Cpath%20d%3D%22m-0.00254%2C2.5l5%2C5l5%2C-5l-10%2C0z%22%20fill%3D%22%23000000%22%20opacity%3D%220.54%22%2F%3E%3C%2Fsvg%3E%0A);background-repeat:no-repeat;background-position:right center;border:none;border-bottom:1px solid rgba(0,0,0,.12);outline:0;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:background-color,background-position-x,-webkit-box-shadow;transition-property:background-color,background-position-x,-webkit-box-shadow;transition-property:background-color,box-shadow,background-position-x;transition-property:background-color,box-shadow,background-position-x,-webkit-box-shadow;-moz-appearance:none;appearance:none;will-change:background-color,box-shadow,background-position-x}.mdui-select.mdui-select-open{border-bottom:none}.mdui-select-position-top{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2210%22%20height%3D%2210%22%20viewBox%3D%220%200%2010%2010%22%3E%3Cpath%20d%3D%22m-0.00254%2C2.5l5%2C5l5%2C-5l-10%2C0z%22%20fill%3D%22%23000000%22%20opacity%3D%220.54%22%20transform%3D%22rotate(-180%205%2C5)%22%2F%3E%3C%2Fsvg%3E%0A")}.mdui-select-open.mdui-select-position-bottom,.mdui-select-open.mdui-select-position-top{z-index:99999;background-color:#fff;background-position-x:calc(100% - 12px);border-radius:2px}.mdui-select-open.mdui-select-position-top{border-top:1px solid rgba(0,0,0,.12);border-bottom:2px solid transparent;border-top-left-radius:0;border-top-right-radius:0;-webkit-box-shadow:0 10px 10px -3px rgba(0,0,0,.2),0 0 14px 1px rgba(0,0,0,.14),0 -7px 24px 2px rgba(0,0,0,.12);box-shadow:0 10px 10px -3px rgba(0,0,0,.2),0 0 14px 1px rgba(0,0,0,.14),0 -7px 24px 2px rgba(0,0,0,.12)}.mdui-select-open.mdui-select-position-top .mdui-select-menu{border-bottom-right-radius:0;border-bottom-left-radius:0;-webkit-box-shadow:0 -4px 4px -2px rgba(0,0,0,.06),8px 0 8px -4px rgba(0,0,0,.12),-8px 0 8px -4px rgba(0,0,0,.12);box-shadow:0 -4px 4px -2px rgba(0,0,0,.06),8px 0 8px -4px rgba(0,0,0,.12),-8px 0 8px -4px rgba(0,0,0,.12)}.mdui-select-open.mdui-select-position-bottom{border-bottom:1px solid rgba(0,0,0,.12);border-bottom-right-radius:0;border-bottom-left-radius:0;-webkit-box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mdui-select-open.mdui-select-position-bottom .mdui-select-menu{border-top-left-radius:0;border-top-right-radius:0;-webkit-box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 9px 9px 1px rgba(0,0,0,.14),0 8px 8px 2px rgba(0,0,0,.06);box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 9px 9px 1px rgba(0,0,0,.14),0 8px 8px 2px rgba(0,0,0,.06)}.mdui-select-selected{position:absolute;top:50%;right:24px;left:0;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-transition:left .2s cubic-bezier(0,0,.2,1);transition:left .2s cubic-bezier(0,0,.2,1);-webkit-transform:translateY(-50%);transform:translateY(-50%)}.mdui-select-open .mdui-select-selected{right:32px;left:16px}.mdui-select-open.mdui-select-position-auto .mdui-select-selected{visibility:hidden}.mdui-select-menu{position:relative;z-index:99999;height:36px;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 -24px 0 0;overflow-y:scroll;-webkit-overflow-scrolling:touch;color:rgba(0,0,0,.87);cursor:default;visibility:hidden;background-color:#fff;border-radius:2px;-webkit-box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);opacity:0;-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:opacity,visibility,-webkit-transform;transition-property:opacity,visibility,-webkit-transform;transition-property:transform,opacity,visibility;transition-property:transform,opacity,visibility,-webkit-transform;-webkit-transform:scale(1,0);transform:scale(1,0);will-change:transform,opacity,visibility}.mdui-select-open .mdui-select-menu{overflow-y:hidden;visibility:visible;opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1)}.mdui-select-closing .mdui-select-menu{overflow-y:hidden;visibility:visible;-webkit-box-shadow:none;box-shadow:none;opacity:0;-webkit-transform:scale(1,1);transform:scale(1,1)}.mdui-select-menu-item{height:48px;padding:0 16px;overflow:hidden;line-height:48px;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.mdui-select-menu-item:hover{background-color:#eee}.mdui-select-menu-item:first-child{margin-top:8px}.mdui-select-menu-item:last-child{margin-bottom:8px}.mdui-select-menu-item[disabled]{color:rgba(0,0,0,.38)!important;cursor:default}.mdui-select-menu-item[disabled]:hover{background-color:inherit!important}.mdui-select-menu-item[selected]{color:#ff4081}select.mdui-select{background-color:transparent}select.mdui-select option{color:rgba(0,0,0,.87)}select.mdui-select::-ms-expand{display:none}select.mdui-select[multiple]{height:auto;padding:0;font-size:15px;cursor:default;background-color:#fff;background-image:none;border:1px solid rgba(0,0,0,.38)}select.mdui-select[multiple] optgroup{padding:0 0 0 16px;margin:8px 0 0 0;color:rgba(0,0,0,.38)}select.mdui-select[multiple] optgroup:last-child{margin-bottom:8px}select.mdui-select[multiple] optgroup:not(:first-child){padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}select.mdui-select[multiple] option{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:32px;padding:0 16px;margin:0 0 0 -16px;color:rgba(0,0,0,.87);-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}select.mdui-select[multiple] option:first-child{margin-top:8px}select.mdui-select[multiple] option:last-child{margin-bottom:8px}.mdui-theme-accent-amber .mdui-select-menu-item[selected]{color:#ffc107}.mdui-theme-accent-blue .mdui-select-menu-item[selected]{color:#2196f3}.mdui-theme-accent-cyan .mdui-select-menu-item[selected]{color:#00bcd4}.mdui-theme-accent-deep-orange .mdui-select-menu-item[selected]{color:#ff5722}.mdui-theme-accent-deep-purple .mdui-select-menu-item[selected]{color:#673ab7}.mdui-theme-accent-green .mdui-select-menu-item[selected]{color:#4caf50}.mdui-theme-accent-indigo .mdui-select-menu-item[selected]{color:#3f51b5}.mdui-theme-accent-light-blue .mdui-select-menu-item[selected]{color:#03a9f4}.mdui-theme-accent-light-green .mdui-select-menu-item[selected]{color:#8bc34a}.mdui-theme-accent-lime .mdui-select-menu-item[selected]{color:#cddc39}.mdui-theme-accent-orange .mdui-select-menu-item[selected]{color:#ff9800}.mdui-theme-accent-pink .mdui-select-menu-item[selected]{color:#e91e63}.mdui-theme-accent-purple .mdui-select-menu-item[selected]{color:#9c27b0}.mdui-theme-accent-red .mdui-select-menu-item[selected]{color:#f44336}.mdui-theme-accent-teal .mdui-select-menu-item[selected]{color:#009688}.mdui-theme-accent-yellow .mdui-select-menu-item[selected]{color:#ffeb3b}.mdui-theme-layout-dark .mdui-select{background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2210%22%20height%3D%2210%22%20viewBox%3D%220%200%2010%2010%22%3E%3Cpath%20d%3D%22m-0.00254%2C2.5l5%2C5l5%2C-5l-10%2C0z%22%20fill%3D%22%23FFFFFF%22%2F%3E%3C%2Fsvg%3E%0A);border-bottom:1px solid rgba(255,255,255,.12)}.mdui-theme-layout-dark .mdui-select-position-top{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2210%22%20height%3D%2210%22%20viewBox%3D%220%200%2010%2010%22%3E%3Cpath%20d%3D%22m-0.00254%2C2.5l5%2C5l5%2C-5l-10%2C0z%22%20fill%3D%22%23FFFFFF%22%20transform%3D%22rotate(-180%205%2C5)%22%2F%3E%3C%2Fsvg%3E%0A")}.mdui-theme-layout-dark .mdui-select-open.mdui-select-position-bottom,.mdui-theme-layout-dark .mdui-select-open.mdui-select-position-top{background-color:#424242}.mdui-theme-layout-dark .mdui-select-open.mdui-select-position-top{border-top:1px solid rgba(255,255,255,.12)}.mdui-theme-layout-dark .mdui-select-open.mdui-select-position-bottom{border-bottom:1px solid rgba(255,255,255,.12)}.mdui-theme-layout-dark .mdui-select-menu{color:#fff;background-color:#424242}.mdui-theme-layout-dark .mdui-select-menu-item:hover{background-color:#616161}.mdui-theme-layout-dark .mdui-select-menu-item[disabled]{color:rgba(255,255,255,.5)!important}.mdui-theme-layout-dark select.mdui-select{color:#fff;background-color:#303030}.mdui-theme-layout-dark select.mdui-select option{color:#fff;background-color:#303030}.mdui-theme-layout-dark select.mdui-select[multiple]{border:1px solid rgba(255,255,255,.5)}.mdui-theme-layout-dark select.mdui-select[multiple] optgroup{color:rgba(255,255,255,.5)}.mdui-theme-layout-dark select.mdui-select[multiple] optgroup:not(:first-child){border-top:1px solid rgba(255,255,255,.12)}.mdui-container,.mdui-container-fluid{-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:8px;padding-left:8px;margin-right:auto;margin-left:auto}.mdui-container-fluid:after,.mdui-container:after{display:table;clear:both;content:''}.mdui-container{width:96%;max-width:1280px}@media (min-width:600px){.mdui-container{width:94%}}@media (min-width:1024px){.mdui-container{width:92%}}.mdui-row,[class*=mdui-row-]{margin-right:-8px;margin-left:-8px}.mdui-row:after,[class*=mdui-row-]:after{display:table;clear:both;content:''}.mdui-col,[class*=mdui-col-lg-],[class*=mdui-col-md-],[class*=mdui-col-sm-],[class*=mdui-col-xl-],[class*=mdui-col-xs-]{position:relative;min-height:1px;-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:8px;padding-left:8px}.mdui-row-gapless .mdui-col,.mdui-row-gapless [class*=mdui-col-lg-],.mdui-row-gapless [class*=mdui-col-md-],.mdui-row-gapless [class*=mdui-col-sm-],.mdui-row-gapless [class*=mdui-col-xl-],.mdui-row-gapless [class*=mdui-col-xs-]{padding-right:0;padding-left:0}.mdui-row-gapless .mdui-row,.mdui-row-gapless [class*=mdui-row-]{margin-right:0;margin-left:0}.mdui-col-xs-1{float:left;width:8.333333%}.mdui-col-offset-xs-1{margin-left:8.333333%}.mdui-row-xs-1 .mdui-col{float:left;width:100%}.mdui-col-xs-2{float:left;width:16.666667%}.mdui-col-offset-xs-2{margin-left:16.666667%}.mdui-row-xs-2 .mdui-col{float:left;width:50%}.mdui-col-xs-3{float:left;width:25%}.mdui-col-offset-xs-3{margin-left:25%}.mdui-row-xs-3 .mdui-col{float:left;width:33.333333%}.mdui-col-xs-4{float:left;width:33.333333%}.mdui-col-offset-xs-4{margin-left:33.333333%}.mdui-row-xs-4 .mdui-col{float:left;width:25%}.mdui-col-xs-5{float:left;width:41.666667%}.mdui-col-offset-xs-5{margin-left:41.666667%}.mdui-row-xs-5 .mdui-col{float:left;width:20%}.mdui-col-xs-6{float:left;width:50%}.mdui-col-offset-xs-6{margin-left:50%}.mdui-row-xs-6 .mdui-col{float:left;width:16.666667%}.mdui-col-xs-7{float:left;width:58.333333%}.mdui-col-offset-xs-7{margin-left:58.333333%}.mdui-row-xs-7 .mdui-col{float:left;width:14.285714%}.mdui-col-xs-8{float:left;width:66.666667%}.mdui-col-offset-xs-8{margin-left:66.666667%}.mdui-row-xs-8 .mdui-col{float:left;width:12.5%}.mdui-col-xs-9{float:left;width:75%}.mdui-col-offset-xs-9{margin-left:75%}.mdui-row-xs-9 .mdui-col{float:left;width:11.111111%}.mdui-col-xs-10{float:left;width:83.333333%}.mdui-col-offset-xs-10{margin-left:83.333333%}.mdui-row-xs-10 .mdui-col{float:left;width:10%}.mdui-col-xs-11{float:left;width:91.666667%}.mdui-col-offset-xs-11{margin-left:91.666667%}.mdui-row-xs-11 .mdui-col{float:left;width:9.090909%}.mdui-col-xs-12{float:left;width:100%}.mdui-col-offset-xs-12{margin-left:100%}.mdui-row-xs-12 .mdui-col{float:left;width:8.333333%}@media (min-width:600px){.mdui-col-sm-1{float:left;width:8.333333%}.mdui-col-offset-sm-1{margin-left:8.333333%}.mdui-row-sm-1 .mdui-col{float:left;width:100%}.mdui-col-sm-2{float:left;width:16.666667%}.mdui-col-offset-sm-2{margin-left:16.666667%}.mdui-row-sm-2 .mdui-col{float:left;width:50%}.mdui-col-sm-3{float:left;width:25%}.mdui-col-offset-sm-3{margin-left:25%}.mdui-row-sm-3 .mdui-col{float:left;width:33.333333%}.mdui-col-sm-4{float:left;width:33.333333%}.mdui-col-offset-sm-4{margin-left:33.333333%}.mdui-row-sm-4 .mdui-col{float:left;width:25%}.mdui-col-sm-5{float:left;width:41.666667%}.mdui-col-offset-sm-5{margin-left:41.666667%}.mdui-row-sm-5 .mdui-col{float:left;width:20%}.mdui-col-sm-6{float:left;width:50%}.mdui-col-offset-sm-6{margin-left:50%}.mdui-row-sm-6 .mdui-col{float:left;width:16.666667%}.mdui-col-sm-7{float:left;width:58.333333%}.mdui-col-offset-sm-7{margin-left:58.333333%}.mdui-row-sm-7 .mdui-col{float:left;width:14.285714%}.mdui-col-sm-8{float:left;width:66.666667%}.mdui-col-offset-sm-8{margin-left:66.666667%}.mdui-row-sm-8 .mdui-col{float:left;width:12.5%}.mdui-col-sm-9{float:left;width:75%}.mdui-col-offset-sm-9{margin-left:75%}.mdui-row-sm-9 .mdui-col{float:left;width:11.111111%}.mdui-col-sm-10{float:left;width:83.333333%}.mdui-col-offset-sm-10{margin-left:83.333333%}.mdui-row-sm-10 .mdui-col{float:left;width:10%}.mdui-col-sm-11{float:left;width:91.666667%}.mdui-col-offset-sm-11{margin-left:91.666667%}.mdui-row-sm-11 .mdui-col{float:left;width:9.090909%}.mdui-col-sm-12{float:left;width:100%}.mdui-col-offset-sm-12{margin-left:100%}.mdui-row-sm-12 .mdui-col{float:left;width:8.333333%}}@media (min-width:1024px){.mdui-col-md-1{float:left;width:8.333333%}.mdui-col-offset-md-1{margin-left:8.333333%}.mdui-row-md-1 .mdui-col{float:left;width:100%}.mdui-col-md-2{float:left;width:16.666667%}.mdui-col-offset-md-2{margin-left:16.666667%}.mdui-row-md-2 .mdui-col{float:left;width:50%}.mdui-col-md-3{float:left;width:25%}.mdui-col-offset-md-3{margin-left:25%}.mdui-row-md-3 .mdui-col{float:left;width:33.333333%}.mdui-col-md-4{float:left;width:33.333333%}.mdui-col-offset-md-4{margin-left:33.333333%}.mdui-row-md-4 .mdui-col{float:left;width:25%}.mdui-col-md-5{float:left;width:41.666667%}.mdui-col-offset-md-5{margin-left:41.666667%}.mdui-row-md-5 .mdui-col{float:left;width:20%}.mdui-col-md-6{float:left;width:50%}.mdui-col-offset-md-6{margin-left:50%}.mdui-row-md-6 .mdui-col{float:left;width:16.666667%}.mdui-col-md-7{float:left;width:58.333333%}.mdui-col-offset-md-7{margin-left:58.333333%}.mdui-row-md-7 .mdui-col{float:left;width:14.285714%}.mdui-col-md-8{float:left;width:66.666667%}.mdui-col-offset-md-8{margin-left:66.666667%}.mdui-row-md-8 .mdui-col{float:left;width:12.5%}.mdui-col-md-9{float:left;width:75%}.mdui-col-offset-md-9{margin-left:75%}.mdui-row-md-9 .mdui-col{float:left;width:11.111111%}.mdui-col-md-10{float:left;width:83.333333%}.mdui-col-offset-md-10{margin-left:83.333333%}.mdui-row-md-10 .mdui-col{float:left;width:10%}.mdui-col-md-11{float:left;width:91.666667%}.mdui-col-offset-md-11{margin-left:91.666667%}.mdui-row-md-11 .mdui-col{float:left;width:9.090909%}.mdui-col-md-12{float:left;width:100%}.mdui-col-offset-md-12{margin-left:100%}.mdui-row-md-12 .mdui-col{float:left;width:8.333333%}}@media (min-width:1440px){.mdui-col-lg-1{float:left;width:8.333333%}.mdui-col-offset-lg-1{margin-left:8.333333%}.mdui-row-lg-1 .mdui-col{float:left;width:100%}.mdui-col-lg-2{float:left;width:16.666667%}.mdui-col-offset-lg-2{margin-left:16.666667%}.mdui-row-lg-2 .mdui-col{float:left;width:50%}.mdui-col-lg-3{float:left;width:25%}.mdui-col-offset-lg-3{margin-left:25%}.mdui-row-lg-3 .mdui-col{float:left;width:33.333333%}.mdui-col-lg-4{float:left;width:33.333333%}.mdui-col-offset-lg-4{margin-left:33.333333%}.mdui-row-lg-4 .mdui-col{float:left;width:25%}.mdui-col-lg-5{float:left;width:41.666667%}.mdui-col-offset-lg-5{margin-left:41.666667%}.mdui-row-lg-5 .mdui-col{float:left;width:20%}.mdui-col-lg-6{float:left;width:50%}.mdui-col-offset-lg-6{margin-left:50%}.mdui-row-lg-6 .mdui-col{float:left;width:16.666667%}.mdui-col-lg-7{float:left;width:58.333333%}.mdui-col-offset-lg-7{margin-left:58.333333%}.mdui-row-lg-7 .mdui-col{float:left;width:14.285714%}.mdui-col-lg-8{float:left;width:66.666667%}.mdui-col-offset-lg-8{margin-left:66.666667%}.mdui-row-lg-8 .mdui-col{float:left;width:12.5%}.mdui-col-lg-9{float:left;width:75%}.mdui-col-offset-lg-9{margin-left:75%}.mdui-row-lg-9 .mdui-col{float:left;width:11.111111%}.mdui-col-lg-10{float:left;width:83.333333%}.mdui-col-offset-lg-10{margin-left:83.333333%}.mdui-row-lg-10 .mdui-col{float:left;width:10%}.mdui-col-lg-11{float:left;width:91.666667%}.mdui-col-offset-lg-11{margin-left:91.666667%}.mdui-row-lg-11 .mdui-col{float:left;width:9.090909%}.mdui-col-lg-12{float:left;width:100%}.mdui-col-offset-lg-12{margin-left:100%}.mdui-row-lg-12 .mdui-col{float:left;width:8.333333%}}@media (min-width:1920px){.mdui-col-xl-1{float:left;width:8.333333%}.mdui-col-offset-xl-1{margin-left:8.333333%}.mdui-row-xl-1 .mdui-col{float:left;width:100%}.mdui-col-xl-2{float:left;width:16.666667%}.mdui-col-offset-xl-2{margin-left:16.666667%}.mdui-row-xl-2 .mdui-col{float:left;width:50%}.mdui-col-xl-3{float:left;width:25%}.mdui-col-offset-xl-3{margin-left:25%}.mdui-row-xl-3 .mdui-col{float:left;width:33.333333%}.mdui-col-xl-4{float:left;width:33.333333%}.mdui-col-offset-xl-4{margin-left:33.333333%}.mdui-row-xl-4 .mdui-col{float:left;width:25%}.mdui-col-xl-5{float:left;width:41.666667%}.mdui-col-offset-xl-5{margin-left:41.666667%}.mdui-row-xl-5 .mdui-col{float:left;width:20%}.mdui-col-xl-6{float:left;width:50%}.mdui-col-offset-xl-6{margin-left:50%}.mdui-row-xl-6 .mdui-col{float:left;width:16.666667%}.mdui-col-xl-7{float:left;width:58.333333%}.mdui-col-offset-xl-7{margin-left:58.333333%}.mdui-row-xl-7 .mdui-col{float:left;width:14.285714%}.mdui-col-xl-8{float:left;width:66.666667%}.mdui-col-offset-xl-8{margin-left:66.666667%}.mdui-row-xl-8 .mdui-col{float:left;width:12.5%}.mdui-col-xl-9{float:left;width:75%}.mdui-col-offset-xl-9{margin-left:75%}.mdui-row-xl-9 .mdui-col{float:left;width:11.111111%}.mdui-col-xl-10{float:left;width:83.333333%}.mdui-col-offset-xl-10{margin-left:83.333333%}.mdui-row-xl-10 .mdui-col{float:left;width:10%}.mdui-col-xl-11{float:left;width:91.666667%}.mdui-col-offset-xl-11{margin-left:91.666667%}.mdui-row-xl-11 .mdui-col{float:left;width:9.090909%}.mdui-col-xl-12{float:left;width:100%}.mdui-col-offset-xl-12{margin-left:100%}.mdui-row-xl-12 .mdui-col{float:left;width:8.333333%}}.mdui-toolbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.mdui-toolbar>*{margin:0 16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mdui-toolbar[class*=mdui-color-]:not(.mdui-color-transparent) .mdui-btn:hover{background-color:rgba(255,255,255,.1)}.mdui-toolbar[class*=mdui-color-]:not(.mdui-color-transparent) .mdui-btn:active{background-color:rgba(255,255,255,.165)}.mdui-toolbar>a{color:inherit;text-decoration:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdui-toolbar>.mdui-btn-icon{width:48px;min-width:48px;height:48px}@media (orientation:landscape) and (max-width:959px){.mdui-toolbar>.mdui-btn-icon{width:40px;min-width:40px;height:40px}}.mdui-toolbar>.mdui-btn-icon .mdui-icon{height:24px;line-height:24px}.mdui-toolbar .mdui-icon{color:inherit}.mdui-toolbar-spacer{margin:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.mdui-toolbar{height:56px;line-height:56px}.mdui-toolbar>.mdui-btn{margin:0 4px}.mdui-toolbar>.mdui-btn+.mdui-btn{margin-left:0}@media (min-width:600px){.mdui-appbar .mdui-toolbar{height:64px;line-height:64px}.mdui-appbar .mdui-toolbar>.mdui-btn{margin:0 8px}.mdui-appbar .mdui-toolbar>.mdui-btn+.mdui-btn{margin-left:0}}@media (orientation:landscape) and (max-width:959px){.mdui-appbar .mdui-toolbar{height:48px;line-height:48px}.mdui-appbar .mdui-toolbar>.mdui-btn{margin:0 4px}.mdui-appbar .mdui-toolbar>.mdui-btn+.mdui-btn{margin-left:0}}.mdui-appbar{z-index:1000;-webkit-box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.mdui-appbar-fixed{position:fixed;top:0;right:0;left:0;-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-property:left,right;transition-property:left,right;will-change:left,right}@media (min-width:1024px){.mdui-drawer-body-left .mdui-appbar-inset.mdui-appbar-fixed{left:240px}}@media (min-width:1024px){.mdui-drawer-body-right .mdui-appbar-inset.mdui-appbar-fixed{right:240px}}.mdui-appbar-with-toolbar{padding-top:56px}@media (min-width:600px){.mdui-appbar-with-toolbar{padding-top:64px}}@media (orientation:landscape) and (max-width:959px){.mdui-appbar-with-toolbar{padding-top:48px}}.mdui-appbar-with-tab{padding-top:48px}.mdui-appbar-with-tab-larger{padding-top:72px}.mdui-appbar-with-toolbar.mdui-appbar-with-tab{padding-top:104px}@media (min-width:600px){.mdui-appbar-with-toolbar.mdui-appbar-with-tab{padding-top:112px}}@media (orientation:landscape) and (max-width:959px){.mdui-appbar-with-toolbar.mdui-appbar-with-tab{padding-top:96px}}.mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger{padding-top:128px}@media (min-width:600px){.mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger{padding-top:136px}}@media (orientation:landscape) and (max-width:959px){.mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger{padding-top:120px}}.mdui-theme-layout-dark .mdui-appbar>[class*=mdui-color-]:not(.mdui-color-transparent){color:#fff!important;background-color:#212121!important}.mdui-card{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;color:#000;background-color:#fff;border-radius:2px;-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mdui-card-header{position:relative;height:72px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:16px}.mdui-card-header-avatar{float:left;width:40px;height:40px;border-radius:50%}.mdui-card-header-title{display:block;margin-left:52px;overflow:hidden;font-size:16px;font-weight:500;line-height:20px;text-overflow:ellipsis;white-space:nowrap;opacity:.87}.mdui-card-header-subtitle{display:block;margin-left:52px;overflow:hidden;font-size:14px;font-weight:400;line-height:20px;text-overflow:ellipsis;white-space:nowrap;opacity:.54}.mdui-card-primary{position:relative;padding:24px 16px 16px 16px}.mdui-card-primary-title{display:block;font-size:24px;line-height:36px;opacity:.87}.mdui-card-primary-subtitle{display:block;font-size:14px;line-height:24px;opacity:.54}.mdui-card-content{position:relative;padding:16px;font-size:14px;line-height:24px}.mdui-card-menu{position:absolute;top:16px;right:16px;z-index:1}.mdui-card-menu .mdui-btn{margin-left:8px}.mdui-card-actions{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px}.mdui-card-actions:after,.mdui-card-actions:before{display:table;content:" "}.mdui-card-actions:after{clear:both}.mdui-card-actions:after,.mdui-card-actions:before{display:table;content:" "}.mdui-card-actions:after{clear:both}.mdui-card-actions .mdui-btn{max-width:100%;margin:0 8px 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mdui-card-actions .mdui-btn-icon{width:36px;height:36px;margin:0 8px}.mdui-card-actions-stacked .mdui-btn{display:block;margin:0 0 4px 0}.mdui-card-actions-stacked .mdui-btn:last-child{margin:0}.mdui-card-media{position:relative}.mdui-card-media img,.mdui-card-media video{display:block;width:100%}.mdui-card-media-covered{position:absolute;right:0;bottom:0;left:0;color:#fff;background:rgba(0,0,0,.2)}.mdui-card-media-covered .mdui-card-primary-title{opacity:1}.mdui-card-media-covered .mdui-card-primary-subtitle{opacity:.7}.mdui-card-media-covered-top{top:0;bottom:auto}.mdui-card-media-covered-transparent{background:0 0}.mdui-card-media-covered-gradient{background:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.26)),to(rgba(0,0,0,0)));background:linear-gradient(to top,rgba(0,0,0,.26),rgba(0,0,0,0))}.mdui-card-media-covered-gradient.mdui-card-media-covered-top{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.26)),to(rgba(0,0,0,0)));background:linear-gradient(to bottom,rgba(0,0,0,.26),rgba(0,0,0,0))}.mdui-theme-layout-dark .mdui-card{color:#fff;background-color:#424242}.mdui-tab{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-height:48px;max-height:72px;padding:0;margin:0 auto;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;white-space:nowrap}.mdui-tab a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:72px;min-height:48px;max-height:72px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:12px;overflow:hidden;font-size:14px;color:inherit;text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:uppercase;cursor:pointer;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0;opacity:.7;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.mdui-tab a .mdui-icon{opacity:.7}@media (min-width:600px){.mdui-tab a{min-width:99px;max-width:264px;padding:12px 24px;-webkit-box-flex:0;-webkit-flex:none;-ms-flex:none;flex:none}}@media (min-width:1024px){.mdui-tab a{min-width:112px}}@media (min-width:1440px){.mdui-tab a{min-width:136px}}@media (min-width:1920px){.mdui-tab a{min-width:160px}}.mdui-tab a label{display:block;width:100%;cursor:pointer}.mdui-tab a .mdui-icon+label{margin-top:8px}.mdui-tab a[disabled]{cursor:default;opacity:.38}.mdui-tab a[disabled] label{cursor:default}.mdui-tab .mdui-tab-active{color:#3f51b5;opacity:1}.mdui-tab .mdui-tab-active .mdui-icon{opacity:1}@media (min-width:600px){.mdui-tab-centered:before{content:' ';-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.mdui-tab-centered:after{content:' ';-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.mdui-tab-centered a{-webkit-box-flex:0;-webkit-flex:none;-ms-flex:none;flex:none}}.mdui-tab-full-width a{max-width:none;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.mdui-tab-scrollable{padding-left:56px}.mdui-tab-scrollable a{-webkit-box-flex:0;-webkit-flex:none;-ms-flex:none;flex:none}@media (max-width:599px){.mdui-tab-scrollable{padding-left:60px}}.mdui-tab-indicator{position:absolute;bottom:0;height:2px;background-color:#3f51b5;-webkit-transition:all .35s cubic-bezier(.4,0,.2,1);transition:all .35s cubic-bezier(.4,0,.2,1);will-change:left,width}.mdui-theme-primary-amber .mdui-tab .mdui-tab-active{color:#ffc107}.mdui-theme-primary-amber .mdui-tab-indicator{background-color:#ffc107}.mdui-theme-primary-blue .mdui-tab .mdui-tab-active{color:#2196f3}.mdui-theme-primary-blue .mdui-tab-indicator{background-color:#2196f3}.mdui-theme-primary-blue-grey .mdui-tab .mdui-tab-active{color:#607d8b}.mdui-theme-primary-blue-grey .mdui-tab-indicator{background-color:#607d8b}.mdui-theme-primary-brown .mdui-tab .mdui-tab-active{color:#795548}.mdui-theme-primary-brown .mdui-tab-indicator{background-color:#795548}.mdui-theme-primary-cyan .mdui-tab .mdui-tab-active{color:#00bcd4}.mdui-theme-primary-cyan .mdui-tab-indicator{background-color:#00bcd4}.mdui-theme-primary-deep-orange .mdui-tab .mdui-tab-active{color:#ff5722}.mdui-theme-primary-deep-orange .mdui-tab-indicator{background-color:#ff5722}.mdui-theme-primary-deep-purple .mdui-tab .mdui-tab-active{color:#673ab7}.mdui-theme-primary-deep-purple .mdui-tab-indicator{background-color:#673ab7}.mdui-theme-primary-green .mdui-tab .mdui-tab-active{color:#4caf50}.mdui-theme-primary-green .mdui-tab-indicator{background-color:#4caf50}.mdui-theme-primary-grey .mdui-tab .mdui-tab-active{color:#9e9e9e}.mdui-theme-primary-grey .mdui-tab-indicator{background-color:#9e9e9e}.mdui-theme-primary-indigo .mdui-tab .mdui-tab-active{color:#3f51b5}.mdui-theme-primary-indigo .mdui-tab-indicator{background-color:#3f51b5}.mdui-theme-primary-light-blue .mdui-tab .mdui-tab-active{color:#03a9f4}.mdui-theme-primary-light-blue .mdui-tab-indicator{background-color:#03a9f4}.mdui-theme-primary-light-green .mdui-tab .mdui-tab-active{color:#8bc34a}.mdui-theme-primary-light-green .mdui-tab-indicator{background-color:#8bc34a}.mdui-theme-primary-lime .mdui-tab .mdui-tab-active{color:#cddc39}.mdui-theme-primary-lime .mdui-tab-indicator{background-color:#cddc39}.mdui-theme-primary-orange .mdui-tab .mdui-tab-active{color:#ff9800}.mdui-theme-primary-orange .mdui-tab-indicator{background-color:#ff9800}.mdui-theme-primary-pink .mdui-tab .mdui-tab-active{color:#e91e63}.mdui-theme-primary-pink .mdui-tab-indicator{background-color:#e91e63}.mdui-theme-primary-purple .mdui-tab .mdui-tab-active{color:#9c27b0}.mdui-theme-primary-purple .mdui-tab-indicator{background-color:#9c27b0}.mdui-theme-primary-red .mdui-tab .mdui-tab-active{color:#f44336}.mdui-theme-primary-red .mdui-tab-indicator{background-color:#f44336}.mdui-theme-primary-teal .mdui-tab .mdui-tab-active{color:#009688}.mdui-theme-primary-teal .mdui-tab-indicator{background-color:#009688}.mdui-theme-primary-yellow .mdui-tab .mdui-tab-active{color:#ffeb3b}.mdui-theme-primary-yellow .mdui-tab-indicator{background-color:#ffeb3b}.mdui-tab[class*=mdui-color-]:not(.mdui-color-white) .mdui-tab-active{color:inherit}.mdui-tab[class*=mdui-color-]:not(.mdui-color-white) .mdui-tab-indicator{background-color:#fff}.mdui-tab[class*=mdui-color-]:not(.mdui-color-white)::-webkit-scrollbar{width:5px;height:5px;background:0 0}@media (min-width:1024px){.mdui-tab[class*=mdui-color-]:not(.mdui-color-white)::-webkit-scrollbar{width:8px;height:8px}}.mdui-tab[class*=mdui-color-]:not(.mdui-color-white)::-webkit-scrollbar-thumb{background:rgba(255,255,255,.3)}.mdui-subheader,.mdui-subheader-inset{position:relative;height:48px;-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:16px;padding-left:16px;overflow:hidden;font-size:14px;font-weight:500;line-height:48px;color:rgba(0,0,0,.54);text-overflow:ellipsis;white-space:nowrap;cursor:default}.mdui-subheader-inset{padding-left:72px}.mdui-theme-layout-dark .mdui-subheader,.mdui-theme-layout-dark .mdui-subheader-inset{color:rgba(255,255,255,.7)}.mdui-grid-list{margin:0 -2px}.mdui-grid-list .mdui-col,.mdui-grid-list [class*=mdui-col-lg-],.mdui-grid-list [class*=mdui-col-md-],.mdui-grid-list [class*=mdui-col-sm-],.mdui-grid-list [class*=mdui-col-xl-],.mdui-grid-list [class*=mdui-col-xs-]{padding-right:2px;padding-left:2px}.mdui-grid-tile{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;margin-bottom:4px;overflow:hidden}.mdui-grid-tile img{display:block;width:100%}.mdui-grid-tile-actions{position:absolute;right:0;bottom:0;left:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-height:48px;max-height:68px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:16px;color:#fff;background:rgba(0,0,0,.2);-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.mdui-grid-tile-actions .mdui-icon{color:#fff}.mdui-grid-tile-text{overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.mdui-grid-tile-title{height:16px;overflow:hidden;font-size:16px;line-height:16px;text-overflow:ellipsis;white-space:nowrap}.mdui-grid-tile-title .mdui-icon{margin-right:8px}.mdui-grid-tile-subtitle{height:18px;margin-top:4px;overflow:hidden;font-size:12px;line-height:18px;text-overflow:ellipsis;white-space:nowrap}.mdui-grid-tile-subtitle .mdui-icon{margin-right:8px;font-size:18px}.mdui-grid-tile-buttons{margin:-8px;white-space:nowrap;-webkit-box-flex:0;-webkit-flex:none;-ms-flex:none;flex:none}.mdui-grid-tile-buttons .mdui-btn{margin-left:8px}.mdui-grid-tile-buttons .mdui-btn:first-child{margin-left:0}.mdui-grid-tile-text+.mdui-grid-tile-buttons{margin-left:8px}.mdui-grid-tile-buttons+.mdui-grid-tile-text{margin-left:16px}.mdui-grid-tile-actions-top{top:0;bottom:auto}.mdui-grid-tile-actions-transparent{background:0 0}.mdui-grid-tile-actions-gradient{background:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.26)),to(rgba(0,0,0,0)));background:linear-gradient(to top,rgba(0,0,0,.26),rgba(0,0,0,0))}.mdui-grid-tile-actions-gradient.mdui-grid-tile-actions-top{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.26)),to(rgba(0,0,0,0)));background:linear-gradient(to bottom,rgba(0,0,0,.26),rgba(0,0,0,0))}.mdui-list{padding:8px 0;margin:0;list-style:none;background-color:transparent}.mdui-list .mdui-list{padding:0}.mdui-list>.mdui-divider,.mdui-list>.mdui-divider-dark,.mdui-list>.mdui-divider-inset,.mdui-list>.mdui-divider-inset-dark,.mdui-list>.mdui-divider-inset-light,.mdui-list>.mdui-divider-light{margin-top:8px;margin-bottom:8px}.mdui-list a{color:inherit;text-decoration:none}.mdui-list .mdui-subheader,.mdui-list .mdui-subheader-inset{margin-top:8px}.mdui-list .mdui-subheader-inset:before,.mdui-list .mdui-subheader:before{position:absolute;right:0;left:0;display:block;height:1px;content:' ';background-color:rgba(0,0,0,.12)}.mdui-list .mdui-subheader-inset:first-child,.mdui-list .mdui-subheader:first-child{margin-top:-8px}.mdui-list .mdui-subheader-inset:first-child:before,.mdui-list .mdui-subheader:first-child:before{background-color:transparent}.mdui-list .mdui-subheader-inset:before{left:72px}.mdui-list-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-height:48px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 16px;text-decoration:none;cursor:pointer;-webkit-transition:background-color .3s cubic-bezier(.4,0,.2,1);transition:background-color .3s cubic-bezier(.4,0,.2,1);-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.mdui-list-item:hover{background-color:rgba(0,0,0,.08)}.mdui-list-item:after{height:48px;visibility:hidden;content:' '}.mdui-list-item-icon{width:24px;min-width:24px;height:24px;color:rgba(0,0,0,.54)}.mdui-list-item-avatar{min-width:40px;max-width:40px;height:40px;margin-top:8px;margin-bottom:8px;line-height:40px;color:#fff;text-align:center;background-color:#bdbdbd;border-radius:50%}.mdui-list-item-avatar img{width:100%;height:100%;border-radius:50%}.mdui-list-item-content{padding-top:14px;padding-bottom:14px;font-size:16px;font-weight:400;line-height:20px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.mdui-list-item-text{font-size:14px;opacity:.54}.mdui-list-item-title~.mdui-list-item-text{margin-top:4px}.mdui-list-item-active{font-weight:700;background-color:rgba(0,0,0,.08)}.mdui-list-item-active .mdui-list-item-content{font-weight:700}.mdui-list-item-active .mdui-list-item-text{font-weight:400}.mdui-list-item-one-line,.mdui-list-item-three-line,.mdui-list-item-two-line{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical}.mdui-list-item-one-line{height:20px;-webkit-line-clamp:1}.mdui-list-item-two-line{height:40px;-webkit-line-clamp:2}.mdui-list-item-three-line{height:60px;-webkit-line-clamp:3}.mdui-list-item-icon~.mdui-list-item-content{margin-left:32px}.mdui-checkbox~.mdui-list-item-content,.mdui-radio~.mdui-list-item-content,.mdui-switch~.mdui-list-item-content{margin-left:20px}.mdui-list-item-avatar~.mdui-list-item-content{margin-left:16px}.mdui-list-item-content~.mdui-checkbox,.mdui-list-item-content~.mdui-list-item-avatar,.mdui-list-item-content~.mdui-list-item-icon,.mdui-list-item-content~.mdui-radio,.mdui-list-item-content~.mdui-switch{margin-left:16px}.mdui-list-item-content~.mdui-checkbox,.mdui-list-item-content~.mdui-radio{padding-left:24px}.mdui-list-dense{padding:4px 0;font-size:13px}.mdui-list-dense>.mdui-divider,.mdui-list-dense>.mdui-divider-dark,.mdui-list-dense>.mdui-divider-inset,.mdui-list-dense>.mdui-divider-inset-dark,.mdui-list-dense>.mdui-divider-inset-light,.mdui-list-dense>.mdui-divider-light{margin-top:4px;margin-bottom:4px}.mdui-list-dense .mdui-subheader,.mdui-list-dense .mdui-subheader-inset{height:40px;margin-top:4px;font-size:12px;line-height:40px}.mdui-list-dense .mdui-subheader-inset:first-child,.mdui-list-dense .mdui-subheader:first-child{margin-top:-4px}.mdui-list-dense .mdui-list-item{min-height:40px}.mdui-list-dense .mdui-list-item:after{height:40px}.mdui-list-dense .mdui-list-item-icon{width:20px;height:20px;font-size:20px}.mdui-list-dense .mdui-list-item-avatar{width:36px;min-width:36px;height:36px;min-height:36px}.mdui-list-dense .mdui-list-item-content{padding-top:11px;padding-bottom:11px;font-size:13px;line-height:18px}.mdui-list-dense .mdui-list-item-text{font-size:13px}.mdui-list-dense .mdui-list-item-title~.mdui-list-item-text{margin-top:2px}.mdui-list-dense .mdui-list-item-one-line{height:18px}.mdui-list-dense .mdui-list-item-two-line{height:36px}.mdui-list-dense .mdui-list-item-three-line{height:54px}.mdui-theme-layout-dark .mdui-list .mdui-subheader-inset:before,.mdui-theme-layout-dark .mdui-list .mdui-subheader:before{background-color:rgba(255,255,255,.12)}.mdui-theme-layout-dark .mdui-list .mdui-subheader-inset:first-child:before,.mdui-theme-layout-dark .mdui-list .mdui-subheader:first-child:before{background-color:transparent}.mdui-theme-layout-dark .mdui-list-item{color:#fff}.mdui-theme-layout-dark .mdui-list-item:hover{background-color:rgba(255,255,255,.08)}.mdui-theme-layout-dark .mdui-list-item-icon{color:#fff}.mdui-theme-layout-dark .mdui-list-item-text{opacity:.7}.mdui-theme-layout-dark .mdui-list-item-active{background-color:rgba(255,255,255,.08)}[class*=mdui-color-] .mdui-list-item{color:inherit}[class*=mdui-color-] .mdui-list-item-icon{color:inherit}body.mdui-loaded{-webkit-transition:padding .3s cubic-bezier(0,0,.2,1);transition:padding .3s cubic-bezier(0,0,.2,1)}body.mdui-loaded .mdui-drawer{-webkit-transition:all .3s cubic-bezier(0,0,.2,1);transition:all .3s cubic-bezier(0,0,.2,1)}.mdui-drawer{position:fixed;top:0;bottom:0;left:0;z-index:5000;width:calc(100% - 56px);max-width:280px;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;white-space:nowrap;will-change:transform}@media (max-width:1023px){.mdui-drawer:not(.mdui-drawer-open){-webkit-box-shadow:none!important;box-shadow:none!important}}@media (min-width:600px){.mdui-drawer{width:calc(100% - 64px);max-width:320px}}@media (min-width:1024px){.mdui-drawer{width:240px;max-width:none}.mdui-drawer.mdui-drawer-close{-webkit-box-shadow:none!important;box-shadow:none!important}}.mdui-drawer-right{right:0;left:auto}@media (max-width:1023px){.mdui-drawer{background-color:#fff;-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);-webkit-transform:translateX(-330px);transform:translateX(-330px)}.mdui-drawer-right{-webkit-transform:translateX(330px);transform:translateX(330px)}}@media (max-width:599px){.mdui-drawer{-webkit-transform:translateX(-290px);transform:translateX(-290px)}.mdui-drawer-right{-webkit-transform:translateX(290px);transform:translateX(290px)}}.mdui-drawer-close{-webkit-transform:translateX(-290px);transform:translateX(-290px)}.mdui-drawer-close.mdui-drawer-right{-webkit-transform:translateX(290px);transform:translateX(290px)}@media (min-width:600px){.mdui-drawer-close{-webkit-transform:translateX(-330px);transform:translateX(-330px)}.mdui-drawer-close.mdui-drawer-right{-webkit-transform:translateX(330px);transform:translateX(330px)}}@media (min-width:1024px){.mdui-drawer-close{-webkit-transform:translateX(-250px);transform:translateX(-250px)}.mdui-drawer-close.mdui-drawer-right{-webkit-transform:translateX(250px);transform:translateX(250px)}}.mdui-drawer-open{-webkit-transform:translateX(0)!important;transform:translateX(0)!important}@media (min-width:1024px){.mdui-drawer-body-left{padding-left:240px}.mdui-drawer-body-right{padding-right:240px}.mdui-appbar-with-toolbar .mdui-drawer{top:64px}.mdui-appbar-with-tab .mdui-drawer{top:48px}.mdui-appbar-with-tab-larger .mdui-drawer{top:72px}.mdui-appbar-with-toolbar.mdui-appbar-with-tab .mdui-drawer{top:112px}.mdui-appbar-with-toolbar.mdui-appbar-with-tab-larger .mdui-drawer{top:136px}}.mdui-drawer[class*=mdui-color-]:not(.mdui-color-transparent){-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.mdui-drawer-full-height{top:0!important}@media (max-width:1023px){.mdui-theme-layout-dark .mdui-drawer{background-color:#424242}}.mdui-dialog{position:fixed;right:0;left:0;z-index:6000;display:none;width:92%;min-width:180px;max-width:728px;max-height:90%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:auto;overflow:hidden;color:#000;background-color:#fff;border-radius:2px;-webkit-box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);opacity:0;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-property:opacity,visibility,-webkit-transform;transition-property:opacity,visibility,-webkit-transform;transition-property:transform,opacity,visibility;transition-property:transform,opacity,visibility,-webkit-transform;-webkit-transform:scale(.95);transform:scale(.95);will-change:top,opacity,transform}@media (min-width:600px){.mdui-dialog{width:85%;max-height:85%}}@media (min-width:1024px){.mdui-dialog{width:80%;max-height:80%}}.mdui-dialog-open{opacity:1;-webkit-transform:scale(1);transform:scale(1)}.mdui-dialog-title{-webkit-box-sizing:border-box;box-sizing:border-box;font-size:20px;font-weight:500;line-height:24px;text-align:left}.mdui-dialog>.mdui-dialog-title{padding:24px 24px 20px 24px}.mdui-dialog-content{-webkit-box-sizing:border-box;box-sizing:border-box;padding:24px;overflow-y:auto;-webkit-overflow-scrolling:touch;font-size:15px;line-height:1.5;color:rgba(0,0,0,.7)}.mdui-dialog-content>.mdui-dialog-title{padding-bottom:20px}.mdui-dialog-title+.mdui-dialog-content{padding-top:0}.mdui-dialog-actions{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;text-align:right}.mdui-dialog-actions .mdui-btn{min-width:64px;margin-left:8px;color:#e91e63}.mdui-dialog-actions .mdui-btn:first-child{margin-left:0}.mdui-dialog-content>.mdui-dialog-actions{padding-top:32px;margin:0 -24px -24px -24px}.mdui-dialog-actions-stacked{padding:8px 0 8px 0}.mdui-dialog-actions-stacked .mdui-btn{width:100%;height:48px;margin:0;line-height:48px!important;text-align:right;border-radius:0}.mdui-theme-accent-amber .mdui-dialog-actions .mdui-btn{color:#ffc107}.mdui-theme-accent-blue .mdui-dialog-actions .mdui-btn{color:#2196f3}.mdui-theme-accent-cyan .mdui-dialog-actions .mdui-btn{color:#00bcd4}.mdui-theme-accent-deep-orange .mdui-dialog-actions .mdui-btn{color:#ff5722}.mdui-theme-accent-deep-purple .mdui-dialog-actions .mdui-btn{color:#673ab7}.mdui-theme-accent-green .mdui-dialog-actions .mdui-btn{color:#4caf50}.mdui-theme-accent-indigo .mdui-dialog-actions .mdui-btn{color:#3f51b5}.mdui-theme-accent-light-blue .mdui-dialog-actions .mdui-btn{color:#03a9f4}.mdui-theme-accent-light-green .mdui-dialog-actions .mdui-btn{color:#8bc34a}.mdui-theme-accent-lime .mdui-dialog-actions .mdui-btn{color:#cddc39}.mdui-theme-accent-orange .mdui-dialog-actions .mdui-btn{color:#ff9800}.mdui-theme-accent-pink .mdui-dialog-actions .mdui-btn{color:#e91e63}.mdui-theme-accent-purple .mdui-dialog-actions .mdui-btn{color:#9c27b0}.mdui-theme-accent-red .mdui-dialog-actions .mdui-btn{color:#f44336}.mdui-theme-accent-teal .mdui-dialog-actions .mdui-btn{color:#009688}.mdui-theme-accent-yellow .mdui-dialog-actions .mdui-btn{color:#ffeb3b}.mdui-theme-layout-dark .mdui-dialog{color:#fff;background-color:#424242}.mdui-theme-layout-dark .mdui-dialog-content{color:rgba(255,255,255,.7)}.mdui-dialog-alert{max-width:448px}.mdui-dialog-confirm{max-width:448px}.mdui-dialog-prompt{max-width:448px}.mdui-dialog-prompt .mdui-textfield{padding-top:0}.mdui-shadow-0{-webkit-box-shadow:none;box-shadow:none}.mdui-shadow-1{-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)}.mdui-shadow-2{-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mdui-shadow-3{-webkit-box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12);box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12)}.mdui-shadow-4{-webkit-box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.mdui-shadow-5{-webkit-box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12);box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.mdui-shadow-6{-webkit-box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12);box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.mdui-shadow-7{-webkit-box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.mdui-shadow-8{-webkit-box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mdui-shadow-9{-webkit-box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12);box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.mdui-shadow-10{-webkit-box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12);box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.mdui-shadow-11{-webkit-box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12);box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.mdui-shadow-12{-webkit-box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12);box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.mdui-shadow-13{-webkit-box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.mdui-shadow-14{-webkit-box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12);box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.mdui-shadow-15{-webkit-box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12);box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.mdui-shadow-16{-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.mdui-shadow-17{-webkit-box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12);box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.mdui-shadow-18{-webkit-box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12);box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.mdui-shadow-19{-webkit-box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12);box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.mdui-shadow-20{-webkit-box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12);box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.mdui-shadow-21{-webkit-box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12);box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.mdui-shadow-22{-webkit-box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12);box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.mdui-shadow-23{-webkit-box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12);box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.mdui-shadow-24{-webkit-box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}.mdui-hoverable{-webkit-transition:-webkit-box-shadow .25s cubic-bezier(.4,0,.2,1);transition:-webkit-box-shadow .25s cubic-bezier(.4,0,.2,1);transition:box-shadow .25s cubic-bezier(.4,0,.2,1);transition:box-shadow .25s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .25s cubic-bezier(.4,0,.2,1);will-change:box-shadow}.mdui-hoverable:focus,.mdui-hoverable:hover{-webkit-box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mdui-tooltip{position:absolute;z-index:9000;display:inline-block;max-width:180px;min-height:32px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px 16px;font-size:14px;font-weight:500;line-height:22px;color:#fff;text-align:left;background-color:rgba(97,97,97,.9);border-radius:2px;opacity:0;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform;-webkit-transform:scale(0);transform:scale(0);will-change:opacity,transform}@media (min-width:1024px){.mdui-tooltip{max-width:200px;min-height:24px;padding:4px 8px;font-size:12px;line-height:18px}}.mdui-tooltip-open{opacity:1;-webkit-transform:scale(1);transform:scale(1)}.mdui-snackbar{position:fixed;z-index:7000;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;min-height:48px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 24px 0 24px;font-size:14px;line-height:20px;color:#fff;background-color:#323232;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;will-change:transform}@media (min-width:600px){.mdui-snackbar{width:auto;min-width:288px;max-width:568px;border-radius:2px}}.mdui-snackbar-bottom,.mdui-snackbar-left-bottom,.mdui-snackbar-left-top,.mdui-snackbar-right-bottom,.mdui-snackbar-right-top,.mdui-snackbar-top{-webkit-transition:-webkit-transform .3s cubic-bezier(.4,0,.2,1);transition:-webkit-transform .3s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1),-webkit-transform .3s cubic-bezier(.4,0,.2,1)}.mdui-snackbar-bottom,.mdui-snackbar-left-bottom,.mdui-snackbar-right-bottom{bottom:0}.mdui-snackbar-left-top,.mdui-snackbar-right-top,.mdui-snackbar-top{top:0}.mdui-snackbar-bottom,.mdui-snackbar-top{left:50%}@media (min-width:600px){.mdui-snackbar-left-top{top:24px;left:24px}.mdui-snackbar-left-bottom{bottom:24px;left:24px}.mdui-snackbar-right-top{top:24px;right:24px}.mdui-snackbar-right-bottom{right:24px;bottom:24px}}.mdui-snackbar-text{position:relative;max-width:100%;padding:14px 0 14px 0;overflow:hidden;text-overflow:ellipsis}.mdui-snackbar-action{margin-right:-16px;color:#ff80ab;white-space:nowrap}.mdui-theme-accent-amber .mdui-snackbar-action{color:#ffe57f}.mdui-theme-accent-blue .mdui-snackbar-action{color:#82b1ff}.mdui-theme-accent-cyan .mdui-snackbar-action{color:#84ffff}.mdui-theme-accent-deep-orange .mdui-snackbar-action{color:#ff9e80}.mdui-theme-accent-deep-purple .mdui-snackbar-action{color:#b388ff}.mdui-theme-accent-green .mdui-snackbar-action{color:#b9f6ca}.mdui-theme-accent-indigo .mdui-snackbar-action{color:#8c9eff}.mdui-theme-accent-light-blue .mdui-snackbar-action{color:#80d8ff}.mdui-theme-accent-light-green .mdui-snackbar-action{color:#ccff90}.mdui-theme-accent-lime .mdui-snackbar-action{color:#f4ff81}.mdui-theme-accent-orange .mdui-snackbar-action{color:#ffd180}.mdui-theme-accent-pink .mdui-snackbar-action{color:#ff80ab}.mdui-theme-accent-purple .mdui-snackbar-action{color:#ea80fc}.mdui-theme-accent-red .mdui-snackbar-action{color:#ff8a80}.mdui-theme-accent-teal .mdui-snackbar-action{color:#a7ffeb}.mdui-theme-accent-yellow .mdui-snackbar-action{color:#ffff8d}.mdui-theme-layout-dark .mdui-snackbar{background-color:#5d5d5d}.mdui-chip{display:inline-block;height:32px;-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#e0e0e0;border-radius:16px;-webkit-transition:-webkit-box-shadow .25s cubic-bezier(.4,0,.2,1);transition:-webkit-box-shadow .25s cubic-bezier(.4,0,.2,1);transition:box-shadow .25s cubic-bezier(.4,0,.2,1);transition:box-shadow .25s cubic-bezier(.4,0,.2,1),-webkit-box-shadow .25s cubic-bezier(.4,0,.2,1);will-change:box-shadow}.mdui-chip:focus,.mdui-chip:hover{-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mdui-chip:active{background-color:#d6d6d6}.mdui-chip-icon{position:relative;display:inline-block;width:32px;height:32px;margin-right:-4px;overflow:hidden;font-size:18px;line-height:32px;color:#fff;text-align:center;vertical-align:middle;background-color:#989898;border-radius:50%}.mdui-chip-icon .mdui-icon{position:absolute;top:4px;left:4px;color:#fff}.mdui-chip-title{display:inline-block;height:32px;padding-right:12px;padding-left:12px;font-size:14px;line-height:32px;vertical-align:middle}.mdui-chip-delete{display:inline-block;width:24px;height:24px;margin-right:4px;margin-left:-8px;overflow:hidden;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;border-radius:50%;opacity:.54;-webkit-transition:opacity .25s cubic-bezier(.4,0,.2,1);transition:opacity .25s cubic-bezier(.4,0,.2,1);will-change:opacity}.mdui-chip-delete:focus,.mdui-chip-delete:hover{opacity:.87}.mdui-theme-layout-dark .mdui-chip{background-color:#484848}.mdui-theme-layout-dark .mdui-chip:active{background-color:#5d5d5d}.mdui-bottom-nav{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:56px;padding:0;margin:0 auto;overflow:hidden;white-space:nowrap}@media (min-width:600px){.mdui-bottom-nav:before{content:' ';-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.mdui-bottom-nav:after{content:' ';-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}}.mdui-bottom-nav a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:32px;max-width:none;padding:8px 12px 10px 12px;overflow:hidden;font-size:12px;color:inherit;text-align:center;text-decoration:none;text-overflow:ellipsis;cursor:pointer;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:.7;-webkit-transition:all .2s cubic-bezier(.4,0,.2,1);transition:all .2s cubic-bezier(.4,0,.2,1);-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;will-change:padding}@media (min-width:600px){.mdui-bottom-nav a{max-width:144px}}.mdui-bottom-nav a .mdui-icon{opacity:.7}.mdui-bottom-nav a label{display:block;width:100%;cursor:pointer;-webkit-transition:-webkit-transform .2s cubic-bezier(.4,0,.2,1);transition:-webkit-transform .2s cubic-bezier(.4,0,.2,1);transition:transform .2s cubic-bezier(.4,0,.2,1);transition:transform .2s cubic-bezier(.4,0,.2,1),-webkit-transform .2s cubic-bezier(.4,0,.2,1);will-change:font-size}.mdui-bottom-nav a .mdui-icon+label{margin-top:6px}.mdui-bottom-nav a.mdui-bottom-nav-active{font-size:14px;color:#3f51b5;opacity:1}.mdui-bottom-nav a.mdui-bottom-nav-active .mdui-icon{opacity:1}.mdui-bottom-nav-text-auto a{min-width:32px;padding-right:0;padding-left:0}@media (min-width:600px){.mdui-bottom-nav-text-auto a{max-width:156px}}.mdui-bottom-nav-text-auto a .mdui-icon{padding-top:16px;-webkit-transition:padding-top .2s cubic-bezier(.4,0,.2,1);transition:padding-top .2s cubic-bezier(.4,0,.2,1);will-change:padding-top}.mdui-bottom-nav-text-auto a label{-webkit-transform:scale(0);transform:scale(0)}.mdui-bottom-nav-text-auto a.mdui-bottom-nav-active{padding-right:18px;padding-left:18px}.mdui-bottom-nav-text-auto a.mdui-bottom-nav-active .mdui-icon{padding-top:0}.mdui-bottom-nav-text-auto a.mdui-bottom-nav-active label{-webkit-transform:scale(1);transform:scale(1)}.mdui-bottom-nav-fixed{padding-bottom:56px}.mdui-bottom-nav-fixed .mdui-bottom-nav{position:fixed;right:0;bottom:0;left:0}.mdui-theme-primary-amber .mdui-bottom-nav a.mdui-bottom-nav-active{color:#ffc107}.mdui-theme-primary-blue .mdui-bottom-nav a.mdui-bottom-nav-active{color:#2196f3}.mdui-theme-primary-blue-grey .mdui-bottom-nav a.mdui-bottom-nav-active{color:#607d8b}.mdui-theme-primary-brown .mdui-bottom-nav a.mdui-bottom-nav-active{color:#795548}.mdui-theme-primary-cyan .mdui-bottom-nav a.mdui-bottom-nav-active{color:#00bcd4}.mdui-theme-primary-deep-orange .mdui-bottom-nav a.mdui-bottom-nav-active{color:#ff5722}.mdui-theme-primary-deep-purple .mdui-bottom-nav a.mdui-bottom-nav-active{color:#673ab7}.mdui-theme-primary-green .mdui-bottom-nav a.mdui-bottom-nav-active{color:#4caf50}.mdui-theme-primary-grey .mdui-bottom-nav a.mdui-bottom-nav-active{color:#9e9e9e}.mdui-theme-primary-indigo .mdui-bottom-nav a.mdui-bottom-nav-active{color:#3f51b5}.mdui-theme-primary-light-blue .mdui-bottom-nav a.mdui-bottom-nav-active{color:#03a9f4}.mdui-theme-primary-light-green .mdui-bottom-nav a.mdui-bottom-nav-active{color:#8bc34a}.mdui-theme-primary-lime .mdui-bottom-nav a.mdui-bottom-nav-active{color:#cddc39}.mdui-theme-primary-orange .mdui-bottom-nav a.mdui-bottom-nav-active{color:#ff9800}.mdui-theme-primary-pink .mdui-bottom-nav a.mdui-bottom-nav-active{color:#e91e63}.mdui-theme-primary-purple .mdui-bottom-nav a.mdui-bottom-nav-active{color:#9c27b0}.mdui-theme-primary-red .mdui-bottom-nav a.mdui-bottom-nav-active{color:#f44336}.mdui-theme-primary-teal .mdui-bottom-nav a.mdui-bottom-nav-active{color:#009688}.mdui-theme-primary-yellow .mdui-bottom-nav a.mdui-bottom-nav-active{color:#ffeb3b}.mdui-bottom-nav[class*=mdui-color-] .mdui-bottom-nav-active{color:inherit!important}.mdui-progress{position:relative;display:block;width:100%;height:4px;overflow:hidden;background-color:rgba(63,81,181,.2);border-radius:2px}.mdui-progress-determinate{position:absolute;top:0;bottom:0;left:0;background-color:#3f51b5;-webkit-transition:width .3s linear;transition:width .3s linear}.mdui-progress-indeterminate{background-color:#3f51b5}.mdui-progress-indeterminate:before{position:absolute;top:0;bottom:0;left:0;content:' ';background-color:inherit;-webkit-animation:mdui-progress-indeterminate 2s linear infinite;animation:mdui-progress-indeterminate 2s linear infinite;will-change:left,width}.mdui-progress-indeterminate:after{position:absolute;top:0;bottom:0;left:0;content:' ';background-color:inherit;-webkit-animation:mdui-progress-indeterminate-short 2s linear infinite;animation:mdui-progress-indeterminate-short 2s linear infinite;will-change:left,width}@-webkit-keyframes mdui-progress-indeterminate{0%{left:0;width:0}50%{left:30%;width:70%}75%{left:100%;width:0}}@keyframes mdui-progress-indeterminate{0%{left:0;width:0}50%{left:30%;width:70%}75%{left:100%;width:0}}@-webkit-keyframes mdui-progress-indeterminate-short{0%{left:0;width:0}50%{left:0;width:0}75%{left:0;width:25%}100%{left:100%;width:0}}@keyframes mdui-progress-indeterminate-short{0%{left:0;width:0}50%{left:0;width:0}75%{left:0;width:25%}100%{left:100%;width:0}}.mdui-theme-primary-amber .mdui-progress{background-color:rgba(255,193,7,.2)}.mdui-theme-primary-amber .mdui-progress-determinate,.mdui-theme-primary-amber .mdui-progress-indeterminate{background-color:#ffc107}.mdui-theme-primary-blue .mdui-progress{background-color:rgba(33,150,243,.2)}.mdui-theme-primary-blue .mdui-progress-determinate,.mdui-theme-primary-blue .mdui-progress-indeterminate{background-color:#2196f3}.mdui-theme-primary-blue-grey .mdui-progress{background-color:rgba(96,125,139,.2)}.mdui-theme-primary-blue-grey .mdui-progress-determinate,.mdui-theme-primary-blue-grey .mdui-progress-indeterminate{background-color:#607d8b}.mdui-theme-primary-brown .mdui-progress{background-color:rgba(121,85,72,.2)}.mdui-theme-primary-brown .mdui-progress-determinate,.mdui-theme-primary-brown .mdui-progress-indeterminate{background-color:#795548}.mdui-theme-primary-cyan .mdui-progress{background-color:rgba(0,188,212,.2)}.mdui-theme-primary-cyan .mdui-progress-determinate,.mdui-theme-primary-cyan .mdui-progress-indeterminate{background-color:#00bcd4}.mdui-theme-primary-deep-orange .mdui-progress{background-color:rgba(255,87,34,.2)}.mdui-theme-primary-deep-orange .mdui-progress-determinate,.mdui-theme-primary-deep-orange .mdui-progress-indeterminate{background-color:#ff5722}.mdui-theme-primary-deep-purple .mdui-progress{background-color:rgba(103,58,183,.2)}.mdui-theme-primary-deep-purple .mdui-progress-determinate,.mdui-theme-primary-deep-purple .mdui-progress-indeterminate{background-color:#673ab7}.mdui-theme-primary-green .mdui-progress{background-color:rgba(76,175,80,.2)}.mdui-theme-primary-green .mdui-progress-determinate,.mdui-theme-primary-green .mdui-progress-indeterminate{background-color:#4caf50}.mdui-theme-primary-grey .mdui-progress{background-color:rgba(158,158,158,.2)}.mdui-theme-primary-grey .mdui-progress-determinate,.mdui-theme-primary-grey .mdui-progress-indeterminate{background-color:#9e9e9e}.mdui-theme-primary-indigo .mdui-progress{background-color:rgba(63,81,181,.2)}.mdui-theme-primary-indigo .mdui-progress-determinate,.mdui-theme-primary-indigo .mdui-progress-indeterminate{background-color:#3f51b5}.mdui-theme-primary-light-blue .mdui-progress{background-color:rgba(3,169,244,.2)}.mdui-theme-primary-light-blue .mdui-progress-determinate,.mdui-theme-primary-light-blue .mdui-progress-indeterminate{background-color:#03a9f4}.mdui-theme-primary-light-green .mdui-progress{background-color:rgba(139,195,74,.2)}.mdui-theme-primary-light-green .mdui-progress-determinate,.mdui-theme-primary-light-green .mdui-progress-indeterminate{background-color:#8bc34a}.mdui-theme-primary-lime .mdui-progress{background-color:rgba(205,220,57,.2)}.mdui-theme-primary-lime .mdui-progress-determinate,.mdui-theme-primary-lime .mdui-progress-indeterminate{background-color:#cddc39}.mdui-theme-primary-orange .mdui-progress{background-color:rgba(255,152,0,.2)}.mdui-theme-primary-orange .mdui-progress-determinate,.mdui-theme-primary-orange .mdui-progress-indeterminate{background-color:#ff9800}.mdui-theme-primary-pink .mdui-progress{background-color:rgba(233,30,99,.2)}.mdui-theme-primary-pink .mdui-progress-determinate,.mdui-theme-primary-pink .mdui-progress-indeterminate{background-color:#e91e63}.mdui-theme-primary-purple .mdui-progress{background-color:rgba(156,39,176,.2)}.mdui-theme-primary-purple .mdui-progress-determinate,.mdui-theme-primary-purple .mdui-progress-indeterminate{background-color:#9c27b0}.mdui-theme-primary-red .mdui-progress{background-color:rgba(244,67,54,.2)}.mdui-theme-primary-red .mdui-progress-determinate,.mdui-theme-primary-red .mdui-progress-indeterminate{background-color:#f44336}.mdui-theme-primary-teal .mdui-progress{background-color:rgba(0,150,136,.2)}.mdui-theme-primary-teal .mdui-progress-determinate,.mdui-theme-primary-teal .mdui-progress-indeterminate{background-color:#009688}.mdui-theme-primary-yellow .mdui-progress{background-color:rgba(255,235,59,.2)}.mdui-theme-primary-yellow .mdui-progress-determinate,.mdui-theme-primary-yellow .mdui-progress-indeterminate{background-color:#ffeb3b}.mdui-spinner{position:relative;display:inline-block;width:28px;height:28px;-webkit-animation:mdui-spinner 1568ms linear infinite;animation:mdui-spinner 1568ms linear infinite}@-webkit-keyframes mdui-spinner{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes mdui-spinner{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.mdui-spinner-layer{position:absolute;width:100%;height:100%;border-color:#3f51b5;opacity:0;opacity:1;-webkit-animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdui-spinner-layer-1{border-color:#42a5f5!important;-webkit-animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdui-spinner-layer-1-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdui-spinner-layer-1-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdui-spinner-layer-2{border-color:#f44336!important;-webkit-animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdui-spinner-layer-2-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdui-spinner-layer-2-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdui-spinner-layer-3{border-color:#fdd835!important;-webkit-animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdui-spinner-layer-3-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdui-spinner-layer-3-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdui-spinner-layer-4{border-color:#4caf50!important;-webkit-animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdui-spinner-layer-4-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdui-spinner-layer-fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdui-spinner-layer-4-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes mdui-spinner-layer-fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@keyframes mdui-spinner-layer-fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@-webkit-keyframes mdui-spinner-layer-1-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@keyframes mdui-spinner-layer-1-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@-webkit-keyframes mdui-spinner-layer-2-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@keyframes mdui-spinner-layer-2-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@-webkit-keyframes mdui-spinner-layer-3-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@keyframes mdui-spinner-layer-3-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@-webkit-keyframes mdui-spinner-layer-4-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}@keyframes mdui-spinner-layer-4-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}.mdui-spinner-gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.mdui-spinner-gap-patch .mdui-spinner-circle{left:-450%;width:1000%;-webkit-box-sizing:border-box;box-sizing:border-box}.mdui-spinner-circle-clipper{position:relative;display:inline-block;width:50%;height:100%;overflow:hidden;border-color:inherit}.mdui-spinner-circle-clipper .mdui-spinner-circle{position:absolute;top:0;right:0;bottom:0;width:200%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;border-color:inherit;border-style:solid;border-width:3px;border-bottom-color:transparent!important;border-radius:50%;-webkit-animation:none;animation:none}.mdui-spinner-circle-clipper.mdui-spinner-left{float:left}.mdui-spinner-circle-clipper.mdui-spinner-left .mdui-spinner-circle{left:0;border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg);-webkit-animation:mdui-spinner-left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdui-spinner-left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.mdui-spinner-circle-clipper.mdui-spinner-right{float:right}.mdui-spinner-circle-clipper.mdui-spinner-right .mdui-spinner-circle{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg);-webkit-animation:mdui-spinner-right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdui-spinner-right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes mdui-spinner-left-spin{from{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@keyframes mdui-spinner-left-spin{from{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@-webkit-keyframes mdui-spinner-right-spin{from{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}@keyframes mdui-spinner-right-spin{from{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}.mdui-theme-primary-amber .mdui-spinner-layer{border-color:#ffc107}.mdui-theme-primary-blue .mdui-spinner-layer{border-color:#2196f3}.mdui-theme-primary-blue-grey .mdui-spinner-layer{border-color:#607d8b}.mdui-theme-primary-brown .mdui-spinner-layer{border-color:#795548}.mdui-theme-primary-cyan .mdui-spinner-layer{border-color:#00bcd4}.mdui-theme-primary-deep-orange .mdui-spinner-layer{border-color:#ff5722}.mdui-theme-primary-deep-purple .mdui-spinner-layer{border-color:#673ab7}.mdui-theme-primary-green .mdui-spinner-layer{border-color:#4caf50}.mdui-theme-primary-grey .mdui-spinner-layer{border-color:#9e9e9e}.mdui-theme-primary-indigo .mdui-spinner-layer{border-color:#3f51b5}.mdui-theme-primary-light-blue .mdui-spinner-layer{border-color:#03a9f4}.mdui-theme-primary-light-green .mdui-spinner-layer{border-color:#8bc34a}.mdui-theme-primary-lime .mdui-spinner-layer{border-color:#cddc39}.mdui-theme-primary-orange .mdui-spinner-layer{border-color:#ff9800}.mdui-theme-primary-pink .mdui-spinner-layer{border-color:#e91e63}.mdui-theme-primary-purple .mdui-spinner-layer{border-color:#9c27b0}.mdui-theme-primary-red .mdui-spinner-layer{border-color:#f44336}.mdui-theme-primary-teal .mdui-spinner-layer{border-color:#009688}.mdui-theme-primary-yellow .mdui-spinner-layer{border-color:#ffeb3b}.mdui-panel{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.mdui-panel-item{color:rgba(0,0,0,.87);background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12);-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);-webkit-transition:margin .3s cubic-bezier(.4,0,.2,1);transition:margin .3s cubic-bezier(.4,0,.2,1);will-change:margin}.mdui-panel-item:last-child{border-bottom:none}.mdui-panel-item-header{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;height:48px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 24px;overflow:hidden;font-size:15px;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;will-change:height,background-color}.mdui-panel-item-header:active{background-color:#eee}.mdui-panel-item-title{width:36%;min-width:36%;-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:16px;overflow:hidden;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.mdui-panel-item-summary{-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:16px;overflow:hidden;color:rgba(0,0,0,.54);text-overflow:ellipsis;white-space:nowrap;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.mdui-panel-item-arrow{position:absolute;top:12px;right:24px;color:rgba(0,0,0,.54);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-transform:rotate(0);transform:rotate(0);will-change:transform,top}.mdui-panel-item-summary+.mdui-panel-item-arrow{position:relative;top:0!important;right:0}.mdui-panel-item-body{height:0;padding:0 24px;overflow:hidden;-webkit-transition:height .3s cubic-bezier(.4,0,.2,1);transition:height .3s cubic-bezier(.4,0,.2,1);will-change:height}.mdui-panel-item-body:after,.mdui-panel-item-body:before{display:table;content:" "}.mdui-panel-item-body:after{clear:both}.mdui-panel-item-body:after,.mdui-panel-item-body:before{display:table;content:" "}.mdui-panel-item-body:after{clear:both}.mdui-panel-item-body:after{height:16px}.mdui-panel-item-actions{display:block;width:100%;padding:16px 24px 0 24px;margin:16px -24px 0 -24px;text-align:right;border-top:1px solid rgba(0,0,0,.12)}.mdui-panel-item-actions .mdui-btn{margin-left:8px}.mdui-panel-item-actions .mdui-btn:first-child{margin-left:0}.mdui-panel-gapless{-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mdui-panel-gapless .mdui-panel-item{-webkit-box-shadow:none;box-shadow:none}.mdui-panel-gapless .mdui-panel-item-open{margin-top:0;margin-bottom:0}.mdui-panel-popout .mdui-panel-item-open{margin-right:-16px;margin-left:-16px}.mdui-panel-item-open{height:auto;margin-top:16px;margin-bottom:16px}.mdui-panel-item-open>.mdui-panel-item-header{height:64px}.mdui-panel-item-open>.mdui-panel-item-header .mdui-panel-item-arrow{top:20px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.mdui-panel-item-open>.mdui-panel-item-body{height:auto}.mdui-theme-layout-dark .mdui-panel-item{color:#fff;background-color:#303030;border-bottom:1px solid rgba(255,255,255,.12)}.mdui-theme-layout-dark .mdui-panel-item:last-child{border-bottom:none}.mdui-theme-layout-dark .mdui-panel-item-header:active{background-color:#424242}.mdui-theme-layout-dark .mdui-panel-item-summary{color:rgba(255,255,255,.7)}.mdui-theme-layout-dark .mdui-panel-item-arrow{color:#fff}.mdui-theme-layout-dark .mdui-panel-item-actions{border-top:1px solid rgba(255,255,255,.12)}.mdui-menu{position:fixed;z-index:99999;display:block;width:168px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px 0;margin:0;overflow-y:auto;-webkit-overflow-scrolling:touch;font-size:16px;color:rgba(0,0,0,.87);list-style:none;visibility:hidden;background-color:#fff;border-radius:2px;-webkit-box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);opacity:0;-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-property:opacity,visibility,-webkit-transform;transition-property:opacity,visibility,-webkit-transform;transition-property:transform,opacity,visibility;transition-property:transform,opacity,visibility,-webkit-transform;-webkit-transform:scale(0);transform:scale(0);will-change:transform,opacity,visibility}.mdui-menu .mdui-divider{margin-top:8px;margin-bottom:8px}.mdui-menu-open{visibility:visible;opacity:1;-webkit-transform:scale(1);transform:scale(1)}.mdui-menu-closing{visibility:visible;opacity:0;-webkit-transform:scale(1);transform:scale(1)}.mdui-menu-item{position:relative}.mdui-menu-item>a{position:relative;display:block;height:48px;padding:0 16px;overflow:hidden;line-height:48px;color:inherit;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdui-menu-item>a:hover{background-color:#eee}.mdui-menu-item>.mdui-menu{position:absolute;-webkit-box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12);box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.mdui-menu-item[disabled]>a{color:rgba(0,0,0,.38)!important;cursor:default}.mdui-menu-item[disabled]>a:hover{background-color:inherit!important}.mdui-menu-item[disabled]>a .mdui-icon{color:rgba(0,0,0,.26)}.mdui-menu-item-active{background-color:#eee}.mdui-menu-item-icon{display:inline-block;width:40px;-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:16px;color:rgba(0,0,0,.54)}.mdui-menu-item-helper{float:right}.mdui-menu-item-more{float:right;width:24px;height:24px;margin:4px 0;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M7%2010l5%205%205-5z%22%20opacity%3D%220.54%22%20transform%3D%22rotate(-90%2012%2C12.5)%22%20fill%3D%22%23000000%22%2F%3E%3C%2Fsvg%3E%0A")}.mdui-menu-cascade{width:320px;padding:16px 0;overflow-y:visible;font-size:15px}.mdui-menu-cascade>.mdui-menu-item>a{height:32px;padding:0 24px;line-height:32px}.mdui-theme-layout-dark .mdui-menu{color:#fff;background-color:#424242}.mdui-theme-layout-dark .mdui-menu-item>a:hover{background-color:#616161}.mdui-theme-layout-dark .mdui-menu-item[disabled]>a{color:rgba(255,255,255,.5)!important}.mdui-theme-layout-dark .mdui-menu-item[disabled]>a .mdui-icon{color:rgba(255,255,255,.3)}.mdui-theme-layout-dark .mdui-menu-item-active{background-color:#616161}.mdui-theme-layout-dark .mdui-menu-item-icon{color:#fff}.mdui-theme-layout-dark .mdui-menu-item-more{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M7%2010l5%205%205-5z%22%20transform%3D%22rotate(-90%2012%2C12.5)%22%20fill%3D%22%23FFFFFF%22%2F%3E%3C%2Fsvg%3E%0A")} \ No newline at end of file diff --git a/css/nexmoe.min.css b/css/nexmoe.min.css deleted file mode 100644 index 8aed279..0000000 --- a/css/nexmoe.min.css +++ /dev/null @@ -1,194 +0,0 @@ -/*隐藏滚动条*/ -::-webkit-scrollbar { - width: 0px; - height: 0px; -} - -/*导航*/ -.nexmoe-nav { - height: 56px; - width: 100%; - background-color: #fff; - box-shadow: 0 2px 6px rgba(0,0,0,.04); -} - -.navSize{ - position: relative; - height: 56px; - max-width: 1100px; - margin: 0 auto; -} - -/* 头像 */ -.avatar{ - position: absolute; - top: 4px; - left: 5%; - width: 40px; - height: 40px; - border: 4px solid #ebe8e8; - border-radius: 50%; - transition: 1.2s; -} - -/* 头像动画 */ -.avatar:hover{ - transform: rotate(360deg); - -webkit-transform: rotate(360deg); - -moz-transform: rotate(360deg); - -o-transform: rotate(360deg); - -ms-transform: rotate(360deg); -} - -.nav_menu{ - position: absolute; - top: 13px; - right: 5%; -} - -/* 导航 */ -.menu_ul{ - display: none; - float: left; - margin-block-start: 0; - margin-block-end: 0; - margin: 0 30px 0 0; - height: 30px; - width: auto; -} - -.menu_li{ - float: left; - list-style: none; - margin-left: 15px; - line-height: 30px; -} - -.menu_li a{ - font-size: 16px; - color: #7e7e7e; - transition: color 0.2s ease-out,border 0.2s ease-out,opacity 0.2s ease-out; - text-decoration: none; -} - -.menu_li a:hover{ - color: #1e89f2; -} - -/* 定义动画 */ -@-webkit-keyframes fadeIn { - 0% { - opacity: 0; /*初始状态 透明度为0*/ - } - 50% { - opacity: 0; /*中间状态 透明度为0*/ - } - 100% { - opacity: 1; /*结尾状态 透明度为1*/ - } -} - -/* 伪类出现 */ -.nav_menu:hover ul{ - display: inline; - -webkit-animation-name: fadeIn; /*动画名称*/ - -webkit-animation-duration: 0.8s; /*动画持续时间*/ - -webkit-animation-iteration-count: 1; /*动画次数*/ - -webkit-animation-delay: 0s; /*延迟时间*/ -} - -/* 图标icon */ -.nav_icon{ - float: left; - width: 30px; - height: 30px; - background: url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/images/icon_menu.png); - background-size:100% 100%; - transition: .6s; - cursor: pointer; -} - -/* 图标动画icon */ -.nav_icon:hover{ - background: url(//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe/images/icon_close.png); - background-size:100% 100%; - transform: rotate(360deg); - -webkit-transform: rotate(360deg); - -moz-transform: rotate(360deg); - -o-transform: rotate(360deg); - -ms-transform: rotate(360deg); -} - -.nexmoe-item { - margin: 20px -8px 0 !important; - padding: 15px !important; - border-radius: 5px; - -webkit-box-shadow: 0 0.2em 1em rgba(204, 204, 204, .3); - box-shadow: 0 0.2em 1em rgba(204, 204, 204, .3); - background-color: #fff; -} - -/*路径导航*/ -.mdui-toolbar { - width: auto; - margin-top: 30px !important; -} - -.mdui-typo-headline { - padding: 0; - font-size: 15px; - font-weight: normal; -} - -.mdui-toolbar > a:last-child { - opacity: 1; - background-color: #1e89f2; - color: #ffff; -} - -.mdui-toolbar > a { - padding: 0 16px; - line-height: 30px; - border-radius: 30px; - border: 1px solid #eee; -} - -@media screen and (max-width: 980px) { - .mdui-toolbar > a:last-child, .mdui-toolbar > i:first-child { - display: block; - } - - .mdui-toolbar > * { - display: none; - } - - - .mdui-list-item .mdui-text-right{ - display:none - } - -} - -.mdui-toolbar>* { - opacity: .5; -} - -.mdui-list { - padding: 0; -} - -.mdui-list > .th { - border: none; -} - -.mdui-list-item { - margin: 0 !important; - border-radius: 5px; - padding: 0 10px 0 5px !important; - border: 1px solid #eee; - margin-bottom: 10px !important; -} - -.mdui-typo { - padding: 10px 30px !important; -} \ No newline at end of file diff --git a/css/nexmoe_v2.min.css b/css/nexmoe_v2.min.css deleted file mode 100644 index 950253f..0000000 --- a/css/nexmoe_v2.min.css +++ /dev/null @@ -1,225 +0,0 @@ -/*隐藏滚动条*/ -::-webkit-scrollbar { - width: 0px; - height: 0px; -} - -/*导航*/ -.nexmoe-nav { - height: 56px; - width: 100%; - background-color: #fff; - box-shadow: 0 2px 6px rgba(0,0,0,.04); -} -.navSize{ - position: relative; - height: 56px; - max-width: 1100px; - margin: 0 auto; -} -/* 头像 */ -.avatar{ - position: absolute; - top: 4px; - left: 5%; - width: 40px; - height: 40px; - border: 4px solid #ebe8e8; - border-radius: 50%; - transition: 1.2s; -} -/* 头像动画 */ -.avatar:hover{ - transform: rotate(360deg); - -webkit-transform: rotate(360deg); - -moz-transform: rotate(360deg); - -o-transform: rotate(360deg); - -ms-transform: rotate(360deg); -} -.nav_menu{ - position: absolute; - top: 16px; - right: 5%; -} -/* 导航 */ -.menu_ul{ - display: none; - float: left; - margin-block-start: 0; - margin-block-end: 0; - margin: 0 30px 0 0; - height: 30px; - width: auto; -} -.menu_li{ - float: left; - list-style: none; - margin-left: 15px; - line-height: 30px; -} -.menu_li a{ - font-size: 16px; - color: #7e7e7e; - transition: color 0.2s ease-out,border 0.2s ease-out,opacity 0.2s ease-out; - text-decoration: none; -} -.menu_li a:hover{ - color: #1e89f2; -} -/* 定义动画 */ -@-webkit-keyframes fadeIn { -0% { -opacity: 0; /*初始状态 透明度为0*/ -} -50% { -opacity: 0; /*中间状态 透明度为0*/ -} -100% { -opacity: 1; /*结尾状态 透明度为1*/ -} -} -/* 伪类出现 */ -.nav_menu:hover ul{ - display: inline; - -webkit-animation-name: fadeIn; /*动画名称*/ - -webkit-animation-duration: 0.8s; /*动画持续时间*/ - -webkit-animation-iteration-count: 1; /*动画次数*/ - -webkit-animation-delay: 0s; /*延迟时间*/ -} -/* 图标icon */ -.nav_icon{ - float: left; - width: 26px; - height: 26px; - background: url(../images/icon_menu.png); - background-size:100% 100%; - transition: .6s; - cursor: pointer; -} -/* 图标动画icon */ -.nav_icon:hover{ - background: url(../images/icon_close.png); - background-size:100% 100%; - transform: rotate(360deg); - -webkit-transform: rotate(360deg); - -moz-transform: rotate(360deg); - -o-transform: rotate(360deg); - -ms-transform: rotate(360deg); -} - -.nexmoe-item { - margin: 20px -8px 0 !important; - padding: 15px !important; - border-radius: 5px; - -webkit-box-shadow: 0 0.2em 1em rgba(204, 204, 204, .3); - box-shadow: 0 0.2em 1em rgba(204, 204, 204, .3); - background-color: #fff; -} - -/*路径导航*/ -.mdui-toolbar { - width: auto; - margin-top: 30px !important; -} - -.mdui-typo-headline { - padding: 0; - font-size: 15px; - font-weight: normal; -} - -.mdui-toolbar > a:last-child { - opacity: 1; - background-color: #1e89f2; - color: #ffff; -} - -.mdui-toolbar > a { - padding: 0 16px; - line-height: 30px; - border-radius: 30px; - border: 1px solid #eee; -} - -@media screen and (max-width: 980px) { - .mdui-toolbar > a:last-child, .mdui-toolbar > i:first-child { - display: block; - } - - .mdui-toolbar > a , .mdui-toolbar > i{ - display: none; - } - - - .mdui-list-item .mdui-text-right{ - display:none - } - -} - -.mdui-toolbar > * { - /*opacity: .5;*/ - margin: 0; -} - -.mdui-select { - padding-right: 50px; - margin-right: 20px !important; -} - -.mdui-select-selected { - right: 10px; -} - -.mdui-select-menu { - -webkit-box-shadow: 0 0.2em 1em rgba(100, 100, 100, 0.2); - box-shadow: 0 0.2em 1em rgba(100, 100, 100, 0.2); -} - -.mdui-textfield-expandable { - width: 30px; -} - -.mdui-textfield-expandable .mdui-textfield-icon { - top: 4%; -} - -.mdui-list { - padding: 0; -} - -.mdui-list > .th { - border: none; -} - -.mdui-list-item { - margin: 0 !important; - border-radius: 5px; - padding: 0 10px 0 5px !important; - border: 1px solid #eee; - margin-bottom: 10px !important; -} - -.mdui-text-color-blue-grey-500 { - margin-top: 20px; - color: #000000 !important; -} - -.mdui-typo { - padding: 10px 30px !important; -} - -.mdui-overlay { - background-color: rgba(0,0,0,0.5); -} - -.mdui-dialog { - border-radius: 10px; - -webkit-box-shadow: 0 0.2em 1em rgba(50, 50, 50, 0.8); - box-shadow: 0 0.2em 1em rgba(50, 50, 50, 0.8); -} - -.nav-style > a:hover { - background-color: #1e89f2; - color: #ffff; -} \ No newline at end of file diff --git a/dist/css/app.6461726b.css b/dist/css/app.6461726b.css new file mode 100644 index 0000000..01c86ad --- /dev/null +++ b/dist/css/app.6461726b.css @@ -0,0 +1,75 @@ +.titleBar { + background-color: #30475E; + box-shadow: 0 0 10px #222831; +} + +.titleBar_item a:hover { + background-color: #222831; +} + +.titleBar_item a:hover i { + color: #DDDDDD; +} + +.titleBar_link>i { + color: #DDDDDD; +} + +.nexmoe-item { + -webkit-box-shadow: 0 0.2em 1em rgba(34, 40, 49, .3); + box-shadow: 0 0.2em 1em rgba(34, 40, 49, .3); + background-color: #30475E; + color: #DDDDDD; +} + +.mdui-toolbar>a { + border: none; +} + +.mdui-list-item { + border-color: #2A384A !important; +} + +.mdui-textfield-label , .mdui-textfield-input { + color: #DDDDDD; +} + +.titleBar_exhibit { + background-color: #30475E; + border-top: 2px solid #222831; +} + +.menu_list p { + color: #FFFFFF; + border-bottom: 1px solid #2F455C; +} + +.menu_list .menu_list_item { + color: #DDDDDD; +} + +.mdui-dialog { + color: #DDDDDD !important; + background-color: #30475E !important; +} + +.mdui-dialog-content , .mdui-dialog-content a { + color: #DDDDDD !important; +} + +.mdui-typo-title { + color: #DDDDDD !important; +} + +.bimg { + background-color: #222831 !important; +} + +.menu_list .menu_list_item:hover { + background-color: #222831; + color: #DDDDDD; +} + +.titleBar .titleBar_container .titleBar_avatar img { + border-color: rgba(42,64,87,0.5); +} \ No newline at end of file diff --git a/dist/css/app.666f6e74.css b/dist/css/app.666f6e74.css new file mode 100644 index 0000000..1f06486 --- /dev/null +++ b/dist/css/app.666f6e74.css @@ -0,0 +1,6 @@ +/* Icon font style */ +@font-face { + font-family: "iconfont"; + src: url(//at.alicdn.com/t/font_1679264_tle9h9614mq.eot?t=1583722241347); + src: url(//at.alicdn.com/t/font_1679264_tle9h9614mq.eot?t=1583722241347#iefix) format("embedded-opentype"), url(data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAi8AAsAAAAAECAAAAhtAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCEbgqQdI0WATYCJAM8CyAABCAFhG0HgRkbVw3Inpo8CYIQIpAQFdqG+3gInq/9Xs+9uw8+oUtSRgVECtF2KoOqgOAAHQGEbes6+wNt898F4Z31ldA+7aWxbFgFsSjEIzbg2HHMZQlbH7lIY7iKIFbhj+gckPwvEvGDNVdFtDOxtl7e5AYcpp5UkyYiIYloHUk1QyNkSm+AgHg2w8FyPnoIJ0OAKKW0BhmuGKoCMRYpCZVWmY06EA+EYad4CmGQ79nRgmwGj1Br0XvApvTnpYleIgYUz4A81eQlA6qhdy3U1ppF/1cwy/BQsb4YoLYYGKALgK2ZLntDzoIsHW+MaE1LDVAkOfgL/Fr7Wfazgs/afFb52eDPhn427rNJn9U6B7VAW3JuoUiO+gceECFKnARJLIYYHgEhPoqA+IAcD22v5iehFowBEahFkCiAgsQBDCQB4NDLQQoSo1CAxHzQBiQGVIJ4wGCQABgKEgLjQHxgEogCtbD3lJxyO5QCdAC0CjAzQZqmp3GCXmnZ3H0JipeXDZA2KSxeLirsLPESmzR8II4LRTQeH6+jZfGiZHOSTC4kxDkM3vo9vD8gpasjLU9dg9xIa/k2B2UGIzllAYnaLXf4FstYb3E8oUfqmTvDPoWoDy1uKiHr9i5qtCbGVkmedsLlSZJu56REq6Su2Oe9wNzqNka6TMP7pai/kHB5EWSxV0bwPGA2lxFeL4L5gjLeD3qgA+me8KRJ0uOB6QdI8iSCLQ4aEyN/1LHPtdHPNOFmK4ESGIGQyLaYloTo2j1pQM5NwhN10agm+lIb+6iORNTh5skSXrLn3I50V3FUE2rplfFp/p0tPB4pLwvNL9tyuEVdEX9CFjhfVFfCF55qv+dYsbSu6HiH47FOsZh2e06rplbH2vvkTbmSxvahO4U7IMSkg/tNDlS8V7n2ldr76J6xmL2c0Uc19eHG/A3XcG8oWhhWP4KKN+rGrHDf6EC+7rQ027P39PVOh1ibd8miL6aTOGGk2TuPpCWKFbLGORI2UqVkSF54EOQOUD0pnJFVAkFFjp4eaZh7EjzDzSrzxD4fywMVZ4oSGpoyMa9Xomp0tdR4ecbC81La45YbfcG5i5VwhbtfiBIL1/QAB7pKI++L/Edp+Kj1yeW+zO25iM/I1wc3y8nTEs6ry43dAdixW+3yBn2kry7gl5CR5WJLD7Mbi6ndndSVZ2O50WjV4DF2RrqotHXHSTKYEYupyejbSfsmavfzQBBunoskGkdX02MMoqOjRtWo1f/riWpGjSrGV/+v8BwYDnQV6eeuOZl9cu7qmweSWcmbU9FUv2y22h6Ory2jaktqqbLkQEngEPSq0G67SJey1NrS2tSylEBp4HBli4Yc257Zq0MLk37jwMh9fvU0lLsk73QwGKgI/eKXif+v9/1twov4p+lFl4ajg0H3/N0oVEs+2tOtzS2pZPQhtxjuJrTd86j1WGQU/F8O/qEF9RwXk6gW+PPy4HO/nTjCNaLvzL5DM7tMGIMa2MFEa1WYICQPsyikDm2F/40DNnTd2LWFzW63tci+zvqejf/IAfxZi1zjqx+/OTv+a2v2SU3qgE69cbVibR/ba6X61oBF7OPINfTPG12ruJE714RuF1P/dui9El1SWZdR0tN0eyJ6b2HugnVyy6z03suy2vbX08921/+gT/vLwJplI8+vWnV+5CNNJETxTE0NVwh/O7FThCPI4h4hNnXGkknahb0yFIf7yH6+f2jTuoYryozLmUppb0Y7iVnskLzyT5ek9JyQbsjpvDYyxI36+1ULsPypopG+9hfE0Pdlv/p+I+vsQtDlcEbzgO3bB3y3zQjNeSwxorkaNqL/mI349v3bw9ZKHr1xF/NgvBP5mCAA5VHPop6xHBoIoBzqCAStJxoM/iIXDEyeJJHMTJUAZRadYqa8sh77k+atkzaVR8o345nh56sf3FF1GX3/nvOzLCcJh6+ZxVj/pP5iQafJ0G0qgjLr+Olo+9ktOnY0QvucGHgiKCMQYaRcB22k/jhwNfvUEHg2dqWyU6eFIz8KBQIY/2PjuHG7LyVccvHIf0e4OcF87Gp84g+JLt/77SS+1ovEkrgx6zcuamjkDhIb/1xYbejq8YhjKqJUd+6cOhYpjffLI4u7KrqgA2omDzxmQtx2VF1ZMfpG+kBVS81yuXS2WKByGlWQEeu/crzw33eaXyZ+prGy/Gfi9iuy+LMSCtofmTCi/yfJNYzdzhhSUmB2IwDukzpMCrgXFFgxAOYk+gW4WldMBuC2WASbBQD6SJ/6rIOn+20b1hfA/XMJIwAwY9Gf/7dWot+TL7pNSer+N4z9lmV+dD9H0pT/m69YX0UeIES/UMC/FFqYYuH4LifFVK8LmCG6Zj8DvabAFPMRxSm8LfvAf1RSljfbCy58W2OEcICpKZWAEqUhpI2lte2i9IjRR+kTMkgZpTPK3WPkYMEQGwfQieVCKaQ5qFSSXBONz/a+aLF9rfQo8q3g4yqYMspMST1gjHZiJvqxtI6jq6mq2ZRZz9gMOpIjssqjaaPTomMDLlpLQ7MOM2OjKtqW9wuVtI1m17GJY6axkuMMlIFlrJRCbEBbLAxlZ5lptJ5ra6LA3rWszNDYtK2esQLBMFhodHBOuxqKKmYbm9HDYMMwMQcx8v2joTHixIIOdkqrHWMNNCwOzPOnqKAt5XNYKmXbXK3uS00HMzFSCRfEGKBMQxYGKxSKIIbGovIYKOz+5aZBo4ejLaYlcux0pSzoyDCv3Hb7JuvtPguIIo+QEhTBEBwRIEJEhIiROORzf7F4JAFJRJKQZAQLLYyDxu0W3WzcStucuIlJDiI26PR0FcNMF3E1Zo6jWaFRlDQ5qwR2nXPGS3HodTahg9axepOAturMFtxink4La2i9ScfhFtrAAQAAAA==) format("woff2"), url(//at.alicdn.com/t/font_1679264_tle9h9614mq.woff?t=1583722241347) format("woff"), url(//at.alicdn.com/t/font_1679264_tle9h9614mq.ttf?t=1583722241347) format("truetype"), url(//at.alicdn.com/t/font_1679264_tle9h9614mq.svg?t=1583722241347#iconfont) format("svg") +} \ No newline at end of file diff --git a/dist/css/app.6c69676874.css b/dist/css/app.6c69676874.css new file mode 100644 index 0000000..018b3a3 --- /dev/null +++ b/dist/css/app.6c69676874.css @@ -0,0 +1,423 @@ +* { + margin: 0; + padding: 0; +} + +::-webkit-scrollbar { + width: 0px; + height: 0px; +} + +.titleBar { + background-color: #ffffff; + color: #333333; + position: relative; + box-shadow: 0 0 10px #eeeeee; +} + +.titleBar_container { + width: 100%; + height: 3.5rem; + align-items: stretch; + display: flex; + max-width: 70%; + flex-grow: 1; + margin: 0 auto; + position: relative; +} + +.titleBar_avatar { + min-height: 3.5rem; + align-items: stretch; + display: flex; + flex-shrink: 0; +} + +.titleBar_item { + flex-grow: 0; + flex-shrink: 0; + display: block; + position: relative; +} + +.titleBar .titleBar_container .titleBar_avatar img { + width: 2.5rem; + height: 2.5rem; + border-width: 4px; + border-radius: 2.5rem; + border-style: solid; + border-color: #ebe8e8; + position: absolute; + top: 0.25rem; + transition: 1.2s; +} + +.titleBar .titleBar_container .titleBar_avatar img:hover { + transform: rotate(360deg); + -webkit-transform: rotate(360deg); + -moz-transform: rotate(360deg); + -o-transform: rotate(360deg); + -ms-transform: rotate(360deg); +} + +.titleBar_nav { + flex-grow: 1; + flex-shrink: 0; + align-items: stretch; + display: flex; +} + +.titleBar_nav_end { + justify-content: flex-end; + margin-left: auto; + align-items: stretch; + display: flex; +} + +.titleBar_nav_end a { + text-decoration: none; +} + +.titleBar_nav_end .titleBar_item { + align-items: stretch; + display: flex; +} + +.titleBar_link { + align-items: center; + display: flex; + cursor: pointer; + line-height: 1.5; + padding: .5rem .75rem; + position: relative; +} + +.titleBar_link>i { + color: #333; + display: inline-block; + font-family: iconfont, Material Icons !important; + font-size: 1.6rem; + font-style: normal; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.titleBar_link>i:before { + content: "\e623"; +} + +.titleBar_item a:hover { + background-color: #333; +} + +.titleBar_item a:hover i { + color: #fff; +} + +.titleBar_menu:hover div { + display: block; +} + +.titleBar_pan:hover div{ + display: block; +} + +.panBar_link > i{ + padding-top: 8px; + font-size: 1.8rem; +} + +.panBar_link > i:before { + content: "\E871"; +} + +.search_bar:hover form { + display: block; +} + +.searchBar_link>i:before { + content: "\e601"; +} + +.titleBar_exhibit{ + background-color: #fff; + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + border-top: 2px solid #333; + box-shadow: 0 8px 8px rgba(10, 10, 10, .1); + position: absolute; + display: none; + z-index: 30; +} + +.searchBar_form { + top: 100%; + right: 0; + text-align: center; +} + +.searchBar_form input { + width: 20rem; + height: 2rem; + margin: 10px 20px; + border-style: solid; + border-width: 2px; + border-radius: 2rem; + border-color: #666; + padding: 0 15px; + outline: none; +} + +.searchBar_form input:focus { + border-color: #333; +} + +.menu_list { + font-size: .875rem; + right: 0; + width: 8rem; + top: 100%; +} + +.menu_list p { + color: #000; + padding: 10px 0; + font-weight: bold; + font-size: 0.8rem; + text-align: center; + border-bottom: 1px solid #fafafa; +} + +.menu_list .menu_list_item { + color: #333; + display: block; + text-align: center; + line-height: 3rem; + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} + +.menu_list .menu_list_item:hover { + background-color: #333; + color: #fff; +} + +.bimg { + width: 100%; + height: 100%; + background-color: #fdfdfd; + background-size: cover; + background-repeat: no-repeat; + background-position: center top; + background-attachment: fixed; + -webkit-background-size: cover; + -o-background-size: cover; + position: fixed; + top: 0; + left: 0; + z-index: -30; + zoom: 1; +} + +.mdui-container { + padding: 0; + max-width: 70%; +} + +.mdui-container-fluid #content { + padding: 15px 0; +} + +.nexmoe-item { + margin: 20px -8px 0 !important; + padding: 15px !important; + border-radius: 8px; + -webkit-box-shadow: 0 0.2em 1em rgba(204, 204, 204, .3); + box-shadow: 0 0.2em 1em rgba(204, 204, 204, .3); + background-color: #fff; +} + +.mdui-row, [class*=mdui-row-] { + margin: 0; +} + +.mdui-toolbar { + width: auto; + margin-top: 30px !important; +} + +.mdui-typo-headline { + padding: 0; + font-size: 15px; + font-weight: normal; +} + +.mdui-toolbar>a:last-child { + opacity: 1; + background-color: #1e89f2; + color: #ffff; +} + +.mdui-toolbar>a { + padding: 0 16px; + line-height: 30px; + border-radius: 30px; + border: 1px solid #eee; +} + +.mdui-toolbar>* { + /*opacity: .5;*/ + margin: 0; +} + +.mdui-select { + padding-right: 50px; + margin-right: 20px !important; +} + +.mdui-select-selected { + right: 10px; +} + +.mdui-select-menu { + -webkit-box-shadow: 0 0.2em 1em rgba(100, 100, 100, 0.2); + box-shadow: 0 0.2em 1em rgba(100, 100, 100, 0.2); + width: auto !important; +} + +.mdui-textfield-expandable { + width: 30px; +} + +.mdui-textfield-expandable .mdui-textfield-icon { + top: 4%; +} + +.mdui-list { + padding: 0; +} + +.mdui-list>.th { + border: none; +} + +.mdui-list-item { + margin: 0 !important; + border-radius: 5px; + padding: 0 10px 0 5px !important; + border: 1px solid #eee; + margin-bottom: 10px !important; +} + +.mdui-text-color-blue-grey-500 { + margin-top: 20px; +} + +.mdui-typo { + padding: 10px 30px !important; +} + +.mdui-overlay { + background-color: rgba(0, 0, 0, 0.5); +} + +.mdui-dialog { + border-radius: 10px; + -webkit-box-shadow: 0 0.2em 1em rgba(50, 50, 50, 0.8); + box-shadow: 0 0.2em 1em rgba(50, 50, 50, 0.8); +} + +.nav-style>a:hover { + background-color: #1e89f2; + color: #ffff; +} + +.nav-style>a:last-child { + opacity: 1; + background-color: #1e89f2; + color: #ffff; +} + +.mdui-progress-indeterminate { + background-color: #607d8b; +} + +.mdui-dialog-actions .mdui-btn , .mdui-select-menu-item[selected]{ + color: #1e89f2; +} + +.mdui-textfield-focus .mdui-textfield-input, .mdui-textfield-focus .mdui-textfield-input:hover{ + border-bottom-color: #1E89F2; + -webkit-box-shadow: 0 1px 0 0 #1E89F2; + box-shadow: 0 1px 0 0 #1E89F2; +} + +@media screen and (max-width: 1200px) { + + .titleBar_container, + .mdui-container { + max-width: 860px; + } +} + +@media screen and (max-width: 980px) { + + .mdui-toolbar>a:last-child, + .mdui-toolbar>i:last-child { + display: block; + } + + .mdui-toolbar>a, + .mdui-toolbar>i { + display: none; + } + + + .mdui-list-item .mdui-text-right { + display: none + } +} + +@media screen and (max-width: 900px) { + + .titleBar_container, + .mdui-container { + max-width: 80%; + } +} + +@media screen and (max-width: 780px) { + + .titleBar_container, + .mdui-container { + max-width: 80%; + } +} + +@media screen and (max-width: 480px) { + + .titleBar_container, + .mdui-container { + max-width: 95%; + } + + .searchBar_form { + width: 100vw; + right: -14vw; + } + + .searchBar_form input { + width: 85vw; + margin: 10px auto; + } + + .panBar_link>i { + padding-top: 4px; + } + + .titleBar_item a:first-child { + padding-top: 14px; + } + +} \ No newline at end of file diff --git a/dist/img/icon_close.svg b/dist/img/icon_close.svg new file mode 100644 index 0000000..7d471cb --- /dev/null +++ b/dist/img/icon_close.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/dist/img/icon_menu.svg b/dist/img/icon_menu.svg new file mode 100644 index 0000000..c45ced5 --- /dev/null +++ b/dist/img/icon_menu.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/GoIndex_v2.js b/dist/index.js similarity index 95% rename from GoIndex_v2.js rename to dist/index.js index e903b16..0ac04d8 100644 --- a/GoIndex_v2.js +++ b/dist/index.js @@ -1,13 +1,10 @@ const authConfig = { - "siteName": "GoIndex", // 网站名称 - "siteIcon": "", // 网站图标 - "version": "_4.28", // 程序版本。用户不要手动修改 - /*"client_id": "202264815644.apps.googleusercontent.com", - "client_secret": "X4Z3ca8xfWDb1Voo-F9a7ZxJ",*/ - // 【注意】强烈推荐使用自己的 client_id 和 client_secret + "siteName": "GoIndex", // 网站名称 + "siteIcon": "//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe@1.1.6/images/favicon.ico", //网站图标 + "version": "2.0.0", // 程序版本 "client_id": "", "client_secret": "", - "refresh_token": "", // 授权 token + "refresh_token": "", // 授权token /** * 设置要显示的多个云端硬盘;按格式添加多个 * [id]: 可以是 团队盘id、子文件夹id、或者"root"(代表个人盘根目录); @@ -24,7 +21,10 @@ const authConfig = { "roots": [ { id: "root", - name: "个人盘" + name: "root", + user: '', + pass: "", + protect_file_link: true }, { id: "drive_id", @@ -48,7 +48,7 @@ const authConfig = { * 如果设置的值过小,会导致文件列表页面滚动条增量加载(分页加载)失效; * 此值的另一个作用是,如果目录内文件数大于此设置值(即需要多页展示的),将会对首次列目录结果进行缓存。 */ - "files_list_page_size": 500, + "files_list_page_size": 50, /** * 搜索结果页面每页显示的数量。【推荐设置值为 50 到 1000 之间】; * 如果设置大于1000,会导致请求 drive api 时出错; @@ -67,17 +67,34 @@ const authConfig = { }; /** - * web ui 设置 + * 主题配置 */ -const uiConfig = { - // 此版本只支持 material - "theme": "material", // DO NOT set it to classic - "dark_mode": false, +const themeConfig = { + // 地址 + "url": "//cdn.jsdelivr.net/gh/5MayRain/goIndex-theme-nexmoe", + // 主题 ( light:亮色 | dark:深色 ) + "theme": "light", + // 主色 "main_color": "blue-grey", + // 强调色 "accent_color": "blue", - /*"main_color": "light-green", - "accent_color": "green",*/ - "fluid_navigation_bar": true, + // 头像 + "avatar": "//cdn.jsdelivr.net/gh/5MayRain/ImageHosting/Blog/Website/avatar.png", + // 背景图片 + "bimg": "//cdn.jsdelivr.net/gh/5MayRain/ImageHosting/Blog/Posts/2021/07/20/cover_01.jpg", + //显示菜单 + "menu_show": true, + // 菜单 + "menus": [ + { + name: "博客", + url: "//mrzgh.top" + }, + { + name: "登录", + url: "//drive.google.com" + } + ], }; /** @@ -125,13 +142,18 @@ function html(current_drive_order = 0, model = {}) { ${authConfig.siteName} + - + + + @@ -850,5 +872,4 @@ String.prototype.trim = function (char) { return this.replace(new RegExp('^\\' + char + '+|\\' + char + '+$', 'g'), ''); } return this.replace(/^\s+|\s+$/g, ''); -}; -//# sourceMappingURL=/sm/66a94fc3ec45fb7c78cc4edadd8e448d9b1c735f8c0cebcf7bbb4b40b9caacde.map \ No newline at end of file +}; \ No newline at end of file diff --git a/dist/style.css b/dist/style.css new file mode 100644 index 0000000..9b89c3a --- /dev/null +++ b/dist/style.css @@ -0,0 +1,3 @@ +@import url(//cdn.jsdelivr.net/npm/mdui@1.0.1/dist/css/mdui.min.css); +@import url(css/app.666f6e74.css); +@import url(css/app.6c69676874.css); \ No newline at end of file diff --git a/dist/themes/dark/app.js b/dist/themes/dark/app.js new file mode 100644 index 0000000..6c92286 --- /dev/null +++ b/dist/themes/dark/app.js @@ -0,0 +1,1123 @@ +// 在head 中 加载 必要静态 +document.write(''); +document.write(''); +document.write(''); +// markdown支持 +document.write(''); +document.write(''); + +// 初始化页面,并载入必要资源 +function init() { + document.siteName = $('title').html(); + $('body').addClass(`mdui-theme-primary-${ThemeConfig.main_color} mdui-theme-accent-${ThemeConfig.accent_color}`); + var html = ''; + var model = window.MODEL; + var cur = window.current_drive_order || 0; + var names = window.drive_names; + var search_text = model.is_search_page ? (model.q || '') : ''; + + // 搜索 + var search_bar = ` + `; + // 盘 + var pan_bar = ` +
    + + +
    `; + + // 菜单 + var menu_bar = ` +
    + + +
    `; + + html = ` +
    +
    + +
    + + + +
    +
    +
    `+ pan_bar + search_bar; + + + if (ThemeConfig.menu_show) { + html += menu_bar + `
    `; + } else { + html += `
    `; + } + + html += ` +
    + +`; + + html += ` +
    +
    + +
    +
    + +
    + +
    +
    +




    `; + + $('body').html(html); + $('#readme_md').hide().html(''); + $('#head_md').hide().html(''); +} + +const Os = { + isWindows: navigator.platform.toUpperCase().indexOf('WIN') > -1, // .includes + isMac: navigator.platform.toUpperCase().indexOf('MAC') > -1, + isMacLike: /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform), + isIos: /(iPhone|iPod|iPad)/i.test(navigator.platform), + isMobile: /Android|webOS|iPhone|iPad|iPod|iOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) +}; + +function getDocumentHeight() { + var D = document; + return Math.max( + D.body.scrollHeight, D.documentElement.scrollHeight, + D.body.offsetHeight, D.documentElement.offsetHeight, + D.body.clientHeight, D.documentElement.clientHeight + ); +} + +function render(path) { + if (path.indexOf("?") > 0) { + path = path.substr(0, path.indexOf("?")); + } + title(path); + nav(path); + // .../0: 这种 + var reg = /\/\d+:$/g; + if (window.MODEL.is_search_page) { + // 用来存储一些滚动事件的状态 + window.scroll_status = { + // 滚动事件是否已经绑定 + event_bound: false, + // "滚动到底部,正在加载更多数据" 事件的锁 + loading_lock: false + }; + render_search_result_list() + } else if (path.match(reg) || path.substr(-1) == '/') { + // 用来存储一些滚动事件的状态 + window.scroll_status = { + // 滚动事件是否已经绑定 + event_bound: false, + // "滚动到底部,正在加载更多数据" 事件的锁 + loading_lock: false + }; + list(path); + } else { + file(path); + } +} + + +// 渲染 title +function title(path) { + path = decodeURI(path); + var cur = window.current_drive_order || 0; + var drive_name = window.drive_names[cur]; + path = path.replace(`/${cur}:`, ''); + // $('title').html(document.siteName + ' - ' + path); + var model = window.MODEL; + if (model.is_search_page) + $('title').html(`${document.siteName} - ${drive_name} - 搜索 ${model.q} 的结果`); + else + $('title').html(`${document.siteName} - ${drive_name} - ${path}`); +} + +// 渲染导航栏 +function nav(path) { + var model = window.MODEL; + var html = ""; + var cur = window.current_drive_order || 0; + var names = window.drive_names; + /*html += ``; + html += `
      `; + names.forEach((name, idx) => { + html += `
    • ${name}
    • `; + }); + html += `
    `;*/ + + // 修改为 select + // html += ``; + + html += `/`; + if (!model.is_search_page) { + var arr = path.trim('/').split('/'); + var p = '/'; + if (arr.length > 1) { + arr.shift(); + for (i in arr) { + var n = arr[i]; + n = decodeURI(n); + p += n + '/'; + if (n == '') { + break; + } + html += `chevron_right${n}`; + } + } + } + // var search_text = model.is_search_page ? (model.q || '') : ''; + // const isMobile = Os.isMobile; + // var search_bar = `
    + // `; + + // // 个人盘 或 团队盘 + // if (model.root_type < 2) { + // // 显示搜索框 + // html += search_bar; + // } + + $('#nav').html(html); + mdui.mutation(); + mdui.updateTextFields(); +} + +/** + * 发起列目录的 POST 请求 + * @param path Path + * @param params Form params + * @param resultCallback Success Result Callback + * @param authErrorCallback Pass Error Callback + */ +function requestListPath(path, params, resultCallback, authErrorCallback) { + var p = { + password: params['password'] || null, + page_token: params['page_token'] || null, + page_index: params['page_index'] || 0 + }; + $.post(path, p, function (data, status) { + var res = jQuery.parseJSON(data); + if (res && res.error && res.error.code == '401') { + // 密码验证失败 + if (authErrorCallback) authErrorCallback(path) + } else if (res && res.data) { + if (resultCallback) resultCallback(res, path, p) + } + }) +} + +/** + * 搜索 POST 请求 + * @param params Form params + * @param resultCallback Success callback + */ +function requestSearch(params, resultCallback) { + var p = { + q: params['q'] || null, + page_token: params['page_token'] || null, + page_index: params['page_index'] || 0 + }; + $.post(`/${window.current_drive_order}:search`, p, function (data, status) { + var res = jQuery.parseJSON(data); + if (res && res.data) { + if (resultCallback) resultCallback(res, p) + } + }) +} + + +// 渲染文件列表 +function list(path) { + var content = ` + + +
    +
      +
    • +
      + 文件 + expand_more +
      +
      + 修改时间 + expand_more +
      +
      + 大小 + expand_more +
      +
    • +
    +
    +
    +
      +
    +
    +
    + `; + $('#content').html(content); + + var password = localStorage.getItem('password' + path); + $('#list').html(`
    `); + + /** + * 列目录请求成功返回数据后的回调 + * @param res 返回的结果(object) + * @param path 请求的路径 + * @param prevReqParams 请求时所用的参数 + */ + function successResultCallback(res, path, prevReqParams) { + + // 把 nextPageToken 和 currentPageIndex 暂存在 list元素 中 + $('#list') + .data('nextPageToken', res['nextPageToken']) + .data('curPageIndex', res['curPageIndex']); + + // 移除 loading spinner + $('#spinner').remove(); + + if (res['nextPageToken'] === null) { + // 如果是最后一页,取消绑定 scroll 事件,重置 scroll_status ,并 append 数据 + $(window).off('scroll'); + window.scroll_status.event_bound = false; + window.scroll_status.loading_lock = false; + append_files_to_list(path, res['data']['files']); + } else { + // 如果不是最后一页,append数据 ,并绑定 scroll 事件(如果还未绑定),更新 scroll_status + append_files_to_list(path, res['data']['files']); + if (window.scroll_status.event_bound !== true) { + // 绑定事件,如果还未绑定 + $(window).on('scroll', function () { + var scrollTop = $(this).scrollTop(); + var scrollHeight = getDocumentHeight(); + var windowHeight = $(this).height(); + // 滚到底部 + if (scrollTop + windowHeight > scrollHeight - (Os.isMobile ? 130 : 80)) { + /* + 滚到底部事件触发时,如果此时已经正在 loading 中,则忽略此次事件; + 否则,去 loading,并占据 loading锁,表明 正在 loading 中 + */ + if (window.scroll_status.loading_lock === true) { + return; + } + window.scroll_status.loading_lock = true; + + // 展示一个 loading spinner + $(`
    `) + .insertBefore('#readme_md'); + mdui.updateSpinners(); + // mdui.mutation(); + + let $list = $('#list'); + requestListPath(path, { + password: prevReqParams['password'], + page_token: $list.data('nextPageToken'), + // 请求下一页 + page_index: $list.data('curPageIndex') + 1 + }, + successResultCallback, + // 密码和之前相同。不会出现 authError + null + ) + } + }); + window.scroll_status.event_bound = true + } + } + + // loading 成功,并成功渲染了新数据之后,释放 loading 锁,以便能继续处理 "滚动到底部" 事件 + if (window.scroll_status.loading_lock === true) { + window.scroll_status.loading_lock = false + } + } + + // 开始从第1页请求数据 + requestListPath(path, {password: password}, + successResultCallback, + function (path) { + $('#spinner').remove(); + var pass = prompt("目录加密, 请输入密码", ""); + localStorage.setItem('password' + path, pass); + if (pass != null && pass != "") { + list(path); + } else { + history.go(-1); + } + }); +} + +/** + * 把请求得来的新一页的数据追加到 list 中 + * @param path 路径 + * @param files 请求得来的结果 + */ +function append_files_to_list(path, files) { + var $list = $('#list'); + // 是最后一页数据了吗? + var is_lastpage_loaded = null === $list.data('nextPageToken'); + var is_firstpage = '0' == $list.data('curPageIndex'); + + html = ""; + let targetFiles = []; + for (i in files) { + var item = files[i]; + var p = path + item.name + '/'; + if (item['size'] == undefined) { + item['size'] = ""; + } + + item['modifiedTime'] = utc2beijing(item['modifiedTime']); + item['size'] = formatFileSize(item['size']); + if (item['mimeType'] == 'application/vnd.google-apps.folder') { + html += `
  • +
    + folder_open + ${item.name} +
    +
    ${item['modifiedTime']}
    +
    ${item['size']}
    +
    +
  • `; + } else { + var p = path + item.name; + const filepath = path + item.name; + var c = "file"; + // 当加载完最后一页后,才显示 README ,否则会影响滚动事件 + if (is_lastpage_loaded && item.name == "README.md") { + get_file(p, item, function (data) { + markdown("#readme_md", data); + }); + } + if (item.name == "HEAD.md") { + get_file(p, item, function (data) { + markdown("#head_md", data); + }); + } + var ext = p.split('.').pop().toLowerCase(); + if ("|html|php|css|go|java|js|json|txt|sh|md|mp4|webm|avi|bmp|jpg|jpeg|png|gif|m4a|mp3|flac|wav|ogg|mpg|mpeg|mkv|rm|rmvb|mov|wmv|asf|ts|flv|pdf|".indexOf(`|${ext}|`) >= 0) { + targetFiles.push(filepath); + p += "?a=view"; + c += " view"; + } + html += `
  • +
    + insert_drive_file + ${item.name} +
    +
    ${item['modifiedTime']}
    +
    ${item['size']}
    +
    +
  • `; + } + } + + /*let targetObj = {}; + targetFiles.forEach((myFilepath, myIndex) => { + if (!targetObj[myFilepath]) { + targetObj[myFilepath] = { + filepath: myFilepath, + prev: myIndex === 0 ? null : targetFiles[myIndex - 1], + next: myIndex === targetFiles.length - 1 ? null : targetFiles[myIndex + 1], + } + } + }) + // console.log(targetObj) + if (Object.keys(targetObj).length) { + localStorage.setItem(path, JSON.stringify(targetObj)); + // console.log(path) + }*/ + + if (targetFiles.length > 0) { + let old = localStorage.getItem(path); + let new_children = targetFiles; + // 第1页重设;否则追加 + if (!is_firstpage && old) { + let old_children; + try { + old_children = JSON.parse(old); + if (!Array.isArray(old_children)) { + old_children = [] + } + } catch (e) { + old_children = []; + } + new_children = old_children.concat(targetFiles) + } + + localStorage.setItem(path, JSON.stringify(new_children)) + } + + // 是第1页时,去除横向loading条 + $list.html(($list.data('curPageIndex') == '0' ? '' : $list.html()) + html); + // 是最后一页时,统计并显示出总项目数 + if (is_lastpage_loaded) { + $('#count').removeClass('mdui-hidden').find('.number').text($list.find('li.mdui-list-item').length); + } +} + +/** + * 渲染搜索结果列表。有大量重复代码,但是里面有不一样的逻辑,暂时先这样分开弄吧 + */ +function render_search_result_list() { + var content = ` +
    +
      +
    • +
      + 文件 + expand_more +
      +
      + 修改时间 + expand_more +
      +
      + 大小 + expand_more +
      +
    • +
    +
    +
    +
      +
    +
    +
    + `; + $('#content').html(content); + + $('#list').html(`
    `); + + /** + * 搜索请求成功返回数据后的回调 + * @param res 返回的结果(object) + * @param path 请求的路径 + * @param prevReqParams 请求时所用的参数 + */ + function searchSuccessCallback(res, prevReqParams) { + + // 把 nextPageToken 和 currentPageIndex 暂存在 list元素 中 + $('#list') + .data('nextPageToken', res['nextPageToken']) + .data('curPageIndex', res['curPageIndex']); + + // 移除 loading spinner + $('#spinner').remove(); + + if (res['nextPageToken'] === null) { + // 如果是最后一页,取消绑定 scroll 事件,重置 scroll_status ,并 append 数据 + $(window).off('scroll'); + window.scroll_status.event_bound = false; + window.scroll_status.loading_lock = false; + append_search_result_to_list(res['data']['files']); + } else { + // 如果不是最后一页,append数据 ,并绑定 scroll 事件(如果还未绑定),更新 scroll_status + append_search_result_to_list(res['data']['files']); + if (window.scroll_status.event_bound !== true) { + // 绑定事件,如果还未绑定 + $(window).on('scroll', function () { + var scrollTop = $(this).scrollTop(); + var scrollHeight = getDocumentHeight(); + var windowHeight = $(this).height(); + // 滚到底部 + if (scrollTop + windowHeight > scrollHeight - (Os.isMobile ? 130 : 80)) { + /* + 滚到底部事件触发时,如果此时已经正在 loading 中,则忽略此次事件; + 否则,去 loading,并占据 loading锁,表明 正在 loading 中 + */ + if (window.scroll_status.loading_lock === true) { + return; + } + window.scroll_status.loading_lock = true; + + // 展示一个 loading spinner + $(`
    `) + .insertBefore('#readme_md'); + mdui.updateSpinners(); + // mdui.mutation(); + + let $list = $('#list'); + requestSearch({ + q: window.MODEL.q, + page_token: $list.data('nextPageToken'), + // 请求下一页 + page_index: $list.data('curPageIndex') + 1 + }, + searchSuccessCallback + ) + } + }); + window.scroll_status.event_bound = true + } + } + + // loading 成功,并成功渲染了新数据之后,释放 loading 锁,以便能继续处理 "滚动到底部" 事件 + if (window.scroll_status.loading_lock === true) { + window.scroll_status.loading_lock = false + } + } + + // 开始从第1页请求数据 + requestSearch({q: window.MODEL.q}, searchSuccessCallback); +} + +/** + * 追加新一页的搜索结果 + * @param files + */ +function append_search_result_to_list(files) { + var $list = $('#list'); + // 是最后一页数据了吗? + var is_lastpage_loaded = null === $list.data('nextPageToken'); + // var is_firstpage = '0' == $list.data('curPageIndex'); + + html = ""; + + for (i in files) { + var item = files[i]; + if (item['size'] == undefined) { + item['size'] = ""; + } + + item['modifiedTime'] = utc2beijing(item['modifiedTime']); + item['size'] = formatFileSize(item['size']); + if (item['mimeType'] == 'application/vnd.google-apps.folder') { + html += `
  • +
    + folder_open + ${item.name} +
    +
    ${item['modifiedTime']}
    +
    ${item['size']}
    +
    +
  • `; + } else { + var c = "file"; + var ext = item.name.split('.').pop().toLowerCase(); + if ("|html|php|css|go|java|js|json|txt|sh|md|mp4|webm|avi|bmp|jpg|jpeg|png|gif|m4a|mp3|flac|wav|ogg|mpg|mpeg|mkv|rm|rmvb|mov|wmv|asf|ts|flv|".indexOf(`|${ext}|`) >= 0) { + c += " view"; + } + html += `
  • +
    + insert_drive_file + ${item.name} +
    +
    ${item['modifiedTime']}
    +
    ${item['size']}
    +
    +
  • `; + } + } + + // 是第1页时,去除横向loading条 + $list.html(($list.data('curPageIndex') == '0' ? '' : $list.html()) + html); + // 是最后一页时,统计并显示出总项目数 + if (is_lastpage_loaded) { + $('#count').removeClass('mdui-hidden').find('.number').text($list.find('li.mdui-list-item').length); + } +} + +/** + * 搜索结果项目点击事件 + * @param a_ele 点击的元素 + */ +function onSearchResultItemClick(a_ele) { + var me = $(a_ele); + var can_preview = me.hasClass('view'); + var cur = window.current_drive_order; + var dialog = mdui.dialog({ + title: '', + content: '
    正在获取目标路径...
    ', + // content: '
    ', + history: false, + modal: true, + closeOnEsc: true + }); + mdui.updateSpinners(); + + // 请求获取路径 + $.post(`/${cur}:id2path`, {id: a_ele.id}, function (data) { + if (data) { + dialog.close(); + var href = `/${cur}:${data}${can_preview ? '?a=view' : ''}`; + dialog = mdui.dialog({ + title: 'Path', + content: `${data}`, + history: false, + modal: true, + closeOnEsc: true, + buttons: [ + { + text: '打开', onClick: function () { + window.location.href = href + } + }, { + text: '新标签中打开', onClick: function () { + window.open(href) + } + } + , {text: '取消'} + ] + }); + return; + } + dialog.close(); + dialog = mdui.dialog({ + title: 'Erro', + content: 'o(╯□╰)o 可能是因为该盘中并不存在此项!也可能因为没有把【与我共享】的文件添加到个人云端硬盘中!', + history: false, + modal: true, + closeOnEsc: true, + buttons: [ + {text: 'WTF ???'} + ] + }); + }) +} + +function get_file(path, file, callback) { + var key = "file_path_" + path + file['modifiedTime']; + var data = localStorage.getItem(key); + if (data != undefined) { + return callback(data); + } else { + $.get(path, function (d) { + localStorage.setItem(key, d); + callback(d); + }); + } +} + + +// 文件展示 ?a=view +function file(path) { + var name = path.split('/').pop(); + var ext = name.split('.').pop().toLowerCase().replace(`?a=view`, "").toLowerCase(); + if ("|html|php|css|go|java|js|json|txt|sh|md|".indexOf(`|${ext}|`) >= 0) { + return file_code(path); + } + + if ("|mp4|webm|avi|".indexOf(`|${ext}|`) >= 0) { + return file_video(path); + } + + if ("|mpg|mpeg|mkv|rm|rmvb|mov|wmv|asf|ts|flv|".indexOf(`|${ext}|`) >= 0) { + return file_video(path); + } + + if ("|mp3|flac|wav|ogg|m4a|".indexOf(`|${ext}|`) >= 0) { + return file_audio(path); + } + + if ("|bmp|jpg|jpeg|png|gif|".indexOf(`|${ext}|`) >= 0) { + return file_image(path); + } + + if ('pdf' === ext) return file_pdf(path); +} + +// 文件展示 |html|php|css|go|java|js|json|txt|sh|md| +function file_code(path) { + var type = { + "html": "html", + "php": "php", + "css": "css", + "go": "golang", + "java": "java", + "js": "javascript", + "json": "json", + "txt": "Text", + "sh": "sh", + "md": "Markdown", + }; + var name = path.split('/').pop(); + var ext = name.split('.').pop().toLowerCase(); + var href = window.location.origin + path; + var content = ` +
    +
    
    +
    +
    + + +
    +file_download + + + + `; + $('#content').html(content); + + $.get(path, function (data) { + $('#editor').html($('
    ').text(data).html()); + var code_type = "Text"; + if (type[ext] != undefined) { + code_type = type[ext]; + } + var editor = ace.edit("editor"); + editor.setTheme("ace/theme/ambiance"); + editor.setFontSize(18); + editor.session.setMode("ace/mode/" + code_type); + + //Autocompletion + editor.setOptions({ + enableBasicAutocompletion: true, + enableSnippets: true, + enableLiveAutocompletion: true, + maxLines: Infinity + }); + }); +} + +function copyToClipboard(str) { + const $temp = $(""); + $("body").append($temp); + $temp.val(str).select(); + document.execCommand("copy"); + $temp.remove(); +} + +// 文件展示 视频 |mp4|webm|avi| +function file_video(path) { + const url = window.location.origin + path; + let player_items = [ + { + text: 'MXPlayer(Free)', + href: `intent:${url}#Intent;package=com.mxtech.videoplayer.ad;S.title=${path};end`, + }, + { + text: 'MXPlayer(Pro)', + href: `intent:${url}#Intent;package=com.mxtech.videoplayer.pro;S.title=${path};end`, + }, + { + text: 'nPlayer', + href: `nplayer-${url}`, + }, + { + text: 'VLC', + href: `vlc://${url}`, + }, + { + text: 'PotPlayer', + href: `potplayer://${url}` + } + ] + .map(it => `
  • ${it.text}
  • `) + .join(''); + player_items += `
  • +
  • 复制链接
  • `; + const playBtn = ` + +
      ${player_items}
    `; + + const playUI = ` + `; + + const dpUI = ` +
    + `; + + var content = ` +
    +
    + ${dpUI} +
    ${playBtn} + +
    + + +
    +
    + + +
    +
    +file_download + `; + $('#content').html(content); + $('#copy-link').on('click', () => { + copyToClipboard(url); + mdui.snackbar('已复制到剪切板!'); + }); + + const dp = new DPlayer({ + container: document.getElementById('dplayer'), + autoplay: false, + theme: '#b7daff', + loop: false, + lang: 'zh-cn', + screenshot: true, + hotkey: true, + preload: 'auto', + video: { + quality: [ + { + name: 'HD', + url: url, + } + ], + defaultQuality: 0, + }, +}); + +} + +// 文件展示 音频 |mp3|flac|m4a|wav|ogg| +function file_audio(path) { + var url = window.location.origin + path; + var content = ` +
    +
    + +
    + +
    + + +
    +
    + + +
    +
    +file_download + `; + $('#content').html(content); +} + +// 文件展示 pdf pdf +function file_pdf(path) { + const url = window.location.origin + path; + const inline_url = `${url}?inline=true` + const file_name = decodeURI(path.slice(path.lastIndexOf('/') + 1, path.length)) + var content = ` + + file_download + `; + $('#content').removeClass('mdui-container').addClass('mdui-container-fluid').css({padding: 0}).html(content); +} + +// 图片展示 +function file_image(path) { + var url = window.location.origin + path; + // console.log(window.location.pathname) + const currentPathname = window.location.pathname + const lastIndex = currentPathname.lastIndexOf('/'); + const fatherPathname = currentPathname.slice(0, lastIndex + 1); + // console.log(fatherPathname) + let target_children = localStorage.getItem(fatherPathname); + // console.log(`fatherPathname: ${fatherPathname}`); + // console.log(target_children) + let targetText = ''; + if (target_children) { + try { + target_children = JSON.parse(target_children); + if (!Array.isArray(target_children)) { + target_children = [] + } + } catch (e) { + console.error(e); + target_children = []; + } + if (target_children.length > 0 && target_children.includes(path)) { + let len = target_children.length; + let cur = target_children.indexOf(path); + // console.log(`len = ${len}`) + // console.log(`cur = ${cur}`) + let prev_child = (cur - 1 > -1) ? target_children[cur - 1] : null; + let next_child = (cur + 1 < len) ? target_children[cur + 1] : null; + targetText = ` +
    +
    +
    + ${prev_child ? `` : ``} +
    +
    + ${next_child ? `` : ``} +
    +
    +
    + `; + } + //
    + // ${targetObj[path].prev ? `Prev` : `Prev`} + // ${targetObj[path].next ? `Next` : `Prev`} + //
    + } + var content = ` +
    +
    +
    + ${targetText} + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +file_download + `; + //my code + $('#content').html(content); + $('#leftBtn, #rightBtn').click((e) => { + let target = $(e.target); + if (['I', 'SPAN'].includes(e.target.nodeName)) { + target = $(e.target).parent(); + } + const filepath = target.attr('data-filepath'); + const direction = target.attr('data-direction'); + //console.log(`${direction}翻页 ${filepath}`); + file(filepath) + }); +} + + +//时间转换 +function utc2beijing(utc_datetime) { + // 转为正常的时间格式 年-月-日 时:分:秒 + var T_pos = utc_datetime.indexOf('T'); + var Z_pos = utc_datetime.indexOf('Z'); + var year_month_day = utc_datetime.substr(0, T_pos); + var hour_minute_second = utc_datetime.substr(T_pos + 1, Z_pos - T_pos - 1); + var new_datetime = year_month_day + " " + hour_minute_second; // 2017-03-31 08:02:06 + + // 处理成为时间戳 + timestamp = new Date(Date.parse(new_datetime)); + timestamp = timestamp.getTime(); + timestamp = timestamp / 1000; + + // 增加8个小时,北京时间比utc时间多八个时区 + var unixtimestamp = timestamp + 8 * 60 * 60; + + // 时间戳转为时间 + var unixtimestamp = new Date(unixtimestamp * 1000); + var year = 1900 + unixtimestamp.getYear(); + var month = "0" + (unixtimestamp.getMonth() + 1); + var date = "0" + unixtimestamp.getDate(); + var hour = "0" + unixtimestamp.getHours(); + var minute = "0" + unixtimestamp.getMinutes(); + var second = "0" + unixtimestamp.getSeconds(); + return year + "-" + month.substring(month.length - 2, month.length) + "-" + date.substring(date.length - 2, date.length) + + " " + hour.substring(hour.length - 2, hour.length) + ":" + + minute.substring(minute.length - 2, minute.length) + ":" + + second.substring(second.length - 2, second.length); +} + +// bytes自适应转换到KB,MB,GB +function formatFileSize(bytes) { + if (bytes >= 1000000000) { + bytes = (bytes / 1000000000).toFixed(2) + ' GB'; + } else if (bytes >= 1000000) { + bytes = (bytes / 1000000).toFixed(2) + ' MB'; + } else if (bytes >= 1000) { + bytes = (bytes / 1000).toFixed(2) + ' KB'; + } else if (bytes > 1) { + bytes = bytes + ' bytes'; + } else if (bytes == 1) { + bytes = bytes + ' byte'; + } else { + bytes = ''; + } + return bytes; +} + +String.prototype.trim = function (char) { + if (char) { + return this.replace(new RegExp('^\\' + char + '+|\\' + char + '+$', 'g'), ''); + } + return this.replace(/^\s+|\s+$/g, ''); +}; + + +// README.md HEAD.md 支持 +function markdown(el, data) { + if (window.md == undefined) { + //$.getScript('https://cdn.jsdelivr.net/npm/markdown-it@10.0.0/dist/markdown-it.min.js',function(){ + window.md = window.markdownit(); + markdown(el, data); + //}); + } else { + var html = md.render(data); + $(el).show().html(html); + } +} + +// 监听回退事件 +window.onpopstate = function () { + var path = window.location.pathname; + render(path); +} + + +$(function () { + init(); + var path = window.location.pathname; + /*$("body").on("click", '.folder', function () { + var url = $(this).attr('href'); + history.pushState(null, null, url); + render(url); + return false; + }); + + $("body").on("click", '.view', function () { + var url = $(this).attr('href'); + history.pushState(null, null, url); + render(url); + return false; + });*/ + + render(path); +}); diff --git a/dist/themes/light/app.js b/dist/themes/light/app.js new file mode 100644 index 0000000..1c63f10 --- /dev/null +++ b/dist/themes/light/app.js @@ -0,0 +1,1121 @@ +// 在head 中 加载 必要静态 +// document.write(''); +document.write(''); +document.write(''); +// markdown支持 +document.write(''); +document.write(''); + +// 初始化页面,并载入必要资源 +function init() { + document.siteName = $('title').html(); + $('body').addClass(`mdui-theme-primary-${ThemeConfig.main_color} mdui-theme-accent-${ThemeConfig.accent_color}`); + var html = ''; + var model = window.MODEL; + var cur = window.current_drive_order || 0; + var names = window.drive_names; + var search_text = model.is_search_page ? (model.q || '') : ''; + + // 搜索 + var search_bar = ` + `; + // 盘 + var pan_bar = ` +
    + + +
    `; + + // 菜单 + var menu_bar = ` +
    + + +
    `; + + html = ` +
    +
    + +
    + + + +
    +
    +
    `+ pan_bar + search_bar; + + + if (ThemeConfig.menu_show) { + html += menu_bar + `
    `; + } else { + html += `
    `; + } + + html += ` +
    + +`; + + html += ` +
    +
    + +
    +
    + +
    + +
    +
    +




    `; + + $('body').html(html); + $('#readme_md').hide().html(''); + $('#head_md').hide().html(''); +} + +const Os = { + isWindows: navigator.platform.toUpperCase().indexOf('WIN') > -1, // .includes + isMac: navigator.platform.toUpperCase().indexOf('MAC') > -1, + isMacLike: /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform), + isIos: /(iPhone|iPod|iPad)/i.test(navigator.platform), + isMobile: /Android|webOS|iPhone|iPad|iPod|iOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) +}; + +function getDocumentHeight() { + var D = document; + return Math.max( + D.body.scrollHeight, D.documentElement.scrollHeight, + D.body.offsetHeight, D.documentElement.offsetHeight, + D.body.clientHeight, D.documentElement.clientHeight + ); +} + +function render(path) { + if (path.indexOf("?") > 0) { + path = path.substr(0, path.indexOf("?")); + } + title(path); + nav(path); + // .../0: 这种 + var reg = /\/\d+:$/g; + if (window.MODEL.is_search_page) { + // 用来存储一些滚动事件的状态 + window.scroll_status = { + // 滚动事件是否已经绑定 + event_bound: false, + // "滚动到底部,正在加载更多数据" 事件的锁 + loading_lock: false + }; + render_search_result_list() + } else if (path.match(reg) || path.substr(-1) == '/') { + // 用来存储一些滚动事件的状态 + window.scroll_status = { + // 滚动事件是否已经绑定 + event_bound: false, + // "滚动到底部,正在加载更多数据" 事件的锁 + loading_lock: false + }; + list(path); + } else { + file(path); + } +} + + +// 渲染 title +function title(path) { + path = decodeURI(path); + var cur = window.current_drive_order || 0; + var drive_name = window.drive_names[cur]; + path = path.replace(`/${cur}:`, ''); + // $('title').html(document.siteName + ' - ' + path); + var model = window.MODEL; + if (model.is_search_page) + $('title').html(`${document.siteName} - ${drive_name} - 搜索 ${model.q} 的结果`); + else + $('title').html(`${document.siteName} - ${drive_name} - ${path}`); +} + +// 渲染导航栏 +function nav(path) { + var model = window.MODEL; + var html = ""; + var cur = window.current_drive_order || 0; + var names = window.drive_names; + /*html += ``; + html += `
      `; + names.forEach((name, idx) => { + html += `
    • ${name}
    • `; + }); + html += `
    `;*/ + + // 修改为 select + // html += ``; + + html += `/`; + if (!model.is_search_page) { + var arr = path.trim('/').split('/'); + var p = '/'; + if (arr.length > 1) { + arr.shift(); + for (i in arr) { + var n = arr[i]; + n = decodeURI(n); + p += n + '/'; + if (n == '') { + break; + } + html += `chevron_right${n}`; + } + } + } + // var search_text = model.is_search_page ? (model.q || '') : ''; + // const isMobile = Os.isMobile; + // var search_bar = `
    + // `; + + // // 个人盘 或 团队盘 + // if (model.root_type < 2) { + // // 显示搜索框 + // html += search_bar; + // } + + $('#nav').html(html); + mdui.mutation(); + mdui.updateTextFields(); +} + +/** + * 发起列目录的 POST 请求 + * @param path Path + * @param params Form params + * @param resultCallback Success Result Callback + * @param authErrorCallback Pass Error Callback + */ +function requestListPath(path, params, resultCallback, authErrorCallback) { + var p = { + password: params['password'] || null, + page_token: params['page_token'] || null, + page_index: params['page_index'] || 0 + }; + $.post(path, p, function (data, status) { + var res = jQuery.parseJSON(data); + if (res && res.error && res.error.code == '401') { + // 密码验证失败 + if (authErrorCallback) authErrorCallback(path) + } else if (res && res.data) { + if (resultCallback) resultCallback(res, path, p) + } + }) +} + +/** + * 搜索 POST 请求 + * @param params Form params + * @param resultCallback Success callback + */ +function requestSearch(params, resultCallback) { + var p = { + q: params['q'] || null, + page_token: params['page_token'] || null, + page_index: params['page_index'] || 0 + }; + $.post(`/${window.current_drive_order}:search`, p, function (data, status) { + var res = jQuery.parseJSON(data); + if (res && res.data) { + if (resultCallback) resultCallback(res, p) + } + }) +} + + +// 渲染文件列表 +function list(path) { + var content = ` +
    +
      +
    • +
      + 文件 + expand_more +
      +
      + 修改时间 + expand_more +
      +
      + 大小 + expand_more +
      +
    • +
    +
    +
    +
      +
    +
    +
    + `; + $('#content').html(content); + + var password = localStorage.getItem('password' + path); + $('#list').html(`
    `); + + /** + * 列目录请求成功返回数据后的回调 + * @param res 返回的结果(object) + * @param path 请求的路径 + * @param prevReqParams 请求时所用的参数 + */ + function successResultCallback(res, path, prevReqParams) { + + // 把 nextPageToken 和 currentPageIndex 暂存在 list元素 中 + $('#list') + .data('nextPageToken', res['nextPageToken']) + .data('curPageIndex', res['curPageIndex']); + + // 移除 loading spinner + $('#spinner').remove(); + + if (res['nextPageToken'] === null) { + // 如果是最后一页,取消绑定 scroll 事件,重置 scroll_status ,并 append 数据 + $(window).off('scroll'); + window.scroll_status.event_bound = false; + window.scroll_status.loading_lock = false; + append_files_to_list(path, res['data']['files']); + } else { + // 如果不是最后一页,append数据 ,并绑定 scroll 事件(如果还未绑定),更新 scroll_status + append_files_to_list(path, res['data']['files']); + if (window.scroll_status.event_bound !== true) { + // 绑定事件,如果还未绑定 + $(window).on('scroll', function () { + var scrollTop = $(this).scrollTop(); + var scrollHeight = getDocumentHeight(); + var windowHeight = $(this).height(); + // 滚到底部 + if (scrollTop + windowHeight > scrollHeight - (Os.isMobile ? 130 : 80)) { + /* + 滚到底部事件触发时,如果此时已经正在 loading 中,则忽略此次事件; + 否则,去 loading,并占据 loading锁,表明 正在 loading 中 + */ + if (window.scroll_status.loading_lock === true) { + return; + } + window.scroll_status.loading_lock = true; + + // 展示一个 loading spinner + $(`
    `) + .insertBefore('#readme_md'); + mdui.updateSpinners(); + // mdui.mutation(); + + let $list = $('#list'); + requestListPath(path, { + password: prevReqParams['password'], + page_token: $list.data('nextPageToken'), + // 请求下一页 + page_index: $list.data('curPageIndex') + 1 + }, + successResultCallback, + // 密码和之前相同。不会出现 authError + null + ) + } + }); + window.scroll_status.event_bound = true + } + } + + // loading 成功,并成功渲染了新数据之后,释放 loading 锁,以便能继续处理 "滚动到底部" 事件 + if (window.scroll_status.loading_lock === true) { + window.scroll_status.loading_lock = false + } + } + + // 开始从第1页请求数据 + requestListPath(path, {password: password}, + successResultCallback, + function (path) { + $('#spinner').remove(); + var pass = prompt("目录加密, 请输入密码", ""); + localStorage.setItem('password' + path, pass); + if (pass != null && pass != "") { + list(path); + } else { + history.go(-1); + } + }); +} + +/** + * 把请求得来的新一页的数据追加到 list 中 + * @param path 路径 + * @param files 请求得来的结果 + */ +function append_files_to_list(path, files) { + var $list = $('#list'); + // 是最后一页数据了吗? + var is_lastpage_loaded = null === $list.data('nextPageToken'); + var is_firstpage = '0' == $list.data('curPageIndex'); + + html = ""; + let targetFiles = []; + for (i in files) { + var item = files[i]; + var p = path + item.name + '/'; + if (item['size'] == undefined) { + item['size'] = ""; + } + + item['modifiedTime'] = utc2beijing(item['modifiedTime']); + item['size'] = formatFileSize(item['size']); + if (item['mimeType'] == 'application/vnd.google-apps.folder') { + html += `
  • +
    + folder_open + ${item.name} +
    +
    ${item['modifiedTime']}
    +
    ${item['size']}
    +
    +
  • `; + } else { + var p = path + item.name; + const filepath = path + item.name; + var c = "file"; + // 当加载完最后一页后,才显示 README ,否则会影响滚动事件 + if (is_lastpage_loaded && item.name == "README.md") { + get_file(p, item, function (data) { + markdown("#readme_md", data); + }); + } + if (item.name == "HEAD.md") { + get_file(p, item, function (data) { + markdown("#head_md", data); + }); + } + var ext = p.split('.').pop().toLowerCase(); + if ("|html|php|css|go|java|js|json|txt|sh|md|mp4|webm|avi|bmp|jpg|jpeg|png|gif|m4a|mp3|flac|wav|ogg|mpg|mpeg|mkv|rm|rmvb|mov|wmv|asf|ts|flv|pdf|".indexOf(`|${ext}|`) >= 0) { + targetFiles.push(filepath); + p += "?a=view"; + c += " view"; + } + html += `
  • +
    + insert_drive_file + ${item.name} +
    +
    ${item['modifiedTime']}
    +
    ${item['size']}
    +
    +
  • `; + } + } + + /*let targetObj = {}; + targetFiles.forEach((myFilepath, myIndex) => { + if (!targetObj[myFilepath]) { + targetObj[myFilepath] = { + filepath: myFilepath, + prev: myIndex === 0 ? null : targetFiles[myIndex - 1], + next: myIndex === targetFiles.length - 1 ? null : targetFiles[myIndex + 1], + } + } + }) + // console.log(targetObj) + if (Object.keys(targetObj).length) { + localStorage.setItem(path, JSON.stringify(targetObj)); + // console.log(path) + }*/ + + if (targetFiles.length > 0) { + let old = localStorage.getItem(path); + let new_children = targetFiles; + // 第1页重设;否则追加 + if (!is_firstpage && old) { + let old_children; + try { + old_children = JSON.parse(old); + if (!Array.isArray(old_children)) { + old_children = [] + } + } catch (e) { + old_children = []; + } + new_children = old_children.concat(targetFiles) + } + + localStorage.setItem(path, JSON.stringify(new_children)) + } + + // 是第1页时,去除横向loading条 + $list.html(($list.data('curPageIndex') == '0' ? '' : $list.html()) + html); + // 是最后一页时,统计并显示出总项目数 + if (is_lastpage_loaded) { + $('#count').removeClass('mdui-hidden').find('.number').text($list.find('li.mdui-list-item').length); + } +} + +/** + * 渲染搜索结果列表。有大量重复代码,但是里面有不一样的逻辑,暂时先这样分开弄吧 + */ +function render_search_result_list() { + var content = ` +
    +
      +
    • +
      + 文件 + expand_more +
      +
      + 修改时间 + expand_more +
      +
      + 大小 + expand_more +
      +
    • +
    +
    +
    +
      +
    +
    +
    + `; + $('#content').html(content); + + $('#list').html(`
    `); + + /** + * 搜索请求成功返回数据后的回调 + * @param res 返回的结果(object) + * @param path 请求的路径 + * @param prevReqParams 请求时所用的参数 + */ + function searchSuccessCallback(res, prevReqParams) { + + // 把 nextPageToken 和 currentPageIndex 暂存在 list元素 中 + $('#list') + .data('nextPageToken', res['nextPageToken']) + .data('curPageIndex', res['curPageIndex']); + + // 移除 loading spinner + $('#spinner').remove(); + + if (res['nextPageToken'] === null) { + // 如果是最后一页,取消绑定 scroll 事件,重置 scroll_status ,并 append 数据 + $(window).off('scroll'); + window.scroll_status.event_bound = false; + window.scroll_status.loading_lock = false; + append_search_result_to_list(res['data']['files']); + } else { + // 如果不是最后一页,append数据 ,并绑定 scroll 事件(如果还未绑定),更新 scroll_status + append_search_result_to_list(res['data']['files']); + if (window.scroll_status.event_bound !== true) { + // 绑定事件,如果还未绑定 + $(window).on('scroll', function () { + var scrollTop = $(this).scrollTop(); + var scrollHeight = getDocumentHeight(); + var windowHeight = $(this).height(); + // 滚到底部 + if (scrollTop + windowHeight > scrollHeight - (Os.isMobile ? 130 : 80)) { + /* + 滚到底部事件触发时,如果此时已经正在 loading 中,则忽略此次事件; + 否则,去 loading,并占据 loading锁,表明 正在 loading 中 + */ + if (window.scroll_status.loading_lock === true) { + return; + } + window.scroll_status.loading_lock = true; + + // 展示一个 loading spinner + $(`
    `) + .insertBefore('#readme_md'); + mdui.updateSpinners(); + // mdui.mutation(); + + let $list = $('#list'); + requestSearch({ + q: window.MODEL.q, + page_token: $list.data('nextPageToken'), + // 请求下一页 + page_index: $list.data('curPageIndex') + 1 + }, + searchSuccessCallback + ) + } + }); + window.scroll_status.event_bound = true + } + } + + // loading 成功,并成功渲染了新数据之后,释放 loading 锁,以便能继续处理 "滚动到底部" 事件 + if (window.scroll_status.loading_lock === true) { + window.scroll_status.loading_lock = false + } + } + + // 开始从第1页请求数据 + requestSearch({q: window.MODEL.q}, searchSuccessCallback); +} + +/** + * 追加新一页的搜索结果 + * @param files + */ +function append_search_result_to_list(files) { + var $list = $('#list'); + // 是最后一页数据了吗? + var is_lastpage_loaded = null === $list.data('nextPageToken'); + // var is_firstpage = '0' == $list.data('curPageIndex'); + + html = ""; + + for (i in files) { + var item = files[i]; + if (item['size'] == undefined) { + item['size'] = ""; + } + + item['modifiedTime'] = utc2beijing(item['modifiedTime']); + item['size'] = formatFileSize(item['size']); + if (item['mimeType'] == 'application/vnd.google-apps.folder') { + html += `
  • +
    + folder_open + ${item.name} +
    +
    ${item['modifiedTime']}
    +
    ${item['size']}
    +
    +
  • `; + } else { + var c = "file"; + var ext = item.name.split('.').pop().toLowerCase(); + if ("|html|php|css|go|java|js|json|txt|sh|md|mp4|webm|avi|bmp|jpg|jpeg|png|gif|m4a|mp3|flac|wav|ogg|mpg|mpeg|mkv|rm|rmvb|mov|wmv|asf|ts|flv|".indexOf(`|${ext}|`) >= 0) { + c += " view"; + } + html += `
  • +
    + insert_drive_file + ${item.name} +
    +
    ${item['modifiedTime']}
    +
    ${item['size']}
    +
    +
  • `; + } + } + + // 是第1页时,去除横向loading条 + $list.html(($list.data('curPageIndex') == '0' ? '' : $list.html()) + html); + // 是最后一页时,统计并显示出总项目数 + if (is_lastpage_loaded) { + $('#count').removeClass('mdui-hidden').find('.number').text($list.find('li.mdui-list-item').length); + } +} + +/** + * 搜索结果项目点击事件 + * @param a_ele 点击的元素 + */ +function onSearchResultItemClick(a_ele) { + var me = $(a_ele); + var can_preview = me.hasClass('view'); + var cur = window.current_drive_order; + var dialog = mdui.dialog({ + title: '', + content: '
    正在获取目标路径...
    ', + // content: '
    ', + history: false, + modal: true, + closeOnEsc: true + }); + mdui.updateSpinners(); + + // 请求获取路径 + $.post(`/${cur}:id2path`, {id: a_ele.id}, function (data) { + if (data) { + dialog.close(); + var href = `/${cur}:${data}${can_preview ? '?a=view' : ''}`; + dialog = mdui.dialog({ + title: 'Path', + content: `${data}`, + history: false, + modal: true, + closeOnEsc: true, + buttons: [ + { + text: '打开', onClick: function () { + window.location.href = href + } + }, { + text: '新标签中打开', onClick: function () { + window.open(href) + } + } + , {text: '取消'} + ] + }); + return; + } + dialog.close(); + dialog = mdui.dialog({ + title: '获取目标路径失败', + content: 'o(╯□╰)o 可能是因为该盘中并不存在此项!也可能因为没有把【与我共享】的文件添加到个人云端硬盘中!', + history: false, + modal: true, + closeOnEsc: true, + buttons: [ + {text: 'WTF ???'} + ] + }); + }) +} + +function get_file(path, file, callback) { + var key = "file_path_" + path + file['modifiedTime']; + var data = localStorage.getItem(key); + if (data != undefined) { + return callback(data); + } else { + $.get(path, function (d) { + localStorage.setItem(key, d); + callback(d); + }); + } +} + + +// 文件展示 ?a=view +function file(path) { + var name = path.split('/').pop(); + var ext = name.split('.').pop().toLowerCase().replace(`?a=view`, "").toLowerCase(); + if ("|html|php|css|go|java|js|json|txt|sh|md|".indexOf(`|${ext}|`) >= 0) { + return file_code(path); + } + + if ("|mp4|webm|avi|mkv|".indexOf(`|${ext}|`) >= 0) { + return file_video(path); + } + + if ("|mpg|mpeg|mkv|rm|rmvb|mov|wmv|asf|ts|flv|".indexOf(`|${ext}|`) >= 0) { + return file_video(path); + } + + if ("|mp3|flac|wav|ogg|m4a|".indexOf(`|${ext}|`) >= 0) { + return file_audio(path); + } + + if ("|bmp|jpg|jpeg|png|gif|".indexOf(`|${ext}|`) >= 0) { + return file_image(path); + } + + if ('pdf' === ext) return file_pdf(path); +} + +// 文件展示 |html|php|css|go|java|js|json|txt|sh|md| +function file_code(path) { + var type = { + "html": "html", + "php": "php", + "css": "css", + "go": "golang", + "java": "java", + "js": "javascript", + "json": "json", + "txt": "Text", + "sh": "sh", + "md": "Markdown", + }; + var name = path.split('/').pop(); + var ext = name.split('.').pop().toLowerCase(); + var href = window.location.origin + path; + var content = ` +
    +
    
    +
    +
    + + +
    +file_download + + + + `; + $('#content').html(content); + + $.get(path, function (data) { + $('#editor').html($('
    ').text(data).html()); + var code_type = "Text"; + if (type[ext] != undefined) { + code_type = type[ext]; + } + var editor = ace.edit("editor"); + editor.setTheme("ace/theme/ambiance"); + editor.setFontSize(18); + editor.session.setMode("ace/mode/" + code_type); + + //Autocompletion + editor.setOptions({ + enableBasicAutocompletion: true, + enableSnippets: true, + enableLiveAutocompletion: true, + maxLines: Infinity + }); + }); +} + +function copyToClipboard(str) { + const $temp = $(""); + $("body").append($temp); + $temp.val(str).select(); + document.execCommand("copy"); + $temp.remove(); +} + +// 文件展示 视频 |mp4|webm|avi| +function file_video(path) { + const url = window.location.origin + path; + let player_items = [ + { + text: 'MXPlayer(Free)', + href: `intent:${url}#Intent;package=com.mxtech.videoplayer.ad;S.title=${path};end`, + }, + { + text: 'MXPlayer(Pro)', + href: `intent:${url}#Intent;package=com.mxtech.videoplayer.pro;S.title=${path};end`, + }, + { + text: 'nPlayer', + href: `nplayer-${url}`, + }, + { + text: 'VLC', + href: `vlc://${url}`, + }, + { + text: 'PotPlayer', + href: `potplayer://${url}` + } + ] + .map(it => `
  • ${it.text}
  • `) + .join(''); + player_items += `
  • +
  • 复制链接
  • `; + const playBtn = ` + +
      ${player_items}
    `; + + const playUI = ` + `; + + const dpUI = ` +
    + `; + + var content = ` +
    +
    + ${dpUI} +
    ${playBtn} + +
    + + +
    +
    + + +
    +
    +file_download + `; + $('#content').html(content); + $('#copy-link').on('click', () => { + copyToClipboard(url); + mdui.snackbar('已复制到剪切板!'); + }); + + const dp = new DPlayer({ + container: document.getElementById('dplayer'), + autoplay: false, + theme: '#b7daff', + loop: false, + lang: 'zh-cn', + screenshot: true, + hotkey: true, + preload: 'auto', + video: { + quality: [ + { + name: 'HD', + url: url, + } + ], + defaultQuality: 0, + }, +}); + +} + +// 文件展示 音频 |mp3|flac|m4a|wav|ogg| +function file_audio(path) { + var url = window.location.origin + path; + var content = ` +
    +
    + +
    + +
    + + +
    +
    + + +
    +
    +file_download + `; + $('#content').html(content); +} + +// 文件展示 pdf pdf +function file_pdf(path) { + const url = window.location.origin + path; + const inline_url = `${url}?inline=true` + const file_name = decodeURI(path.slice(path.lastIndexOf('/') + 1, path.length)) + var content = ` + + file_download + `; + $('#content').removeClass('mdui-container').addClass('mdui-container-fluid').css({padding: 0}).html(content); +} + +// 图片展示 +function file_image(path) { + var url = window.location.origin + path; + // console.log(window.location.pathname) + const currentPathname = window.location.pathname + const lastIndex = currentPathname.lastIndexOf('/'); + const fatherPathname = currentPathname.slice(0, lastIndex + 1); + // console.log(fatherPathname) + let target_children = localStorage.getItem(fatherPathname); + // console.log(`fatherPathname: ${fatherPathname}`); + // console.log(target_children) + let targetText = ''; + if (target_children) { + try { + target_children = JSON.parse(target_children); + if (!Array.isArray(target_children)) { + target_children = [] + } + } catch (e) { + console.error(e); + target_children = []; + } + if (target_children.length > 0 && target_children.includes(path)) { + let len = target_children.length; + let cur = target_children.indexOf(path); + // console.log(`len = ${len}`) + // console.log(`cur = ${cur}`) + let prev_child = (cur - 1 > -1) ? target_children[cur - 1] : null; + let next_child = (cur + 1 < len) ? target_children[cur + 1] : null; + targetText = ` +
    +
    +
    + ${prev_child ? `` : ``} +
    +
    + ${next_child ? `` : ``} +
    +
    +
    + `; + } + //
    + // ${targetObj[path].prev ? `Prev` : `Prev`} + // ${targetObj[path].next ? `Next` : `Prev`} + //
    + } + var content = ` +
    +
    +
    + ${targetText} + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +file_download + `; + //my code + $('#content').html(content); + $('#leftBtn, #rightBtn').click((e) => { + let target = $(e.target); + if (['I', 'SPAN'].includes(e.target.nodeName)) { + target = $(e.target).parent(); + } + const filepath = target.attr('data-filepath'); + const direction = target.attr('data-direction'); + //console.log(`${direction}翻页 ${filepath}`); + file(filepath) + }); +} + + +//时间转换 +function utc2beijing(utc_datetime) { + // 转为正常的时间格式 年-月-日 时:分:秒 + var T_pos = utc_datetime.indexOf('T'); + var Z_pos = utc_datetime.indexOf('Z'); + var year_month_day = utc_datetime.substr(0, T_pos); + var hour_minute_second = utc_datetime.substr(T_pos + 1, Z_pos - T_pos - 1); + var new_datetime = year_month_day + " " + hour_minute_second; // 2017-03-31 08:02:06 + + // 处理成为时间戳 + timestamp = new Date(Date.parse(new_datetime)); + timestamp = timestamp.getTime(); + timestamp = timestamp / 1000; + + // 增加8个小时,北京时间比utc时间多八个时区 + var unixtimestamp = timestamp + 8 * 60 * 60; + + // 时间戳转为时间 + var unixtimestamp = new Date(unixtimestamp * 1000); + var year = 1900 + unixtimestamp.getYear(); + var month = "0" + (unixtimestamp.getMonth() + 1); + var date = "0" + unixtimestamp.getDate(); + var hour = "0" + unixtimestamp.getHours(); + var minute = "0" + unixtimestamp.getMinutes(); + var second = "0" + unixtimestamp.getSeconds(); + return year + "-" + month.substring(month.length - 2, month.length) + "-" + date.substring(date.length - 2, date.length) + + " " + hour.substring(hour.length - 2, hour.length) + ":" + + minute.substring(minute.length - 2, minute.length) + ":" + + second.substring(second.length - 2, second.length); +} + +// bytes自适应转换到KB,MB,GB +function formatFileSize(bytes) { + if (bytes >= 1000000000) { + bytes = (bytes / 1000000000).toFixed(2) + ' GB'; + } else if (bytes >= 1000000) { + bytes = (bytes / 1000000).toFixed(2) + ' MB'; + } else if (bytes >= 1000) { + bytes = (bytes / 1000).toFixed(2) + ' KB'; + } else if (bytes > 1) { + bytes = bytes + ' bytes'; + } else if (bytes == 1) { + bytes = bytes + ' byte'; + } else { + bytes = ''; + } + return bytes; +} + +String.prototype.trim = function (char) { + if (char) { + return this.replace(new RegExp('^\\' + char + '+|\\' + char + '+$', 'g'), ''); + } + return this.replace(/^\s+|\s+$/g, ''); +}; + + +// README.md HEAD.md 支持 +function markdown(el, data) { + if (window.md == undefined) { + //$.getScript('https://cdn.jsdelivr.net/npm/markdown-it@10.0.0/dist/markdown-it.min.js',function(){ + window.md = window.markdownit(); + markdown(el, data); + //}); + } else { + var html = md.render(data); + $(el).show().html(html); + } +} + +// 监听回退事件 +window.onpopstate = function () { + var path = window.location.pathname; + render(path); +} + + +$(function () { + init(); + var path = window.location.pathname; + /*$("body").on("click", '.folder', function () { + var url = $(this).attr('href'); + history.pushState(null, null, url); + render(url); + return false; + }); + + $("body").on("click", '.view', function () { + var url = $(this).attr('href'); + history.pushState(null, null, url); + render(url); + return false; + });*/ + + render(path); +}); diff --git a/file/MaterialIcons-Regular.woff b/file/MaterialIcons-Regular.woff deleted file mode 100644 index b648a3e..0000000 Binary files a/file/MaterialIcons-Regular.woff and /dev/null differ diff --git a/file/MaterialIcons-Regular.woff2 b/file/MaterialIcons-Regular.woff2 deleted file mode 100644 index 9fa2112..0000000 Binary files a/file/MaterialIcons-Regular.woff2 and /dev/null differ diff --git a/file/Roboto-Black.woff b/file/Roboto-Black.woff deleted file mode 100644 index 9b72779..0000000 Binary files a/file/Roboto-Black.woff and /dev/null differ diff --git a/file/Roboto-Black.woff2 b/file/Roboto-Black.woff2 deleted file mode 100644 index 9559f02..0000000 Binary files a/file/Roboto-Black.woff2 and /dev/null differ diff --git a/file/Roboto-BlackItalic.woff b/file/Roboto-BlackItalic.woff deleted file mode 100644 index 609bdf4..0000000 Binary files a/file/Roboto-BlackItalic.woff and /dev/null differ diff --git a/file/Roboto-BlackItalic.woff2 b/file/Roboto-BlackItalic.woff2 deleted file mode 100644 index 5cb417b..0000000 Binary files a/file/Roboto-BlackItalic.woff2 and /dev/null differ diff --git a/file/Roboto-Bold.woff b/file/Roboto-Bold.woff deleted file mode 100644 index 93a1d5a..0000000 Binary files a/file/Roboto-Bold.woff and /dev/null differ diff --git a/file/Roboto-Bold.woff2 b/file/Roboto-Bold.woff2 deleted file mode 100644 index 715ac19..0000000 Binary files a/file/Roboto-Bold.woff2 and /dev/null differ diff --git a/file/Roboto-BoldItalic.woff b/file/Roboto-BoldItalic.woff deleted file mode 100644 index f1d7598..0000000 Binary files a/file/Roboto-BoldItalic.woff and /dev/null differ diff --git a/file/Roboto-BoldItalic.woff2 b/file/Roboto-BoldItalic.woff2 deleted file mode 100644 index c91e0f8..0000000 Binary files a/file/Roboto-BoldItalic.woff2 and /dev/null differ diff --git a/file/Roboto-Light.woff b/file/Roboto-Light.woff deleted file mode 100644 index 404afba..0000000 Binary files a/file/Roboto-Light.woff and /dev/null differ diff --git a/file/Roboto-Light.woff2 b/file/Roboto-Light.woff2 deleted file mode 100644 index 5f26201..0000000 Binary files a/file/Roboto-Light.woff2 and /dev/null differ diff --git a/file/Roboto-LightItalic.woff b/file/Roboto-LightItalic.woff deleted file mode 100644 index 07117c5..0000000 Binary files a/file/Roboto-LightItalic.woff and /dev/null differ diff --git a/file/Roboto-LightItalic.woff2 b/file/Roboto-LightItalic.woff2 deleted file mode 100644 index 5fa7eed..0000000 Binary files a/file/Roboto-LightItalic.woff2 and /dev/null differ diff --git a/file/Roboto-Medium.woff b/file/Roboto-Medium.woff deleted file mode 100644 index b18e6b8..0000000 Binary files a/file/Roboto-Medium.woff and /dev/null differ diff --git a/file/Roboto-Medium.woff2 b/file/Roboto-Medium.woff2 deleted file mode 100644 index f9f6913..0000000 Binary files a/file/Roboto-Medium.woff2 and /dev/null differ diff --git a/file/Roboto-MediumItalic.woff b/file/Roboto-MediumItalic.woff deleted file mode 100644 index 2be7d89..0000000 Binary files a/file/Roboto-MediumItalic.woff and /dev/null differ diff --git a/file/Roboto-MediumItalic.woff2 b/file/Roboto-MediumItalic.woff2 deleted file mode 100644 index 9b7b828..0000000 Binary files a/file/Roboto-MediumItalic.woff2 and /dev/null differ diff --git a/file/Roboto-Regular.woff b/file/Roboto-Regular.woff deleted file mode 100644 index 2f53e7c..0000000 Binary files a/file/Roboto-Regular.woff and /dev/null differ diff --git a/file/Roboto-Regular.woff2 b/file/Roboto-Regular.woff2 deleted file mode 100644 index 1d1539e..0000000 Binary files a/file/Roboto-Regular.woff2 and /dev/null differ diff --git a/file/Roboto-RegularItalic.woff b/file/Roboto-RegularItalic.woff deleted file mode 100644 index 60f95dd..0000000 Binary files a/file/Roboto-RegularItalic.woff and /dev/null differ diff --git a/file/Roboto-RegularItalic.woff2 b/file/Roboto-RegularItalic.woff2 deleted file mode 100644 index 75495c3..0000000 Binary files a/file/Roboto-RegularItalic.woff2 and /dev/null differ diff --git a/file/Roboto-Thin.woff b/file/Roboto-Thin.woff deleted file mode 100644 index e115692..0000000 Binary files a/file/Roboto-Thin.woff and /dev/null differ diff --git a/file/Roboto-Thin.woff2 b/file/Roboto-Thin.woff2 deleted file mode 100644 index a26400d..0000000 Binary files a/file/Roboto-Thin.woff2 and /dev/null differ diff --git a/file/Roboto-ThinItalic.woff b/file/Roboto-ThinItalic.woff deleted file mode 100644 index eab0271..0000000 Binary files a/file/Roboto-ThinItalic.woff and /dev/null differ diff --git a/file/Roboto-ThinItalic.woff2 b/file/Roboto-ThinItalic.woff2 deleted file mode 100644 index f00aafc..0000000 Binary files a/file/Roboto-ThinItalic.woff2 and /dev/null differ diff --git a/images/avatar.jpg b/images/avatar.jpg deleted file mode 100644 index addcd80..0000000 Binary files a/images/avatar.jpg and /dev/null differ diff --git a/images/favicon.ico b/images/favicon.ico deleted file mode 100644 index 8c1111d..0000000 Binary files a/images/favicon.ico and /dev/null differ diff --git a/images/icon_close.png b/images/icon_close.png deleted file mode 100644 index 698947c..0000000 Binary files a/images/icon_close.png and /dev/null differ diff --git a/images/icon_menu.png b/images/icon_menu.png deleted file mode 100644 index 65f0cb6..0000000 Binary files a/images/icon_menu.png and /dev/null differ diff --git a/js/DPlayer.min.js b/js/DPlayer.min.js deleted file mode 100644 index 54decf7..0000000 --- a/js/DPlayer.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("DPlayer",[],t):"object"==typeof exports?exports.DPlayer=t():e.DPlayer=t()}(window,(function(){return function(e){var t={};function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)a.d(n,r,function(t){return e[t]}.bind(null,r));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="/",a(a.s=57)}([function(e,t,a){"use strict";function n(e){return(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})(e)}var r=a(6),o=Object.prototype.toString;function i(e){return"[object Array]"===o.call(e)}function l(e){return void 0===e}function s(e){return null!==e&&"object"===n(e)}function d(e){return"[object Function]"===o.call(e)}function p(e,t){if(null!=e)if("object"!==n(e)&&(e=[e]),i(e))for(var a=0,r=e.length;a\n ",a&&(t+='\n \n '),t+="\n"}},function(e,t,a){e.exports=a(40)},function(e,t,a){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var a=function(e,t){var a=e[1]||"",n=e[3];if(!n)return a;if(t&&"function"==typeof btoa){var r=(i=n,l=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),s="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(l),"/*# ".concat(s," */")),o=n.sources.map((function(e){return"/*# sourceURL=".concat(n.sourceRoot||"").concat(e," */")}));return[a].concat(o).concat([r]).join("\n")}var i,l,s;return[a].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(a,"}"):a})).join("")},t.i=function(e,a,n){"string"==typeof e&&(e=[[null,e,""]]);var r={};if(n)for(var o=0;o1)for(var a=1;a=200&&e<300}};s.headers={common:{Accept:"application/json, text/plain, */*"}},n.forEach(["delete","get","head"],(function(e){s.headers[e]={}})),n.forEach(["post","put","patch"],(function(e){s.headers[e]=n.merge(o)})),e.exports=s}).call(this,a(5))},function(e,t,a){"use strict";var n=a(0),r=a(46),o=a(7),i=a(48),l=a(51),s=a(52),d=a(11);e.exports=function(e){return new Promise((function(t,p){var c=e.data,u=e.headers;n.isFormData(c)&&delete u["Content-Type"];var y=new XMLHttpRequest;if(e.auth){var m=e.auth.username||"",h=e.auth.password||"";u.Authorization="Basic "+btoa(m+":"+h)}var f=i(e.baseURL,e.url);if(y.open(e.method.toUpperCase(),o(f,e.params,e.paramsSerializer),!0),y.timeout=e.timeout,y.onreadystatechange=function(){if(y&&4===y.readyState&&(0!==y.status||y.responseURL&&0===y.responseURL.indexOf("file:"))){var a="getAllResponseHeaders"in y?l(y.getAllResponseHeaders()):null,n={data:e.responseType&&"text"!==e.responseType?y.response:y.responseText,status:y.status,statusText:y.statusText,headers:a,config:e,request:y};r(t,p,n),y=null}},y.onabort=function(){y&&(p(d("Request aborted",e,"ECONNABORTED",y)),y=null)},y.onerror=function(){p(d("Network Error",e,null,y)),y=null},y.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),p(d(t,e,"ECONNABORTED",y)),y=null},n.isStandardBrowserEnv()){var b=a(53),v=(e.withCredentials||s(f))&&e.xsrfCookieName?b.read(e.xsrfCookieName):void 0;v&&(u[e.xsrfHeaderName]=v)}if("setRequestHeader"in y&&n.forEach(u,(function(e,t){void 0===c&&"content-type"===t.toLowerCase()?delete u[t]:y.setRequestHeader(t,e)})),n.isUndefined(e.withCredentials)||(y.withCredentials=!!e.withCredentials),e.responseType)try{y.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&y.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&y.upload&&y.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){y&&(y.abort(),p(e),y=null)})),void 0===c&&(c=null),y.send(c)}))}},function(e,t,a){"use strict";var n=a(47);e.exports=function(e,t,a,r,o){var i=new Error(e);return n(i,t,a,r,o)}},function(e,t,a){"use strict";var n=a(0);e.exports=function(e,t){t=t||{};var a={},r=["url","method","params","data"],o=["headers","auth","proxy"],i=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];n.forEach(r,(function(e){void 0!==t[e]&&(a[e]=t[e])})),n.forEach(o,(function(r){n.isObject(t[r])?a[r]=n.deepMerge(e[r],t[r]):void 0!==t[r]?a[r]=t[r]:n.isObject(e[r])?a[r]=n.deepMerge(e[r]):void 0!==e[r]&&(a[r]=e[r])})),n.forEach(i,(function(n){void 0!==t[n]?a[n]=t[n]:void 0!==e[n]&&(a[n]=e[n])}));var l=r.concat(o).concat(i),s=Object.keys(t).filter((function(e){return-1===l.indexOf(e)}));return n.forEach(s,(function(n){void 0!==t[n]?a[n]=t[n]:void 0!==e[n]&&(a[n]=e[n])})),a}},function(e,t,a){"use strict";function n(e){this.message=e}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,e.exports=n},function(e,t,a){"use strict";e.exports=a(56)},function(e,t,a){"use strict";(function(e){var n=a(16);function r(e){return(r="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})(e)}var o=setTimeout;function i(e){return Boolean(e&&void 0!==e.length)}function l(){}function s(e){if(!(this instanceof s))throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],m(e,this)}function d(e,t){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!0,s._immediateFn((function(){var a=1===e._state?t.onFulfilled:t.onRejected;if(null!==a){var n;try{n=a(e._value)}catch(e){return void c(t.promise,e)}p(t.promise,n)}else(1===e._state?p:c)(t.promise,e._value)}))):e._deferreds.push(t)}function p(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"===r(t)||"function"==typeof t)){var a=t.then;if(t instanceof s)return e._state=3,e._value=t,void u(e);if("function"==typeof a)return void m((n=a,o=t,function(){n.apply(o,arguments)}),e)}e._state=1,e._value=t,u(e)}catch(t){c(e,t)}var n,o}function c(e,t){e._state=2,e._value=t,u(e)}function u(e){2===e._state&&0===e._deferreds.length&&s._immediateFn((function(){e._handled||s._unhandledRejectionFn(e._value)}));for(var t=0,a=e._deferreds.length;t\n
    \n '),t+='\n
    \n
    \n
    \n
    \n
    \n \n ',i.danmaku&&(t+='\n ',t+=l(s("Danmaku is loading")),t+="\n "),t+='\n ',t+=d.loading,t+='\n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    ',t+=l(s("Set danmaku color")),t+='
    \n \n \n \n \n \n \n
    \n
    \n
    ',t+=l(s("Set danmaku type")),t+='
    \n \n \n \n
    \n
    \n \n ',t+=d.send,t+='\n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n 0:00 /\n 0:00\n \n ',i.live&&(t+='\n ',t+=l(s("Live")),t+="\n "),t+='\n
    \n
    \n ',i.video.quality&&(t+='\n
    \n \n
    \n
    \n ',c(i.video.quality,(function(e,a){t+='\n
    ',t+=l(e.name),t+="
    \n "})),t+="\n
    \n
    \n
    \n "),t+="\n ",i.screenshot&&(t+='\n
    \n
    \n "),t+='\n
    \n \n
    \n ",i.subtitle&&(t+='\n
    \n \n
    \n "),t+='\n
    \n \n
    \n
    \n
    \n ',t+=l(s("Speed")),t+='\n
    ',t+=d.right,t+='
    \n
    \n
    \n ',t+=l(s("Loop")),t+='\n
    \n \n \n
    \n
    \n
    \n ',t+=l(s("Show danmaku")),t+='\n
    \n \n \n
    \n
    \n
    \n ',t+=l(s("Unlimited danmaku")),t+='\n
    \n \n \n
    \n
    \n
    \n ',t+=l(s("Opacity for danmaku")),t+='\n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n 0.5\n
    \n
    \n 0.75\n
    \n
    \n ',t+=l(s("Normal")),t+='\n
    \n
    \n 1.25\n
    \n
    \n 1.5\n
    \n
    \n 2\n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    [x]
    \n
    \n Player version\n \n
    \n
    \n Player FPS\n \n
    \n
    \n Video type\n \n
    \n
    \n Video url\n \n
    \n
    \n Video resolution\n \n
    \n
    \n Video duration\n \n
    \n ',i.danmaku&&(t+='\n
    \n Danamku id\n \n
    \n
    \n Danamku api\n \n
    \n
    \n Danamku amount\n \n
    \n '),t+='\n
    \n
    \n ',c(i.contextmenu,(function(e,a){t+='\n
    \n ',t+=l(s(e.text)),t+="\n
    \n "})),t+='\n
    \n
    \n"}},function(e,t,a){var n=a(35),r=a(36);"string"==typeof(r=r.__esModule?r.default:r)&&(r=[[e.i,r,""]]);var o={insert:"head",singleton:!1},i=(n(r,o),r.locals?r.locals:{});e.exports=i},function(e,t,a){"use strict";var n,r=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},o=function(){var e={};return function(t){if(void 0===e[t]){var a=document.querySelector(t);if(window.HTMLIFrameElement&&a instanceof window.HTMLIFrameElement)try{a=a.contentDocument.head}catch(e){a=null}e[t]=a}return e[t]}}(),i=[];function l(e){for(var t=-1,a=0;adiv{display:none}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box>div.dplayer-setting-origin-panel{display:block}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box.dplayer-setting-box-open{-webkit-transform:scale(1);transform:scale(1)}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box.dplayer-setting-box-narrow{width:70px;height:180px;text-align:center}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box.dplayer-setting-box-speed .dplayer-setting-origin-panel{display:none}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-box.dplayer-setting-box-speed .dplayer-setting-speed-panel{display:block}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-item,.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-speed-item{height:30px;padding:5px 10px;box-sizing:border-box;cursor:pointer;position:relative}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-item:hover,.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-speed-item:hover{background-color:hsla(0,0%,100%,.1)}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku{padding:5px 0}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku .dplayer-label{padding:0 10px;display:inline}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku:hover .dplayer-label{display:none}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku:hover .dplayer-danmaku-bar-wrap{display:inline-block}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku.dplayer-setting-danmaku-active .dplayer-label{display:none}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku.dplayer-setting-danmaku-active .dplayer-danmaku-bar-wrap{display:inline-block}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku .dplayer-danmaku-bar-wrap{padding:0 10px;box-sizing:border-box;display:none;vertical-align:middle;height:100%;width:100%}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku .dplayer-danmaku-bar-wrap .dplayer-danmaku-bar{position:relative;top:8.5px;width:100%;height:3px;background:#fff;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku .dplayer-danmaku-bar-wrap .dplayer-danmaku-bar .dplayer-danmaku-bar-inner{position:absolute;bottom:0;left:0;height:100%;-webkit-transition:all .1s ease;transition:all .1s ease;background:#aaa;will-change:width}.dplayer-controller .dplayer-icons .dplayer-setting .dplayer-setting-danmaku .dplayer-danmaku-bar-wrap .dplayer-danmaku-bar .dplayer-danmaku-bar-inner .dplayer-thumb{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out;background:#aaa}.dplayer-controller .dplayer-icons .dplayer-full{display:inline-block;height:100%;position:relative}.dplayer-controller .dplayer-icons .dplayer-full:hover .dplayer-full-in-icon{display:block}.dplayer-controller .dplayer-icons .dplayer-full .dplayer-full-in-icon{position:absolute;top:-30px;z-index:1;display:none}.dplayer-controller .dplayer-icons .dplayer-quality{position:relative;display:inline-block;height:100%;z-index:2}.dplayer-controller .dplayer-icons .dplayer-quality:hover .dplayer-quality-list{display:block}.dplayer-controller .dplayer-icons .dplayer-quality:hover .dplayer-quality-mask{display:block}.dplayer-controller .dplayer-icons .dplayer-quality .dplayer-quality-mask{display:none;position:absolute;bottom:38px;left:-18px;width:80px;padding-bottom:12px}.dplayer-controller .dplayer-icons .dplayer-quality .dplayer-quality-list{display:none;font-size:12px;width:80px;border-radius:2px;background:rgba(28,28,28,.9);padding:5px 0;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out;overflow:hidden;color:#fff;text-align:center}.dplayer-controller .dplayer-icons .dplayer-quality .dplayer-quality-item{height:25px;box-sizing:border-box;cursor:pointer;line-height:25px}.dplayer-controller .dplayer-icons .dplayer-quality .dplayer-quality-item:hover{background-color:hsla(0,0%,100%,.1)}.dplayer-controller .dplayer-icons .dplayer-comment{display:inline-block;height:100%}.dplayer-controller .dplayer-icons .dplayer-label{color:#eee;font-size:13px;display:inline-block;vertical-align:middle;white-space:nowrap}.dplayer-controller .dplayer-icons .dplayer-toggle{width:32px;height:20px;text-align:center;font-size:0;vertical-align:middle;position:absolute;top:5px;right:10px}.dplayer-controller .dplayer-icons .dplayer-toggle input{max-height:0;max-width:0;display:none}.dplayer-controller .dplayer-icons .dplayer-toggle input+label{display:inline-block;position:relative;box-shadow:inset 0 0 0 0 #dfdfdf;border:1px solid #dfdfdf;height:20px;width:32px;border-radius:10px;box-sizing:border-box;cursor:pointer;-webkit-transition:.2s ease-in-out;transition:.2s ease-in-out}.dplayer-controller .dplayer-icons .dplayer-toggle input+label:before{content:"";position:absolute;display:block;height:18px;width:18px;top:0;left:0;border-radius:15px;-webkit-transition:.2s ease-in-out;transition:.2s ease-in-out}.dplayer-controller .dplayer-icons .dplayer-toggle input+label:after{content:"";position:absolute;display:block;left:0;top:0;border-radius:15px;background:#fff;-webkit-transition:.2s ease-in-out;transition:.2s ease-in-out;box-shadow:0 1px 3px rgba(0,0,0,.4);height:18px;width:18px}.dplayer-controller .dplayer-icons .dplayer-toggle input:checked+label{border-color:hsla(0,0%,100%,.5)}.dplayer-controller .dplayer-icons .dplayer-toggle input:checked+label:before{width:30px;background:hsla(0,0%,100%,.5)}.dplayer-controller .dplayer-icons .dplayer-toggle input:checked+label:after{left:12px}.dplayer-mobile-play{display:none;width:50px;height:50px;border:none;background-color:transparent;outline:none;cursor:pointer;box-sizing:border-box;bottom:0;opacity:.8;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.dplayer-danmaku{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff}.dplayer-danmaku .dplayer-danmaku-item{display:inline-block;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default;white-space:nowrap;text-shadow:.5px .5px .5px rgba(0,0,0,.5)}.dplayer-danmaku .dplayer-danmaku-item--demo{position:absolute;visibility:hidden}.dplayer-danmaku .dplayer-danmaku-right{position:absolute;right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.dplayer-danmaku .dplayer-danmaku-right.dplayer-danmaku-move{will-change:transform;-webkit-animation:danmaku 5s linear;animation:danmaku 5s linear;-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes danmaku{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes danmaku{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}}.dplayer-danmaku .dplayer-danmaku-bottom,.dplayer-danmaku .dplayer-danmaku-top{position:absolute;width:100%;text-align:center;visibility:hidden}.dplayer-danmaku .dplayer-danmaku-bottom.dplayer-danmaku-move,.dplayer-danmaku .dplayer-danmaku-top.dplayer-danmaku-move{will-change:visibility;-webkit-animation:danmaku-center 4s linear;animation:danmaku-center 4s linear;-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes danmaku-center{0%{visibility:visible}to{visibility:visible}}@keyframes danmaku-center{0%{visibility:visible}to{visibility:visible}}.dplayer-logo{pointer-events:none;position:absolute;left:20px;top:20px;max-width:50px;max-height:50px}.dplayer-logo img{max-width:100%;max-height:100%;background:none}.dplayer-menu{position:absolute;width:170px;border-radius:2px;background:rgba(28,28,28,.85);padding:5px 0;overflow:hidden;z-index:3;display:none}.dplayer-menu.dplayer-menu-show{display:block}.dplayer-menu .dplayer-menu-item{height:30px;box-sizing:border-box;cursor:pointer}.dplayer-menu .dplayer-menu-item:hover{background-color:hsla(0,0%,100%,.1)}.dplayer-menu .dplayer-menu-item a{padding:0 10px;line-height:30px;color:#eee;font-size:13px;display:inline-block;vertical-align:middle;width:100%;box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dplayer-menu .dplayer-menu-item a:hover{text-decoration:none}.dplayer-notice{opacity:0;position:absolute;bottom:60px;left:20px;font-size:14px;border-radius:2px;background:rgba(28,28,28,.9);padding:7px 20px;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out;overflow:hidden;color:#fff;pointer-events:none}.dplayer-subtitle{position:absolute;bottom:40px;width:90%;left:5%;text-align:center;color:#fff;text-shadow:.5px .5px .5px rgba(0,0,0,.5);font-size:20px}.dplayer-subtitle.dplayer-subtitle-hide{display:none}.dplayer-mask{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.dplayer-mask.dplayer-mask-show{display:block}.dplayer-video-wrap{position:relative;background:#000;font-size:0;width:100%;height:100%}.dplayer-video-wrap .dplayer-video{width:100%;height:100%;display:none}.dplayer-video-wrap .dplayer-video-current{display:block}.dplayer-video-wrap .dplayer-video-prepare{display:none}.dplayer-info-panel{position:absolute;top:10px;left:10px;width:400px;background:rgba(28,28,28,.8);padding:10px;color:#fff;font-size:12px;border-radius:2px}.dplayer-info-panel-hide{display:none}.dplayer-info-panel .dplayer-info-panel-close{cursor:pointer;position:absolute;right:10px;top:10px}.dplayer-info-panel .dplayer-info-panel-item>span{display:inline-block;vertical-align:middle;line-height:15px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dplayer-info-panel .dplayer-info-panel-item-title{width:100px;text-align:right;margin-right:10px}.dplayer-info-panel .dplayer-info-panel-item-data{width:260px}',""]),e.exports=t},function(e,t,a){(t=a(3)(!1)).push([e.i,':root{--balloon-color:rgba(16,16,16,0.95);--balloon-font-size:12px;--balloon-move:4px}button[aria-label][data-balloon-pos]{overflow:visible}[aria-label][data-balloon-pos]{position:relative;cursor:pointer}[aria-label][data-balloon-pos]:after{opacity:0;pointer-events:none;-webkit-transition:all .18s ease-out .18s;transition:all .18s ease-out .18s;text-indent:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-weight:400;font-style:normal;text-shadow:none;font-size:var(--balloon-font-size);background:var(--balloon-color);border-radius:2px;color:#fff;content:attr(aria-label);padding:.5em 1em;position:absolute;white-space:nowrap;z-index:10}[aria-label][data-balloon-pos]:before{width:0;height:0;border:5px solid transparent;border-top:5px solid var(--balloon-color);opacity:0;pointer-events:none;-webkit-transition:all .18s ease-out .18s;transition:all .18s ease-out .18s;content:"";position:absolute;z-index:10}[aria-label][data-balloon-pos]:hover:after,[aria-label][data-balloon-pos]:hover:before,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before,[aria-label][data-balloon-pos][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-visible]:before{opacity:1;pointer-events:none}[aria-label][data-balloon-pos].font-awesome:after{font-family:FontAwesome,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}[aria-label][data-balloon-pos][data-balloon-break]:after{white-space:pre}[aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after{white-space:pre-line;word-break:break-word}[aria-label][data-balloon-pos][data-balloon-blunt]:after,[aria-label][data-balloon-pos][data-balloon-blunt]:before{-webkit-transition:none;transition:none}[aria-label][data-balloon-pos][data-balloon-pos=up]:after{bottom:100%;left:50%;margin-bottom:10px;-webkit-transform:translate(-50%,var(--balloon-move));transform:translate(-50%,var(--balloon-move));-webkit-transform-origin:top;transform-origin:top}[aria-label][data-balloon-pos][data-balloon-pos=up]:before{bottom:100%;left:50%;-webkit-transform:translate(-50%,var(--balloon-move));transform:translate(-50%,var(--balloon-move));-webkit-transform-origin:top;transform-origin:top}[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:after{-webkit-transform:translate(-50%);transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:before{-webkit-transform:translate(-50%);transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=up-left]:after{bottom:100%;left:0;margin-bottom:10px;-webkit-transform:translateY(var(--balloon-move));transform:translateY(var(--balloon-move));-webkit-transform-origin:top;transform-origin:top}[aria-label][data-balloon-pos][data-balloon-pos=up-left]:before{bottom:100%;left:5px;-webkit-transform:translateY(var(--balloon-move));transform:translateY(var(--balloon-move));-webkit-transform-origin:top;transform-origin:top}[aria-label][data-balloon-pos][data-balloon-pos=up-left]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=up-left][data-balloon-visible]:after{-webkit-transform:translate(0);transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-pos=up-left]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=up-left][data-balloon-visible]:before{-webkit-transform:translate(0);transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-pos=up-right]:after{bottom:100%;right:0;margin-bottom:10px;-webkit-transform:translateY(var(--balloon-move));transform:translateY(var(--balloon-move));-webkit-transform-origin:top;transform-origin:top}[aria-label][data-balloon-pos][data-balloon-pos=up-right]:before{bottom:100%;right:5px;-webkit-transform:translateY(var(--balloon-move));transform:translateY(var(--balloon-move));-webkit-transform-origin:top;transform-origin:top}[aria-label][data-balloon-pos][data-balloon-pos=up-right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=up-right][data-balloon-visible]:after{-webkit-transform:translate(0);transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-pos=up-right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=up-right][data-balloon-visible]:before{-webkit-transform:translate(0);transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-pos=down]:after{left:50%;margin-top:10px;top:100%;-webkit-transform:translate(-50%,calc(var(--balloon-move)*-1));transform:translate(-50%,calc(var(--balloon-move)*-1))}[aria-label][data-balloon-pos][data-balloon-pos=down]:before{width:0;height:0;border:5px solid transparent;border-bottom:5px solid var(--balloon-color);left:50%;top:100%;-webkit-transform:translate(-50%,calc(var(--balloon-move)*-1));transform:translate(-50%,calc(var(--balloon-move)*-1))}[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:after{-webkit-transform:translate(-50%);transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:before{-webkit-transform:translate(-50%);transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=down-left]:after{left:0;margin-top:10px;top:100%;-webkit-transform:translateY(calc(var(--balloon-move)*-1));transform:translateY(calc(var(--balloon-move)*-1))}[aria-label][data-balloon-pos][data-balloon-pos=down-left]:before{width:0;height:0;border:5px solid transparent;border-bottom:5px solid var(--balloon-color);left:5px;top:100%;-webkit-transform:translateY(calc(var(--balloon-move)*-1));transform:translateY(calc(var(--balloon-move)*-1))}[aria-label][data-balloon-pos][data-balloon-pos=down-left]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=down-left][data-balloon-visible]:after{-webkit-transform:translate(0);transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-pos=down-left]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=down-left][data-balloon-visible]:before{-webkit-transform:translate(0);transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-pos=down-right]:after{right:0;margin-top:10px;top:100%;-webkit-transform:translateY(calc(var(--balloon-move)*-1));transform:translateY(calc(var(--balloon-move)*-1))}[aria-label][data-balloon-pos][data-balloon-pos=down-right]:before{width:0;height:0;border:5px solid transparent;border-bottom:5px solid var(--balloon-color);right:5px;top:100%;-webkit-transform:translateY(calc(var(--balloon-move)*-1));transform:translateY(calc(var(--balloon-move)*-1))}[aria-label][data-balloon-pos][data-balloon-pos=down-right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=down-right][data-balloon-visible]:after{-webkit-transform:translate(0);transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-pos=down-right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=down-right][data-balloon-visible]:before{-webkit-transform:translate(0);transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-pos=left]:after{margin-right:10px;right:100%;top:50%;-webkit-transform:translate(var(--balloon-move),-50%);transform:translate(var(--balloon-move),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:before{width:0;height:0;border:5px solid transparent;border-left:5px solid var(--balloon-color);right:100%;top:50%;-webkit-transform:translate(var(--balloon-move),-50%);transform:translate(var(--balloon-move),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:after{-webkit-transform:translateY(-50%);transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:before{-webkit-transform:translateY(-50%);transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=right]:after{left:100%;margin-left:10px;top:50%;-webkit-transform:translate(calc(var(--balloon-move)*-1),-50%);transform:translate(calc(var(--balloon-move)*-1),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=right]:before{width:0;height:0;border:5px solid transparent;border-right:5px solid var(--balloon-color);left:100%;top:50%;-webkit-transform:translate(calc(var(--balloon-move)*-1),-50%);transform:translate(calc(var(--balloon-move)*-1),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:after{-webkit-transform:translateY(-50%);transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:before{-webkit-transform:translateY(-50%);transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-length=small]:after{white-space:normal;width:80px}[aria-label][data-balloon-pos][data-balloon-length=medium]:after{white-space:normal;width:150px}[aria-label][data-balloon-pos][data-balloon-length=large]:after{white-space:normal;width:260px}[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after{white-space:normal;width:380px}@media screen and (max-width:768px){[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after{white-space:normal;width:90vw}}[aria-label][data-balloon-pos][data-balloon-length=fit]:after{white-space:normal;width:100%}',""]),e.exports=t},function(e,t,a){var n=Function.prototype.apply;function r(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new r(n.call(setTimeout,window,arguments),clearTimeout)},t.setInterval=function(){return new r(n.call(setInterval,window,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},r.prototype.unref=r.prototype.ref=function(){},r.prototype.close=function(){this._clearFn.call(window,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},a(39),t.setImmediate=setImmediate,t.clearImmediate=clearImmediate},function(e,t,a){(function(e,t){!function(e,a){"use strict";if(!e.setImmediate){var n,r,o,i,l,s=1,d={},p=!1,c=e.document,u=Object.getPrototypeOf&&Object.getPrototypeOf(e);u=u&&u.setTimeout?u:e,"[object process]"==={}.toString.call(e.process)?n=function(e){t.nextTick((function(){m(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,a=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=a,t}}()?e.MessageChannel?((o=new MessageChannel).port1.onmessage=function(e){m(e.data)},n=function(e){o.port2.postMessage(e)}):c&&"onreadystatechange"in c.createElement("script")?(r=c.documentElement,n=function(e){var t=c.createElement("script");t.onreadystatechange=function(){m(e),t.onreadystatechange=null,r.removeChild(t),t=null},r.appendChild(t)}):n=function(e){setTimeout(m,0,e)}:(i="setImmediate$"+Math.random()+"$",l=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(i)&&m(+t.data.slice(i.length))},e.addEventListener?e.addEventListener("message",l,!1):e.attachEvent("onmessage",l),n=function(t){e.postMessage(i+t,"*")}),u.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),a=0;a=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([a]):i[t]?i[t]+", "+a:a}})),i):i}},function(e,t,a){"use strict";var n=a(0);e.exports=n.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),a=document.createElement("a");function r(e){var n=e;return t&&(a.setAttribute("href",n),n=a.href),a.setAttribute("href",n),{href:a.href,protocol:a.protocol?a.protocol.replace(/:$/,""):"",host:a.host,search:a.search?a.search.replace(/^\?/,""):"",hash:a.hash?a.hash.replace(/^#/,""):"",hostname:a.hostname,port:a.port,pathname:"/"===a.pathname.charAt(0)?a.pathname:"/"+a.pathname}}return e=r(window.location.href),function(t){var a=n.isString(t)?r(t):t;return a.protocol===e.protocol&&a.host===e.host}}():function(){return!0}},function(e,t,a){"use strict";var n=a(0);e.exports=n.isStandardBrowserEnv()?{write:function(e,t,a,r,o,i){var l=[];l.push(e+"="+encodeURIComponent(t)),n.isNumber(a)&&l.push("expires="+new Date(a).toGMTString()),n.isString(r)&&l.push("path="+r),n.isString(o)&&l.push("domain="+o),!0===i&&l.push("secure"),document.cookie=l.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(e,t,a){"use strict";var n=a(13);function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var a=this;e((function(e){a.reason||(a.reason=new n(e),t(a.reason))}))}r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e;return{token:new r((function(t){e=t})),cancel:e}},e.exports=r},function(e,t,a){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,t,a){"use strict";(function(t){var a="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==t?t:{},n=Object.create(a),r=/["&'<>]/;n.$escape=function(e){return function(e){var t=""+e,a=r.exec(t);if(!a)return e;var n="",o=void 0,i=void 0,l=void 0;for(o=a.index,i=0;o0?[t,a,n]:[a,n]).map((function(e){return e<10?"0"+e:""+e})).join(":")},getElementViewLeft:function(e){var t=e.offsetLeft,a=e.offsetParent,n=document.body.scrollLeft+document.documentElement.scrollLeft;if(document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement)for(;null!==a&&a!==e;)t+=a.offsetLeft,a=a.offsetParent;else for(;null!==a;)t+=a.offsetLeft,a=a.offsetParent;return t-n},getBoundingClientRectViewLeft:function(e){var t=window.scrollY||window.pageYOffset||document.body.scrollTop+(document.documentElement&&document.documentElement.scrollTop||0);if(e.getBoundingClientRect){if("number"!=typeof this.getBoundingClientRectViewLeft.offset){var a=document.createElement("div");a.style.cssText="position:absolute;top:0;left:0;",document.body.appendChild(a),this.getBoundingClientRectViewLeft.offset=-a.getBoundingClientRect().top-t,document.body.removeChild(a),a=null}var n=e.getBoundingClientRect(),r=this.getBoundingClientRectViewLeft.offset;return n.left+r}return this.getElementViewLeft(e)},getScrollPosition:function(){return{left:window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0,top:window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0}},setScrollPosition:function(e){var t=e.left,a=void 0===t?0:t,n=e.top,r=void 0===n?0:n;this.isFirefox?(document.documentElement.scrollLeft=a,document.documentElement.scrollTop=r):window.scrollTo(a,r)},isMobile:r,isFirefox:/firefox/i.test(window.navigator.userAgent),isChrome:/chrome/i.test(window.navigator.userAgent),storage:{set:function(e,t){localStorage.setItem(e,t)},get:function(e){return localStorage.getItem(e)}},nameMap:{dragStart:r?"touchstart":"mousedown",dragMove:r?"touchmove":"mousemove",dragEnd:r?"touchend":"mouseup"},color2Number:function(e){return"#"===e[0]&&(e=e.substr(1)),3===e.length&&(e="".concat(e[0]).concat(e[0]).concat(e[1]).concat(e[1]).concat(e[2]).concat(e[2])),parseInt(e,16)+0&16777215},number2Color:function(e){return"#"+("00000"+e.toString(16)).slice(-6)},number2Type:function(e){switch(e){case 0:return"right";case 1:return"top";case 2:return"bottom";default:return"right"}}},i=a(2),l=a.n(i),s={send:function(e){l.a.post(e.url,e.data).then((function(t){var a=t.data;a&&0===a.code?e.success&&e.success(a):e.error&&e.error(a&&a.msg)})).catch((function(t){console.error(t),e.error&&e.error()}))},read:function(e){l.a.get(e.url).then((function(t){var a=t.data;a&&0===a.code?e.success&&e.success(a.data.map((function(e){return{time:e[0],type:e[1],color:e[2],author:e[3],text:e[4]}}))):e.error&&e.error(a&&a.msg)})).catch((function(t){console.error(t),e.error&&e.error()}))}};function d(e){return(d="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})(e)}var p=function(e){var t={container:e.element||document.getElementsByClassName("dplayer")[0],live:!1,autoplay:!1,theme:"#b7daff",loop:!1,lang:(navigator.language||navigator.browserLanguage).toLowerCase(),screenshot:!1,hotkey:!0,preload:"metadata",volume:.7,apiBackend:s,video:{},contextmenu:[],mutex:!0,pluginOptions:{hls:{},flvjs:{},dash:{},webtorrent:{}}};for(var a in t)t.hasOwnProperty(a)&&!e.hasOwnProperty(a)&&(e[a]=t[a]);return e.video&&!e.video.type&&(e.video.type="auto"),"object"===d(e.danmaku)&&e.danmaku&&!e.danmaku.user&&(e.danmaku.user="DIYgod"),e.subtitle&&(!e.subtitle.type&&(e.subtitle.type="webvtt"),!e.subtitle.fontSize&&(e.subtitle.fontSize="20px"),!e.subtitle.bottom&&(e.subtitle.bottom="40px"),!e.subtitle.color&&(e.subtitle.color="#fff")),e.video.quality&&(e.video.url=e.video.quality[e.video.defaultQuality].url),e.lang&&(e.lang=e.lang.toLowerCase()),e.contextmenu=e.contextmenu.concat([{text:"Video info",click:function(e){e.infoPanel.triggle()}},{text:"About author",link:"https://diygod.me"},{text:"DPlayer v".concat("1.25.1"),link:"https://github.com/MoePlayer/DPlayer"}]),e};var c={"zh-cn":{"Danmaku is loading":"弹幕加载中",Top:"顶部",Bottom:"底部",Rolling:"滚动","Input danmaku, hit Enter":"输入弹幕,回车发送","About author":"关于作者","DPlayer feedback":"播放器意见反馈","About DPlayer":"关于 DPlayer 播放器",Loop:"洗脑循环",Speed:"速度","Opacity for danmaku":"弹幕透明度",Normal:"正常","Please input danmaku content!":"要输入弹幕内容啊喂!","Set danmaku color":"设置弹幕颜色","Set danmaku type":"设置弹幕类型","Show danmaku":"显示弹幕","Video load failed":"视频加载失败","Danmaku load failed":"弹幕加载失败","Danmaku send failed":"弹幕发送失败","Switching to":"正在切换至","Switched to":"已经切换至",quality:"画质",FF:"快进",REW:"快退","Unlimited danmaku":"海量弹幕","Send danmaku":"发送弹幕",Setting:"设置","Full screen":"全屏","Web full screen":"页面全屏",Send:"发送",Screenshot:"截图",s:"秒","Show subtitle":"显示字幕","Hide subtitle":"隐藏字幕",Volume:"音量",Live:"直播","Video info":"视频统计信息"},"zh-tw":{"Danmaku is loading":"彈幕載入中",Top:"頂部",Bottom:"底部",Rolling:"滾動","Input danmaku, hit Enter":"輸入彈幕,Enter 發送","About author":"關於作者","DPlayer feedback":"播放器意見回饋","About DPlayer":"關於 DPlayer 播放器",Loop:"循環播放",Speed:"速度","Opacity for danmaku":"彈幕透明度",Normal:"正常","Please input danmaku content!":"請輸入彈幕內容啊!","Set danmaku color":"設定彈幕顏色","Set danmaku type":"設定彈幕類型","Show danmaku":"顯示彈幕","Video load failed":"影片載入失敗","Danmaku load failed":"彈幕載入失敗","Danmaku send failed":"彈幕發送失敗","Switching to":"正在切換至","Switched to":"已經切換至",quality:"畫質",FF:"快進",REW:"快退","Unlimited danmaku":"巨量彈幕","Send danmaku":"發送彈幕",Setting:"設定","Full screen":"全螢幕","Web full screen":"頁面全螢幕",Send:"發送",Screenshot:"截圖",s:"秒","Show subtitle":"顯示字幕","Hide subtitle":"隱藏字幕",Volume:"音量",Live:"直播","Video info":"影片統計訊息"}},u=function(e){var t=this;this.lang=e,this.tran=function(e){return c[t.lang]&&c[t.lang][e]?c[t.lang][e]:e}},y=a(17),m=a.n(y),h=a(18),f=a.n(h),b=a(19),v=a.n(b),g=a(20),w=a.n(g),k=a(21),x=a.n(k),S=a(22),T=a.n(S),L=a(23),E=a.n(L),Y=a(24),q=a.n(Y),B=a(25),M=a.n(B),z=a(26),C=a.n(z),O=a(27),j=a.n(O),P=a(28),A=a.n(P),F=a(29),_=a.n(F),D=a(30),R=a.n(D),I=a(31),W=a.n(I),H=a(32),N=a.n(H),U={play:m.a,pause:f.a,volumeUp:v.a,volumeDown:w.a,volumeOff:x.a,full:T.a,fullWeb:E.a,setting:q.a,right:M.a,comment:C.a,commentOff:j.a,send:A.a,pallette:_.a,camera:R.a,subtitle:W.a,loading:N.a},V=a(33),X=a.n(V);function Q(e,t){for(var a=0;aparseFloat(t.time);)a.push(t),t=this.dan[++this.danIndex];this.draw(a)}window.requestAnimationFrame((function(){e.frame()}))}},{key:"opacity",value:function(e){if(void 0!==e){for(var t=this.container.getElementsByClassName("dplayer-danmaku-item"),a=0;a').concat(e[r].text,""):i.innerHTML=e[r].text,i.style.opacity=t._opacity,i.style.color=o.number2Color(e[r].color),i.addEventListener("animationend",(function(){t.container.removeChild(i)}));var l=t._measure(e[r].text),s=void 0;switch(e[r].type){case"right":(s=d(i,e[r].type,l))>=0&&(i.style.width=l+1+"px",i.style.top=a*s+"px",i.style.transform="translateX(-".concat(n,"px)"));break;case"top":(s=d(i,e[r].type))>=0&&(i.style.top=a*s+"px");break;case"bottom":(s=d(i,e[r].type))>=0&&(i.style.bottom=a*s+"px");break;default:console.error("Can't handled danmaku type: ".concat(e[r].type))}s>=0&&(i.classList.add("dplayer-danmaku-move"),p.appendChild(i))},u=0;u=this.options.time()){this.danIndex=e;break}this.danIndex=this.dan.length}}},{key:"clear",value:function(){this.danTunnel={right:{},top:{},bottom:{}},this.danIndex=0,this.options.container.innerHTML="",this.events&&this.events.trigger("danmaku_clear")}},{key:"htmlEncode",value:function(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")}},{key:"resize",value:function(){for(var e=this.container.offsetWidth,t=this.container.getElementsByClassName("dplayer-danmaku-item"),a=0;a0&&void 0!==arguments[0]?arguments[0]:"browser";switch(e){case"browser":return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;case"web":return this.player.container.classList.contains("dplayer-fulled")}}},{key:"request",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"browser",t="browser"===e?"web":"browser",a=this.isFullScreen(t);switch(a||(this.lastScrollPosition=o.getScrollPosition()),e){case"browser":this.player.container.requestFullscreen?this.player.container.requestFullscreen():this.player.container.mozRequestFullScreen?this.player.container.mozRequestFullScreen():this.player.container.webkitRequestFullscreen?this.player.container.webkitRequestFullscreen():this.player.video.webkitEnterFullscreen?this.player.video.webkitEnterFullscreen():this.player.video.webkitEnterFullScreen?this.player.video.webkitEnterFullScreen():this.player.container.msRequestFullscreen&&this.player.container.msRequestFullscreen();break;case"web":this.player.container.classList.add("dplayer-fulled"),document.body.classList.add("dplayer-web-fullscreen-fix"),this.player.events.trigger("webfullscreen")}a&&this.cancel(t)}},{key:"cancel",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"browser";switch(e){case"browser":document.cancelFullScreen?document.cancelFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitCancelFullScreen?document.webkitCancelFullScreen():document.webkitCancelFullscreen?document.webkitCancelFullscreen():document.msCancelFullScreen?document.msCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen();break;case"web":this.player.container.classList.remove("dplayer-fulled"),document.body.classList.remove("dplayer-web-fullscreen-fix"),this.player.events.trigger("webfullscreen_cancel")}}},{key:"toggle",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"browser";this.isFullScreen(e)?this.cancel(e):this.request(e)}}])&&te(t.prototype,a),n&&te(t,n),e}();function ne(e,t){for(var a=0;a".concat(e,"

    ")})).join("");e.container.innerHTML=r}e.events.trigger("subtitle_change")}}}},{key:"show",value:function(){this.container.classList.remove("dplayer-subtitle-hide"),this.events.trigger("subtitle_show")}},{key:"hide",value:function(){this.container.classList.add("dplayer-subtitle-hide"),this.events.trigger("subtitle_hide")}},{key:"toggle",value:function(){this.container.classList.contains("dplayer-subtitle-hide")?this.show():this.hide()}}])&&oe(t.prototype,a),n&&oe(t,n),e}();function le(e,t){for(var a=0;at&&!e.player.video.paused&&(e.player.container.classList.remove("dplayer-loading"),n=!1),t=a)}),100)}},{key:"initfpsChecker",value:function(){var e=this;window.requestAnimationFrame((function(){if(e.enablefpsChecker)if(e.initfpsChecker(),e.fpsStart){e.fpsIndex++;var t=new Date;t-e.fpsStart>1e3&&(e.player.infoPanel.fps(e.fpsIndex/(t-e.fpsStart)*1e3),e.fpsStart=new Date,e.fpsIndex=0)}else e.fpsStart=new Date,e.fpsIndex=0;else e.fpsStart=0,e.fpsIndex=0}))}},{key:"initinfoChecker",value:function(){var e=this;this.infoChecker=setInterval((function(){e.enableinfoChecker&&e.player.infoPanel.update()}),1e3)}},{key:"enable",value:function(e){this["enable".concat(e,"Checker")]=!0,"fps"===e&&this.initfpsChecker()}},{key:"disable",value:function(e){this["enable".concat(e,"Checker")]=!1}},{key:"destroy",value:function(){var e=this;this.types.map((function(t){return e["enable".concat(t,"Checker")]=!1,e["".concat(t,"Checker")]&&clearInterval(e["".concat(t,"Checker")]),t}))}}])&&de(t.prototype,a),n&&de(t,n),e}();function ce(e,t){for(var a=0;a'+e.player.options.highlight[a].text+"",e.player.template.playedBarWrap.insertBefore(n,e.player.template.playedBarTime)}}}))}},{key:"initThumbnails",value:function(){var e=this;this.player.options.video.thumbnails&&(this.thumbnails=new me({container:this.player.template.barPreview,barWidth:this.player.template.barWrap.offsetWidth,url:this.player.options.video.thumbnails,events:this.player.events}),this.player.on("loadedmetadata",(function(){e.thumbnails.resize(160,e.player.video.videoHeight/e.player.video.videoWidth*160,e.player.template.barWrap.offsetWidth)})))}},{key:"initPlayedBar",value:function(){var e=this,t=function(t){var a=((t.clientX||t.changedTouches[0].clientX)-o.getBoundingClientRectViewLeft(e.player.template.playedBarWrap))/e.player.template.playedBarWrap.clientWidth;a=Math.max(a,0),a=Math.min(a,1),e.player.bar.set("played",a,"width"),e.player.template.ptime.innerHTML=o.secondToTime(a*e.player.video.duration)},a=function a(n){document.removeEventListener(o.nameMap.dragEnd,a),document.removeEventListener(o.nameMap.dragMove,t);var r=((n.clientX||n.changedTouches[0].clientX)-o.getBoundingClientRectViewLeft(e.player.template.playedBarWrap))/e.player.template.playedBarWrap.clientWidth;r=Math.max(r,0),r=Math.min(r,1),e.player.bar.set("played",r,"width"),e.player.seek(e.player.bar.get("played")*e.player.video.duration),e.player.timer.enable("progress")};this.player.template.playedBarWrap.addEventListener(o.nameMap.dragStart,(function(){e.player.timer.disable("progress"),document.addEventListener(o.nameMap.dragMove,t),document.addEventListener(o.nameMap.dragEnd,a)})),this.player.template.playedBarWrap.addEventListener(o.nameMap.dragMove,(function(t){if(e.player.video.duration){var a=e.player.template.playedBarWrap.getBoundingClientRect().left,n=(t.clientX||t.changedTouches[0].clientX)-a;if(n<0||n>e.player.template.playedBarWrap.offsetWidth)return;var r=e.player.video.duration*(n/e.player.template.playedBarWrap.offsetWidth);o.isMobile&&e.thumbnails&&e.thumbnails.show(),e.thumbnails&&e.thumbnails.move(n),e.player.template.playedBarTime.style.left="".concat(n-(r>=3600?25:20),"px"),e.player.template.playedBarTime.innerText=o.secondToTime(r),e.player.template.playedBarTime.classList.remove("hidden")}})),this.player.template.playedBarWrap.addEventListener(o.nameMap.dragEnd,(function(){o.isMobile&&e.thumbnails&&e.thumbnails.hide()})),o.isMobile||(this.player.template.playedBarWrap.addEventListener("mouseenter",(function(){e.player.video.duration&&(e.thumbnails&&e.thumbnails.show(),e.player.template.playedBarTime.classList.remove("hidden"))})),this.player.template.playedBarWrap.addEventListener("mouseleave",(function(){e.player.video.duration&&(e.thumbnails&&e.thumbnails.hide(),e.player.template.playedBarTime.classList.add("hidden"))})))}},{key:"initFullButton",value:function(){var e=this;this.player.template.browserFullButton.addEventListener("click",(function(){e.player.fullScreen.toggle("browser")})),this.player.template.webFullButton.addEventListener("click",(function(){e.player.fullScreen.toggle("web")}))}},{key:"initVolumeButton",value:function(){var e=this,t=function(t){var a=t||window.event,n=((a.clientX||a.changedTouches[0].clientX)-o.getBoundingClientRectViewLeft(e.player.template.volumeBarWrap)-5.5)/35;e.player.volume(n)},a=function a(){document.removeEventListener(o.nameMap.dragEnd,a),document.removeEventListener(o.nameMap.dragMove,t),e.player.template.volumeButton.classList.remove("dplayer-volume-active")};this.player.template.volumeBarWrapWrap.addEventListener("click",(function(t){var a=t||window.event,n=((a.clientX||a.changedTouches[0].clientX)-o.getBoundingClientRectViewLeft(e.player.template.volumeBarWrap)-5.5)/35;e.player.volume(n)})),this.player.template.volumeBarWrapWrap.addEventListener(o.nameMap.dragStart,(function(){document.addEventListener(o.nameMap.dragMove,t),document.addEventListener(o.nameMap.dragEnd,a),e.player.template.volumeButton.classList.add("dplayer-volume-active")})),this.player.template.volumeButtonIcon.addEventListener("click",(function(){e.player.video.muted?(e.player.video.muted=!1,e.player.switchVolumeIcon(),e.player.bar.set("volume",e.player.volume(),"width")):(e.player.video.muted=!0,e.player.template.volumeIcon.innerHTML=U.volumeOff,e.player.bar.set("volume",0,"width"))}))}},{key:"initQualityButton",value:function(){var e=this;this.player.options.video.quality&&this.player.template.qualityList.addEventListener("click",(function(t){t.target.classList.contains("dplayer-quality-item")&&e.player.switchQuality(t.target.dataset.index)}))}},{key:"initScreenshotButton",value:function(){var e=this;this.player.options.screenshot&&this.player.template.camareButton.addEventListener("click",(function(){var t,a=document.createElement("canvas");a.width=e.player.video.videoWidth,a.height=e.player.video.videoHeight,a.getContext("2d").drawImage(e.player.video,0,0,a.width,a.height),a.toBlob((function(e){t=URL.createObjectURL(e);var a=document.createElement("a");a.href=t,a.download="DPlayer.png",a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(t)})),e.player.events.trigger("screenshot",t)}))}},{key:"initSubtitleButton",value:function(){var e=this;this.player.options.subtitle&&(this.player.events.on("subtitle_show",(function(){e.player.template.subtitleButton.dataset.balloon=e.player.tran("Hide subtitle"),e.player.template.subtitleButtonInner.style.opacity="",e.player.user.set("subtitle",1)})),this.player.events.on("subtitle_hide",(function(){e.player.template.subtitleButton.dataset.balloon=e.player.tran("Show subtitle"),e.player.template.subtitleButtonInner.style.opacity="0.4",e.player.user.set("subtitle",0)})),this.player.template.subtitleButton.addEventListener("click",(function(){e.player.subtitle.toggle()})))}},{key:"setAutoHide",value:function(){var e=this;this.show(),clearTimeout(this.autoHideTimer),this.autoHideTimer=setTimeout((function(){!e.player.video.played.length||e.player.paused||e.disableAutoHide||e.hide()}),3e3)}},{key:"show",value:function(){this.player.container.classList.remove("dplayer-hide-controller")}},{key:"hide",value:function(){this.player.container.classList.add("dplayer-hide-controller"),this.player.setting.hide(),this.player.comment&&this.player.comment.hide()}},{key:"isShow",value:function(){return!this.player.container.classList.contains("dplayer-hide-controller")}},{key:"toggle",value:function(){this.isShow()?this.hide():this.show()}},{key:"destroy",value:function(){clearTimeout(this.autoHideTimer)}}])&&he(t.prototype,a),n&&he(t,n),e}();function be(e,t){for(var a=0;a=a.width?(this.player.template.menu.style.right=a.width-e+"px",this.player.template.menu.style.left="initial"):(this.player.template.menu.style.left=e+"px",this.player.template.menu.style.right="initial"),t+this.player.template.menu.offsetHeight>=a.height?(this.player.template.menu.style.bottom=a.height-t+"px",this.player.template.menu.style.top="initial"):(this.player.template.menu.style.top=t+"px",this.player.template.menu.style.bottom="initial"),this.player.template.mask.classList.add("dplayer-mask-show"),this.shown=!0,this.player.events.trigger("contextmenu_show")}},{key:"hide",value:function(){this.player.template.mask.classList.remove("dplayer-mask-show"),this.player.template.menu.classList.remove("dplayer-menu-show"),this.shown=!1,this.player.events.trigger("contextmenu_hide")}}])&&xe(t.prototype,a),n&&xe(t,n),e}();function Te(e,t){for(var a=0;ae&&this.notice("".concat(this.tran("REW")," ").concat((this.video.currentTime-e).toFixed(0)," ").concat(this.tran("s"))),this.video.currentTime=e,this.danmaku&&this.danmaku.seek(),this.bar.set("played",e/this.video.duration,"width"),this.template.ptime.innerHTML=o.secondToTime(e)}},{key:"play",value:function(e){var t=this;if(this.paused=!1,this.video.paused&&!o.isMobile&&this.bezel.switch(U.play),this.template.playButton.innerHTML=U.pause,this.template.mobilePlayButton.innerHTML=U.pause,e||n.a.resolve(this.video.play()).catch((function(){t.pause()})).then((function(){})),this.timer.enable("loading"),this.container.classList.remove("dplayer-paused"),this.container.classList.add("dplayer-playing"),this.danmaku&&this.danmaku.play(),this.options.mutex)for(var a=0;a=.95?this.template.volumeIcon.innerHTML=U.volumeUp:this.volume()>0?this.template.volumeIcon.innerHTML=U.volumeDown:this.template.volumeIcon.innerHTML=U.volumeOff}},{key:"volume",value:function(e,t,a){if(e=parseFloat(e),!isNaN(e)){e=Math.max(e,0),e=Math.min(e,1),this.bar.set("volume",e,"width");var n="".concat((100*e).toFixed(0),"%");this.template.volumeBarWrapWrap.dataset.balloon=n,t||this.user.set("volume",e),a||this.notice("".concat(this.tran("Volume")," ").concat((100*e).toFixed(0),"%")),this.video.volume=e,this.video.muted&&(this.video.muted=!1),this.switchVolumeIcon()}return this.video.volume}},{key:"toggle",value:function(){this.video.paused?this.play():this.pause()}},{key:"on",value:function(e,t){this.events.on(e,t)}},{key:"switchVideo",value:function(e,t){this.pause(),this.video.poster=e.pic?e.pic:"",this.video.src=e.url,this.initMSE(this.video,e.type||"auto"),t&&(this.template.danmakuLoading.style.display="block",this.bar.set("played",0,"width"),this.bar.set("loaded",0,"width"),this.template.ptime.innerHTML="00:00",this.template.danmaku.innerHTML="",this.danmaku&&this.danmaku.reload({id:t.id,address:t.api,token:t.token,maximum:t.maximum,addition:t.addition,user:t.user}))}},{key:"initMSE",value:function(e,t){var a=this;if(this.type=t,this.options.video.customType&&this.options.video.customType[t])"[object Function]"===Object.prototype.toString.call(this.options.video.customType[t])?this.options.video.customType[t](this.video,this):console.error("Illegal customType: ".concat(t));else switch("auto"===this.type&&(/m3u8(#|\?|$)/i.exec(e.src)?this.type="hls":/.flv(#|\?|$)/i.exec(e.src)?this.type="flv":/.mpd(#|\?|$)/i.exec(e.src)?this.type="dash":this.type="normal"),"hls"===this.type&&(e.canPlayType("application/x-mpegURL")||e.canPlayType("application/vnd.apple.mpegURL"))&&(this.type="normal"),this.type){case"hls":if(window.Hls)if(window.Hls.isSupported()){var n=this.options.pluginOptions.hls,r=new window.Hls(n);this.plugins.hls=r,r.loadSource(e.src),r.attachMedia(e),this.events.on("destroy",(function(){r.destroy(),delete a.plugins.hls}))}else this.notice("Error: Hls is not supported.");else this.notice("Error: Can't find Hls.");break;case"flv":if(window.flvjs)if(window.flvjs.isSupported()){var o=Object.assign(this.options.pluginOptions.flvjs,{type:"flv",url:e.src}),i=window.flvjs.createPlayer(o);this.plugins.flvjs=i,i.attachMediaElement(e),i.load(),this.events.on("destroy",(function(){i.unload(),i.detachMediaElement(),i.destroy(),delete a.plugins.flvjs}))}else this.notice("Error: flvjs is not supported.");else this.notice("Error: Can't find flvjs.");break;case"dash":if(window.dashjs){var l=window.dashjs.MediaPlayer().create().initialize(e,e.src,!1),s=this.options.pluginOptions.dash;l.updateSettings(s),this.plugins.dash=l,this.events.on("destroy",(function(){window.dashjs.MediaPlayer().reset(),delete a.plugins.dash}))}else this.notice("Error: Can't find dashjs.");break;case"webtorrent":if(window.WebTorrent)if(window.WebTorrent.WEBRTC_SUPPORT){this.container.classList.add("dplayer-loading");var d=this.options.pluginOptions.webtorrent,p=new window.WebTorrent(d);this.plugins.webtorrent=p;var c=e.src;e.src="",e.preload="metadata",e.addEventListener("durationchange",(function(){return a.container.classList.remove("dplayer-loading")}),{once:!0}),p.add(c,(function(e){e.files.find((function(e){return e.name.endsWith(".mp4")})).renderTo(a.video,{autoplay:a.options.autoplay})})),this.events.on("destroy",(function(){p.remove(c),p.destroy(),delete a.plugins.webtorrent}))}else this.notice("Error: Webtorrent is not supported.");else this.notice("Error: Can't find Webtorrent.")}}},{key:"initVideo",value:function(e,t){var a=this;this.initMSE(e,t),this.on("durationchange",(function(){1!==e.duration&&e.duration!==1/0&&(a.template.dtime.innerHTML=o.secondToTime(e.duration))})),this.on("progress",(function(){var t=e.buffered.length?e.buffered.end(e.buffered.length-1)/e.duration:0;a.bar.set("loaded",t,"width")})),this.on("error",(function(){a.video.error&&a.tran&&a.notice&&"webtorrent"!==a.type&&a.notice(a.tran("Video load failed"),-1)})),this.on("ended",(function(){a.bar.set("played",1,"width"),a.setting.loop?(a.seek(0),a.play()):a.pause(),a.danmaku&&(a.danmaku.danIndex=0)})),this.on("play",(function(){a.paused&&a.play(!0)})),this.on("pause",(function(){a.paused||a.pause(!0)})),this.on("timeupdate",(function(){a.bar.set("played",a.video.currentTime/a.video.duration,"width");var e=o.secondToTime(a.video.currentTime);a.template.ptime.innerHTML!==e&&(a.template.ptime.innerHTML=e)}));for(var n=function(t){e.addEventListener(a.events.videoEvents[t],(function(){a.events.trigger(a.events.videoEvents[t])}))},r=0;r1&&void 0!==arguments[1]?arguments[1]:2e3,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.8;this.template.notice.innerHTML=e,this.template.notice.style.opacity=n,this.noticeTime&&clearTimeout(this.noticeTime),this.events.trigger("notice_show",e),a>0&&(this.noticeTime=setTimeout((function(){t.template.notice.style.opacity=0,t.events.trigger("notice_hide")}),a))}},{key:"resize",value:function(){this.danmaku&&this.danmaku.resize(),this.controller.thumbnails&&this.controller.thumbnails.resize(160,this.video.videoHeight/this.video.videoWidth*160,this.template.barWrap.offsetWidth),this.events.trigger("resize")}},{key:"speed",value:function(e){this.video.playbackRate=e}},{key:"destroy",value:function(){Ce.splice(Ce.indexOf(this),1),this.pause(),this.controller.destroy(),this.timer.destroy(),this.video.src="",this.container.innerHTML="",this.events.trigger("destroy")}}])&&Me(t.prototype,a),r&&Me(t,r),e}();console.log("\n".concat(" %c DPlayer v","1.25.1"," ").concat("e3a4631"," %c http://dplayer.js.org ","\n","\n"),"color: #fadfa3; background: #030307; padding:5px 0;","background: #fadfa3; padding:5px 0;");t.default=Oe}]).default})); -//# sourceMappingURL=DPlayer.min.js.map \ No newline at end of file diff --git a/js/ace.js b/js/ace.js deleted file mode 100644 index 83f72cc..0000000 --- a/js/ace.js +++ /dev/null @@ -1,14 +0,0 @@ -(function(){function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.define.packaged)t.original=i.define,i.define=t,i.define.packaged=!0;if(!i.require||!i.require.packaged)r.original=i.require,i.require=r,i.require.packaged=!0}var ACE_NAMESPACE="",e=function(){return this}();!e&&typeof window!="undefined"&&(e=window);if(!ACE_NAMESPACE&&typeof requirejs!="undefined")return;var t=function(e,n,r){if(typeof e!="string"){t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=n),t.modules[e]||(t.payloads[e]=r,t.modules[e]=null)};t.modules={},t.payloads={};var n=function(e,t,n){if(typeof t=="string"){var i=s(e,t);if(i!=undefined)return n&&n(),i}else if(Object.prototype.toString.call(t)==="[object Array]"){var o=[];for(var u=0,a=t.length;u1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;et.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n=0?parseFloat((i.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((i.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((i.match(/rv:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isChromeOS=i.indexOf(" CrOS ")>=0,t.isIOS=/iPad|iPhone|iPod/.test(i)&&!window.MSStream,t.isIOS&&(t.isMac=!0)}),define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function a(e,t,n){var a=u(t);if(!i.isMac&&s){t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(a|=8);if(s.altGr){if((3&a)==3)return;s.altGr=0}if(n===18||n===17){var f="location"in t?t.location:t.keyLocation;if(n===17&&f===1)s[n]==1&&(o=t.timeStamp);else if(n===18&&a===3&&f===2){var l=t.timeStamp-o;l<50&&(s.altGr=!0)}}}n in r.MODIFIER_KEYS&&(n=-1),a&8&&n>=91&&n<=93&&(n=-1);if(!a&&n===13){var f="location"in t?t.location:t.keyLocation;if(f===3){e(t,a,-n);if(t.defaultPrevented)return}}if(i.isChromeOS&&a&8){e(t,a,n);if(t.defaultPrevented)return;a&=-9}return!!a||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,a,n):!1}function f(){s=Object.create(null)}var r=e("./keys"),i=e("./useragent"),s=null,o=0;t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var r=function(){n.call(e,window.event)};n._wrapper=r,e.attachEvent("on"+t,r)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return e.type=="dblclick"?0:e.type=="contextmenu"||i.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,r){function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",i,!0),t.removeListener(document,"dragstart",i,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",i,!0),t.addListener(document,"dragstart",i,!0),i},t.addTouchMoveListener=function(e,n){var r,i;t.addListener(e,"touchstart",function(e){var t=e.touches,n=t[0];r=n.clientX,i=n.clientY}),t.addListener(e,"touchmove",function(e){var t=e.touches;if(t.length>1)return;var s=t[0];e.wheelX=r-s.clientX,e.wheelY=i-s.clientY,r=s.clientX,i=s.clientY,n(e)})},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5,e.wheelY=(e.deltaY||0)*5}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)})},t.addMultiMouseDownListener=function(e,n,r,s){function c(e){t.getButton(e)!==0?o=0:e.detail>1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var c=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||c)o=1;f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),o==1&&(u=e.clientX,a=e.clientY)}e._clicks=o,r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}function h(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)}var o=0,u,a,f,l={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",c),i.isOldIE&&t.addListener(e,"dblclick",h)})};var u=!i.isMac||!i.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return r.KEY_MODS[u(e)]},t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var o=null;r(e,"keydown",function(e){o=e.keyCode}),r(e,"keypress",function(e){return a(n,e,o)})}else{var u=null;r(e,"keydown",function(e){s[e.keyCode]=(s[e.keyCode]||0)+1;var t=a(n,e,e.keyCode);return u=e.defaultPrevented,t}),r(e,"keypress",function(e){u&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),u=null)}),r(e,"keyup",function(e){s[e.keyCode]=null}),s||(f(),r(window,"focus",f))}};if(typeof window=="object"&&window.postMessage&&!i.isOldIE){var l=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+l;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;nh.length?e=e.substr(9):e.substr(0,4)==h.substr(0,4)?e=e.substr(4,e.length-h.length+1):e.charAt(e.length-1)==h.charAt(0)&&(e=e.slice(0,-1)),e!=h.charAt(0)&&e.charAt(e.length-1)==h.charAt(0)&&(e=e.slice(0,-1)),e&&t.onTextInput(e)),p&&(p=!1),L&&(L=!1)},O=function(e){if(m)return;var t=c.value;A(t),T()},M=function(e,t,n){var r=e.clipboardData||window.clipboardData;if(!r||f)return;var i=l||n?"Text":"text/plain";try{return t?r.setData(i,t)!==!1:r.getData(i)}catch(e){if(!n)return M(e,t,!0)}},_=function(e,n){var s=t.getCopyText();if(!s)return r.preventDefault(e);M(e,s)?(i.isIOS&&(d=n,c.value="\n aa"+s+"a a\n",c.setSelectionRange(4,4+s.length),p={value:s}),n?t.onCut():t.onCopy(),i.isIOS||r.preventDefault(e)):(p=!0,c.value=s,c.select(),setTimeout(function(){p=!1,T(),x(),n?t.onCut():t.onCopy()}))},D=function(e){_(e,!0)},P=function(e){_(e,!1)},H=function(e){var n=M(e);typeof n=="string"?(n&&t.onPaste(n,e),i.isIE&&setTimeout(x),r.preventDefault(e)):(c.value="",v=!0)};r.addCommandKeyListener(c,t.onCommandKey.bind(t)),r.addListener(c,"select",C),r.addListener(c,"input",O),r.addListener(c,"cut",D),r.addListener(c,"copy",P),r.addListener(c,"paste",H);var B=function(e){if(m||!t.onCompositionStart||t.$readOnly)return;m={},m.canUndo=t.session.$undoManager,t.onCompositionStart(),setTimeout(j,0),t.on("mousedown",F),m.canUndo&&!t.selection.isEmpty()&&(t.insert(""),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup()},j=function(){if(!m||!t.onCompositionUpdate||t.$readOnly)return;var e=c.value.replace(/\x01/g,"");if(m.lastValue===e)return;t.onCompositionUpdate(e),m.lastValue&&t.undo(),m.canUndo&&(m.lastValue=e);if(m.lastValue){var n=t.selection.getRange();t.insert(m.lastValue),t.session.markUndoGroup(),m.range=t.selection.getRange(),t.selection.setRange(n),t.selection.clearSelection()}},F=function(e){if(!t.onCompositionEnd||t.$readOnly)return;var n=m;m=!1;var r=setTimeout(function(){r=null;var e=c.value.replace(/\x01/g,"");if(m)return;e==n.lastValue?T():!n.lastValue&&e&&(T(),A(e))});k=function(i){return r&&clearTimeout(r),i=i.replace(/\x01/g,""),i==n.lastValue?"":(n.lastValue&&r&&t.undo(),i)},t.onCompositionEnd(),t.removeListener("mousedown",F),e.type=="compositionend"&&n.range&&t.selection.setRange(n.range);var s=!!i.isChrome&&i.isChrome>=53||!!i.isWebKit&&i.isWebKit>=603;s&&O()},I=o.delayedCall(j,50);r.addListener(c,"compositionstart",B),i.isGecko?r.addListener(c,"text",function(){I.schedule()}):(r.addListener(c,"keyup",function(){I.schedule()}),r.addListener(c,"keydown",function(){I.schedule()})),r.addListener(c,"compositionend",F),this.getElement=function(){return c},this.setReadOnly=function(e){c.readOnly=e},this.onContextMenu=function(e){L=!0,x(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,n){g||(g=c.style.cssText),c.style.cssText=(n?"z-index:100000;":"")+"height:"+c.style.height+";"+(i.isIE?"opacity:0.1;":"");var o=t.container.getBoundingClientRect(),u=s.computedStyle(t.container),a=o.top+(parseInt(u.borderTopWidth)||0),f=o.left+(parseInt(o.borderLeftWidth)||0),l=o.bottom-a-c.clientHeight-2,h=function(e){c.style.left=e.clientX-f-2+"px",c.style.top=Math.min(e.clientY-a-2,l)+"px"};h(e);if(e.type!="mousedown")return;t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(q),i.isWin&&r.capture(t.container,h,R)},this.onContextMenuClose=R;var q,U=function(e){t.textInput.onContextMenu(e),R()};r.addListener(c,"mouseup",U),r.addListener(c,"mousedown",function(e){e.preventDefault(),R()}),r.addListener(t.renderer.scroller,"contextmenu",U),r.addListener(c,"contextmenu",U);if(i.isIOS){var z=null,W=!1;e.addEventListener("keydown",function(e){z&&clearTimeout(z),W=!0}),e.addEventListener("keyup",function(e){z=setTimeout(function(){W=!1},100)});var X=function(e){if(document.activeElement!==c)return;if(W)return;if(d)return setTimeout(function(){d=!1},100);var n=c.selectionStart,r=c.selectionEnd;c.setSelectionRange(4,5);if(n==r)switch(n){case 0:t.onCommandKey(null,0,u.up);break;case 1:t.onCommandKey(null,0,u.home);break;case 2:t.onCommandKey(null,a.option,u.left);break;case 4:t.onCommandKey(null,0,u.left);break;case 5:t.onCommandKey(null,0,u.right);break;case 7:t.onCommandKey(null,a.option,u.right);break;case 8:t.onCommandKey(null,0,u.end);break;case 9:t.onCommandKey(null,0,u.down)}else{switch(r){case 6:t.onCommandKey(null,a.shift,u.right);break;case 7:t.onCommandKey(null,a.shift|a.option,u.right);break;case 8:t.onCommandKey(null,a.shift,u.end);break;case 9:t.onCommandKey(null,a.shift,u.down)}switch(n){case 0:t.onCommandKey(null,a.shift,u.up);break;case 1:t.onCommandKey(null,a.shift,u.home);break;case 2:t.onCommandKey(null,a.shift|a.option,u.left);break;case 3:t.onCommandKey(null,a.shift,u.left)}}};document.addEventListener("selectionchange",X),t.on("destroy",function(){document.removeEventListener("selectionchange",X)})}};t.TextInput=c}),define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/keyboard/textinput_ios"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("../lib/dom"),o=e("../lib/lang"),u=i.isChrome<18,a=i.isIE,f=e("./textinput_ios").TextInput,l=function(e,t){function w(e){if(p)return;p=!0;if(T)var t=0,r=e?0:n.value.length-1;else var t=e?2:1,r=2;try{n.setSelectionRange(t,r)}catch(i){}p=!1}function E(){if(p)return;n.value=l,i.isWebKit&&b.schedule()}function F(){clearTimeout(j),j=setTimeout(function(){d&&(n.style.cssText=d,d=""),t.renderer.$keepTextAreaAtCursor==null&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())},0)}if(i.isIOS)return f.call(this,e,t);var n=s.createElement("textarea");n.className="ace_text-input",n.setAttribute("wrap","off"),n.setAttribute("autocorrect","off"),n.setAttribute("autocapitalize","off"),n.setAttribute("spellcheck",!1),n.style.opacity="0",e.insertBefore(n,e.firstChild);var l="\u2028\u2028",c=!1,h=!1,p=!1,d="",v=!0;try{var m=document.activeElement===n}catch(g){}r.addListener(n,"blur",function(e){t.onBlur(e),m=!1}),r.addListener(n,"focus",function(e){m=!0,t.onFocus(e),w()}),this.focus=function(){if(d)return n.focus();var e=n.style.top;n.style.position="fixed",n.style.top="0px",n.focus(),setTimeout(function(){n.style.position="",n.style.top=="0px"&&(n.style.top=e)},0)},this.blur=function(){n.blur()},this.isFocused=function(){return m};var y=o.delayedCall(function(){m&&w(v)}),b=o.delayedCall(function(){p||(n.value=l,m&&w())});i.isWebKit||t.addEventListener("changeSelection",function(){t.selection.isEmpty()!=v&&(v=!v,y.schedule())}),E(),m&&t.onFocus();var S=function(e){return e.selectionStart===0&&e.selectionEnd===e.value.length},x=function(e){c?c=!1:S(n)?(t.selectAll(),w()):T&&w(t.selection.isEmpty())},T=null;this.setInputHandler=function(e){T=e},this.getInputHandler=function(){return T};var N=!1,C=function(e){T&&(e=T(e),T=null),h?(w(),e&&t.onPaste(e),h=!1):e==l.charAt(0)?N?t.execCommand("del",{source:"ace"}):t.execCommand("backspace",{source:"ace"}):(e.substring(0,2)==l?e=e.substr(2):e.charAt(0)==l.charAt(0)?e=e.substr(1):e.charAt(e.length-1)==l.charAt(0)&&(e=e.slice(0,-1)),e.charAt(e.length-1)==l.charAt(0)&&(e=e.slice(0,-1)),e&&t.onTextInput(e)),N&&(N=!1)},k=function(e){if(p)return;var t=n.value;C(t),E()},L=function(e,t,n){var r=e.clipboardData||window.clipboardData;if(!r||u)return;var i=a||n?"Text":"text/plain";try{return t?r.setData(i,t)!==!1:r.getData(i)}catch(e){if(!n)return L(e,t,!0)}},A=function(e,i){var s=t.getCopyText();if(!s)return r.preventDefault(e);L(e,s)?(i?t.onCut():t.onCopy(),r.preventDefault(e)):(c=!0,n.value=s,n.select(),setTimeout(function(){c=!1,E(),w(),i?t.onCut():t.onCopy()}))},O=function(e){A(e,!0)},M=function(e){A(e,!1)},_=function(e){var s=L(e);typeof s=="string"?(s&&t.onPaste(s,e),i.isIE&&setTimeout(w),r.preventDefault(e)):(n.value="",h=!0)};r.addCommandKeyListener(n,t.onCommandKey.bind(t)),r.addListener(n,"select",x),r.addListener(n,"input",k),r.addListener(n,"cut",O),r.addListener(n,"copy",M),r.addListener(n,"paste",_),(!("oncut"in n)||!("oncopy"in n)||!("onpaste"in n))&&r.addListener(e,"keydown",function(e){if(i.isMac&&!e.metaKey||!e.ctrlKey)return;switch(e.keyCode){case 67:M(e);break;case 86:_(e);break;case 88:O(e)}});var D=function(e){if(p||!t.onCompositionStart||t.$readOnly)return;p={},p.canUndo=t.session.$undoManager,t.onCompositionStart(),setTimeout(P,0),t.on("mousedown",H),p.canUndo&&!t.selection.isEmpty()&&(t.insert(""),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup()},P=function(){if(!p||!t.onCompositionUpdate||t.$readOnly)return;var e=n.value.replace(/\u2028/g,"");if(p.lastValue===e)return;t.onCompositionUpdate(e),p.lastValue&&t.undo(),p.canUndo&&(p.lastValue=e);if(p.lastValue){var r=t.selection.getRange();t.insert(p.lastValue),t.session.markUndoGroup(),p.range=t.selection.getRange(),t.selection.setRange(r),t.selection.clearSelection()}},H=function(e){if(!t.onCompositionEnd||t.$readOnly)return;var r=p;p=!1;var s=setTimeout(function(){s=null;var e=n.value.replace(/\u2028/g,"");if(p)return;e==r.lastValue?E():!r.lastValue&&e&&(E(),C(e))});T=function(n){return s&&clearTimeout(s),n=n.replace(/\u2028/g,""),n==r.lastValue?"":(r.lastValue&&s&&t.undo(),n)},t.onCompositionEnd(),t.removeListener("mousedown",H),e.type=="compositionend"&&r.range&&t.selection.setRange(r.range);var o=!!i.isChrome&&i.isChrome>=53||!!i.isWebKit&&i.isWebKit>=603;o&&k()},B=o.delayedCall(P,50);r.addListener(n,"compositionstart",D),i.isGecko?r.addListener(n,"text",function(){B.schedule()}):(r.addListener(n,"keyup",function(){B.schedule()}),r.addListener(n,"keydown",function(){B.schedule()})),r.addListener(n,"compositionend",H),this.getElement=function(){return n},this.setReadOnly=function(e){n.readOnly=e},this.onContextMenu=function(e){N=!0,w(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,o){d||(d=n.style.cssText),n.style.cssText=(o?"z-index:100000;":"")+"height:"+n.style.height+";"+(i.isIE?"opacity:0.1;":"");var u=t.container.getBoundingClientRect(),a=s.computedStyle(t.container),f=u.top+(parseInt(a.borderTopWidth)||0),l=u.left+(parseInt(u.borderLeftWidth)||0),c=u.bottom-f-n.clientHeight-2,h=function(e){n.style.left=e.clientX-l-2+"px",n.style.top=Math.min(e.clientY-f-2,c)+"px"};h(e);if(e.type!="mousedown")return;t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(j),i.isWin&&r.capture(t.container,h,F)},this.onContextMenuClose=F;var j,I=function(e){t.textInput.onContextMenu(e),F()};r.addListener(n,"mouseup",I),r.addListener(n,"mousedown",function(e){e.preventDefault(),F()}),r.addListener(t.renderer.scroller,"contextmenu",I),r.addListener(n,"contextmenu",I)};t.TextInput=l}),define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function a(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),t.setDefaultHandler("touchmove",this.onTouchMove.bind(e));var n=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];n.forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function f(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}function l(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row==e.end.row-1&&!e.start.column&&!e.end.column)var n=t.column-4;else var n=2*t.row-e.start.row-e.end.row;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=0,u=250;(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var r=this.editor,i=e.getButton();if(i!==0){var o=r.getSelectionRange(),u=o.isEmpty();r.$blockScrolling++,(u||i==1)&&r.selection.moveToPosition(n),r.$blockScrolling--,i==2&&(r.textInput.onContextMenu(e.domEvent),s.isMozilla||e.preventDefault());return}this.mousedownEvent.time=Date.now();if(t&&!r.isFocused()){r.focus();if(this.$focusTimout&&!this.$clickSelection&&!r.inMultiSelectMode){this.setState("focusWait"),this.captureMouse(e);return}}return this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;n.$blockScrolling++,this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select"),n.$blockScrolling--},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);t.$blockScrolling++;if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=l(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);n.$blockScrolling++;if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=l(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.$blockScrolling--,n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=f(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>o||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var n=this.$lastScroll,r=e.domEvent.timeStamp,i=r-n.t,s=e.wheelX/i,o=e.wheelY/i;i=1&&t.renderer.isScrollableBy(e.wheelX*e.speed,0)&&(f=!0),a<=1&&t.renderer.isScrollableBy(0,e.wheelY*e.speed)&&(f=!0);if(f)n.allowed=r;else if(r-n.allowedt.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("
    "),i.setHtml(f),i.show(),t._signal("showGutterTooltip",i),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=u.domEvent.target,d=p.getBoundingClientRect(),v=i.getElement().style;v.left=d.right+"px",v.top=d.bottom+"px"}}function c(){o&&(o=clearTimeout(o)),f&&(i.hide(),f=null,t._signal("hideGutterTooltip",i),t.removeEventListener("mousewheel",c))}function h(e){i.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,i=new a(t.container);e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var o,u,f;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();f&&e.$tooltipFollowsMouse&&h(t),u=t;if(o)return;o=setTimeout(function(){o=null,u&&!e.isMousePressed?l():c()},50)}),s.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!f||o)return;o=setTimeout(function(){o=null,c()},50)}),t.on("changeSession",c)}function a(e){o.call(this,e)}var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;i.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=u}),define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),C(),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(m),t.$blockScrolling-=1,t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=null,g=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n.scrollTop=0),i.setDragImage&&i.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||(k(),y++),A!==null&&(A=null),e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!g)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e)),i.addListener(c,"dragend",this.onDragEnd.bind(e)),i.addListener(c,"dragenter",this.onDragEnter.bind(e)),i.addListener(c,"dragover",this.onDragOver.bind(e)),i.addListener(c,"dragleave",this.onDragLeave.bind(e)),i.addListener(c,"drop",this.onDrop.bind(e));var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var n=s.isWin?"default":"move";e.renderer.setCursorStyle(n),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=r.getDocumentHead(),i=document.createElement("script");i.src=e,n.appendChild(i),i.onload=i.onreadystatechange=function(e,n){if(n||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")i=i.onload=i.onreadystatechange=null,n||t()}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o1&&(i=n[n.length-2]);var o=a[t+"Path"];return o==null?o=a.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a)},t.init=f}),define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,u=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,f=e("../config"),l=function(e){var t=this;this.editor=e,new s(this),new o(this),new a(this);var n=function(t){var n=!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement());n&&window.focus(),e.focus()},u=e.renderer.getMouseEventTarget();r.addListener(u,"click",this.onMouseEvent.bind(this,"click")),r.addListener(u,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener([u,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),r.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var f=e.renderer.$gutter;r.addListener(f,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(f,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(f,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(f,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(u,"mousedown",n),r.addListener(f,"mousedown",n),i.isIE&&e.renderer.scrollBarV&&(r.addListener(e.renderer.scrollBarV.element,"mousedown",n),r.addListener(e.renderer.scrollBarH.element,"mousedown",n)),e.on("mousemove",function(n){if(t.state||t.$dragDelay||!t.$dragEnabled)return;var r=e.renderer.screenToTextCoordinates(n.x,n.y),i=e.session.selection.getRange(),s=e.renderer;!i.isEmpty()&&i.insideStart(r.row,r.column)?s.setCursorStyle("default"):s.setCursorStyle("")})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.onTouchMove=function(e,t){var n=new u(t,this.editor);n.speed=1,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var s=this,o=function(e){if(!e)return;if(i.isWebKit&&!e.which&&s.releaseMouse)return s.releaseMouse();s.x=e.clientX,s.y=e.clientY,t&&t(e),s.mouseEvent=new u(e,s.editor),s.$mouseMoved=!0},a=function(e){clearInterval(l),f(),s[s.state+"End"]&&s[s.state+"End"](e),s.state="",n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,e&&s.onMouseEvent("mouseup",e)},f=function(){s[s.state]&&s[s.state](),s.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){a(e)});s.$onCaptureMouseMove=o,s.releaseMouse=r.capture(this.editor.container,o,a);var l=setInterval(f,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){if(t&&t.domEvent&&t.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",e),t&&t.domEvent&&r.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:i.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){"use strict";function r(e){e.on("click",function(t){var n=t.getDocumentPosition(),r=e.session,i=r.getFoldAt(n.row,n.column,1);i&&(t.getAccelKey()?r.removeFold(i):r.expandFold(i),t.stop())}),e.on("gutterclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.getParentFoldRangeData(r,!0),o=s.range||s.firstRange;if(o){r=o.start.row;var u=i.getFoldAt(r,i.getLine(r).length,1);u?i.removeFold(u):(i.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}t.FoldHandler=r}),define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]==e)return;while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;typeof e=="function"&&!e.handleKeyboard&&(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command=="null"?o=!0:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&s.passEvent!=1&&s.command.passEvent!=1&&i.stopEvent(r);if(o)break}return!o&&e==-1&&(s={command:"insertstring"},o=u.exec("insertstring",this.$editor,t)),o&&this.$editor._signal&&this.$editor._signal("keyboardActivity",s),o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(s.prototype),t.KeyBinding=s}),define("ace/lib/bidiutil",["require","exports","module"],function(e,t,n){"use strict";function F(e,t,n,r){var i=s?d:p,c=null,h=null,v=null,m=0,g=null,y=null,b=-1,w=null,E=null,T=[];if(!r)for(w=0,r=[];w0)if(g==16){for(w=b;w-1){for(w=b;w=0;C--){if(r[C]!=N)break;t[C]=s}}}function I(e,t,n){if(o=e){u=i+1;while(u=e)u++;for(a=i,l=u-1;a=t.length||(o=n[r-1])!=b&&o!=w||(c=t[r+1])!=b&&c!=w)return E;return u&&(c=w),c==o?c:E;case k:o=r>0?n[r-1]:S;if(o==b&&r+10&&n[r-1]==b)return b;if(u)return E;p=r+1,h=t.length;while(p=1425&&d<=2303||d==64286;o=t[p];if(v&&(o==y||o==T))return y}if(r<1||(o=t[r-1])==S)return E;return n[r-1];case S:return u=!1,f=!0,s;case x:return l=!0,E;case O:case M:case D:case P:case _:u=!1;case H:return E}}function R(e){var t=e.charCodeAt(0),n=t>>8;return n==0?t>191?g:B[t]:n==5?/[\u0591-\u05f4]/.test(e)?y:g:n==6?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(e)?A:/[\u0660-\u0669\u066b-\u066c]/.test(e)?w:t==1642?L:/[\u06f0-\u06f9]/.test(e)?b:T:n==32&&t<=8287?j[t&255]:n==254?t>=65136?T:E:E}function U(e){return e>="\u064b"&&e<="\u0655"}var r=["\u0621","\u0641"],i=["\u063a","\u064a"],s=0,o=0,u=!1,a=!1,f=!1,l=!1,c=!1,h=!1,p=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,17,2,0,1],[0,3,5,5,4,1,0],[0,3,21,21,4,0,1],[0,3,5,5,4,2,0]],d=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,33,3,1,1]],v=0,m=1,g=0,y=1,b=2,w=3,E=4,S=5,x=6,T=7,N=8,C=9,k=10,L=11,A=12,O=13,M=14,_=15,D=16,P=17,H=18,B=[H,H,H,H,H,H,H,H,H,x,S,x,N,S,H,H,H,H,H,H,H,H,H,H,H,H,H,H,S,S,S,x,N,E,E,L,L,L,E,E,E,E,E,k,C,k,C,C,b,b,b,b,b,b,b,b,b,b,C,E,E,E,E,E,E,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,E,E,E,E,E,E,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,E,E,E,E,H,H,H,H,H,H,S,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,C,E,L,L,L,L,E,E,E,E,g,E,E,H,E,E,L,L,b,b,E,g,E,E,E,b,g,E,E,E,E,E],j=[N,N,N,N,N,N,N,N,N,N,N,H,H,H,g,y,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,N,S,O,M,_,D,P,C,L,L,L,L,L,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,C,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,N];t.L=g,t.R=y,t.EN=b,t.ON_R=3,t.AN=4,t.R_H=5,t.B=6,t.DOT="\u00b7",t.doBidiReorder=function(e,n,r){if(e.length<2)return{};var i=e.split(""),o=new Array(i.length),u=new Array(i.length),a=[];s=r?m:v,F(i,a,i.length,n);for(var f=0;fT&&n[f]0&&i[f-1]==="\u0644"&&/\u0622|\u0623|\u0625|\u0627/.test(i[f])&&(a[f-1]=a[f]=t.R_H,f++);i[i.length-1]===t.DOT&&(a[i.length-1]=t.B);for(var f=0;f=0&&(e=this.session.$docRowCache[n])}return e},this.getSplitIndex=function(){var e=0,t=this.session.$screenRowCache;if(t.length){var n,r=this.session.$getRowCacheIndex(t,this.currentRow);while(this.currentRow-e>0){n=this.session.$getRowCacheIndex(t,this.currentRow-e-1);if(n!==r)break;r=n,e++}}return e},this.updateRowLine=function(e,t){e===undefined&&(e=this.getDocumentRow()),this.wrapIndent=0,this.isLastRow=e===this.session.getLength()-1,this.line=this.session.getLine(e);if(this.session.$useWrapMode){var n=this.session.$wrapData[e];n&&(t===undefined&&(t=this.getSplitIndex()),t>0&&n.length?(this.wrapIndent=n.indent,this.line=t0?e-1:0,this.bidiMap),n=this.bidiMap.bidiLevels,i=0;e===0&&n[t]%2!==0&&t++;for(var s=0;s=a&&pn+o/2){n+=o;if(i===s.length-1){o=0;break}o=this.charWidths[s[++i]]}return i>0&&s[i-1]%2!==0&&s[i]%2===0?(e0&&s[i-1]%2===0&&s[i]%2!==0?t=1+(e>n?this.bidiMap.logicalFromVisual[i]:this.bidiMap.logicalFromVisual[i-1]):this.isRtlDir&&i===s.length-1&&o===0&&s[i-1]%2===0||!this.isRtlDir&&i===0&&s[i]%2!==0?t=1+this.bidiMap.logicalFromVisual[i]:(i>0&&s[i-1]%2!==0&&o!==0&&i--,t=this.bidiMap.logicalFromVisual[i]),t+this.wrapIndent}}).call(u.prototype),t.BidiHandler=u}),define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.wouldMoveIntoSoftTab=function(e,t,n){var r=e.column,i=e.column+t;return n<0&&(r=e.column-t,i=e.column),this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(r,i).split(" ").length-1==t},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column===0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.wouldMoveIntoSoftTab(e,n,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=this.session.nonTokenRe.exec(r))t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t);if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e0&&this.moveCursorWordLeft();return}if(o=this.session.tokenRe.exec(s))t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column),r;t===0&&(e!==0&&(this.session.$bidiHandler.isBidiRow(n.row,this.lead.row)?(r=this.session.$bidiHandler.getPosLeft(n.column),n.column=Math.round(r/this.session.$bidiHandler.charWidths[0])):r=n.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var i=this.session.screenToDocumentPosition(n.row+e,n.column,r);e!==0&&t===0&&i.row===this.lead.row&&i.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[i.row]&&(i.row>0||e>0)&&i.row++,this.moveCursorTo(i.row,i.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0;var i=this.session.getLine(e);/[\uDC00-\uDFFF]/.test(i.charAt(t))&&i.charAt(t-1)&&(this.lead.row==e&&this.lead.column==t+1?t-=1:t+=1),this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(e.start==undefined){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(u.prototype),t.Selection=u}),define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var r=e("./config"),i=2e3,s=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a1?f.onMatch=this.$applyToken:f.onMatch=f.token),c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null)}r.length||(s[0]=0,r.push("$")),u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){i=e|0},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;il){var g=e.substring(l,m-v.length);h.type==p?h.value+=g:(h.type&&f.push(h),h={type:p,value:g})}for(var y=0;yi){c>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});while(l1&&n[0]!==r&&n.unshift("#tmp",r),{tokens:f,state:n.length?n:r}},this.reportError=r.reportError}).call(s.prototype),t.Tokenizer=s}),define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang"),i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},this.getCurrentTokenRange=function(){var e=this.$rowTokens[this.$tokenIndex],t=this.getCurrentTokenColumn();return new r(this.$row,t,this.$row,t+e.value.length)}}).call(i.prototype),t.TokenIterator=i}),define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c={'"':'"',"'":"'"},h=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},p=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},d=function(e){this.add("braces","insertion",function(t,n,r,i,s){var u=r.getCursorPosition(),a=i.doc.getLine(u.row);if(s=="{"){h(r);var l=r.getSelectionRange(),c=i.doc.getTextRange(l);if(c!==""&&c!=="{"&&r.getWrapBehavioursEnabled())return p(l,c,"{","}");if(d.isSaneInsertion(r,i))return/[\]\}\)]/.test(a[u.column])||r.inMultiSelectMode||e&&e.braces?(d.recordAutoInsert(r,i,"}"),{text:"{}",selection:[1,1]}):(d.recordMaybeInsert(r,i,"{"),{text:"{",selection:[1,1]})}else if(s=="}"){h(r);var v=a.substring(u.column,u.column+1);if(v=="}"){var m=i.$findOpeningBracket("}",{column:u.column+1,row:u.row});if(m!==null&&d.isAutoInsertedClosing(u,a,s))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(s=="\n"||s=="\r\n"){h(r);var g="";d.isMaybeInsertedClosing(u,a)&&(g=o.stringRepeat("}",f.maybeInsertedBrackets),d.clearMaybeInsertedClosing());var v=a.substring(u.column,u.column+1);if(v==="}"){var y=i.findMatchingBracket({row:u.row,column:u.column+1},"}");if(!y)return null;var b=this.$getIndent(i.getLine(y.row))}else{if(!g){d.clearMaybeInsertedClosing();return}var b=this.$getIndent(a)}var w=b+i.getTabString();return{text:"\n"+w+"\n"+b+g,selection:[1,w.length,1,w.length]}}d.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){h(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return p(s,o,"(",")");if(d.isSaneInsertion(n,r))return d.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){h(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&d.isAutoInsertedClosing(u,a,i))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){h(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return p(s,o,"[","]");if(d.isSaneInsertion(n,r))return d.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){h(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&d.isAutoInsertedClosing(u,a,i))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){var s=r.$mode.$quotes||c;if(i.length==1&&s[i]){if(this.lineCommentStart&&this.lineCommentStart.indexOf(i)!=-1)return;h(n);var o=i,u=n.getSelectionRange(),a=r.doc.getTextRange(u);if(a!==""&&(a.length!=1||!s[a])&&n.getWrapBehavioursEnabled())return p(u,a,o,o);if(!a){var f=n.getCursorPosition(),l=r.doc.getLine(f.row),d=l.substring(f.column-1,f.column),v=l.substring(f.column,f.column+1),m=r.getTokenAt(f.row,f.column),g=r.getTokenAt(f.row,f.column+1);if(d=="\\"&&m&&/escape/.test(m.type))return null;var y=m&&/string|escape/.test(m.type),b=!g||/string|escape/.test(g.type),w;if(v==o)w=y!==b,w&&/string\.end/.test(g.type)&&(w=!1);else{if(y&&!b)return null;if(y&&b)return null;var E=r.$mode.tokenRe;E.lastIndex=0;var S=E.test(d);E.lastIndex=0;var x=E.test(d);if(S||x)return null;if(v&&!/[\s;,.})\]\\]/.test(v))return null;w=!0}return{text:w?o+o:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};d.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},d.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},d.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},d.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},d.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},d.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},d.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},d.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(d,i),t.CstyleBehaviour=d}),define("ace/unicode",["require","exports","module"],function(e,t,n){"use strict";function r(e){var n=/\w{4}/g;for(var r in e)t.packages[r]=e[r].replace(n,"\\u$&")}t.packages={},r({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"})}),define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,n){"use strict";var r=e("../tokenizer").Tokenizer,i=e("./text_highlight_rules").TextHighlightRules,s=e("./behaviour/cstyle").CstyleBehaviour,o=e("../unicode"),u=e("../lib/lang"),a=e("../token_iterator").TokenIterator,f=e("../range").Range,l=function(){this.HighlightRules=i};(function(){this.$defaultBehaviour=new s,this.tokenRe=new RegExp("^["+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig),this.$tokenizer=new r(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,n,r){function w(e){for(var t=n;t<=r;t++)e(i.getLine(t),t)}var i=t.doc,s=!0,o=!0,a=Infinity,f=t.getTabSize(),l=!1;if(!this.lineCommentStart){if(!this.blockComment)return!1;var c=this.blockComment.start,h=this.blockComment.end,p=new RegExp("^(\\s*)(?:"+u.escapeRegExp(c)+")"),d=new RegExp("(?:"+u.escapeRegExp(h)+")\\s*$"),v=function(e,t){if(g(e,t))return;if(!s||/\S/.test(e))i.insertInLine({row:t,column:e.length},h),i.insertInLine({row:t,column:a},c)},m=function(e,t){var n;(n=e.match(d))&&i.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(p))&&i.removeInLine(t,n[1].length,n[0].length)},g=function(e,n){if(p.test(e))return!0;var r=t.getTokens(n);for(var i=0;i2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(ne.length&&(E=e.length)}),a==Infinity&&(a=E,s=!1,o=!1),l&&a%f!=0&&(a=Math.floor(a/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new a(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,l=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new f(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new a(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new f(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);l.start.row==c&&(l.start.column+=h),l.end.row==c&&(l.end.column+=h),t.selection.fromOrientedRange(l)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var n=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;t=0&&t.row=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.columnthis.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e0,r=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,r==-1&&(r=t),s<=r&&n.fireUpdateEvent(s,r)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.lines[t]=null;else if(e.action=="remove")this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.lines.splice.apply(this.lines,r),this.states.splice.apply(this.states,r)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.rowr)break;l.start.row==r&&l.start.column>=t.column&&(l.start.column!=t.column||!this.$insertRight)&&(l.start.column+=o,l.start.row+=s);if(l.end.row==r&&l.end.column>=t.column){if(l.end.column==t.column&&this.$insertRight)continue;l.end.column==t.column&&o>0&&al.start.column&&l.end.column==u[a+1].start.column&&(l.end.column-=o),l.end.column+=o,l.end.row+=s}}if(s!=0&&a=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=t){u=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRangeList(n);if(t)this.removeFolds(i);else{var s=i;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row),i==null&&(i=0),t==null&&(t=e.end.row),n==null&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(tl)break}while(s&&a.test(s.type));s=i.stepBackward()}else s=i.getCurrentToken();return f.end.row=i.getCurrentTokenRow(),f.end.column=i.getCurrentTokenColumn()+s.value.length-2,f}},this.foldAll=function(e,t,n){n==undefined&&(n=1e5);var r=this.foldWidgets;if(!r)return;t=t||this.getLength(),e=e||0;for(var i=e;i=e){i=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(u){}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==e)return;this.$foldStyle=e,e=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation");if(!e||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var r=e-1,i;while(r>=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s)return t.children||t.all?this.removeFold(s):this.expandFold(s),s;var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range))return this.removeFold(s),s}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,f,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.foldWidgets[t]=null;else if(e.action=="remove")this.foldWidgets.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,r)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,u),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.setNavigateWithinSoftTabs=function(e){this.setOption("navigateWithinSoftTabs",e)},this.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(oe&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;ao){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;re.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,f=s.start,o=f.row-a.row,u=f.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.doc.insertInLine({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new l(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new l(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode")},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=null;this.$updating=!0;if(u!=0)if(n==="remove"){this[t?"$wrapData":"$rowLengthCache"].splice(s,u);var f=this.$foldData;a=this.getFoldsInRange(e),this.removeFolds(a);var l=this.getFoldLine(i.row),c=0;if(l){l.addRemoveChars(i.row,i.column,r.column-i.column),l.shiftRow(-u);var h=this.getFoldLine(s);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=i.row&&l.shiftRow(-u)}o=s}else{var p=Array(u);p.unshift(s,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(s),c=0;if(l){var v=l.range.compareInside(r.row,r.column);v==0?(l=l.split(r.row,r.column),l&&(l.shiftRow(u),l.addRemoveChars(o,0,i.column-r.column))):v==-1&&(l.addRemoveChars(s,0,i.column-r.column),l.shiftRow(u)),c=f.indexOf(l)+1}for(c;c=s&&l.shiftRow(u)}}else{u=Math.abs(e.start.column-e.end.column),n==="remove"&&(a=this.getFoldsInRange(e),this.removeFolds(a),u=-u);var l=this.getFoldLine(s);l&&l.addRemoveChars(s,r.column,u)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(s,o):this.$updateRowLengthCache(s,o),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var r=this.doc.getAllLines(),i=this.getTabSize(),o=this.$wrapData,u=this.$wrapLimit,a,f,l=e;t=Math.min(t,r.length-1);while(l<=t)f=this.getFoldLine(l,f),f?(a=[],f.walk(function(e,t,i,o){var u;if(e!=null){u=this.$getDisplayTokens(e,a.length),u[0]=n;for(var f=1;fr-b){var w=f+r-b;if(e[w-1]>=c&&e[w]>=c){y(w);continue}if(e[w]==n||e[w]==s){for(w;w!=f-1;w--)if(e[w]==n)break;if(w>f){y(w);continue}w=f+r;for(w;w>2)),f-1);while(w>E&&e[w]E&&e[w]E&&e[w]==a)w--}else while(w>E&&e[w]E){y(++w);continue}w=f+r,e[w]==t&&w--,y(w-b)}return o},this.$getDisplayTokens=function(n,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(a):u>=4352&&m(u)?i.push(e,t):i.push(e)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i=4352&&m(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0)var u=f[l],i=this.$docRowCache[l],h=e>f[c-1];else var h=!c;var p=this.getLength()-1,d=this.getNextFoldLine(i),v=d?d.start.row:Infinity;while(u<=e){a=this.getRowLength(i);if(u+a>e||i>=p)break;u+=a,i++,i>v&&(i=d.end.row+1,d=this.getNextFoldLine(i,d),v=d?d.start.row:Infinity),h&&(this.$docRowCache.push(i),this.$screenRowCache.push(u))}if(d&&d.start.row<=i)r=this.getFoldDisplayLine(d),i=d.start.row;else{if(u+a<=e||i>p)return{row:p,column:this.getLine(p).length};r=this.getLine(i),d=null}var m=0,g=Math.floor(e-u);if(this.$useWrapMode){var y=this.$wrapData[i];y&&(o=y[g],g>0&&y.length&&(m=y.indent,s=y[g-1]||y[y.length-1],r=r.substring(s)))}return n!==undefined&&this.$bidiHandler.isBidiRow(u+g,i,g)&&(t=this.$bidiHandler.offsetToCol(n)),s+=this.$getStringScreenWidth(r,t-m)[1],this.$useWrapMode&&s>=o&&(s=o-1),d?d.idxToPosition(s):{row:i,column:s}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);var v=0;if(this.$useWrapMode){var m=this.$wrapData[i];if(m){var g=0;while(d.length>=m[g])r++,g++;d=d.substring(m[g-1]||0,d.length),v=g>0?m.indent:0}}return{row:r,column:v+this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},this.$setFontMetrics=function(e){if(!this.$enableVarChar)return;this.$getStringScreenWidth=function(t,n,r){if(n===0)return[0,0];n||(n=Infinity),r=r||0;var i,s;for(s=0;sn)break}return[r,s]}},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()},this.isFullWidth=m}.call(d.prototype),e("./edit_session/folding").Folding.call(d.prototype),e("./edit_session/bracket_match").BracketMatch.call(d.prototype),o.defineOptions(d.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;this.$wrap=e;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize")},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=d}),define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";function u(e,t){function n(e){return/\w/.test(e)||t.regExp?"\\b":""}return n(e[0])+e+n(e[e.length-1])}var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var r=null;return n.forEach(function(e,n,i,o){return r=new s(e,n,i,o),n==o&&t.start&&t.start.start&&t.skipCurrent!=0&&r.isEqual(t.start)?(r=null,!1):!0}),r},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;hv)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g=0;gE&&o[h].end.row==n.end.row)h--;o=o.slice(g,h+1);for(g=0,h=o.length;g=u;n--)if(c(n,Number.MAX_VALUE,e))return;if(t.wrap==0)return;for(n=a,u=o.row;n>=u;n--)if(c(n,Number.MAX_VALUE,e))return};else var f=function(e){var n=o.row;if(c(n,o.column,e))return;for(n+=1;n<=a;n++)if(c(n,0,e))return;if(t.wrap==0)return;for(n=u,a=o.row;n<=a;n++)if(c(n,0,e))return};if(t.$isMultiLine)var l=n.length,c=function(t,i,s){var o=r?t-l+1:t;if(o<0)return;var u=e.getLine(o),a=u.search(n[0]);if(!r&&ai)return;if(s(o,a,o+l-1,c))return!0};else if(r)var c=function(t,r,i){var s=e.getLine(t),o=[],u,a=0;n.lastIndex=0;while(u=n.exec(s)){var f=u[0].length;a=u.index;if(!f){if(a>=s.length)break;n.lastIndex=a+=1}if(u.index+f>r)break;o.push(u.index,f)}for(var l=o.length-1;l>=0;l-=2){var c=o[l-1],f=o[l];if(i(t,c,t,c+f))return!0}};else var c=function(t,r,i){var s=e.getLine(t),o,u=r;n.lastIndex=r;while(o=n.exec(s)){var a=o[0].length;u=o.index;if(i(t,u,t,u+a))return!0;if(!a){n.lastIndex=u+=1;if(u>=s.length)return!1}}};return{forEach:f}}}).call(o.prototype),t.Search=o}),define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function u(e,t){o.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),i=e("../lib/useragent"),s=r.KEY_MODS;u.prototype=o.prototype,function(){function e(e){return typeof e=="object"&&e.bindKey&&e.bindKey.position||(e.isDefault?-100:0)}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&(typeof e=="string"?e:e.name);e=this.commands[n],t||delete this.commands[n];var r=this.commandKeyBinding;for(var i in r){var s=r[i];if(s==e)delete r[i];else if(Array.isArray(s)){var o=s.indexOf(e);o!=-1&&(s.splice(o,1),s.length==1&&(r[i]=s[0]))}}},this.bindKey=function(e,t,n){typeof e=="object"&&e&&(n==undefined&&(n=e.position),e=e[this.platform]);if(!e)return;if(typeof t=="function")return this.addCommand({exec:t,bindKey:e,name:t.name||e});e.split("|").forEach(function(e){var r="";if(e.indexOf(" ")!=-1){var i=e.split(/\s+/);e=i.pop(),i.forEach(function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;r+=(r?" ":"")+n,this._addCommandToBinding(r,"chainKeys")},this),r+=" "}var o=this.parseKeys(e),u=s[o.hashId]+o.key;this._addCommandToBinding(r+u,t,n)},this)},this._addCommandToBinding=function(t,n,r){var i=this.commandKeyBinding,s;if(!n)delete i[t];else if(!i[t]||this.$singleCommand)i[t]=n;else{Array.isArray(i[t])?(s=i[t].indexOf(n))!=-1&&i[t].splice(s,1):i[t]=[i[t]],typeof r!="number"&&(r=e(n));var o=i[t];for(s=0;sr)break}o.splice(s,0,n)}},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=s[t]+n;return this.commandKeyBinding[r]},this.handleKeyboard=function(e,t,n,r){if(r<0)return;var i=s[t]+n,o=this.commandKeyBinding[i];e.$keyChain&&(e.$keyChain+=" "+i,o=this.commandKeyBinding[e.$keyChain]||o);if(o)if(o=="chainKeys"||o[o.length-1]=="chainKeys")return e.$keyChain=e.$keyChain||i,{command:"null"};if(e.$keyChain)if(!!t&&t!=4||n.length!=1){if(t==-1||r>0)e.$keyChain=""}else e.$keyChain=e.$keyChain.slice(0,-i.length-1);return{command:o}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=u}),define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../keyboard/hash_handler").MultiHashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){i.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){if(Array.isArray(e)){for(var r=e.length;r--;)if(this.exec(e[r],t,n))return!0;return!1}typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;if(e.isAvailable&&!e.isAvailable(t))return!1;var i={editor:t,command:e,args:n};return i.returnValue=this._emit("exec",i),this._signal("afterExec",i),i.returnValue===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","F4"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Shift-F4"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:o("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:o("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:o("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:o("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:o("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:o("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:o("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:o("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:o("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:o("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:o("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",bindKey:o("Ctrl-Shift-Backspace",null),exec:function(e){var t=e.selection.getRange();t.start.column=0,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",bindKey:o("Ctrl-Shift-Delete",null),exec:function(e){var t=e.selection.getRange();t.end.column=Number.MAX_VALUE,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:o("Alt-Shift-X","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o0&&this.$blockScrolling--;var n=t&&t.scrollIntoView;if(n){switch(n){case"center-animate":n="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var r=this.selection.getRange(),i=this.renderer.layerConfig;(r.start.row>=i.lastRow||r.end.row<=i.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}n=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},this.setKeyboardHandler=function(e,t){if(e&&typeof e=="string"){this.$keybindingId=e;var n=this;g.loadModule(["keybinding",e],function(r){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(r&&r.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this}),e&&e.bgTokenizer&&e.bgTokenizer.scheduleStart()},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=t.findMatchingBracket(e.getCursorPosition());if(n)var r=new p(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)var r=t.$mode.getMatching(e.session);r&&(t.$bracketHighlight=t.addMarker(r,"ace_bracket","text"))},50)},this.$highlightTags=function(){if(this.$highlightTagPending)return;var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=e.getCursorPosition(),r=new y(e.session,n.row,n.column),i=r.getCurrentToken();if(!i||!/\b(?:tag-open|tag-name)/.test(i.type)){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}if(i.type.indexOf("tag-open")!=-1){i=r.stepForward();if(!i)return}var s=i.value,o=0,u=r.stepBackward();if(u.value=="<"){do u=i,i=r.stepForward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="=0)}else{do i=u,u=r.stepBackward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="1)&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var n={text:e,event:t};this.commands.exec("paste",this,n)},this.$handlePaste=function(e){typeof e=="string"&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var n=t.split(/\r\n|\r|\n/),r=this.selection.rangeList.ranges;if(n.length>r.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,t);for(var i=r.length;i--;){var s=r[i];s.isEmpty()||this.session.remove(s),this.session.insert(s.start,n[i])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,r=n.getMode(),i=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var s=r.transformAction(n.getState(i.row),"insertion",this,n,e);s&&(e!==s.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=s.text)}e==" "&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var o=this.getSelectionRange();i=this.session.remove(o),this.clearSelection()}else if(this.session.getOverwrite()&&e.indexOf("\n")==-1){var o=new p.fromPoints(i,i);o.end.column+=e.length,this.session.remove(o)}if(e=="\n"||e=="\r\n"){var u=n.getLine(i.row);if(i.column>u.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e),h=n.insert(i,e);s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new p(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new p(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(n.getDocument().isNewLine(e)){var d=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},d)}c&&r.autoOutdent(l,n,i.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;tt.toLowerCase()?1:0});var i=new p(0,0,0,0);for(var r=e.first;r<=e.last;r++){var s=t.getLine(r);i.start.row=r,i.end.row=r,i.end.column=s.length,t.replace(i,n[r-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&np+1)break;p=d.last}l--,u=this.session.$moveLines(h,p,t?0:e),t&&e==-1&&(c=l+1);while(c<=l)o[c].moveBy(u,0),c++;t||(u=0),a+=u}i.fromOrientedRange(i.ranges[0]),i.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),r=new y(this.session,n.row,n.column),i=r.getCurrentToken(),s=i||r.stepForward();if(!s)return;var o,u=!1,a={},f=n.column-s.start,l,c={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g))for(;f=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(!e)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.topwindow.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e)return;delete this.setAutoScrollEditorIntoView,this.off("changeSelection",s),this.renderer.off("afterRender",u),this.renderer.off("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",i.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))}}.call(b.prototype),g.defineOptions(b.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=b}),define("ace/undomanager",["require","exports","module"],function(e,t,n){"use strict";var r=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines.length==1?null:e.lines,text:e.lines.length==1?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function n(e,t){var n=new Array(e.length);for(var r=0;r0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return this.dirtyCounter===0},this.$serializeDeltas=function(t){return n(t,e)},this.$deserializeDeltas=function(e){return n(e,t)}}).call(r.prototype),t.UndoManager=r}),define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;to&&(v=s.end.row+1,s=t.getNextFoldLine(v,s),o=s?s.start.row:Infinity);if(v>i){while(this.$cells.length>d+1)p=this.$cells.pop(),this.element.removeChild(p.element);break}p=this.$cells[++d],p||(p={element:null,textNode:null,foldWidget:null},p.element=r.createElement("div"),p.textNode=document.createTextNode(""),p.element.appendChild(p.textNode),this.element.appendChild(p.element),this.$cells[d]=p);var m="ace_gutter-cell ";a[v]&&(m+=a[v]),f[v]&&(m+=f[v]),this.$annotations[v]&&(m+=this.$annotations[v].className),p.element.className!=m&&(p.element.className=m);var g=t.getRowLength(v)*e.lineHeight+"px";g!=p.element.style.height&&(p.element.style.height=g);if(u){var y=u[v];y==null&&(y=u[v]=t.getFoldWidget(v))}if(y){p.foldWidget||(p.foldWidget=r.createElement("span"),p.element.appendChild(p.foldWidget));var m="ace_fold-widget ace_"+y;y=="start"&&v==o&&vn.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,n,r){return(e?1:0)|(t?2:0)|(n?4:0)|(r?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){if(!e)return;this.config=e;var t=[];for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var i=r.range.clipRows(e.firstRow,e.lastRow);if(i.isEmpty())continue;i=i.toScreenRange(this.session);if(r.renderer){var s=this.$getTop(i.start.row,e),o=this.$padding+(this.session.$bidiHandler.isBidiRow(i.start.row)?this.session.$bidiHandler.getPosLeft(i.start.column):i.start.column*e.characterWidth);r.renderer(t,i,o,s,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,i,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,i,r.clazz,e):i.isMultiLine()?r.type=="text"?this.drawTextMarker(t,i,r.clazz,e):this.drawMultiLineMarker(t,i,r.clazz,e):this.session.$bidiHandler.isBidiRow(i.start.row)?this.drawBidiSingleLineMarker(t,i,r.clazz+" ace_start"+" ace_br15",e):this.drawSingleLineMarker(t,i,r.clazz+" ace_start"+" ace_br15",e)}this.element.innerHTML=t.join("")},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,n,i,s,o){var u=this.session,a=n.start.row,f=n.end.row,l=a,c=0,h=0,p=u.getScreenLastRowColumn(l),d=null,v=new r(l,n.start.column,l,h);for(;l<=f;l++)v.start.row=v.end.row=l,v.start.column=l==a?n.start.column:u.getRowWrapIndent(l),v.end.column=p,c=h,h=p,p=l+1p,l==f),this.session.$bidiHandler.isBidiRow(l)?this.drawBidiSingleLineMarker(t,v,d,s,l==f?0:1,o):this.drawSingleLineMarker(t,v,d,s,l==f?0:1,o)},this.drawMultiLineMarker=function(e,t,n,r,i){var s=this.$padding,o,u,a;i=i||"";if(this.session.$bidiHandler.isBidiRow(t.start.row)){var f=t.clone();f.end.row=f.start.row,f.end.column=this.session.getLine(f.start.row).length,this.drawBidiSingleLineMarker(e,f,n+" ace_br1 ace_start",r,null,i)}else o=r.lineHeight,u=this.$getTop(t.start.row,r),a=s+t.start.column*r.characterWidth,e.push("
    ");if(this.session.$bidiHandler.isBidiRow(t.end.row)){var f=t.clone();f.start.row=f.end.row,f.start.column=0,this.drawBidiSingleLineMarker(e,f,n+" ace_br12",r,null,i)}else{var l=t.end.column*r.characterWidth;o=r.lineHeight,u=this.$getTop(t.end.row,r),e.push("
    ")}o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<=0)return;u=this.$getTop(t.start.row+1,r);var c=(t.start.column?1:0)|(t.end.column?0:8);e.push("
    ")},this.drawSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;e.push("
    ")},this.drawBidiSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=this.$getTop(t.start.row,r),a=this.$padding,f=this.session.$bidiHandler.getSelections(t.start.column,t.end.column);f.forEach(function(t){e.push("
    ")})},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),e.push("
    ")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("
    ")}}).call(s.prototype),t.Marker=s}),define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){r.implement(this,u),this.EOF_CHAR="\u00b6",this.EOL_CHAR_LF="\u00ac",this.EOL_CHAR_CRLF="\u00a4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2014",this.SPACE_CHAR="\u00b7",this.$padding=0,this.$updateEolChar=function(){var e=this.session.doc.getNewLineCharacter()=="\n"?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n"+s.stringRepeat(this.TAB_CHAR,n)+""):t.push(s.stringRepeat(" ",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide",i="",o="";if(this.showInvisibles){r+=" ace_invisible",i=" ace_invisible_space",o=" ace_invisible_tab";var u=s.stringRepeat(this.SPACE_CHAR,this.tabSize),a=s.stringRepeat(this.TAB_CHAR,this.tabSize)}else var u=s.stringRepeat(" ",this.tabSize),a=u;this.$tabStrings[" "]=""+u+"",this.$tabStrings[" "]=""+a+""}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),i=Math.min(n,e.lastRow),s=this.element.childNodes,o=0;for(var u=e.firstRow;uf&&(u=a.end.row+1,a=this.session.getNextFoldLine(u,a),f=a?a.start.row:Infinity);if(u>i)break;var l=s[o++];if(l){var c=[];this.$renderLine(c,u,!this.$useLineGroups(),u==f?a:!1),l.style.height=e.lineHeight*this.session.getRowLength(u)+"px",l.innerHTML=c.join("")}u++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a),a.style.height=e.lineHeight*this.session.getRowLength(s)+"px";else while(a.firstChild)r.appendChild(a.firstChild);s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,i=n,s=this.session.getNextFoldLine(i),o=s?s.start.row:Infinity;for(;;){i>o&&(i=s.end.row+1,s=this.session.getNextFoldLine(i,s),o=s?s.start.row:Infinity);if(i>r)break;this.$useLineGroups()&&t.push("
    "),this.$renderLine(t,i,!1,i==o?s:!1),this.$useLineGroups()&&t.push("
    "),i++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?""+s.stringRepeat(i.SPACE_CHAR,e.length)+"":e;if(e=="&")return"&";if(e=="<")return"<";if(e==">")return">";if(e==" "){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e=="\u3000"){var f=i.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,""+l+""}return r?""+i.SPACE_CHAR+"":(t+=1,""+e+"")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("",a,"")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);return r<=0||r>=n?t:t[0]==" "?(r-=r%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],r/this.tabSize)),t.substr(r)):t[0]==" "?(e.push(s.stringRepeat(this.$tabStrings[" "],r)),t.substr(r)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,o=0,u=n[0],a=0;for(var f=0;f=u)a=this.$renderToken(e,a,l,c.substring(0,u-i)),c=c.substring(u-i),i=u,r||e.push("
    ","
    "),e.push(s.stringRepeat("\u00a0",n.indent)),o++,a=0,u=n[o]||Number.MAX_VALUE;c.length!=0&&(i+=c.length,a=this.$renderToken(e,a,l,c))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
    ")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i,s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),i===undefined&&(i=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(i?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&!i&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+(this.session.$bidiHandler.isBidiRow(n.row,e.row)?this.session.$bidiHandler.getPosLeft(n.column):n.column*this.config.characterWidth),i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;ne.height+e.offset||s.top<0)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;this.drawCursor?this.drawCursor(o,s,e,t[n],this.session):(o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px")}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(s.prototype),t.Cursor=s}),define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=32768,a=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(a.prototype);var f=function(e,t){a.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px",this.$minWidth=0};r.inherits(f,a),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){this.scrollTop=this.element.scrollTop;if(this.coeff!=1){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>u?(this.coeff=u/e,e=u):this.coeff!=1&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(f.prototype);var l=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(l,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(l.prototype),t.ScrollBar=f,t.ScrollBarV=f,t.ScrollBarH=l,t.VScrollBar=f,t.HScrollBar=l}),define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending&&this.changes){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=0,f=t.FontMetrics=function(e){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),a||this.$testFractionalRect(),this.$measureNode.innerHTML=s.stringRepeat("X",a),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){r.implement(this,u),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=i.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;t>0&&t<1?a=50:a=100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",o.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(a===50){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var n={height:e.height,width:e.width/a}}else var n={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/a};return n.width===0||n.height===0?null:n},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,a);var t=this.$main.getBoundingClientRect();return t.width/a},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(f.prototype)}),define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./config"),o=e("./lib/useragent"),u=e("./layer/gutter").Gutter,a=e("./layer/marker").Marker,f=e("./layer/text").Text,l=e("./layer/cursor").Cursor,c=e("./scrollbar").HScrollBar,h=e("./scrollbar").VScrollBar,p=e("./renderloop").RenderLoop,d=e("./layer/font_metrics").FontMetrics,v=e("./lib/event_emitter").EventEmitter,m='.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_text-input-ios {position: absolute !important;top: -100000px !important;left: -100000px !important;}';i.importCssString(m,"ace_editor.css");var g=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!o.isOldIE,i.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new u(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var r=this.$textLayer=new f(this.content);this.canvas=r.element,this.$markerFront=new a(this.content),this.$cursorLayer=new l(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new h(this.container,this),this.scrollBarH=new c(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new d(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,v),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e);if(!e)return;this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t,n){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,r){if(this.resizing>2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null},this.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var i=0,s=this.$size,o={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};r&&(e||s.height!=r)&&(s.height=r,i|=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",i|=this.CHANGE_SCROLL);if(n&&(e||s.width!=n)){i|=this.CHANGE_SIZE,s.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)i|=this.CHANGE_FULL}return s.$dirty=!n||!r,i&&this._signal("resize",o),i},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e),this.session.$bidiHandler.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var r=this.textarea.style,i=this.lineHeight;if(t<0||t>e.height-i){r.top=r.left="0";return}var s=this.characterWidth;if(this.$composition){var o=this.textarea.value.replace(/^\x01+/,"");s*=this.session.$getStringScreenWidth(o)[0]+2,i+=2}n-=this.scrollLeft,n>this.$size.scrollerWidth-s&&(n=this.$size.scrollerWidth-s),n+=this.gutterWidth,r.height=i+"px",r.width=s+"px",r.left=Math.min(n,this.$size.scrollerWidth-s)+"px",r.top=Math.min(t,this.$size.height-i)+"px"},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow,n=this.session.documentToScreenRow(t,0)*e.lineHeight;return n-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-i.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender"),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){e|=this.$computeLayerConfig();if(n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var r=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;r>0&&(this.scrollTop=r,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px"}e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left");if(e&this.CHANGE_FULL){this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var r=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||r!=this.$vScroll){r!=this.$vScroll&&(this.$vScroll=r,this.scrollBarV.setVisible(r));var i=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,i,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.$getLongestLine(),o=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-s-2*this.$padding<0),u=this.$horizScroll!==o;u&&(this.$horizScroll=o,this.scrollBarH.setVisible(o));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var f=this.scrollTop%this.lineHeight,l=t.scrollerHeight+this.lineHeight,c=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=c;var h=this.scrollMargin;this.session.setScrollTop(Math.max(-h.top,Math.min(this.scrollTop,i-t.scrollerHeight+h.bottom))),this.session.setScrollLeft(Math.max(-h.left,Math.min(this.scrollLeft,s+2*this.$padding-t.scrollerWidth+h.right)));var p=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+c<0||this.scrollTop>h.top),d=a!==p;d&&(this.$vScroll=p,this.scrollBarV.setVisible(p));var v=Math.ceil(l/this.lineHeight)-1,m=Math.max(0,Math.round((this.scrollTop-f)/this.lineHeight)),g=m+v,y,b,w=this.lineHeight;m=e.screenToDocumentRow(m,0);var E=e.getFoldLine(m);E&&(m=E.start.row),y=e.documentToScreenRow(m,0),b=e.getRowLength(m)*w,g=Math.min(e.screenToDocumentRow(g,0),e.getLength()-1),l=t.scrollerHeight+e.getRowLength(g)*w+b,f=this.scrollTop-y*w;var S=0;this.layerConfig.width!=s&&(S=this.CHANGE_H_SCROLL);if(u||d)S=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),d&&(s=this.$getLongestLine());return this.layerConfig={width:s,padding:this.$padding,firstRow:m,firstRowScreen:y,lastRow:g,lineHeight:w,characterWidth:this.characterWidth,minHeight:l,maxHeight:i,offset:f,gutterOffset:w?Math.max(0,Math.ceil((f+t.height-t.scrollerHeight)/w)):0,height:this.$size.scrollerHeight},S},this.$updateLines=function(){if(!this.$changedLines)return;var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(ts?(t&&a+o>s+this.lineHeight&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-ui?(i=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=e+this.scrollLeft-n.left-this.$padding,i=r/this.characterWidth,s=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),o=Math.round(i);return{row:s,column:o,side:i-o>0?1:-1,offsetX:r}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=e+this.scrollLeft-n.left-this.$padding,i=Math.round(r/this.characterWidth),s=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(s,Math.max(i,0),r)},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+(this.session.$bidiHandler.isBidiRow(r.row,e)?this.session.$bidiHandler.getPosLeft(r.column):Math.round(r.column*this.characterWidth)),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this.setTheme=function(e,t){function o(r){if(n.$themeId!=e)return t&&t();if(!r||!r.cssClass)throw new Error("couldn't load module "+e+" or it didn't call define");i.importCssString(r.cssText,r.cssClass,n.container.ownerDocument),n.theme&&i.removeCssClass(n.container,n.theme.cssClass);var s="padding"in r?r.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&s!=n.$padding&&n.setPadding(s),n.$theme=r.cssClass,n.theme=r,i.addCssClass(n.container,r.cssClass),i.setCssClass(n.container,"ace_dark",r.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:r}),t&&t()}var n=this;this.$themeId=e,n._dispatchEvent("themeChange",{theme:e});if(!e||typeof e=="string"){var r=e||this.$options.theme.initialValue;s.loadModule(["theme",r],o)}else o(e)},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){i.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){i.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(g.prototype),s.defineOptions(g.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},maxPixelHeight:{set:function(e){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(e){e=+e||0;if(this.$scrollPastEnd==e)return;this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=g}),define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";function u(e){var t="importScripts('"+i.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(n){var r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,s=new r;return s.append(t),s.getBlob("application/javascript")}}function a(e){var t=u(e),n=window.URL||window.webkitURL,r=n.createObjectURL(t);return new Worker(r)}var r=e("../lib/oop"),i=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,o=e("../config"),f=function(t,n,r,i,s){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl);if(o.get("packaged")||!e.toUrl)i=i||o.moduleUrl(n,"worker");else{var u=this.$normalizePath;i=i||u(e.toUrl("ace/worker/worker.js",null,"_"));var f={};t.forEach(function(t){f[t]=u(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}this.$worker=a(i),s&&this.send("importScripts",s),this.$worker.postMessage({init:!0,tlns:f,module:n,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return i.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){console.error(n.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),e.action=="insert"?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;if(!e)return;this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})}}).call(f.prototype);var l=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,i=!1,u=Object.create(s),a=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){a.messageBuffer.push(e),r&&(i?setTimeout(f):f())},this.setEmitSync=function(e){i=e};var f=function(){var e=a.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};u.postMessage=function(e){a.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.messageBuffer.length)f()})};l.prototype=f.prototype,t.UIWorkerClient=l,t.WorkerClient=f,t.createWorker=a}),define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var i=this.pos;i.$insertRight=!0,i.detach(),i.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);r.$insertRight=!0,r.detach(),e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,s=t.start.column-this.pos.column;this.updateAnchors(e),i&&(this.length+=n);if(i&&!this.session.$fromUndo)if(e.action==="insert")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.insertMergedLines(a,e.lines)}else if(e.action==="remove")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.remove(new r(a.row,a.column,a.row,a.column-n))}this.$updating=!1,this.updateMarkers()},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(this.$updating)return;var e=this,t=this.session,n=function(n,i){t.removeMarker(n.markerId),n.markerId=t.addMarker(new r(n.row,n.column,n.row,n.column+e.length),i,null,!1)};n(this.pos,this.mainClass);for(var i=this.others.length;i--;)n(this.others[i],this.othersClass)},this.onCursorChange=function(e){if(this.$updating||!this.session)return;var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(this.$undoStackDepth===-1)return;var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth;for(var n=0;n1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)g--;if(g>0){var y=0;while(r[y].isEmpty())y++}for(var b=g;b>=y;b--)r[b].isEmpty()&&r.splice(b,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection")},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=n&&n.keepOrder,i=n==1||n&&n.$byLines,o=this.session,u=this.selection,a=u.rangeList,f=(r?u:a).ranges,l;if(!f.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var c=u._eventRegistry;u._eventRegistry={};var h=new s(o);this.inVirtualSelectionMode=!0;for(var p=f.length;p--;){if(i)while(p>0&&f[p].start.row==f[p-1].end.row)p--;h.fromOrientedRange(f[p]),h.index=p,this.selection=o.selection=h;var d=e.exec?e.exec(this,t||{}):e(this,t||{});!l&&d!==undefined&&(l=d),h.toOrientedRange(f[p])}h.detach(),this.selection=o.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=c,u.mergeOverlappingRanges();var v=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),v&&v.from==v.to&&this.renderer.animateScrolling(v.from),l},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;r0);u<0&&(u=0),f>=c&&(f=c-1)}var p=this.session.removeFullLines(u,f);p=this.$reAlignText(p,l),this.session.insert({row:u,column:0},p.join("\n")+"\n"),l||(o.start.column=0,o.end.column=p[p.length-1].length),this.selection.setRange(o)}else{s.forEach(function(e){t.substractPoint(e.cursor)});var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),st[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++tf){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./range").Range;(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets))},this.detach=function(e){var t=this.editor;if(!t)return;this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnFold=function(e,t){var n=t.lineWidgets;if(!n||!e.action)return;var r=e.data,i=r.start.row,s=r.end.row,o=e.action=="add";for(var u=i+1;u0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;if(u.hidden){u.el.style.top=-100-(u.pixelHeight||0)+"px";continue}u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fullWidth&&u.screenWidth&&(u.el.style.minWidth=n.width+2*n.padding+"px"),u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o}),define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("../line_widgets").LineWidgets,i=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.widgetManager.getWidgetsAtRow(o).filter(function(e){return e.type=="errorMarker"})[0];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];s.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div"),type:"errorMarker"},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("
    "),p.appendChild(i.createElement("div"));var m=function(e,t,n){if(t===0&&(n==="esc"||n==="return"))return h.destroy(),{command:"null"}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})},i.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./editor").Editor,o=e("./edit_session").EditSession,u=e("./undomanager").UndoManager,a=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,typeof define=="function"&&(t.define=define),t.edit=function(e){if(typeof e=="string"){var n=e;e=document.getElementById(n);if(!e)throw new Error("ace.edit can't find div #"+n)}if(e&&e.env&&e.env.editor instanceof s)return e.env.editor;var o="";if(e&&/input|textarea/i.test(e.tagName)){var u=e;o=u.value,e=r.createElement("pre"),u.parentNode.replaceChild(e,u)}else e&&(o=r.getInnerText(e),e.innerHTML="");var f=t.createEditSession(o),l=new s(new a(e));l.setSession(f);var c={document:f,editor:l,onResize:l.resize.bind(l,null)};return u&&(c.textarea=u),i.addListener(window,"resize",c.onResize),l.on("destroy",function(){i.removeListener(window,"resize",c.onResize),c.editor.container.env=null}),l.container.env=l.env=c,l},t.createEditSession=function(e,t){var n=new o(e,t);return n.setUndoManager(new u),n},t.EditSession=o,t.UndoManager=u,t.version="1.2.9"}); - (function() { - window.require(["ace/ace"], function(a) { - if (a) { - a.config.init(true); - a.define = window.define; - } - if (!window.ace) - window.ace = a; - for (var key in a) if (a.hasOwnProperty(key)) - window.ace[key] = a[key]; - }); - })(); - \ No newline at end of file diff --git a/js/ext-language_tools.js b/js/ext-language_tools.js deleted file mode 100644 index 7a414b6..0000000 --- a/js/ext-language_tools.js +++ /dev/null @@ -1,5 +0,0 @@ -define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./lib/lang"),o=e("./range").Range,u=e("./anchor").Anchor,a=e("./keyboard/hash_handler").HashHandler,f=e("./tokenizer").Tokenizer,l=o.comparePoints,c=function(){this.snippetMap={},this.snippetNameMap={}};(function(){r.implement(this,i),this.getTokenizer=function(){function e(e,t,n){return e=e.substr(1),/^\d+$/.test(e)&&!n.inFormatString?[{tabstopId:parseInt(e,10)}]:[{text:e}]}function t(e){return"(?:[^\\\\"+e+"]|\\\\.)"}return c.$tokenizer=new f({start:[{regex:/:/,onMatch:function(e,t,n){return n.length&&n[0].expectIf?(n[0].expectIf=!1,n[0].elseBranch=n[0],[n[0]]):":"}},{regex:/\\./,onMatch:function(e,t,n){var r=e[1];return r=="}"&&n.length?e=r:"`$\\".indexOf(r)!=-1?e=r:n.inFormatString&&(r=="n"?e="\n":r=="t"?e="\n":"ulULE".indexOf(r)!=-1&&(e={changeCase:r,local:r>"a"})),[e]}},{regex:/}/,onMatch:function(e,t,n){return[n.length?n.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:e},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(t,n,r){var i=e(t.substr(1),n,r);return r.unshift(i[0]),i},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+t("\\|")+"*\\|",onMatch:function(e,t,n){n[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+t("/")+"+)/(?:("+t("/")+"*)/)(\\w*):?",onMatch:function(e,t,n){var r=n[0];return r.fmtString=e,e=this.splitRegex.exec(e),r.guard=e[1],r.fmt=e[2],r.flag=e[3],""},next:"start"},{regex:"`"+t("`")+"*`",onMatch:function(e,t,n){return n[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,n){n[0]&&(n[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+t("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,n){n.inFormatString=!0},next:"start"}]}),c.prototype.getTokenizer=function(){return c.$tokenizer},c.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var n=t.substr(1);return(this.variables[t[0]+"__"]||{})[n]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];t=t.replace(/^TM_/,"");if(!e)return;var r=e.session;switch(t){case"CURRENT_WORD":var i=r.getWordRange();case"SELECTION":case"SELECTED_TEXT":return r.getTextRange(i);case"CURRENT_LINE":return r.getLine(e.getCursorPosition().row);case"PREV_LINE":return r.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return r.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return r.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,n){var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gi]/,""));var s=this.tokenizeTmSnippet(t.fmt,"formatString"),o=this,u=e.replace(i,function(){o.variables.__=arguments;var e=o.resolveVariables(s,n),t="E";for(var r=0;r1?(y=t[t.length-1].length,g+=t.length-1):y+=e.length,b+=e}else e.start?e.end={row:g,column:y}:e.start={row:g,column:y}});var w=e.getSelectionRange(),E=e.session.replace(w,b),S=new h(e),x=e.inVirtualSelectionMode&&e.selection.index;S.addTabstops(u,w.start,E,x)},this.insertSnippet=function(e,t){var n=this;if(e.inVirtualSelectionMode)return n.insertSnippetForSelection(e,t);e.forEachSelection(function(){n.insertSnippetForSelection(e,t)},null,{keepOrder:!0}),e.tabstopManager&&e.tabstopManager.tabNext()},this.$getScope=function(e){var t=e.session.$mode.$id||"";t=t.split("/").pop();if(t==="html"||t==="php"){t==="php"&&!e.session.$mode.inlinePhp&&(t="html");var n=e.getCursorPosition(),r=e.session.getState(n.row);typeof r=="object"&&(r=r[0]),r.substring&&(r.substring(0,3)=="js-"?t="javascript":r.substring(0,4)=="css-"?t="css":r.substring(0,4)=="php-"&&(t="php"))}return t},this.getActiveScopes=function(e){var t=this.$getScope(e),n=[t],r=this.snippetMap;return r[t]&&r[t].includeScopes&&n.push.apply(n,r[t].includeScopes),n.push("_"),n},this.expandWithTab=function(e,t){var n=this,r=e.forEachSelection(function(){return n.expandSnippetForSelection(e,t)},null,{keepOrder:!0});return r&&e.tabstopManager&&e.tabstopManager.tabNext(),r},this.expandSnippetForSelection=function(e,t){var n=e.getCursorPosition(),r=e.session.getLine(n.row),i=r.substring(0,n.column),s=r.substr(n.column),o=this.snippetMap,u;return this.getActiveScopes(e).some(function(e){var t=o[e];return t&&(u=this.findMatchingSnippet(t,i,s)),!!u},this),u?t&&t.dryRun?!0:(e.session.doc.removeInLine(n.row,n.column-u.replaceBefore.length,n.column+u.replaceAfter.length),this.variables.M__=u.matchBefore,this.variables.T__=u.matchAfter,this.insertSnippetForSelection(e,u.content),this.variables.M__=this.variables.T__=null,!0):!1},this.findMatchingSnippet=function(e,t,n){for(var r=e.length;r--;){var i=e[r];if(i.startRe&&!i.startRe.test(t))continue;if(i.endRe&&!i.endRe.test(n))continue;if(!i.startRe&&!i.endRe)continue;return i.matchBefore=i.startRe?i.startRe.exec(t):[""],i.matchAfter=i.endRe?i.endRe.exec(n):[""],i.replaceBefore=i.triggerRe?i.triggerRe.exec(t)[0]:"",i.replaceAfter=i.endTriggerRe?i.endTriggerRe.exec(n)[0]:"",i}},this.snippetMap={},this.snippetNameMap={},this.register=function(e,t){function o(e){return e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)&&(e="(?:"+e+")"),e||""}function u(e,t,n){return e=o(e),t=o(t),n?(e=t+e,e&&e[e.length-1]!="$"&&(e+="$")):(e+=t,e&&e[0]!="^"&&(e="^"+e)),new RegExp(e)}function a(e){e.scope||(e.scope=t||"_"),t=e.scope,n[t]||(n[t]=[],r[t]={});var o=r[t];if(e.name){var a=o[e.name];a&&i.unregister(a),o[e.name]=e}n[t].push(e),e.tabTrigger&&!e.trigger&&(!e.guard&&/^\w/.test(e.tabTrigger)&&(e.guard="\\b"),e.trigger=s.escapeRegExp(e.tabTrigger));if(!e.trigger&&!e.guard&&!e.endTrigger&&!e.endGuard)return;e.startRe=u(e.trigger,e.guard,!0),e.triggerRe=new RegExp(e.trigger,"",!0),e.endRe=u(e.endTrigger,e.endGuard,!0),e.endTriggerRe=new RegExp(e.endTrigger,"",!0)}var n=this.snippetMap,r=this.snippetNameMap,i=this;e||(e=[]),e&&e.content?a(e):Array.isArray(e)&&e.forEach(a),this._signal("registerSnippets",{scope:t})},this.unregister=function(e,t){function i(e){var i=r[e.scope||t];if(i&&i[e.name]){delete i[e.name];var s=n[e.scope||t],o=s&&s.indexOf(e);o>=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):n[o]=u}}return t},this.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r}}).call(c.prototype);var h=function(e){if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=s.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t=e,n=e.action[0]=="r",r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=i.column-r.column;n&&(u=-u,a=-a);if(!this.$inChange&&n){var f=this.selectedTabstop,c=f&&!f.some(function(e){return l(e.start,r)<=0&&l(e.end,i)>=0});if(c)return this.detach()}var h=this.ranges;for(var p=0;p0){this.removeRange(d),p--;continue}d.start.row==s&&d.start.column>r.column&&(d.start.column+=a),d.end.row==s&&d.end.column>=r.column&&(d.end.column+=a),d.start.row>=s&&(d.start.row+=u),d.end.row>=s&&(d.end.row+=u),l(d.start,d.end)>0&&this.removeRange(d)}h.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(!e||!e.hasLinkedRanges)return;this.$inChange=!0;var n=this.editor.session,r=n.getTextRange(e.firstNonLinked);for(var i=e.length;i--;){var s=e[i];if(!s.linked)continue;var o=t.snippetManager.tmStrFormat(r,s.original);n.replace(s,o)}this.$inChange=!1},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(!this.editor)return;var e=this.editor.selection.lead,t=this.editor.selection.anchor,n=this.editor.selection.isEmpty();for(var r=this.ranges.length;r--;){if(this.ranges[r].linked)continue;var i=this.ranges[r].contains(e.row,e.column),s=n||this.ranges[r].contains(t.row,t.column);if(i&&s)return}this.detach()},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length,n=this.index+(e||1);n=Math.min(Math.max(n,1),t),n==t&&(n=0),this.selectTabstop(n),n===0&&this.detach()},this.selectTabstop=function(e){this.$openTabstops=null;var t=this.tabstops[this.index];t&&this.addTabstopMarkers(t),this.index=e,t=this.tabstops[this.index];if(!t||!t.length)return;this.selectedTabstop=t;if(!this.editor.inVirtualSelectionMode){var n=this.editor.multiSelect;n.toSingleRange(t.firstNonLinked.clone());for(var r=t.length;r--;){if(t.hasLinkedRanges&&t[r].linked)continue;n.addRange(t[r].clone(),!0)}n.ranges[0]&&n.addRange(n.ranges[0].clone())}else this.editor.selection.setRange(t.firstNonLinked);this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.addTabstops=function(e,t,n){this.$openTabstops||(this.$openTabstops=[]);if(!e[0]){var r=o.fromPoints(n,n);v(r.start,t),v(r.end,t),e[0]=[r],e[0].index=0}var i=this.index,s=[i+1,0],u=this.ranges;e.forEach(function(e,n){var r=this.$openTabstops[n]||e;for(var i=e.length;i--;){var a=e[i],f=o.fromPoints(a.start,a.end||a.start);d(f.start,t),d(f.end,t),f.original=a,f.tabstop=r,u.push(f),r!=e?r.unshift(f):r[i]=f,a.fmtString?(f.linked=!0,r.hasLinkedRanges=!0):r.firstNonLinked||(r.firstNonLinked=f)}r.firstNonLinked||(r.hasLinkedRanges=!1),r===e&&(s.push(r),this.$openTabstops[n]=r),this.addTabstopMarkers(r)},this),s.length>2&&(this.tabstops.length&&s.push(s.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,s))},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId),e.tabstop.length||(t=this.tabstops.indexOf(e.tabstop),t!=-1&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},this.keyboardHandler=new a,this.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(h.prototype);var p={};p.onChange=u.prototype.onChange,p.setPosition=function(e,t){this.pos.row=e,this.pos.column=t},p.update=function(e,t,n){this.$insertRight=n,this.pos=e,this.onChange(t)};var d=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},v=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker { -moz-box-sizing: border-box; box-sizing: border-box; background: rgba(194, 193, 208, 0.09); border: 1px dotted rgba(211, 208, 235, 0.62); position: absolute;}"),t.snippetManager=new c;var m=e("./editor").Editor;(function(){this.insertSnippet=function(e,n){return t.snippetManager.insertSnippet(this,e,n)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(m.prototype)}),define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../virtual_renderer").VirtualRenderer,i=e("../editor").Editor,s=e("../range").Range,o=e("../lib/event"),u=e("../lib/lang"),a=e("../lib/dom"),f=function(e){var t=new r(e);t.$maxLines=4;var n=new i(t);return n.setHighlightActiveLine(!1),n.setShowPrintMargin(!1),n.renderer.setShowGutter(!1),n.renderer.setHighlightGutterLine(!1),n.$mouseHandler.$focusWaitTimout=0,n.$highlightTagPending=!0,n},l=function(e){var t=a.createElement("div"),n=new f(t);e&&e.appendChild(t),t.style.display="none",n.renderer.content.style.cursor="default",n.renderer.setStyle("ace_autocomplete"),n.setOption("displayIndentGuides",!1),n.setOption("dragDelay",150);var r=function(){};n.focus=r,n.$isFocused=!0,n.renderer.$cursorLayer.restartTimer=r,n.renderer.$cursorLayer.element.style.opacity=0,n.renderer.$maxLines=8,n.renderer.$keepTextAreaAtCursor=!1,n.setHighlightActiveLine(!1),n.session.highlight(""),n.session.$searchHighlight.clazz="ace_highlight-marker",n.on("mousedown",function(e){var t=e.getDocumentPosition();n.selection.moveToPosition(t),c.start.row=c.end.row=t.row,e.stop()});var i,l=new s(-1,0,-1,Infinity),c=new s(-1,0,-1,Infinity);c.id=n.session.addMarker(c,"ace_active-line","fullLine"),n.setSelectOnHover=function(e){e?l.id&&(n.session.removeMarker(l.id),l.id=null):l.id=n.session.addMarker(l,"ace_line-hover","fullLine")},n.setSelectOnHover(!1),n.on("mousemove",function(e){if(!i){i=e;return}if(i.x==e.x&&i.y==e.y)return;i=e,i.scrollTop=n.renderer.scrollTop;var t=i.getDocumentPosition().row;l.start.row!=t&&(l.id||n.setRow(t),p(t))}),n.renderer.on("beforeRender",function(){if(i&&l.start.row!=-1){i.$pos=null;var e=i.getDocumentPosition().row;l.id||n.setRow(e),p(e,!0)}}),n.renderer.on("afterRender",function(){var e=n.getRow(),t=n.renderer.$textLayer,r=t.element.childNodes[e-t.config.firstRow];if(r==t.selectedNode)return;t.selectedNode&&a.removeCssClass(t.selectedNode,"ace_selected"),t.selectedNode=r,r&&a.addCssClass(r,"ace_selected")});var h=function(){p(-1)},p=function(e,t){e!==l.start.row&&(l.start.row=l.end.row=e,t||n.session._emit("changeBackMarker"),n._emit("changeHoverMarker"))};n.getHoveredRow=function(){return l.start.row},o.addListener(n.container,"mouseout",h),n.on("hide",h),n.on("changeSelection",h),n.session.doc.getLength=function(){return n.data.length},n.session.doc.getLine=function(e){var t=n.data[e];return typeof t=="string"?t:t&&t.value||""};var d=n.session.bgTokenizer;return d.$tokenizeRow=function(e){var t=n.data[e],r=[];if(!t)return r;typeof t=="string"&&(t={value:t}),t.caption||(t.caption=t.value||t.name);var i=-1,s,o;for(var u=0;ua-2&&(f=f.substr(0,a-t.caption.length-3)+"\u2026"),r.push({type:"rightAlignedText",value:f})}return r},d.$updateOnChange=r,d.start=r,n.session.$computeWidth=function(){return this.screenWidth=0},n.$blockScrolling=Infinity,n.isOpen=!1,n.isTopdown=!1,n.autoSelect=!0,n.data=[],n.setData=function(e){n.setValue(u.stringRepeat("\n",e.length),-1),n.data=e||[],n.setRow(0)},n.getData=function(e){return n.data[e]},n.getRow=function(){return c.start.row},n.setRow=function(e){e=Math.max(this.autoSelect?0:-1,Math.min(this.data.length,e)),c.start.row!=e&&(n.selection.clearSelection(),c.start.row=c.end.row=e||0,n.session._emit("changeBackMarker"),n.moveCursorTo(e||0,0),n.isOpen&&n._signal("select"))},n.on("changeSelection",function(){n.isOpen&&n.setRow(n.selection.lead.row),n.renderer.scrollCursorIntoView()}),n.hide=function(){this.container.style.display="none",this._signal("hide"),n.isOpen=!1},n.show=function(e,t,r){var s=this.container,o=window.innerHeight,u=window.innerWidth,a=this.renderer,f=a.$maxLines*t*1.4,l=e.top+this.$borderSize,c=l>o/2&&!r;c&&l+t+f>o?(a.$maxPixelHeight=l-2*this.$borderSize,s.style.top="",s.style.bottom=o-l+"px",n.isTopdown=!1):(l+=t,a.$maxPixelHeight=o-l-.2*t,s.style.top=l+"px",s.style.bottom="",n.isTopdown=!0),s.style.display="",this.renderer.$textLayer.checkForSizeChanges();var h=e.left;h+s.offsetWidth>u&&(h=u-s.offsetWidth),s.style.left=h+"px",this._signal("show"),i=null,n.isOpen=!0},n.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},n.$imageSize=0,n.$borderSize=1,n};a.importCssString(".ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line { background-color: #CAD6FA; z-index: 1;}.ace_editor.ace_autocomplete .ace_line-hover { border: 1px solid #abbffe; margin-top: -1px; background: rgba(233,233,253,0.4);}.ace_editor.ace_autocomplete .ace_line-hover { position: absolute; z-index: 2;}.ace_editor.ace_autocomplete .ace_scroller { background: none; border: none; box-shadow: none;}.ace_rightAlignedText { color: gray; display: inline-block; position: absolute; right: 4px; text-align: right; z-index: -1;}.ace_editor.ace_autocomplete .ace_completion-highlight{ color: #000; text-shadow: 0 0 0.01em;}.ace_editor.ace_autocomplete { width: 280px; z-index: 200000; background: #fbfbfb; color: #444; border: 1px lightgray solid; position: fixed; box-shadow: 2px 3px 5px rgba(0,0,0,.2); line-height: 1.4;}"),t.AcePopup=l}),define("ace/autocomplete/util",["require","exports","module"],function(e,t,n){"use strict";t.parForEach=function(e,t,n){var r=0,i=e.length;i===0&&n();for(var s=0;s=0;s--){if(!n.test(e[s]))break;i.push(e[s])}return i.reverse().join("")},t.retrieveFollowingIdentifier=function(e,t,n){n=n||r;var i=[];for(var s=t;s=n?-1:t+1;break;case"start":t=0;break;case"end":t=n}this.popup.setRow(t)},this.insertMatch=function(e,t){e||(e=this.popup.getData(this.popup.getRow()));if(!e)return!1;if(e.completer&&e.completer.insertMatch)e.completer.insertMatch(this.editor,e);else{if(this.completions.filterText){var n=this.editor.selection.getAllRanges();for(var r=0,i;i=n[r];r++)i.start.column-=this.completions.filterText.length,this.editor.session.remove(i)}e.snippet?f.insertSnippet(this.editor,e.snippet):this.editor.execCommand("insertstring",e.value||e)}this.detach()},this.commands={Up:function(e){e.completer.goTo("up")},Down:function(e){e.completer.goTo("down")},"Ctrl-Up|Ctrl-Home":function(e){e.completer.goTo("start")},"Ctrl-Down|Ctrl-End":function(e){e.completer.goTo("end")},Esc:function(e){e.completer.detach()},Return:function(e){return e.completer.insertMatch()},"Shift-Return":function(e){e.completer.insertMatch(null,{deleteSuffix:!0})},Tab:function(e){var t=e.completer.insertMatch();if(!!t||!!e.tabstopManager)return t;e.completer.goTo("down")},PageUp:function(e){e.completer.popup.gotoPageUp()},PageDown:function(e){e.completer.popup.gotoPageDown()}},this.gatherCompletions=function(e,t){var n=e.getSession(),r=e.getCursorPosition(),i=s.getCompletionPrefix(e);this.base=n.doc.createAnchor(r.row,r.column-i.length),this.base.$insertRight=!0;var o=[],u=e.completers.length;return e.completers.forEach(function(a,f){a.getCompletions(e,n,r,i,function(n,r){!n&&r&&(o=o.concat(r)),t(null,{prefix:s.getCompletionPrefix(e),matches:o,finished:--u===0})})}),!0},this.showPopup=function(e){this.editor&&this.detach(),this.activated=!0,this.editor=e,e.completer!=this&&(e.completer&&e.completer.detach(),e.completer=this),e.on("changeSelection",this.changeListener),e.on("blur",this.blurListener),e.on("mousedown",this.mousedownListener),e.on("mousewheel",this.mousewheelListener),this.updateCompletions()},this.updateCompletions=function(e){if(e&&this.base&&this.completions){var t=this.editor.getCursorPosition(),n=this.editor.session.getTextRange({start:this.base,end:t});if(n==this.completions.filterText)return;this.completions.setFilter(n);if(!this.completions.filtered.length)return this.detach();if(this.completions.filtered.length==1&&this.completions.filtered[0].value==n&&!this.completions.filtered[0].snippet)return this.detach();this.openPopup(this.editor,n,e);return}var r=this.gatherCompletionsId;this.gatherCompletions(this.editor,function(t,n){var i=function(){if(!n.finished)return;return this.detach()}.bind(this),s=n.prefix,o=n&&n.matches;if(!o||!o.length)return i();if(s.indexOf(n.prefix)!==0||r!=this.gatherCompletionsId)return;this.completions=new c(o),this.exactMatch&&(this.completions.exactMatch=!0),this.completions.setFilter(s);var u=this.completions.filtered;if(!u.length)return i();if(u.length==1&&u[0].value==s&&!u[0].snippet)return i();if(this.autoInsert&&u.length==1&&n.finished)return this.insertMatch(u[0]);this.openPopup(this.editor,s,e)}.bind(this))},this.cancelContextMenu=function(){this.editor.$mouseHandler.cancelContextMenu()},this.updateDocTooltip=function(){var e=this.popup,t=e.data,n=t&&(t[e.getHoveredRow()]||t[e.getRow()]),r=null;if(!n||!this.editor||!this.popup.isOpen)return this.hideDocTooltip();this.editor.completers.some(function(e){return e.getDocTooltip&&(r=e.getDocTooltip(n)),r}),r||(r=n),typeof r=="string"&&(r={docText:r});if(!r||!r.docHTML&&!r.docText)return this.hideDocTooltip();this.showDocTooltip(r)},this.showDocTooltip=function(e){this.tooltipNode||(this.tooltipNode=a.createElement("div"),this.tooltipNode.className="ace_tooltip ace_doc-tooltip",this.tooltipNode.style.margin=0,this.tooltipNode.style.pointerEvents="auto",this.tooltipNode.tabIndex=-1,this.tooltipNode.onblur=this.blurListener.bind(this),this.tooltipNode.onclick=this.onTooltipClick.bind(this));var t=this.tooltipNode;e.docHTML?t.innerHTML=e.docHTML:e.docText&&(t.textContent=e.docText),t.parentNode||document.body.appendChild(t);var n=this.popup,r=n.container.getBoundingClientRect();t.style.top=n.container.style.top,t.style.bottom=n.container.style.bottom,window.innerWidth-r.right<320?(t.style.right=window.innerWidth-r.left+"px",t.style.left=""):(t.style.left=r.right+1+"px",t.style.right=""),t.style.display="block"},this.hideDocTooltip=function(){this.tooltipTimer.cancel();if(!this.tooltipNode)return;var e=this.tooltipNode;!this.editor.isFocused()&&document.activeElement==e&&this.editor.focus(),this.tooltipNode=null,e.parentNode&&e.parentNode.removeChild(e)},this.onTooltipClick=function(e){var t=e.target;while(t&&t!=this.tooltipNode){if(t.nodeName=="A"&&t.href){t.rel="noreferrer",t.target="_blank";break}t=t.parentNode}}}).call(l.prototype),l.startCommand={name:"startAutocomplete",exec:function(e){e.completer||(e.completer=new l),e.completer.autoInsert=!1,e.completer.autoSelect=!0,e.completer.showPopup(e),e.completer.cancelContextMenu()},bindKey:"Ctrl-Space|Ctrl-Shift-Space|Alt-Space"};var c=function(e,t){this.all=e,this.filtered=e,this.filterText=t||"",this.exactMatch=!1};(function(){this.setFilter=function(e){if(e.length>this.filterText&&e.lastIndexOf(this.filterText,0)===0)var t=this.filtered;else var t=this.all;this.filterText=e,t=this.filterCompletions(t,this.filterText),t=t.sort(function(e,t){return t.exactMatch-e.exactMatch||t.score-e.score});var n=null;t=t.filter(function(e){var t=e.snippet||e.caption||e.value;return t===n?!1:(n=t,!0)}),this.filtered=t},this.filterCompletions=function(e,t){var n=[],r=t.toUpperCase(),i=t.toLowerCase();e:for(var s=0,o;o=e[s];s++){var u=o.value||o.caption||o.snippet;if(!u)continue;var a=-1,f=0,l=0,c,h;if(this.exactMatch){if(t!==u.substr(0,t.length))continue e}else for(var p=0;p=0?v<0||d0&&(a===-1&&(l+=10),l+=h),f|=1<",o.escapeHTML(e.caption),"","
    ",o.escapeHTML(e.snippet)].join(""))}},c=[l,a,f];t.setCompleters=function(e){c.length=0,e&&c.push.apply(c,e)},t.addCompleter=function(e){c.push(e)},t.textCompleter=a,t.keyWordCompleter=f,t.snippetCompleter=l;var h={name:"expandSnippet",exec:function(e){return r.expandWithTab(e)},bindKey:"Tab"},p=function(e,t){d(t.session.$mode)},d=function(e){var t=e.$id;r.files||(r.files={}),v(t),e.modes&&e.modes.forEach(d)},v=function(e){if(!e||r.files[e])return;var t=e.replace("mode","snippets");r.files[e]={},s.loadModule(t,function(t){t&&(r.files[e]=t,!t.snippets&&t.snippetText&&(t.snippets=r.parseSnippetFile(t.snippetText)),r.register(t.snippets||[],t.scope),t.includeScopes&&(r.snippetMap[t.scope].includeScopes=t.includeScopes,t.includeScopes.forEach(function(e){v("ace/mode/"+e)})))})},m=function(e){var t=e.editor,n=t.completer&&t.completer.activated;if(e.command.name==="backspace")n&&!u.getCompletionPrefix(t)&&t.completer.detach();else if(e.command.name==="insertstring"){var r=u.getCompletionPrefix(t);r&&!n&&(t.completer||(t.completer=new i),t.completer.autoInsert=!1,t.completer.showPopup(t))}},g=e("../editor").Editor;e("../config").defineOptions(g.prototype,"editor",{enableBasicAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:c),this.commands.addCommand(i.startCommand)):this.commands.removeCommand(i.startCommand)},value:!1},enableLiveAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:c),this.commands.on("afterExec",m)):this.commands.removeListener("afterExec",m)},value:!1},enableSnippets:{set:function(e){e?(this.commands.addCommand(h),this.on("changeMode",p),p(null,this)):(this.commands.removeCommand(h),this.off("changeMode",p))},value:!1}})}); - (function() { - window.require(["ace/ext/language_tools"], function() {}); - })(); - \ No newline at end of file diff --git a/js/flv.min.js b/js/flv.min.js deleted file mode 100644 index 4c540b0..0000000 --- a/js/flv.min.js +++ /dev/null @@ -1,11869 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.flvjs = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o postsJSON - values[1] // => commentsJSON - - return values; - }); - ``` - - @class Promise - @param {function} resolver - Useful for tooling. - @constructor -*/ -function Promise(resolver) { - this[PROMISE_ID] = nextId(); - this._result = this._state = undefined; - this._subscribers = []; - - if (noop !== resolver) { - typeof resolver !== 'function' && needsResolver(); - this instanceof Promise ? initializePromise(this, resolver) : needsNew(); - } -} - -Promise.all = all; -Promise.race = race; -Promise.resolve = resolve; -Promise.reject = reject; -Promise._setScheduler = setScheduler; -Promise._setAsap = setAsap; -Promise._asap = asap; - -Promise.prototype = { - constructor: Promise, - - /** - The primary way of interacting with a promise is through its `then` method, - which registers callbacks to receive either a promise's eventual value or the - reason why the promise cannot be fulfilled. - - ```js - findUser().then(function(user){ - // user is available - }, function(reason){ - // user is unavailable, and you are given the reason why - }); - ``` - - Chaining - -------- - - The return value of `then` is itself a promise. This second, 'downstream' - promise is resolved with the return value of the first promise's fulfillment - or rejection handler, or rejected if the handler throws an exception. - - ```js - findUser().then(function (user) { - return user.name; - }, function (reason) { - return 'default name'; - }).then(function (userName) { - // If `findUser` fulfilled, `userName` will be the user's name, otherwise it - // will be `'default name'` - }); - - findUser().then(function (user) { - throw new Error('Found user, but still unhappy'); - }, function (reason) { - throw new Error('`findUser` rejected and we're unhappy'); - }).then(function (value) { - // never reached - }, function (reason) { - // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'. - // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'. - }); - ``` - If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream. - - ```js - findUser().then(function (user) { - throw new PedagogicalException('Upstream error'); - }).then(function (value) { - // never reached - }).then(function (value) { - // never reached - }, function (reason) { - // The `PedgagocialException` is propagated all the way down to here - }); - ``` - - Assimilation - ------------ - - Sometimes the value you want to propagate to a downstream promise can only be - retrieved asynchronously. This can be achieved by returning a promise in the - fulfillment or rejection handler. The downstream promise will then be pending - until the returned promise is settled. This is called *assimilation*. - - ```js - findUser().then(function (user) { - return findCommentsByAuthor(user); - }).then(function (comments) { - // The user's comments are now available - }); - ``` - - If the assimliated promise rejects, then the downstream promise will also reject. - - ```js - findUser().then(function (user) { - return findCommentsByAuthor(user); - }).then(function (comments) { - // If `findCommentsByAuthor` fulfills, we'll have the value here - }, function (reason) { - // If `findCommentsByAuthor` rejects, we'll have the reason here - }); - ``` - - Simple Example - -------------- - - Synchronous Example - - ```javascript - let result; - - try { - result = findResult(); - // success - } catch(reason) { - // failure - } - ``` - - Errback Example - - ```js - findResult(function(result, err){ - if (err) { - // failure - } else { - // success - } - }); - ``` - - Promise Example; - - ```javascript - findResult().then(function(result){ - // success - }, function(reason){ - // failure - }); - ``` - - Advanced Example - -------------- - - Synchronous Example - - ```javascript - let author, books; - - try { - author = findAuthor(); - books = findBooksByAuthor(author); - // success - } catch(reason) { - // failure - } - ``` - - Errback Example - - ```js - - function foundBooks(books) { - - } - - function failure(reason) { - - } - - findAuthor(function(author, err){ - if (err) { - failure(err); - // failure - } else { - try { - findBoooksByAuthor(author, function(books, err) { - if (err) { - failure(err); - } else { - try { - foundBooks(books); - } catch(reason) { - failure(reason); - } - } - }); - } catch(error) { - failure(err); - } - // success - } - }); - ``` - - Promise Example; - - ```javascript - findAuthor(). - then(findBooksByAuthor). - then(function(books){ - // found books - }).catch(function(reason){ - // something went wrong - }); - ``` - - @method then - @param {Function} onFulfilled - @param {Function} onRejected - Useful for tooling. - @return {Promise} - */ - then: then, - - /** - `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same - as the catch block of a try/catch statement. - - ```js - function findAuthor(){ - throw new Error('couldn't find that author'); - } - - // synchronous - try { - findAuthor(); - } catch(reason) { - // something went wrong - } - - // async with promises - findAuthor().catch(function(reason){ - // something went wrong - }); - ``` - - @method catch - @param {Function} onRejection - Useful for tooling. - @return {Promise} - */ - 'catch': function _catch(onRejection) { - return this.then(null, onRejection); - } -}; - -function polyfill() { - var local = undefined; - - if (typeof global !== 'undefined') { - local = global; - } else if (typeof self !== 'undefined') { - local = self; - } else { - try { - local = Function('return this')(); - } catch (e) { - throw new Error('polyfill failed because global object is unavailable in this environment'); - } - } - - var P = local.Promise; - - if (P) { - var promiseToString = null; - try { - promiseToString = Object.prototype.toString.call(P.resolve()); - } catch (e) { - // silently ignored - } - - if (promiseToString === '[object Promise]' && !P.cast) { - return; - } - } - - local.Promise = Promise; -} - -// Strange compat.. -Promise.polyfill = polyfill; -Promise.Promise = Promise; - -return Promise; - -}))); - - -}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"_process":3}],2:[function(_dereq_,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -function EventEmitter() { - this._events = this._events || {}; - this._maxListeners = this._maxListeners || undefined; -} -module.exports = EventEmitter; - -// Backwards-compat with node 0.10.x -EventEmitter.EventEmitter = EventEmitter; - -EventEmitter.prototype._events = undefined; -EventEmitter.prototype._maxListeners = undefined; - -// By default EventEmitters will print a warning if more than 10 listeners are -// added to it. This is a useful default which helps finding memory leaks. -EventEmitter.defaultMaxListeners = 10; - -// Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. -EventEmitter.prototype.setMaxListeners = function(n) { - if (!isNumber(n) || n < 0 || isNaN(n)) - throw TypeError('n must be a positive number'); - this._maxListeners = n; - return this; -}; - -EventEmitter.prototype.emit = function(type) { - var er, handler, len, args, i, listeners; - - if (!this._events) - this._events = {}; - - // If there is no 'error' event listener then throw. - if (type === 'error') { - if (!this._events.error || - (isObject(this._events.error) && !this._events.error.length)) { - er = arguments[1]; - if (er instanceof Error) { - throw er; // Unhandled 'error' event - } else { - // At least give some kind of context to the user - var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); - err.context = er; - throw err; - } - } - } - - handler = this._events[type]; - - if (isUndefined(handler)) - return false; - - if (isFunction(handler)) { - switch (arguments.length) { - // fast cases - case 1: - handler.call(this); - break; - case 2: - handler.call(this, arguments[1]); - break; - case 3: - handler.call(this, arguments[1], arguments[2]); - break; - // slower - default: - args = Array.prototype.slice.call(arguments, 1); - handler.apply(this, args); - } - } else if (isObject(handler)) { - args = Array.prototype.slice.call(arguments, 1); - listeners = handler.slice(); - len = listeners.length; - for (i = 0; i < len; i++) - listeners[i].apply(this, args); - } - - return true; -}; - -EventEmitter.prototype.addListener = function(type, listener) { - var m; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events) - this._events = {}; - - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (this._events.newListener) - this.emit('newListener', type, - isFunction(listener.listener) ? - listener.listener : listener); - - if (!this._events[type]) - // Optimize the case of one listener. Don't need the extra array object. - this._events[type] = listener; - else if (isObject(this._events[type])) - // If we've already got an array, just append. - this._events[type].push(listener); - else - // Adding the second element, need to change to array. - this._events[type] = [this._events[type], listener]; - - // Check for listener leak - if (isObject(this._events[type]) && !this._events[type].warned) { - if (!isUndefined(this._maxListeners)) { - m = this._maxListeners; - } else { - m = EventEmitter.defaultMaxListeners; - } - - if (m && m > 0 && this._events[type].length > m) { - this._events[type].warned = true; - console.error('(node) warning: possible EventEmitter memory ' + - 'leak detected. %d listeners added. ' + - 'Use emitter.setMaxListeners() to increase limit.', - this._events[type].length); - if (typeof console.trace === 'function') { - // not supported in IE 10 - console.trace(); - } - } - } - - return this; -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.once = function(type, listener) { - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - var fired = false; - - function g() { - this.removeListener(type, g); - - if (!fired) { - fired = true; - listener.apply(this, arguments); - } - } - - g.listener = listener; - this.on(type, g); - - return this; -}; - -// emits a 'removeListener' event iff the listener was removed -EventEmitter.prototype.removeListener = function(type, listener) { - var list, position, length, i; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events || !this._events[type]) - return this; - - list = this._events[type]; - length = list.length; - position = -1; - - if (list === listener || - (isFunction(list.listener) && list.listener === listener)) { - delete this._events[type]; - if (this._events.removeListener) - this.emit('removeListener', type, listener); - - } else if (isObject(list)) { - for (i = length; i-- > 0;) { - if (list[i] === listener || - (list[i].listener && list[i].listener === listener)) { - position = i; - break; - } - } - - if (position < 0) - return this; - - if (list.length === 1) { - list.length = 0; - delete this._events[type]; - } else { - list.splice(position, 1); - } - - if (this._events.removeListener) - this.emit('removeListener', type, listener); - } - - return this; -}; - -EventEmitter.prototype.removeAllListeners = function(type) { - var key, listeners; - - if (!this._events) - return this; - - // not listening for removeListener, no need to emit - if (!this._events.removeListener) { - if (arguments.length === 0) - this._events = {}; - else if (this._events[type]) - delete this._events[type]; - return this; - } - - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - for (key in this._events) { - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = {}; - return this; - } - - listeners = this._events[type]; - - if (isFunction(listeners)) { - this.removeListener(type, listeners); - } else if (listeners) { - // LIFO order - while (listeners.length) - this.removeListener(type, listeners[listeners.length - 1]); - } - delete this._events[type]; - - return this; -}; - -EventEmitter.prototype.listeners = function(type) { - var ret; - if (!this._events || !this._events[type]) - ret = []; - else if (isFunction(this._events[type])) - ret = [this._events[type]]; - else - ret = this._events[type].slice(); - return ret; -}; - -EventEmitter.prototype.listenerCount = function(type) { - if (this._events) { - var evlistener = this._events[type]; - - if (isFunction(evlistener)) - return 1; - else if (evlistener) - return evlistener.length; - } - return 0; -}; - -EventEmitter.listenerCount = function(emitter, type) { - return emitter.listenerCount(type); -}; - -function isFunction(arg) { - return typeof arg === 'function'; -} - -function isNumber(arg) { - return typeof arg === 'number'; -} - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} - -function isUndefined(arg) { - return arg === void 0; -} - -},{}],3:[function(_dereq_,module,exports){ -// shim for using process in browser -var process = module.exports = {}; - -// cached from whatever global is present so that test runners that stub it -// don't break things. But we need to wrap it in a try catch in case it is -// wrapped in strict mode code which doesn't define any globals. It's inside a -// function because try/catches deoptimize in certain engines. - -var cachedSetTimeout; -var cachedClearTimeout; - -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} -function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); -} -(function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } -} ()) -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // 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 - return cachedSetTimeout.call(this, fun, 0); - } - } - - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // 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. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - -} -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; - -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } -} - -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} - -process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -}; - -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; -process.prependListener = noop; -process.prependOnceListener = noop; - -process.listeners = function (name) { return [] } - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; - -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; - -},{}],4:[function(_dereq_,module,exports){ -var bundleFn = arguments[3]; -var sources = arguments[4]; -var cache = arguments[5]; - -var stringify = JSON.stringify; - -module.exports = function (fn, options) { - var wkey; - var cacheKeys = Object.keys(cache); - - for (var i = 0, l = cacheKeys.length; i < l; i++) { - var key = cacheKeys[i]; - var exp = cache[key].exports; - // Using babel as a transpiler to use esmodule, the export will always - // be an object with the default export as a property of it. To ensure - // the existing api and babel esmodule exports are both supported we - // check for both - if (exp === fn || exp && exp.default === fn) { - wkey = key; - break; - } - } - - if (!wkey) { - wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); - var wcache = {}; - for (var i = 0, l = cacheKeys.length; i < l; i++) { - var key = cacheKeys[i]; - wcache[key] = key; - } - sources[wkey] = [ - Function(['require','module','exports'], '(' + fn + ')(self)'), - wcache - ]; - } - var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); - - var scache = {}; scache[wkey] = wkey; - sources[skey] = [ - Function(['require'], ( - // try to call default if defined to also support babel esmodule - // exports - 'var f = require(' + stringify(wkey) + ');' + - '(f.default ? f.default : f)(self);' - )), - scache - ]; - - var workerSources = {}; - resolveSources(skey); - - function resolveSources(key) { - workerSources[key] = true; - - for (var depPath in sources[key][1]) { - var depKey = sources[key][1][depPath]; - if (!workerSources[depKey]) { - resolveSources(depKey); - } - } - } - - var src = '(' + bundleFn + ')({' - + Object.keys(workerSources).map(function (key) { - return stringify(key) + ':[' - + sources[key][0] - + ',' + stringify(sources[key][1]) + ']' - ; - }).join(',') - + '},{},[' + stringify(skey) + '])' - ; - - var URL = window.URL || window.webkitURL || window.mozURL || window.msURL; - - var blob = new Blob([src], { type: 'text/javascript' }); - if (options && options.bare) { return blob; } - var workerUrl = URL.createObjectURL(blob); - var worker = new Worker(workerUrl); - worker.objectURL = workerUrl; - return worker; -}; - -},{}],5:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.createDefaultConfig = createDefaultConfig; -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var defaultConfig = exports.defaultConfig = { - enableWorker: false, - enableStashBuffer: true, - stashInitialSize: undefined, - - isLive: false, - - lazyLoad: true, - lazyLoadMaxDuration: 3 * 60, - lazyLoadRecoverDuration: 30, - deferLoadAfterSourceOpen: true, - - // autoCleanupSourceBuffer: default as false, leave unspecified - autoCleanupMaxBackwardDuration: 3 * 60, - autoCleanupMinBackwardDuration: 2 * 60, - - statisticsInfoReportInterval: 600, - - fixAudioTimestampGap: true, - - accurateSeek: false, - seekType: 'range', // [range, param, custom] - seekParamStart: 'bstart', - seekParamEnd: 'bend', - rangeLoadZeroStart: false, - customSeekHandler: undefined, - reuseRedirectedURL: false - // referrerPolicy: leave as unspecified -}; - -function createDefaultConfig() { - return Object.assign({}, defaultConfig); -} - -},{}],6:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var _ioController = _dereq_('../io/io-controller.js'); - -var _ioController2 = _interopRequireDefault(_ioController); - -var _config = _dereq_('../config.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var Features = function () { - function Features() { - _classCallCheck(this, Features); - } - - _createClass(Features, null, [{ - key: 'supportMSEH264Playback', - value: function supportMSEH264Playback() { - return window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'); - } - }, { - key: 'supportNetworkStreamIO', - value: function supportNetworkStreamIO() { - var ioctl = new _ioController2.default({}, (0, _config.createDefaultConfig)()); - var loaderType = ioctl.loaderType; - ioctl.destroy(); - return loaderType == 'fetch-stream-loader' || loaderType == 'xhr-moz-chunked-loader'; - } - }, { - key: 'getNetworkLoaderTypeName', - value: function getNetworkLoaderTypeName() { - var ioctl = new _ioController2.default({}, (0, _config.createDefaultConfig)()); - var loaderType = ioctl.loaderType; - ioctl.destroy(); - return loaderType; - } - }, { - key: 'supportNativeMediaPlayback', - value: function supportNativeMediaPlayback(mimeType) { - if (Features.videoElement == undefined) { - Features.videoElement = window.document.createElement('video'); - } - var canPlay = Features.videoElement.canPlayType(mimeType); - return canPlay === 'probably' || canPlay == 'maybe'; - } - }, { - key: 'getFeatureList', - value: function getFeatureList() { - var features = { - mseFlvPlayback: false, - mseLiveFlvPlayback: false, - networkStreamIO: false, - networkLoaderName: '', - nativeMP4H264Playback: false, - nativeWebmVP8Playback: false, - nativeWebmVP9Playback: false - }; - - features.mseFlvPlayback = Features.supportMSEH264Playback(); - features.networkStreamIO = Features.supportNetworkStreamIO(); - features.networkLoaderName = Features.getNetworkLoaderTypeName(); - features.mseLiveFlvPlayback = features.mseFlvPlayback && features.networkStreamIO; - features.nativeMP4H264Playback = Features.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"'); - features.nativeWebmVP8Playback = Features.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"'); - features.nativeWebmVP9Playback = Features.supportNativeMediaPlayback('video/webm; codecs="vp9"'); - - return features; - } - }]); - - return Features; -}(); - -exports.default = Features; - -},{"../config.js":5,"../io/io-controller.js":23}],7:[function(_dereq_,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var MediaInfo = function () { - function MediaInfo() { - _classCallCheck(this, MediaInfo); - - this.mimeType = null; - this.duration = null; - - this.hasAudio = null; - this.hasVideo = null; - this.audioCodec = null; - this.videoCodec = null; - this.audioDataRate = null; - this.videoDataRate = null; - - this.audioSampleRate = null; - this.audioChannelCount = null; - - this.width = null; - this.height = null; - this.fps = null; - this.profile = null; - this.level = null; - this.refFrames = null; - this.chromaFormat = null; - this.sarNum = null; - this.sarDen = null; - - this.metadata = null; - this.segments = null; // MediaInfo[] - this.segmentCount = null; - this.hasKeyframesIndex = null; - this.keyframesIndex = null; - } - - _createClass(MediaInfo, [{ - key: "isComplete", - value: function isComplete() { - var audioInfoComplete = this.hasAudio === false || this.hasAudio === true && this.audioCodec != null && this.audioSampleRate != null && this.audioChannelCount != null; - - var videoInfoComplete = this.hasVideo === false || this.hasVideo === true && this.videoCodec != null && this.width != null && this.height != null && this.fps != null && this.profile != null && this.level != null && this.refFrames != null && this.chromaFormat != null && this.sarNum != null && this.sarDen != null; - - // keyframesIndex may not be present - return this.mimeType != null && this.duration != null && this.metadata != null && this.hasKeyframesIndex != null && audioInfoComplete && videoInfoComplete; - } - }, { - key: "isSeekable", - value: function isSeekable() { - return this.hasKeyframesIndex === true; - } - }, { - key: "getNearestKeyframe", - value: function getNearestKeyframe(milliseconds) { - if (this.keyframesIndex == null) { - return null; - } - - var table = this.keyframesIndex; - var keyframeIdx = this._search(table.times, milliseconds); - - return { - index: keyframeIdx, - milliseconds: table.times[keyframeIdx], - fileposition: table.filepositions[keyframeIdx] - }; - } - }, { - key: "_search", - value: function _search(list, value) { - var idx = 0; - - var last = list.length - 1; - var mid = 0; - var lbound = 0; - var ubound = last; - - if (value < list[0]) { - idx = 0; - lbound = ubound + 1; // skip search - } - - while (lbound <= ubound) { - mid = lbound + Math.floor((ubound - lbound) / 2); - if (mid === last || value >= list[mid] && value < list[mid + 1]) { - idx = mid; - break; - } else if (list[mid] < value) { - lbound = mid + 1; - } else { - ubound = mid - 1; - } - } - - return idx; - } - }]); - - return MediaInfo; -}(); - -exports.default = MediaInfo; - -},{}],8:[function(_dereq_,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// Represents an media sample (audio / video) -var SampleInfo = exports.SampleInfo = function SampleInfo(dts, pts, duration, originalDts, isSync) { - _classCallCheck(this, SampleInfo); - - this.dts = dts; - this.pts = pts; - this.duration = duration; - this.originalDts = originalDts; - this.isSyncPoint = isSync; - this.fileposition = null; -}; - -// Media Segment concept is defined in Media Source Extensions spec. -// Particularly in ISO BMFF format, an Media Segment contains a moof box followed by a mdat box. - - -var MediaSegmentInfo = exports.MediaSegmentInfo = function () { - function MediaSegmentInfo() { - _classCallCheck(this, MediaSegmentInfo); - - this.beginDts = 0; - this.endDts = 0; - this.beginPts = 0; - this.endPts = 0; - this.originalBeginDts = 0; - this.originalEndDts = 0; - this.syncPoints = []; // SampleInfo[n], for video IDR frames only - this.firstSample = null; // SampleInfo - this.lastSample = null; // SampleInfo - } - - _createClass(MediaSegmentInfo, [{ - key: "appendSyncPoint", - value: function appendSyncPoint(sampleInfo) { - // also called Random Access Point - sampleInfo.isSyncPoint = true; - this.syncPoints.push(sampleInfo); - } - }]); - - return MediaSegmentInfo; -}(); - -// Ordered list for recording video IDR frames, sorted by originalDts - - -var IDRSampleList = exports.IDRSampleList = function () { - function IDRSampleList() { - _classCallCheck(this, IDRSampleList); - - this._list = []; - } - - _createClass(IDRSampleList, [{ - key: "clear", - value: function clear() { - this._list = []; - } - }, { - key: "appendArray", - value: function appendArray(syncPoints) { - var list = this._list; - - if (syncPoints.length === 0) { - return; - } - - if (list.length > 0 && syncPoints[0].originalDts < list[list.length - 1].originalDts) { - this.clear(); - } - - Array.prototype.push.apply(list, syncPoints); - } - }, { - key: "getLastSyncPointBeforeDts", - value: function getLastSyncPointBeforeDts(dts) { - if (this._list.length == 0) { - return null; - } - - var list = this._list; - var idx = 0; - var last = list.length - 1; - var mid = 0; - var lbound = 0; - var ubound = last; - - if (dts < list[0].dts) { - idx = 0; - lbound = ubound + 1; - } - - while (lbound <= ubound) { - mid = lbound + Math.floor((ubound - lbound) / 2); - if (mid === last || dts >= list[mid].dts && dts < list[mid + 1].dts) { - idx = mid; - break; - } else if (list[mid].dts < dts) { - lbound = mid + 1; - } else { - ubound = mid - 1; - } - } - return this._list[idx]; - } - }]); - - return IDRSampleList; -}(); - -// Data structure for recording information of media segments in single track. - - -var MediaSegmentInfoList = exports.MediaSegmentInfoList = function () { - function MediaSegmentInfoList(type) { - _classCallCheck(this, MediaSegmentInfoList); - - this._type = type; - this._list = []; - this._lastAppendLocation = -1; // cached last insert location - } - - _createClass(MediaSegmentInfoList, [{ - key: "isEmpty", - value: function isEmpty() { - return this._list.length === 0; - } - }, { - key: "clear", - value: function clear() { - this._list = []; - this._lastAppendLocation = -1; - } - }, { - key: "_searchNearestSegmentBefore", - value: function _searchNearestSegmentBefore(originalBeginDts) { - var list = this._list; - if (list.length === 0) { - return -2; - } - var last = list.length - 1; - var mid = 0; - var lbound = 0; - var ubound = last; - - var idx = 0; - - if (originalBeginDts < list[0].originalBeginDts) { - idx = -1; - return idx; - } - - while (lbound <= ubound) { - mid = lbound + Math.floor((ubound - lbound) / 2); - if (mid === last || originalBeginDts > list[mid].lastSample.originalDts && originalBeginDts < list[mid + 1].originalBeginDts) { - idx = mid; - break; - } else if (list[mid].originalBeginDts < originalBeginDts) { - lbound = mid + 1; - } else { - ubound = mid - 1; - } - } - return idx; - } - }, { - key: "_searchNearestSegmentAfter", - value: function _searchNearestSegmentAfter(originalBeginDts) { - return this._searchNearestSegmentBefore(originalBeginDts) + 1; - } - }, { - key: "append", - value: function append(mediaSegmentInfo) { - var list = this._list; - var msi = mediaSegmentInfo; - var lastAppendIdx = this._lastAppendLocation; - var insertIdx = 0; - - if (lastAppendIdx !== -1 && lastAppendIdx < list.length && msi.originalBeginDts >= list[lastAppendIdx].lastSample.originalDts && (lastAppendIdx === list.length - 1 || lastAppendIdx < list.length - 1 && msi.originalBeginDts < list[lastAppendIdx + 1].originalBeginDts)) { - insertIdx = lastAppendIdx + 1; // use cached location idx - } else { - if (list.length > 0) { - insertIdx = this._searchNearestSegmentBefore(msi.originalBeginDts) + 1; - } - } - - this._lastAppendLocation = insertIdx; - this._list.splice(insertIdx, 0, msi); - } - }, { - key: "getLastSegmentBefore", - value: function getLastSegmentBefore(originalBeginDts) { - var idx = this._searchNearestSegmentBefore(originalBeginDts); - if (idx >= 0) { - return this._list[idx]; - } else { - // -1 - return null; - } - } - }, { - key: "getLastSampleBefore", - value: function getLastSampleBefore(originalBeginDts) { - var segment = this.getLastSegmentBefore(originalBeginDts); - if (segment != null) { - return segment.lastSample; - } else { - return null; - } - } - }, { - key: "getLastSyncPointBefore", - value: function getLastSyncPointBefore(originalBeginDts) { - var segmentIdx = this._searchNearestSegmentBefore(originalBeginDts); - var syncPoints = this._list[segmentIdx].syncPoints; - while (syncPoints.length === 0 && segmentIdx > 0) { - segmentIdx--; - syncPoints = this._list[segmentIdx].syncPoints; - } - if (syncPoints.length > 0) { - return syncPoints[syncPoints.length - 1]; - } else { - return null; - } - } - }, { - key: "type", - get: function get() { - return this._type; - } - }, { - key: "length", - get: function get() { - return this._list.length; - } - }]); - - return MediaSegmentInfoList; -}(); - -},{}],9:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var _events = _dereq_('events'); - -var _events2 = _interopRequireDefault(_events); - -var _logger = _dereq_('../utils/logger.js'); - -var _logger2 = _interopRequireDefault(_logger); - -var _browser = _dereq_('../utils/browser.js'); - -var _browser2 = _interopRequireDefault(_browser); - -var _mseEvents = _dereq_('./mse-events.js'); - -var _mseEvents2 = _interopRequireDefault(_mseEvents); - -var _mediaSegmentInfo = _dereq_('./media-segment-info.js'); - -var _exception = _dereq_('../utils/exception.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -// Media Source Extensions controller -var MSEController = function () { - function MSEController(config) { - _classCallCheck(this, MSEController); - - this.TAG = 'MSEController'; - - this._config = config; - this._emitter = new _events2.default(); - - if (this._config.isLive && this._config.autoCleanupSourceBuffer == undefined) { - // For live stream, do auto cleanup by default - this._config.autoCleanupSourceBuffer = true; - } - - this.e = { - onSourceOpen: this._onSourceOpen.bind(this), - onSourceEnded: this._onSourceEnded.bind(this), - onSourceClose: this._onSourceClose.bind(this), - onSourceBufferError: this._onSourceBufferError.bind(this), - onSourceBufferUpdateEnd: this._onSourceBufferUpdateEnd.bind(this) - }; - - this._mediaSource = null; - this._mediaSourceObjectURL = null; - this._mediaElement = null; - - this._isBufferFull = false; - this._hasPendingEos = false; - - this._requireSetMediaDuration = false; - this._pendingMediaDuration = 0; - - this._pendingSourceBufferInit = []; - this._mimeTypes = { - video: null, - audio: null - }; - this._sourceBuffers = { - video: null, - audio: null - }; - this._lastInitSegments = { - video: null, - audio: null - }; - this._pendingSegments = { - video: [], - audio: [] - }; - this._pendingRemoveRanges = { - video: [], - audio: [] - }; - this._idrList = new _mediaSegmentInfo.IDRSampleList(); - } - - _createClass(MSEController, [{ - key: 'destroy', - value: function destroy() { - if (this._mediaElement || this._mediaSource) { - this.detachMediaElement(); - } - this.e = null; - this._emitter.removeAllListeners(); - this._emitter = null; - } - }, { - key: 'on', - value: function on(event, listener) { - this._emitter.addListener(event, listener); - } - }, { - key: 'off', - value: function off(event, listener) { - this._emitter.removeListener(event, listener); - } - }, { - key: 'attachMediaElement', - value: function attachMediaElement(mediaElement) { - if (this._mediaSource) { - throw new _exception.IllegalStateException('MediaSource has been attached to an HTMLMediaElement!'); - } - var ms = this._mediaSource = new window.MediaSource(); - ms.addEventListener('sourceopen', this.e.onSourceOpen); - ms.addEventListener('sourceended', this.e.onSourceEnded); - ms.addEventListener('sourceclose', this.e.onSourceClose); - - this._mediaElement = mediaElement; - this._mediaSourceObjectURL = window.URL.createObjectURL(this._mediaSource); - mediaElement.src = this._mediaSourceObjectURL; - } - }, { - key: 'detachMediaElement', - value: function detachMediaElement() { - if (this._mediaSource) { - var ms = this._mediaSource; - for (var type in this._sourceBuffers) { - // pending segments should be discard - var ps = this._pendingSegments[type]; - ps.splice(0, ps.length); - this._pendingSegments[type] = null; - this._pendingRemoveRanges[type] = null; - this._lastInitSegments[type] = null; - - // remove all sourcebuffers - var sb = this._sourceBuffers[type]; - if (sb) { - if (ms.readyState !== 'closed') { - ms.removeSourceBuffer(sb); - sb.removeEventListener('error', this.e.onSourceBufferError); - sb.removeEventListener('updateend', this.e.onSourceBufferUpdateEnd); - } - this._mimeTypes[type] = null; - this._sourceBuffers[type] = null; - } - } - if (ms.readyState === 'open') { - try { - ms.endOfStream(); - } catch (error) { - _logger2.default.e(this.TAG, error.message); - } - } - ms.removeEventListener('sourceopen', this.e.onSourceOpen); - ms.removeEventListener('sourceended', this.e.onSourceEnded); - ms.removeEventListener('sourceclose', this.e.onSourceClose); - this._pendingSourceBufferInit = []; - this._isBufferFull = false; - this._idrList.clear(); - this._mediaSource = null; - } - - if (this._mediaElement) { - this._mediaElement.src = ''; - this._mediaElement.removeAttribute('src'); - this._mediaElement = null; - } - if (this._mediaSourceObjectURL) { - window.URL.revokeObjectURL(this._mediaSourceObjectURL); - this._mediaSourceObjectURL = null; - } - } - }, { - key: 'appendInitSegment', - value: function appendInitSegment(initSegment, deferred) { - if (!this._mediaSource || this._mediaSource.readyState !== 'open') { - // sourcebuffer creation requires mediaSource.readyState === 'open' - // so we defer the sourcebuffer creation, until sourceopen event triggered - this._pendingSourceBufferInit.push(initSegment); - // make sure that this InitSegment is in the front of pending segments queue - this._pendingSegments[initSegment.type].push(initSegment); - return; - } - - var is = initSegment; - var mimeType = '' + is.container; - if (is.codec && is.codec.length > 0) { - mimeType += ';codecs=' + is.codec; - } - - var firstInitSegment = false; - - _logger2.default.v(this.TAG, 'Received Initialization Segment, mimeType: ' + mimeType); - this._lastInitSegments[is.type] = is; - - if (mimeType !== this._mimeTypes[is.type]) { - if (!this._mimeTypes[is.type]) { - // empty, first chance create sourcebuffer - firstInitSegment = true; - try { - var sb = this._sourceBuffers[is.type] = this._mediaSource.addSourceBuffer(mimeType); - sb.addEventListener('error', this.e.onSourceBufferError); - sb.addEventListener('updateend', this.e.onSourceBufferUpdateEnd); - } catch (error) { - _logger2.default.e(this.TAG, error.message); - this._emitter.emit(_mseEvents2.default.ERROR, { code: error.code, msg: error.message }); - return; - } - } else { - _logger2.default.v(this.TAG, 'Notice: ' + is.type + ' mimeType changed, origin: ' + this._mimeTypes[is.type] + ', target: ' + mimeType); - } - this._mimeTypes[is.type] = mimeType; - } - - if (!deferred) { - // deferred means this InitSegment has been pushed to pendingSegments queue - this._pendingSegments[is.type].push(is); - } - if (!firstInitSegment) { - // append immediately only if init segment in subsequence - if (this._sourceBuffers[is.type] && !this._sourceBuffers[is.type].updating) { - this._doAppendSegments(); - } - } - if (_browser2.default.safari && is.container === 'audio/mpeg' && is.mediaDuration > 0) { - // 'audio/mpeg' track under Safari may cause MediaElement's duration to be NaN - // Manually correct MediaSource.duration to make progress bar seekable, and report right duration - this._requireSetMediaDuration = true; - this._pendingMediaDuration = is.mediaDuration / 1000; // in seconds - this._updateMediaSourceDuration(); - } - } - }, { - key: 'appendMediaSegment', - value: function appendMediaSegment(mediaSegment) { - var ms = mediaSegment; - this._pendingSegments[ms.type].push(ms); - - if (this._config.autoCleanupSourceBuffer && this._needCleanupSourceBuffer()) { - this._doCleanupSourceBuffer(); - } - - var sb = this._sourceBuffers[ms.type]; - if (sb && !sb.updating && !this._hasPendingRemoveRanges()) { - this._doAppendSegments(); - } - } - }, { - key: 'seek', - value: function seek(seconds) { - // remove all appended buffers - for (var type in this._sourceBuffers) { - if (!this._sourceBuffers[type]) { - continue; - } - - // abort current buffer append algorithm - var sb = this._sourceBuffers[type]; - if (this._mediaSource.readyState === 'open') { - try { - // If range removal algorithm is running, InvalidStateError will be throwed - // Ignore it. - sb.abort(); - } catch (error) { - _logger2.default.e(this.TAG, error.message); - } - } - - // IDRList should be clear - this._idrList.clear(); - - // pending segments should be discard - var ps = this._pendingSegments[type]; - ps.splice(0, ps.length); - - if (this._mediaSource.readyState === 'closed') { - // Parent MediaSource object has been detached from HTMLMediaElement - continue; - } - - // record ranges to be remove from SourceBuffer - for (var i = 0; i < sb.buffered.length; i++) { - var start = sb.buffered.start(i); - var end = sb.buffered.end(i); - this._pendingRemoveRanges[type].push({ start: start, end: end }); - } - - // if sb is not updating, let's remove ranges now! - if (!sb.updating) { - this._doRemoveRanges(); - } - - // Safari 10 may get InvalidStateError in the later appendBuffer() after SourceBuffer.remove() call - // Internal parser's state may be invalid at this time. Re-append last InitSegment to workaround. - // Related issue: https://bugs.webkit.org/show_bug.cgi?id=159230 - if (_browser2.default.safari) { - var lastInitSegment = this._lastInitSegments[type]; - if (lastInitSegment) { - this._pendingSegments[type].push(lastInitSegment); - if (!sb.updating) { - this._doAppendSegments(); - } - } - } - } - } - }, { - key: 'endOfStream', - value: function endOfStream() { - var ms = this._mediaSource; - var sb = this._sourceBuffers; - if (!ms || ms.readyState !== 'open') { - if (ms && ms.readyState === 'closed' && this._hasPendingSegments()) { - // If MediaSource hasn't turned into open state, and there're pending segments - // Mark pending endOfStream, defer call until all pending segments appended complete - this._hasPendingEos = true; - } - return; - } - if (sb.video && sb.video.updating || sb.audio && sb.audio.updating) { - // If any sourcebuffer is updating, defer endOfStream operation - // See _onSourceBufferUpdateEnd() - this._hasPendingEos = true; - } else { - this._hasPendingEos = false; - // Notify media data loading complete - // This is helpful for correcting total duration to match last media segment - // Otherwise MediaElement's ended event may not be triggered - ms.endOfStream(); - } - } - }, { - key: 'getNearestKeyframe', - value: function getNearestKeyframe(dts) { - return this._idrList.getLastSyncPointBeforeDts(dts); - } - }, { - key: '_needCleanupSourceBuffer', - value: function _needCleanupSourceBuffer() { - if (!this._config.autoCleanupSourceBuffer) { - return false; - } - - var currentTime = this._mediaElement.currentTime; - - for (var type in this._sourceBuffers) { - var sb = this._sourceBuffers[type]; - if (sb) { - var buffered = sb.buffered; - if (buffered.length >= 1) { - if (currentTime - buffered.start(0) >= this._config.autoCleanupMaxBackwardDuration) { - return true; - } - } - } - } - - return false; - } - }, { - key: '_doCleanupSourceBuffer', - value: function _doCleanupSourceBuffer() { - var currentTime = this._mediaElement.currentTime; - - for (var type in this._sourceBuffers) { - var sb = this._sourceBuffers[type]; - if (sb) { - var buffered = sb.buffered; - var doRemove = false; - - for (var i = 0; i < buffered.length; i++) { - var start = buffered.start(i); - var end = buffered.end(i); - - if (start <= currentTime && currentTime < end + 3) { - // padding 3 seconds - if (currentTime - start >= this._config.autoCleanupMaxBackwardDuration) { - doRemove = true; - var removeEnd = currentTime - this._config.autoCleanupMinBackwardDuration; - this._pendingRemoveRanges[type].push({ start: start, end: removeEnd }); - } - } else if (end < currentTime) { - doRemove = true; - this._pendingRemoveRanges[type].push({ start: start, end: end }); - } - } - - if (doRemove && !sb.updating) { - this._doRemoveRanges(); - } - } - } - } - }, { - key: '_updateMediaSourceDuration', - value: function _updateMediaSourceDuration() { - var sb = this._sourceBuffers; - if (this._mediaElement.readyState === 0 || this._mediaSource.readyState !== 'open') { - return; - } - if (sb.video && sb.video.updating || sb.audio && sb.audio.updating) { - return; - } - - var current = this._mediaSource.duration; - var target = this._pendingMediaDuration; - - if (target > 0 && (isNaN(current) || target > current)) { - _logger2.default.v(this.TAG, 'Update MediaSource duration from ' + current + ' to ' + target); - this._mediaSource.duration = target; - } - - this._requireSetMediaDuration = false; - this._pendingMediaDuration = 0; - } - }, { - key: '_doRemoveRanges', - value: function _doRemoveRanges() { - for (var type in this._pendingRemoveRanges) { - if (!this._sourceBuffers[type] || this._sourceBuffers[type].updating) { - continue; - } - var sb = this._sourceBuffers[type]; - var ranges = this._pendingRemoveRanges[type]; - while (ranges.length && !sb.updating) { - var range = ranges.shift(); - sb.remove(range.start, range.end); - } - } - } - }, { - key: '_doAppendSegments', - value: function _doAppendSegments() { - var pendingSegments = this._pendingSegments; - - for (var type in pendingSegments) { - if (!this._sourceBuffers[type] || this._sourceBuffers[type].updating) { - continue; - } - - if (pendingSegments[type].length > 0) { - var segment = pendingSegments[type].shift(); - - if (segment.timestampOffset) { - // For MPEG audio stream in MSE, if unbuffered-seeking occurred - // We need explicitly set timestampOffset to the desired point in timeline for mpeg SourceBuffer. - var currentOffset = this._sourceBuffers[type].timestampOffset; - var targetOffset = segment.timestampOffset / 1000; // in seconds - - var delta = Math.abs(currentOffset - targetOffset); - if (delta > 0.1) { - // If time delta > 100ms - _logger2.default.v(this.TAG, 'Update MPEG audio timestampOffset from ' + currentOffset + ' to ' + targetOffset); - this._sourceBuffers[type].timestampOffset = targetOffset; - } - delete segment.timestampOffset; - } - - if (!segment.data || segment.data.byteLength === 0) { - // Ignore empty buffer - continue; - } - - try { - this._sourceBuffers[type].appendBuffer(segment.data); - this._isBufferFull = false; - if (type === 'video' && segment.hasOwnProperty('info')) { - this._idrList.appendArray(segment.info.syncPoints); - } - } catch (error) { - this._pendingSegments[type].unshift(segment); - if (error.code === 22) { - // QuotaExceededError - /* Notice that FireFox may not throw QuotaExceededError if SourceBuffer is full - * Currently we can only do lazy-load to avoid SourceBuffer become scattered. - * SourceBuffer eviction policy may be changed in future version of FireFox. - * - * Related issues: - * https://bugzilla.mozilla.org/show_bug.cgi?id=1279885 - * https://bugzilla.mozilla.org/show_bug.cgi?id=1280023 - */ - - // report buffer full, abort network IO - if (!this._isBufferFull) { - this._emitter.emit(_mseEvents2.default.BUFFER_FULL); - } - this._isBufferFull = true; - } else { - _logger2.default.e(this.TAG, error.message); - this._emitter.emit(_mseEvents2.default.ERROR, { code: error.code, msg: error.message }); - } - } - } - } - } - }, { - key: '_onSourceOpen', - value: function _onSourceOpen() { - _logger2.default.v(this.TAG, 'MediaSource onSourceOpen'); - this._mediaSource.removeEventListener('sourceopen', this.e.onSourceOpen); - // deferred sourcebuffer creation / initialization - if (this._pendingSourceBufferInit.length > 0) { - var pendings = this._pendingSourceBufferInit; - while (pendings.length) { - var segment = pendings.shift(); - this.appendInitSegment(segment, true); - } - } - // there may be some pending media segments, append them - if (this._hasPendingSegments()) { - this._doAppendSegments(); - } - this._emitter.emit(_mseEvents2.default.SOURCE_OPEN); - } - }, { - key: '_onSourceEnded', - value: function _onSourceEnded() { - // fired on endOfStream - _logger2.default.v(this.TAG, 'MediaSource onSourceEnded'); - } - }, { - key: '_onSourceClose', - value: function _onSourceClose() { - // fired on detaching from media element - _logger2.default.v(this.TAG, 'MediaSource onSourceClose'); - if (this._mediaSource && this.e != null) { - this._mediaSource.removeEventListener('sourceopen', this.e.onSourceOpen); - this._mediaSource.removeEventListener('sourceended', this.e.onSourceEnded); - this._mediaSource.removeEventListener('sourceclose', this.e.onSourceClose); - } - } - }, { - key: '_hasPendingSegments', - value: function _hasPendingSegments() { - var ps = this._pendingSegments; - return ps.video.length > 0 || ps.audio.length > 0; - } - }, { - key: '_hasPendingRemoveRanges', - value: function _hasPendingRemoveRanges() { - var prr = this._pendingRemoveRanges; - return prr.video.length > 0 || prr.audio.length > 0; - } - }, { - key: '_onSourceBufferUpdateEnd', - value: function _onSourceBufferUpdateEnd() { - if (this._requireSetMediaDuration) { - this._updateMediaSourceDuration(); - } else if (this._hasPendingRemoveRanges()) { - this._doRemoveRanges(); - } else if (this._hasPendingSegments()) { - this._doAppendSegments(); - } else if (this._hasPendingEos) { - this.endOfStream(); - } - this._emitter.emit(_mseEvents2.default.UPDATE_END); - } - }, { - key: '_onSourceBufferError', - value: function _onSourceBufferError(e) { - _logger2.default.e(this.TAG, 'SourceBuffer Error: ' + e); - // this error might not always be fatal, just ignore it - } - }]); - - return MSEController; -}(); - -exports.default = MSEController; - -},{"../utils/browser.js":39,"../utils/exception.js":40,"../utils/logger.js":41,"./media-segment-info.js":8,"./mse-events.js":10,"events":2}],10:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var MSEEvents = { - ERROR: 'error', - SOURCE_OPEN: 'source_open', - UPDATE_END: 'update_end', - BUFFER_FULL: 'buffer_full' -}; - -exports.default = MSEEvents; - -},{}],11:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var _events = _dereq_('events'); - -var _events2 = _interopRequireDefault(_events); - -var _logger = _dereq_('../utils/logger.js'); - -var _logger2 = _interopRequireDefault(_logger); - -var _loggingControl = _dereq_('../utils/logging-control.js'); - -var _loggingControl2 = _interopRequireDefault(_loggingControl); - -var _transmuxingController = _dereq_('./transmuxing-controller.js'); - -var _transmuxingController2 = _interopRequireDefault(_transmuxingController); - -var _transmuxingEvents = _dereq_('./transmuxing-events.js'); - -var _transmuxingEvents2 = _interopRequireDefault(_transmuxingEvents); - -var _transmuxingWorker = _dereq_('./transmuxing-worker.js'); - -var _transmuxingWorker2 = _interopRequireDefault(_transmuxingWorker); - -var _mediaInfo = _dereq_('./media-info.js'); - -var _mediaInfo2 = _interopRequireDefault(_mediaInfo); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var Transmuxer = function () { - function Transmuxer(mediaDataSource, config) { - _classCallCheck(this, Transmuxer); - - this.TAG = 'Transmuxer'; - this._emitter = new _events2.default(); - - if (config.enableWorker && typeof Worker !== 'undefined') { - try { - var work = _dereq_('webworkify'); - this._worker = work(_transmuxingWorker2.default); - this._workerDestroying = false; - this._worker.addEventListener('message', this._onWorkerMessage.bind(this)); - this._worker.postMessage({ cmd: 'init', param: [mediaDataSource, config] }); - this.e = { - onLoggingConfigChanged: this._onLoggingConfigChanged.bind(this) - }; - _loggingControl2.default.registerListener(this.e.onLoggingConfigChanged); - this._worker.postMessage({ cmd: 'logging_config', param: _loggingControl2.default.getConfig() }); - } catch (error) { - _logger2.default.e(this.TAG, 'Error while initialize transmuxing worker, fallback to inline transmuxing'); - this._worker = null; - this._controller = new _transmuxingController2.default(mediaDataSource, config); - } - } else { - this._controller = new _transmuxingController2.default(mediaDataSource, config); - } - - if (this._controller) { - var ctl = this._controller; - ctl.on(_transmuxingEvents2.default.IO_ERROR, this._onIOError.bind(this)); - ctl.on(_transmuxingEvents2.default.DEMUX_ERROR, this._onDemuxError.bind(this)); - ctl.on(_transmuxingEvents2.default.INIT_SEGMENT, this._onInitSegment.bind(this)); - ctl.on(_transmuxingEvents2.default.MEDIA_SEGMENT, this._onMediaSegment.bind(this)); - ctl.on(_transmuxingEvents2.default.LOADING_COMPLETE, this._onLoadingComplete.bind(this)); - ctl.on(_transmuxingEvents2.default.RECOVERED_EARLY_EOF, this._onRecoveredEarlyEof.bind(this)); - ctl.on(_transmuxingEvents2.default.MEDIA_INFO, this._onMediaInfo.bind(this)); - ctl.on(_transmuxingEvents2.default.STATISTICS_INFO, this._onStatisticsInfo.bind(this)); - ctl.on(_transmuxingEvents2.default.RECOMMEND_SEEKPOINT, this._onRecommendSeekpoint.bind(this)); - } - } - - _createClass(Transmuxer, [{ - key: 'destroy', - value: function destroy() { - if (this._worker) { - if (!this._workerDestroying) { - this._workerDestroying = true; - this._worker.postMessage({ cmd: 'destroy' }); - _loggingControl2.default.removeListener(this.e.onLoggingConfigChanged); - this.e = null; - } - } else { - this._controller.destroy(); - this._controller = null; - } - this._emitter.removeAllListeners(); - this._emitter = null; - } - }, { - key: 'on', - value: function on(event, listener) { - this._emitter.addListener(event, listener); - } - }, { - key: 'off', - value: function off(event, listener) { - this._emitter.removeListener(event, listener); - } - }, { - key: 'hasWorker', - value: function hasWorker() { - return this._worker != null; - } - }, { - key: 'open', - value: function open() { - if (this._worker) { - this._worker.postMessage({ cmd: 'start' }); - } else { - this._controller.start(); - } - } - }, { - key: 'close', - value: function close() { - if (this._worker) { - this._worker.postMessage({ cmd: 'stop' }); - } else { - this._controller.stop(); - } - } - }, { - key: 'seek', - value: function seek(milliseconds) { - if (this._worker) { - this._worker.postMessage({ cmd: 'seek', param: milliseconds }); - } else { - this._controller.seek(milliseconds); - } - } - }, { - key: 'pause', - value: function pause() { - if (this._worker) { - this._worker.postMessage({ cmd: 'pause' }); - } else { - this._controller.pause(); - } - } - }, { - key: 'resume', - value: function resume() { - if (this._worker) { - this._worker.postMessage({ cmd: 'resume' }); - } else { - this._controller.resume(); - } - } - }, { - key: '_onInitSegment', - value: function _onInitSegment(type, initSegment) { - var _this = this; - - // do async invoke - Promise.resolve().then(function () { - _this._emitter.emit(_transmuxingEvents2.default.INIT_SEGMENT, type, initSegment); - }); - } - }, { - key: '_onMediaSegment', - value: function _onMediaSegment(type, mediaSegment) { - var _this2 = this; - - Promise.resolve().then(function () { - _this2._emitter.emit(_transmuxingEvents2.default.MEDIA_SEGMENT, type, mediaSegment); - }); - } - }, { - key: '_onLoadingComplete', - value: function _onLoadingComplete() { - var _this3 = this; - - Promise.resolve().then(function () { - _this3._emitter.emit(_transmuxingEvents2.default.LOADING_COMPLETE); - }); - } - }, { - key: '_onRecoveredEarlyEof', - value: function _onRecoveredEarlyEof() { - var _this4 = this; - - Promise.resolve().then(function () { - _this4._emitter.emit(_transmuxingEvents2.default.RECOVERED_EARLY_EOF); - }); - } - }, { - key: '_onMediaInfo', - value: function _onMediaInfo(mediaInfo) { - var _this5 = this; - - Promise.resolve().then(function () { - _this5._emitter.emit(_transmuxingEvents2.default.MEDIA_INFO, mediaInfo); - }); - } - }, { - key: '_onStatisticsInfo', - value: function _onStatisticsInfo(statisticsInfo) { - var _this6 = this; - - Promise.resolve().then(function () { - _this6._emitter.emit(_transmuxingEvents2.default.STATISTICS_INFO, statisticsInfo); - }); - } - }, { - key: '_onIOError', - value: function _onIOError(type, info) { - var _this7 = this; - - Promise.resolve().then(function () { - _this7._emitter.emit(_transmuxingEvents2.default.IO_ERROR, type, info); - }); - } - }, { - key: '_onDemuxError', - value: function _onDemuxError(type, info) { - var _this8 = this; - - Promise.resolve().then(function () { - _this8._emitter.emit(_transmuxingEvents2.default.DEMUX_ERROR, type, info); - }); - } - }, { - key: '_onRecommendSeekpoint', - value: function _onRecommendSeekpoint(milliseconds) { - var _this9 = this; - - Promise.resolve().then(function () { - _this9._emitter.emit(_transmuxingEvents2.default.RECOMMEND_SEEKPOINT, milliseconds); - }); - } - }, { - key: '_onLoggingConfigChanged', - value: function _onLoggingConfigChanged(config) { - if (this._worker) { - this._worker.postMessage({ cmd: 'logging_config', param: config }); - } - } - }, { - key: '_onWorkerMessage', - value: function _onWorkerMessage(e) { - var message = e.data; - var data = message.data; - - if (message.msg === 'destroyed' || this._workerDestroying) { - this._workerDestroying = false; - this._worker.terminate(); - this._worker = null; - return; - } - - switch (message.msg) { - case _transmuxingEvents2.default.INIT_SEGMENT: - case _transmuxingEvents2.default.MEDIA_SEGMENT: - this._emitter.emit(message.msg, data.type, data.data); - break; - case _transmuxingEvents2.default.LOADING_COMPLETE: - case _transmuxingEvents2.default.RECOVERED_EARLY_EOF: - this._emitter.emit(message.msg); - break; - case _transmuxingEvents2.default.MEDIA_INFO: - Object.setPrototypeOf(data, _mediaInfo2.default.prototype); - this._emitter.emit(message.msg, data); - break; - case _transmuxingEvents2.default.STATISTICS_INFO: - this._emitter.emit(message.msg, data); - break; - case _transmuxingEvents2.default.IO_ERROR: - case _transmuxingEvents2.default.DEMUX_ERROR: - this._emitter.emit(message.msg, data.type, data.info); - break; - case _transmuxingEvents2.default.RECOMMEND_SEEKPOINT: - this._emitter.emit(message.msg, data); - break; - case 'logcat_callback': - _logger2.default.emitter.emit('log', data.type, data.logcat); - break; - default: - break; - } - } - }]); - - return Transmuxer; -}(); - -exports.default = Transmuxer; - -},{"../utils/logger.js":41,"../utils/logging-control.js":42,"./media-info.js":7,"./transmuxing-controller.js":12,"./transmuxing-events.js":13,"./transmuxing-worker.js":14,"events":2,"webworkify":4}],12:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var _events = _dereq_('events'); - -var _events2 = _interopRequireDefault(_events); - -var _logger = _dereq_('../utils/logger.js'); - -var _logger2 = _interopRequireDefault(_logger); - -var _browser = _dereq_('../utils/browser.js'); - -var _browser2 = _interopRequireDefault(_browser); - -var _mediaInfo = _dereq_('./media-info.js'); - -var _mediaInfo2 = _interopRequireDefault(_mediaInfo); - -var _flvDemuxer = _dereq_('../demux/flv-demuxer.js'); - -var _flvDemuxer2 = _interopRequireDefault(_flvDemuxer); - -var _mp4Remuxer = _dereq_('../remux/mp4-remuxer.js'); - -var _mp4Remuxer2 = _interopRequireDefault(_mp4Remuxer); - -var _demuxErrors = _dereq_('../demux/demux-errors.js'); - -var _demuxErrors2 = _interopRequireDefault(_demuxErrors); - -var _ioController = _dereq_('../io/io-controller.js'); - -var _ioController2 = _interopRequireDefault(_ioController); - -var _transmuxingEvents = _dereq_('./transmuxing-events.js'); - -var _transmuxingEvents2 = _interopRequireDefault(_transmuxingEvents); - -var _loader = _dereq_('../io/loader.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -// Transmuxing (IO, Demuxing, Remuxing) controller, with multipart support -var TransmuxingController = function () { - function TransmuxingController(mediaDataSource, config) { - _classCallCheck(this, TransmuxingController); - - this.TAG = 'TransmuxingController'; - this._emitter = new _events2.default(); - - this._config = config; - - // treat single part media as multipart media, which has only one segment - if (!mediaDataSource.segments) { - mediaDataSource.segments = [{ - duration: mediaDataSource.duration, - filesize: mediaDataSource.filesize, - url: mediaDataSource.url - }]; - } - - // fill in default IO params if not exists - if (typeof mediaDataSource.cors !== 'boolean') { - mediaDataSource.cors = true; - } - if (typeof mediaDataSource.withCredentials !== 'boolean') { - mediaDataSource.withCredentials = false; - } - - this._mediaDataSource = mediaDataSource; - this._currentSegmentIndex = 0; - var totalDuration = 0; - - this._mediaDataSource.segments.forEach(function (segment) { - // timestampBase for each segment, and calculate total duration - segment.timestampBase = totalDuration; - totalDuration += segment.duration; - // params needed by IOController - segment.cors = mediaDataSource.cors; - segment.withCredentials = mediaDataSource.withCredentials; - // referrer policy control, if exist - if (config.referrerPolicy) { - segment.referrerPolicy = config.referrerPolicy; - } - }); - - if (!isNaN(totalDuration) && this._mediaDataSource.duration !== totalDuration) { - this._mediaDataSource.duration = totalDuration; - } - - this._mediaInfo = null; - this._demuxer = null; - this._remuxer = null; - this._ioctl = null; - - this._pendingSeekTime = null; - this._pendingResolveSeekPoint = null; - - this._statisticsReporter = null; - } - - _createClass(TransmuxingController, [{ - key: 'destroy', - value: function destroy() { - this._mediaInfo = null; - this._mediaDataSource = null; - - if (this._statisticsReporter) { - this._disableStatisticsReporter(); - } - if (this._ioctl) { - this._ioctl.destroy(); - this._ioctl = null; - } - if (this._demuxer) { - this._demuxer.destroy(); - this._demuxer = null; - } - if (this._remuxer) { - this._remuxer.destroy(); - this._remuxer = null; - } - - this._emitter.removeAllListeners(); - this._emitter = null; - } - }, { - key: 'on', - value: function on(event, listener) { - this._emitter.addListener(event, listener); - } - }, { - key: 'off', - value: function off(event, listener) { - this._emitter.removeListener(event, listener); - } - }, { - key: 'start', - value: function start() { - this._loadSegment(0); - this._enableStatisticsReporter(); - } - }, { - key: '_loadSegment', - value: function _loadSegment(segmentIndex, optionalFrom) { - this._currentSegmentIndex = segmentIndex; - var dataSource = this._mediaDataSource.segments[segmentIndex]; - - var ioctl = this._ioctl = new _ioController2.default(dataSource, this._config, segmentIndex); - ioctl.onError = this._onIOException.bind(this); - ioctl.onSeeked = this._onIOSeeked.bind(this); - ioctl.onComplete = this._onIOComplete.bind(this); - ioctl.onRedirect = this._onIORedirect.bind(this); - ioctl.onRecoveredEarlyEof = this._onIORecoveredEarlyEof.bind(this); - - if (optionalFrom) { - this._demuxer.bindDataSource(this._ioctl); - } else { - ioctl.onDataArrival = this._onInitChunkArrival.bind(this); - } - - ioctl.open(optionalFrom); - } - }, { - key: 'stop', - value: function stop() { - this._internalAbort(); - this._disableStatisticsReporter(); - } - }, { - key: '_internalAbort', - value: function _internalAbort() { - if (this._ioctl) { - this._ioctl.destroy(); - this._ioctl = null; - } - } - }, { - key: 'pause', - value: function pause() { - // take a rest - if (this._ioctl && this._ioctl.isWorking()) { - this._ioctl.pause(); - this._disableStatisticsReporter(); - } - } - }, { - key: 'resume', - value: function resume() { - if (this._ioctl && this._ioctl.isPaused()) { - this._ioctl.resume(); - this._enableStatisticsReporter(); - } - } - }, { - key: 'seek', - value: function seek(milliseconds) { - if (this._mediaInfo == null || !this._mediaInfo.isSeekable()) { - return; - } - - var targetSegmentIndex = this._searchSegmentIndexContains(milliseconds); - - if (targetSegmentIndex === this._currentSegmentIndex) { - // intra-segment seeking - var segmentInfo = this._mediaInfo.segments[targetSegmentIndex]; - - if (segmentInfo == undefined) { - // current segment loading started, but mediainfo hasn't received yet - // wait for the metadata loaded, then seek to expected position - this._pendingSeekTime = milliseconds; - } else { - var keyframe = segmentInfo.getNearestKeyframe(milliseconds); - this._remuxer.seek(keyframe.milliseconds); - this._ioctl.seek(keyframe.fileposition); - // Will be resolved in _onRemuxerMediaSegmentArrival() - this._pendingResolveSeekPoint = keyframe.milliseconds; - } - } else { - // cross-segment seeking - var targetSegmentInfo = this._mediaInfo.segments[targetSegmentIndex]; - - if (targetSegmentInfo == undefined) { - // target segment hasn't been loaded. We need metadata then seek to expected time - this._pendingSeekTime = milliseconds; - this._internalAbort(); - this._remuxer.seek(); - this._remuxer.insertDiscontinuity(); - this._loadSegment(targetSegmentIndex); - // Here we wait for the metadata loaded, then seek to expected position - } else { - // We have target segment's metadata, direct seek to target position - var _keyframe = targetSegmentInfo.getNearestKeyframe(milliseconds); - this._internalAbort(); - this._remuxer.seek(milliseconds); - this._remuxer.insertDiscontinuity(); - this._demuxer.resetMediaInfo(); - this._demuxer.timestampBase = this._mediaDataSource.segments[targetSegmentIndex].timestampBase; - this._loadSegment(targetSegmentIndex, _keyframe.fileposition); - this._pendingResolveSeekPoint = _keyframe.milliseconds; - this._reportSegmentMediaInfo(targetSegmentIndex); - } - } - - this._enableStatisticsReporter(); - } - }, { - key: '_searchSegmentIndexContains', - value: function _searchSegmentIndexContains(milliseconds) { - var segments = this._mediaDataSource.segments; - var idx = segments.length - 1; - - for (var i = 0; i < segments.length; i++) { - if (milliseconds < segments[i].timestampBase) { - idx = i - 1; - break; - } - } - return idx; - } - }, { - key: '_onInitChunkArrival', - value: function _onInitChunkArrival(data, byteStart) { - var _this = this; - - var probeData = null; - var consumed = 0; - - if (byteStart > 0) { - // IOController seeked immediately after opened, byteStart > 0 callback may received - this._demuxer.bindDataSource(this._ioctl); - this._demuxer.timestampBase = this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase; - - consumed = this._demuxer.parseChunks(data, byteStart); - } else if ((probeData = _flvDemuxer2.default.probe(data)).match) { - // Always create new FLVDemuxer - this._demuxer = new _flvDemuxer2.default(probeData, this._config); - - if (!this._remuxer) { - this._remuxer = new _mp4Remuxer2.default(this._config); - } - - var mds = this._mediaDataSource; - if (mds.duration != undefined && !isNaN(mds.duration)) { - this._demuxer.overridedDuration = mds.duration; - } - if (typeof mds.hasAudio === 'boolean') { - this._demuxer.overridedHasAudio = mds.hasAudio; - } - if (typeof mds.hasVideo === 'boolean') { - this._demuxer.overridedHasVideo = mds.hasVideo; - } - - this._demuxer.timestampBase = mds.segments[this._currentSegmentIndex].timestampBase; - - this._demuxer.onError = this._onDemuxException.bind(this); - this._demuxer.onMediaInfo = this._onMediaInfo.bind(this); - - this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)); - - this._remuxer.onInitSegment = this._onRemuxerInitSegmentArrival.bind(this); - this._remuxer.onMediaSegment = this._onRemuxerMediaSegmentArrival.bind(this); - - consumed = this._demuxer.parseChunks(data, byteStart); - } else { - probeData = null; - _logger2.default.e(this.TAG, 'Non-FLV, Unsupported media type!'); - Promise.resolve().then(function () { - _this._internalAbort(); - }); - this._emitter.emit(_transmuxingEvents2.default.DEMUX_ERROR, _demuxErrors2.default.FORMAT_UNSUPPORTED, 'Non-FLV, Unsupported media type'); - - consumed = 0; - } - - return consumed; - } - }, { - key: '_onMediaInfo', - value: function _onMediaInfo(mediaInfo) { - var _this2 = this; - - if (this._mediaInfo == null) { - // Store first segment's mediainfo as global mediaInfo - this._mediaInfo = Object.assign({}, mediaInfo); - this._mediaInfo.keyframesIndex = null; - this._mediaInfo.segments = []; - this._mediaInfo.segmentCount = this._mediaDataSource.segments.length; - Object.setPrototypeOf(this._mediaInfo, _mediaInfo2.default.prototype); - } - - var segmentInfo = Object.assign({}, mediaInfo); - Object.setPrototypeOf(segmentInfo, _mediaInfo2.default.prototype); - this._mediaInfo.segments[this._currentSegmentIndex] = segmentInfo; - - // notify mediaInfo update - this._reportSegmentMediaInfo(this._currentSegmentIndex); - - if (this._pendingSeekTime != null) { - Promise.resolve().then(function () { - var target = _this2._pendingSeekTime; - _this2._pendingSeekTime = null; - _this2.seek(target); - }); - } - } - }, { - key: '_onIOSeeked', - value: function _onIOSeeked() { - this._remuxer.insertDiscontinuity(); - } - }, { - key: '_onIOComplete', - value: function _onIOComplete(extraData) { - var segmentIndex = extraData; - var nextSegmentIndex = segmentIndex + 1; - - if (nextSegmentIndex < this._mediaDataSource.segments.length) { - this._internalAbort(); - this._loadSegment(nextSegmentIndex); - } else { - this._remuxer.flushStashedSamples(); - this._emitter.emit(_transmuxingEvents2.default.LOADING_COMPLETE); - this._disableStatisticsReporter(); - } - } - }, { - key: '_onIORedirect', - value: function _onIORedirect(redirectedURL) { - var segmentIndex = this._ioctl.extraData; - this._mediaDataSource.segments[segmentIndex].redirectedURL = redirectedURL; - } - }, { - key: '_onIORecoveredEarlyEof', - value: function _onIORecoveredEarlyEof() { - this._emitter.emit(_transmuxingEvents2.default.RECOVERED_EARLY_EOF); - } - }, { - key: '_onIOException', - value: function _onIOException(type, info) { - _logger2.default.e(this.TAG, 'IOException: type = ' + type + ', code = ' + info.code + ', msg = ' + info.msg); - this._emitter.emit(_transmuxingEvents2.default.IO_ERROR, type, info); - this._disableStatisticsReporter(); - } - }, { - key: '_onDemuxException', - value: function _onDemuxException(type, info) { - _logger2.default.e(this.TAG, 'DemuxException: type = ' + type + ', info = ' + info); - this._emitter.emit(_transmuxingEvents2.default.DEMUX_ERROR, type, info); - } - }, { - key: '_onRemuxerInitSegmentArrival', - value: function _onRemuxerInitSegmentArrival(type, initSegment) { - this._emitter.emit(_transmuxingEvents2.default.INIT_SEGMENT, type, initSegment); - } - }, { - key: '_onRemuxerMediaSegmentArrival', - value: function _onRemuxerMediaSegmentArrival(type, mediaSegment) { - if (this._pendingSeekTime != null) { - // Media segments after new-segment cross-seeking should be dropped. - return; - } - this._emitter.emit(_transmuxingEvents2.default.MEDIA_SEGMENT, type, mediaSegment); - - // Resolve pending seekPoint - if (this._pendingResolveSeekPoint != null && type === 'video') { - var syncPoints = mediaSegment.info.syncPoints; - var seekpoint = this._pendingResolveSeekPoint; - this._pendingResolveSeekPoint = null; - - // Safari: Pass PTS for recommend_seekpoint - if (_browser2.default.safari && syncPoints.length > 0 && syncPoints[0].originalDts === seekpoint) { - seekpoint = syncPoints[0].pts; - } - // else: use original DTS (keyframe.milliseconds) - - this._emitter.emit(_transmuxingEvents2.default.RECOMMEND_SEEKPOINT, seekpoint); - } - } - }, { - key: '_enableStatisticsReporter', - value: function _enableStatisticsReporter() { - if (this._statisticsReporter == null) { - this._statisticsReporter = self.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval); - } - } - }, { - key: '_disableStatisticsReporter', - value: function _disableStatisticsReporter() { - if (this._statisticsReporter) { - self.clearInterval(this._statisticsReporter); - this._statisticsReporter = null; - } - } - }, { - key: '_reportSegmentMediaInfo', - value: function _reportSegmentMediaInfo(segmentIndex) { - var segmentInfo = this._mediaInfo.segments[segmentIndex]; - var exportInfo = Object.assign({}, segmentInfo); - - exportInfo.duration = this._mediaInfo.duration; - exportInfo.segmentCount = this._mediaInfo.segmentCount; - delete exportInfo.segments; - delete exportInfo.keyframesIndex; - - this._emitter.emit(_transmuxingEvents2.default.MEDIA_INFO, exportInfo); - } - }, { - key: '_reportStatisticsInfo', - value: function _reportStatisticsInfo() { - var info = {}; - - info.url = this._ioctl.currentURL; - info.hasRedirect = this._ioctl.hasRedirect; - if (info.hasRedirect) { - info.redirectedURL = this._ioctl.currentRedirectedURL; - } - - info.speed = this._ioctl.currentSpeed; - info.loaderType = this._ioctl.loaderType; - info.currentSegmentIndex = this._currentSegmentIndex; - info.totalSegmentCount = this._mediaDataSource.segments.length; - - this._emitter.emit(_transmuxingEvents2.default.STATISTICS_INFO, info); - } - }]); - - return TransmuxingController; -}(); - -exports.default = TransmuxingController; - -},{"../demux/demux-errors.js":16,"../demux/flv-demuxer.js":18,"../io/io-controller.js":23,"../io/loader.js":24,"../remux/mp4-remuxer.js":38,"../utils/browser.js":39,"../utils/logger.js":41,"./media-info.js":7,"./transmuxing-events.js":13,"events":2}],13:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var TransmuxingEvents = { - IO_ERROR: 'io_error', - DEMUX_ERROR: 'demux_error', - INIT_SEGMENT: 'init_segment', - MEDIA_SEGMENT: 'media_segment', - LOADING_COMPLETE: 'loading_complete', - RECOVERED_EARLY_EOF: 'recovered_early_eof', - MEDIA_INFO: 'media_info', - STATISTICS_INFO: 'statistics_info', - RECOMMEND_SEEKPOINT: 'recommend_seekpoint' -}; - -exports.default = TransmuxingEvents; - -},{}],14:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _logger = _dereq_('../utils/logger.js'); - -var _logger2 = _interopRequireDefault(_logger); - -var _loggingControl = _dereq_('../utils/logging-control.js'); - -var _loggingControl2 = _interopRequireDefault(_loggingControl); - -var _polyfill = _dereq_('../utils/polyfill.js'); - -var _polyfill2 = _interopRequireDefault(_polyfill); - -var _transmuxingController = _dereq_('./transmuxing-controller.js'); - -var _transmuxingController2 = _interopRequireDefault(_transmuxingController); - -var _transmuxingEvents = _dereq_('./transmuxing-events.js'); - -var _transmuxingEvents2 = _interopRequireDefault(_transmuxingEvents); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/* post message to worker: - data: { - cmd: string - param: any - } - - receive message from worker: - data: { - msg: string, - data: any - } - */ - -var TransmuxingWorker = function TransmuxingWorker(self) { - - var TAG = 'TransmuxingWorker'; - var controller = null; - var logcatListener = onLogcatCallback.bind(this); - - _polyfill2.default.install(); - - self.addEventListener('message', function (e) { - switch (e.data.cmd) { - case 'init': - controller = new _transmuxingController2.default(e.data.param[0], e.data.param[1]); - controller.on(_transmuxingEvents2.default.IO_ERROR, onIOError.bind(this)); - controller.on(_transmuxingEvents2.default.DEMUX_ERROR, onDemuxError.bind(this)); - controller.on(_transmuxingEvents2.default.INIT_SEGMENT, onInitSegment.bind(this)); - controller.on(_transmuxingEvents2.default.MEDIA_SEGMENT, onMediaSegment.bind(this)); - controller.on(_transmuxingEvents2.default.LOADING_COMPLETE, onLoadingComplete.bind(this)); - controller.on(_transmuxingEvents2.default.RECOVERED_EARLY_EOF, onRecoveredEarlyEof.bind(this)); - controller.on(_transmuxingEvents2.default.MEDIA_INFO, onMediaInfo.bind(this)); - controller.on(_transmuxingEvents2.default.STATISTICS_INFO, onStatisticsInfo.bind(this)); - controller.on(_transmuxingEvents2.default.RECOMMEND_SEEKPOINT, onRecommendSeekpoint.bind(this)); - break; - case 'destroy': - if (controller) { - controller.destroy(); - controller = null; - } - self.postMessage({ msg: 'destroyed' }); - break; - case 'start': - controller.start(); - break; - case 'stop': - controller.stop(); - break; - case 'seek': - controller.seek(e.data.param); - break; - case 'pause': - controller.pause(); - break; - case 'resume': - controller.resume(); - break; - case 'logging_config': - { - var config = e.data.param; - _loggingControl2.default.applyConfig(config); - - if (config.enableCallback === true) { - _loggingControl2.default.addLogListener(logcatListener); - } else { - _loggingControl2.default.removeLogListener(logcatListener); - } - break; - } - } - }); - - function onInitSegment(type, initSegment) { - var obj = { - msg: _transmuxingEvents2.default.INIT_SEGMENT, - data: { - type: type, - data: initSegment - } - }; - self.postMessage(obj, [initSegment.data]); // data: ArrayBuffer - } - - function onMediaSegment(type, mediaSegment) { - var obj = { - msg: _transmuxingEvents2.default.MEDIA_SEGMENT, - data: { - type: type, - data: mediaSegment - } - }; - self.postMessage(obj, [mediaSegment.data]); // data: ArrayBuffer - } - - function onLoadingComplete() { - var obj = { - msg: _transmuxingEvents2.default.LOADING_COMPLETE - }; - self.postMessage(obj); - } - - function onRecoveredEarlyEof() { - var obj = { - msg: _transmuxingEvents2.default.RECOVERED_EARLY_EOF - }; - self.postMessage(obj); - } - - function onMediaInfo(mediaInfo) { - var obj = { - msg: _transmuxingEvents2.default.MEDIA_INFO, - data: mediaInfo - }; - self.postMessage(obj); - } - - function onStatisticsInfo(statInfo) { - var obj = { - msg: _transmuxingEvents2.default.STATISTICS_INFO, - data: statInfo - }; - self.postMessage(obj); - } - - function onIOError(type, info) { - self.postMessage({ - msg: _transmuxingEvents2.default.IO_ERROR, - data: { - type: type, - info: info - } - }); - } - - function onDemuxError(type, info) { - self.postMessage({ - msg: _transmuxingEvents2.default.DEMUX_ERROR, - data: { - type: type, - info: info - } - }); - } - - function onRecommendSeekpoint(milliseconds) { - self.postMessage({ - msg: _transmuxingEvents2.default.RECOMMEND_SEEKPOINT, - data: milliseconds - }); - } - - function onLogcatCallback(type, str) { - self.postMessage({ - msg: 'logcat_callback', - data: { - type: type, - logcat: str - } - }); - } -}; /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -exports.default = TransmuxingWorker; - -},{"../utils/logger.js":41,"../utils/logging-control.js":42,"../utils/polyfill.js":43,"./transmuxing-controller.js":12,"./transmuxing-events.js":13}],15:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var _logger = _dereq_('../utils/logger.js'); - -var _logger2 = _interopRequireDefault(_logger); - -var _utf8Conv = _dereq_('../utils/utf8-conv.js'); - -var _utf8Conv2 = _interopRequireDefault(_utf8Conv); - -var _exception = _dereq_('../utils/exception.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var le = function () { - var buf = new ArrayBuffer(2); - new DataView(buf).setInt16(0, 256, true); // little-endian write - return new Int16Array(buf)[0] === 256; // platform-spec read, if equal then LE -}(); - -var AMF = function () { - function AMF() { - _classCallCheck(this, AMF); - } - - _createClass(AMF, null, [{ - key: 'parseScriptData', - value: function parseScriptData(arrayBuffer, dataOffset, dataSize) { - var data = {}; - - try { - var name = AMF.parseValue(arrayBuffer, dataOffset, dataSize); - var value = AMF.parseValue(arrayBuffer, dataOffset + name.size, dataSize - name.size); - - data[name.data] = value.data; - } catch (e) { - _logger2.default.e('AMF', e.toString()); - } - - return data; - } - }, { - key: 'parseObject', - value: function parseObject(arrayBuffer, dataOffset, dataSize) { - if (dataSize < 3) { - throw new _exception.IllegalStateException('Data not enough when parse ScriptDataObject'); - } - var name = AMF.parseString(arrayBuffer, dataOffset, dataSize); - var value = AMF.parseValue(arrayBuffer, dataOffset + name.size, dataSize - name.size); - var isObjectEnd = value.objectEnd; - - return { - data: { - name: name.data, - value: value.data - }, - size: name.size + value.size, - objectEnd: isObjectEnd - }; - } - }, { - key: 'parseVariable', - value: function parseVariable(arrayBuffer, dataOffset, dataSize) { - return AMF.parseObject(arrayBuffer, dataOffset, dataSize); - } - }, { - key: 'parseString', - value: function parseString(arrayBuffer, dataOffset, dataSize) { - if (dataSize < 2) { - throw new _exception.IllegalStateException('Data not enough when parse String'); - } - var v = new DataView(arrayBuffer, dataOffset, dataSize); - var length = v.getUint16(0, !le); - - var str = void 0; - if (length > 0) { - str = (0, _utf8Conv2.default)(new Uint8Array(arrayBuffer, dataOffset + 2, length)); - } else { - str = ''; - } - - return { - data: str, - size: 2 + length - }; - } - }, { - key: 'parseLongString', - value: function parseLongString(arrayBuffer, dataOffset, dataSize) { - if (dataSize < 4) { - throw new _exception.IllegalStateException('Data not enough when parse LongString'); - } - var v = new DataView(arrayBuffer, dataOffset, dataSize); - var length = v.getUint32(0, !le); - - var str = void 0; - if (length > 0) { - str = (0, _utf8Conv2.default)(new Uint8Array(arrayBuffer, dataOffset + 4, length)); - } else { - str = ''; - } - - return { - data: str, - size: 4 + length - }; - } - }, { - key: 'parseDate', - value: function parseDate(arrayBuffer, dataOffset, dataSize) { - if (dataSize < 10) { - throw new _exception.IllegalStateException('Data size invalid when parse Date'); - } - var v = new DataView(arrayBuffer, dataOffset, dataSize); - var timestamp = v.getFloat64(0, !le); - var localTimeOffset = v.getInt16(8, !le); - timestamp += localTimeOffset * 60 * 1000; // get UTC time - - return { - data: new Date(timestamp), - size: 8 + 2 - }; - } - }, { - key: 'parseValue', - value: function parseValue(arrayBuffer, dataOffset, dataSize) { - if (dataSize < 1) { - throw new _exception.IllegalStateException('Data not enough when parse Value'); - } - - var v = new DataView(arrayBuffer, dataOffset, dataSize); - - var offset = 1; - var type = v.getUint8(0); - var value = void 0; - var objectEnd = false; - - try { - switch (type) { - case 0: - // Number(Double) type - value = v.getFloat64(1, !le); - offset += 8; - break; - case 1: - { - // Boolean type - var b = v.getUint8(1); - value = b ? true : false; - offset += 1; - break; - } - case 2: - { - // String type - var amfstr = AMF.parseString(arrayBuffer, dataOffset + 1, dataSize - 1); - value = amfstr.data; - offset += amfstr.size; - break; - } - case 3: - { - // Object(s) type - value = {}; - var terminal = 0; // workaround for malformed Objects which has missing ScriptDataObjectEnd - if ((v.getUint32(dataSize - 4, !le) & 0x00FFFFFF) === 9) { - terminal = 3; - } - while (offset < dataSize - 4) { - // 4 === type(UI8) + ScriptDataObjectEnd(UI24) - var amfobj = AMF.parseObject(arrayBuffer, dataOffset + offset, dataSize - offset - terminal); - if (amfobj.objectEnd) break; - value[amfobj.data.name] = amfobj.data.value; - offset += amfobj.size; - } - if (offset <= dataSize - 3) { - var marker = v.getUint32(offset - 1, !le) & 0x00FFFFFF; - if (marker === 9) { - offset += 3; - } - } - break; - } - case 8: - { - // ECMA array type (Mixed array) - value = {}; - offset += 4; // ECMAArrayLength(UI32) - var _terminal = 0; // workaround for malformed MixedArrays which has missing ScriptDataObjectEnd - if ((v.getUint32(dataSize - 4, !le) & 0x00FFFFFF) === 9) { - _terminal = 3; - } - while (offset < dataSize - 8) { - // 8 === type(UI8) + ECMAArrayLength(UI32) + ScriptDataVariableEnd(UI24) - var amfvar = AMF.parseVariable(arrayBuffer, dataOffset + offset, dataSize - offset - _terminal); - if (amfvar.objectEnd) break; - value[amfvar.data.name] = amfvar.data.value; - offset += amfvar.size; - } - if (offset <= dataSize - 3) { - var _marker = v.getUint32(offset - 1, !le) & 0x00FFFFFF; - if (_marker === 9) { - offset += 3; - } - } - break; - } - case 9: - // ScriptDataObjectEnd - value = undefined; - offset = 1; - objectEnd = true; - break; - case 10: - { - // Strict array type - // ScriptDataValue[n]. NOTE: according to video_file_format_spec_v10_1.pdf - value = []; - var strictArrayLength = v.getUint32(1, !le); - offset += 4; - for (var i = 0; i < strictArrayLength; i++) { - var val = AMF.parseValue(arrayBuffer, dataOffset + offset, dataSize - offset); - value.push(val.data); - offset += val.size; - } - break; - } - case 11: - { - // Date type - var date = AMF.parseDate(arrayBuffer, dataOffset + 1, dataSize - 1); - value = date.data; - offset += date.size; - break; - } - case 12: - { - // Long string type - var amfLongStr = AMF.parseString(arrayBuffer, dataOffset + 1, dataSize - 1); - value = amfLongStr.data; - offset += amfLongStr.size; - break; - } - default: - // ignore and skip - offset = dataSize; - _logger2.default.w('AMF', 'Unsupported AMF value type ' + type); - } - } catch (e) { - _logger2.default.e('AMF', e.toString()); - } - - return { - data: value, - size: offset, - objectEnd: objectEnd - }; - } - }]); - - return AMF; -}(); - -exports.default = AMF; - -},{"../utils/exception.js":40,"../utils/logger.js":41,"../utils/utf8-conv.js":44}],16:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var DemuxErrors = { - OK: 'OK', - FORMAT_ERROR: 'FormatError', - FORMAT_UNSUPPORTED: 'FormatUnsupported', - CODEC_UNSUPPORTED: 'CodecUnsupported' -}; - -exports.default = DemuxErrors; - -},{}],17:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var _exception = _dereq_('../utils/exception.js'); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -// Exponential-Golomb buffer decoder -var ExpGolomb = function () { - function ExpGolomb(uint8array) { - _classCallCheck(this, ExpGolomb); - - this.TAG = 'ExpGolomb'; - - this._buffer = uint8array; - this._buffer_index = 0; - this._total_bytes = uint8array.byteLength; - this._total_bits = uint8array.byteLength * 8; - this._current_word = 0; - this._current_word_bits_left = 0; - } - - _createClass(ExpGolomb, [{ - key: 'destroy', - value: function destroy() { - this._buffer = null; - } - }, { - key: '_fillCurrentWord', - value: function _fillCurrentWord() { - var buffer_bytes_left = this._total_bytes - this._buffer_index; - if (buffer_bytes_left <= 0) throw new _exception.IllegalStateException('ExpGolomb: _fillCurrentWord() but no bytes available'); - - var bytes_read = Math.min(4, buffer_bytes_left); - var word = new Uint8Array(4); - word.set(this._buffer.subarray(this._buffer_index, this._buffer_index + bytes_read)); - this._current_word = new DataView(word.buffer).getUint32(0, false); - - this._buffer_index += bytes_read; - this._current_word_bits_left = bytes_read * 8; - } - }, { - key: 'readBits', - value: function readBits(bits) { - if (bits > 32) throw new _exception.InvalidArgumentException('ExpGolomb: readBits() bits exceeded max 32bits!'); - - if (bits <= this._current_word_bits_left) { - var _result = this._current_word >>> 32 - bits; - this._current_word <<= bits; - this._current_word_bits_left -= bits; - return _result; - } - - var result = this._current_word_bits_left ? this._current_word : 0; - result = result >>> 32 - this._current_word_bits_left; - var bits_need_left = bits - this._current_word_bits_left; - - this._fillCurrentWord(); - var bits_read_next = Math.min(bits_need_left, this._current_word_bits_left); - - var result2 = this._current_word >>> 32 - bits_read_next; - this._current_word <<= bits_read_next; - this._current_word_bits_left -= bits_read_next; - - result = result << bits_read_next | result2; - return result; - } - }, { - key: 'readBool', - value: function readBool() { - return this.readBits(1) === 1; - } - }, { - key: 'readByte', - value: function readByte() { - return this.readBits(8); - } - }, { - key: '_skipLeadingZero', - value: function _skipLeadingZero() { - var zero_count = void 0; - for (zero_count = 0; zero_count < this._current_word_bits_left; zero_count++) { - if (0 !== (this._current_word & 0x80000000 >>> zero_count)) { - this._current_word <<= zero_count; - this._current_word_bits_left -= zero_count; - return zero_count; - } - } - this._fillCurrentWord(); - return zero_count + this._skipLeadingZero(); - } - }, { - key: 'readUEG', - value: function readUEG() { - // unsigned exponential golomb - var leading_zeros = this._skipLeadingZero(); - return this.readBits(leading_zeros + 1) - 1; - } - }, { - key: 'readSEG', - value: function readSEG() { - // signed exponential golomb - var value = this.readUEG(); - if (value & 0x01) { - return value + 1 >>> 1; - } else { - return -1 * (value >>> 1); - } - } - }]); - - return ExpGolomb; -}(); - -exports.default = ExpGolomb; - -},{"../utils/exception.js":40}],18:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var _logger = _dereq_('../utils/logger.js'); - -var _logger2 = _interopRequireDefault(_logger); - -var _amfParser = _dereq_('./amf-parser.js'); - -var _amfParser2 = _interopRequireDefault(_amfParser); - -var _spsParser = _dereq_('./sps-parser.js'); - -var _spsParser2 = _interopRequireDefault(_spsParser); - -var _demuxErrors = _dereq_('./demux-errors.js'); - -var _demuxErrors2 = _interopRequireDefault(_demuxErrors); - -var _mediaInfo = _dereq_('../core/media-info.js'); - -var _mediaInfo2 = _interopRequireDefault(_mediaInfo); - -var _exception = _dereq_('../utils/exception.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function Swap16(src) { - return src >>> 8 & 0xFF | (src & 0xFF) << 8; -} - -function Swap32(src) { - return (src & 0xFF000000) >>> 24 | (src & 0x00FF0000) >>> 8 | (src & 0x0000FF00) << 8 | (src & 0x000000FF) << 24; -} - -function ReadBig32(array, index) { - return array[index] << 24 | array[index + 1] << 16 | array[index + 2] << 8 | array[index + 3]; -} - -var FLVDemuxer = function () { - function FLVDemuxer(probeData, config) { - _classCallCheck(this, FLVDemuxer); - - this.TAG = 'FLVDemuxer'; - - this._config = config; - - this._onError = null; - this._onMediaInfo = null; - this._onTrackMetadata = null; - this._onDataAvailable = null; - - this._dataOffset = probeData.dataOffset; - this._firstParse = true; - this._dispatch = false; - - this._hasAudio = probeData.hasAudioTrack; - this._hasVideo = probeData.hasVideoTrack; - - this._hasAudioFlagOverrided = false; - this._hasVideoFlagOverrided = false; - - this._audioInitialMetadataDispatched = false; - this._videoInitialMetadataDispatched = false; - - this._mediaInfo = new _mediaInfo2.default(); - this._mediaInfo.hasAudio = this._hasAudio; - this._mediaInfo.hasVideo = this._hasVideo; - this._metadata = null; - this._audioMetadata = null; - this._videoMetadata = null; - - this._naluLengthSize = 4; - this._timestampBase = 0; // int32, in milliseconds - this._timescale = 1000; - this._duration = 0; // int32, in milliseconds - this._durationOverrided = false; - this._referenceFrameRate = { - fixed: true, - fps: 23.976, - fps_num: 23976, - fps_den: 1000 - }; - - this._flvSoundRateTable = [5500, 11025, 22050, 44100, 48000]; - - this._mpegSamplingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350]; - - this._mpegAudioV10SampleRateTable = [44100, 48000, 32000, 0]; - this._mpegAudioV20SampleRateTable = [22050, 24000, 16000, 0]; - this._mpegAudioV25SampleRateTable = [11025, 12000, 8000, 0]; - - this._mpegAudioL1BitRateTable = [0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, -1]; - this._mpegAudioL2BitRateTable = [0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, -1]; - this._mpegAudioL3BitRateTable = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1]; - - this._videoTrack = { type: 'video', id: 1, sequenceNumber: 0, samples: [], length: 0 }; - this._audioTrack = { type: 'audio', id: 2, sequenceNumber: 0, samples: [], length: 0 }; - - this._littleEndian = function () { - var buf = new ArrayBuffer(2); - new DataView(buf).setInt16(0, 256, true); // little-endian write - return new Int16Array(buf)[0] === 256; // platform-spec read, if equal then LE - }(); - } - - _createClass(FLVDemuxer, [{ - key: 'destroy', - value: function destroy() { - this._mediaInfo = null; - this._metadata = null; - this._audioMetadata = null; - this._videoMetadata = null; - this._videoTrack = null; - this._audioTrack = null; - - this._onError = null; - this._onMediaInfo = null; - this._onTrackMetadata = null; - this._onDataAvailable = null; - } - }, { - key: 'bindDataSource', - value: function bindDataSource(loader) { - loader.onDataArrival = this.parseChunks.bind(this); - return this; - } - - // prototype: function(type: string, metadata: any): void - - }, { - key: 'resetMediaInfo', - value: function resetMediaInfo() { - this._mediaInfo = new _mediaInfo2.default(); - } - }, { - key: '_isInitialMetadataDispatched', - value: function _isInitialMetadataDispatched() { - if (this._hasAudio && this._hasVideo) { - // both audio & video - return this._audioInitialMetadataDispatched && this._videoInitialMetadataDispatched; - } - if (this._hasAudio && !this._hasVideo) { - // audio only - return this._audioInitialMetadataDispatched; - } - if (!this._hasAudio && this._hasVideo) { - // video only - return this._videoInitialMetadataDispatched; - } - return false; - } - - // function parseChunks(chunk: ArrayBuffer, byteStart: number): number; - - }, { - key: 'parseChunks', - value: function parseChunks(chunk, byteStart) { - if (!this._onError || !this._onMediaInfo || !this._onTrackMetadata || !this._onDataAvailable) { - throw new _exception.IllegalStateException('Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified'); - } - - var offset = 0; - var le = this._littleEndian; - - if (byteStart === 0) { - // buffer with FLV header - if (chunk.byteLength > 13) { - var probeData = FLVDemuxer.probe(chunk); - offset = probeData.dataOffset; - } else { - return 0; - } - } - - if (this._firstParse) { - // handle PreviousTagSize0 before Tag1 - this._firstParse = false; - if (byteStart + offset !== this._dataOffset) { - _logger2.default.w(this.TAG, 'First time parsing but chunk byteStart invalid!'); - } - - var v = new DataView(chunk, offset); - var prevTagSize0 = v.getUint32(0, !le); - if (prevTagSize0 !== 0) { - _logger2.default.w(this.TAG, 'PrevTagSize0 !== 0 !!!'); - } - offset += 4; - } - - while (offset < chunk.byteLength) { - this._dispatch = true; - - var _v = new DataView(chunk, offset); - - if (offset + 11 + 4 > chunk.byteLength) { - // data not enough for parsing an flv tag - break; - } - - var tagType = _v.getUint8(0); - var dataSize = _v.getUint32(0, !le) & 0x00FFFFFF; - - if (offset + 11 + dataSize + 4 > chunk.byteLength) { - // data not enough for parsing actual data body - break; - } - - if (tagType !== 8 && tagType !== 9 && tagType !== 18) { - _logger2.default.w(this.TAG, 'Unsupported tag type ' + tagType + ', skipped'); - // consume the whole tag (skip it) - offset += 11 + dataSize + 4; - continue; - } - - var ts2 = _v.getUint8(4); - var ts1 = _v.getUint8(5); - var ts0 = _v.getUint8(6); - var ts3 = _v.getUint8(7); - - var timestamp = ts0 | ts1 << 8 | ts2 << 16 | ts3 << 24; - - var streamId = _v.getUint32(7, !le) & 0x00FFFFFF; - if (streamId !== 0) { - _logger2.default.w(this.TAG, 'Meet tag which has StreamID != 0!'); - } - - var dataOffset = offset + 11; - - switch (tagType) { - case 8: - // Audio - this._parseAudioData(chunk, dataOffset, dataSize, timestamp); - break; - case 9: - // Video - this._parseVideoData(chunk, dataOffset, dataSize, timestamp, byteStart + offset); - break; - case 18: - // ScriptDataObject - this._parseScriptData(chunk, dataOffset, dataSize); - break; - } - - var prevTagSize = _v.getUint32(11 + dataSize, !le); - if (prevTagSize !== 11 + dataSize) { - _logger2.default.w(this.TAG, 'Invalid PrevTagSize ' + prevTagSize); - } - - offset += 11 + dataSize + 4; // tagBody + dataSize + prevTagSize - } - - // dispatch parsed frames to consumer (typically, the remuxer) - if (this._isInitialMetadataDispatched()) { - if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) { - this._onDataAvailable(this._audioTrack, this._videoTrack); - } - } - - return offset; // consumed bytes, just equals latest offset index - } - }, { - key: '_parseScriptData', - value: function _parseScriptData(arrayBuffer, dataOffset, dataSize) { - var scriptData = _amfParser2.default.parseScriptData(arrayBuffer, dataOffset, dataSize); - - if (scriptData.hasOwnProperty('onMetaData')) { - if (scriptData.onMetaData == null || _typeof(scriptData.onMetaData) !== 'object') { - _logger2.default.w(this.TAG, 'Invalid onMetaData structure!'); - return; - } - if (this._metadata) { - _logger2.default.w(this.TAG, 'Found another onMetaData tag!'); - } - this._metadata = scriptData; - var onMetaData = this._metadata.onMetaData; - - if (typeof onMetaData.hasAudio === 'boolean') { - // hasAudio - if (this._hasAudioFlagOverrided === false) { - this._hasAudio = onMetaData.hasAudio; - this._mediaInfo.hasAudio = this._hasAudio; - } - } - if (typeof onMetaData.hasVideo === 'boolean') { - // hasVideo - if (this._hasVideoFlagOverrided === false) { - this._hasVideo = onMetaData.hasVideo; - this._mediaInfo.hasVideo = this._hasVideo; - } - } - if (typeof onMetaData.audiodatarate === 'number') { - // audiodatarate - this._mediaInfo.audioDataRate = onMetaData.audiodatarate; - } - if (typeof onMetaData.videodatarate === 'number') { - // videodatarate - this._mediaInfo.videoDataRate = onMetaData.videodatarate; - } - if (typeof onMetaData.width === 'number') { - // width - this._mediaInfo.width = onMetaData.width; - } - if (typeof onMetaData.height === 'number') { - // height - this._mediaInfo.height = onMetaData.height; - } - if (typeof onMetaData.duration === 'number') { - // duration - if (!this._durationOverrided) { - var duration = Math.floor(onMetaData.duration * this._timescale); - this._duration = duration; - this._mediaInfo.duration = duration; - } - } else { - this._mediaInfo.duration = 0; - } - if (typeof onMetaData.framerate === 'number') { - // framerate - var fps_num = Math.floor(onMetaData.framerate * 1000); - if (fps_num > 0) { - var fps = fps_num / 1000; - this._referenceFrameRate.fixed = true; - this._referenceFrameRate.fps = fps; - this._referenceFrameRate.fps_num = fps_num; - this._referenceFrameRate.fps_den = 1000; - this._mediaInfo.fps = fps; - } - } - if (_typeof(onMetaData.keyframes) === 'object') { - // keyframes - this._mediaInfo.hasKeyframesIndex = true; - var keyframes = onMetaData.keyframes; - this._mediaInfo.keyframesIndex = this._parseKeyframesIndex(keyframes); - onMetaData.keyframes = null; // keyframes has been extracted, remove it - } else { - this._mediaInfo.hasKeyframesIndex = false; - } - this._dispatch = false; - this._mediaInfo.metadata = onMetaData; - _logger2.default.v(this.TAG, 'Parsed onMetaData'); - if (this._mediaInfo.isComplete()) { - this._onMediaInfo(this._mediaInfo); - } - } - } - }, { - key: '_parseKeyframesIndex', - value: function _parseKeyframesIndex(keyframes) { - var times = []; - var filepositions = []; - - // ignore first keyframe which is actually AVC Sequence Header (AVCDecoderConfigurationRecord) - for (var i = 1; i < keyframes.times.length; i++) { - var time = this._timestampBase + Math.floor(keyframes.times[i] * 1000); - times.push(time); - filepositions.push(keyframes.filepositions[i]); - } - - return { - times: times, - filepositions: filepositions - }; - } - }, { - key: '_parseAudioData', - value: function _parseAudioData(arrayBuffer, dataOffset, dataSize, tagTimestamp) { - if (dataSize <= 1) { - _logger2.default.w(this.TAG, 'Flv: Invalid audio packet, missing SoundData payload!'); - return; - } - - if (this._hasAudioFlagOverrided === true && this._hasAudio === false) { - // If hasAudio: false indicated explicitly in MediaDataSource, - // Ignore all the audio packets - return; - } - - var le = this._littleEndian; - var v = new DataView(arrayBuffer, dataOffset, dataSize); - - var soundSpec = v.getUint8(0); - - var soundFormat = soundSpec >>> 4; - if (soundFormat !== 2 && soundFormat !== 10) { - // MP3 or AAC - this._onError(_demuxErrors2.default.CODEC_UNSUPPORTED, 'Flv: Unsupported audio codec idx: ' + soundFormat); - return; - } - - var soundRate = 0; - var soundRateIndex = (soundSpec & 12) >>> 2; - if (soundRateIndex >= 0 && soundRateIndex <= 4) { - soundRate = this._flvSoundRateTable[soundRateIndex]; - } else { - this._onError(_demuxErrors2.default.FORMAT_ERROR, 'Flv: Invalid audio sample rate idx: ' + soundRateIndex); - return; - } - - var soundSize = (soundSpec & 2) >>> 1; // unused - var soundType = soundSpec & 1; - - var meta = this._audioMetadata; - var track = this._audioTrack; - - if (!meta) { - if (this._hasAudio === false && this._hasAudioFlagOverrided === false) { - this._hasAudio = true; - this._mediaInfo.hasAudio = true; - } - - // initial metadata - meta = this._audioMetadata = {}; - meta.type = 'audio'; - meta.id = track.id; - meta.timescale = this._timescale; - meta.duration = this._duration; - meta.audioSampleRate = soundRate; - meta.channelCount = soundType === 0 ? 1 : 2; - } - - if (soundFormat === 10) { - // AAC - var aacData = this._parseAACAudioData(arrayBuffer, dataOffset + 1, dataSize - 1); - if (aacData == undefined) { - return; - } - - if (aacData.packetType === 0) { - // AAC sequence header (AudioSpecificConfig) - if (meta.config) { - _logger2.default.w(this.TAG, 'Found another AudioSpecificConfig!'); - } - var misc = aacData.data; - meta.audioSampleRate = misc.samplingRate; - meta.channelCount = misc.channelCount; - meta.codec = misc.codec; - meta.originalCodec = misc.originalCodec; - meta.config = misc.config; - // The decode result of an aac sample is 1024 PCM samples - meta.refSampleDuration = 1024 / meta.audioSampleRate * meta.timescale; - _logger2.default.v(this.TAG, 'Parsed AudioSpecificConfig'); - - if (this._isInitialMetadataDispatched()) { - // Non-initial metadata, force dispatch (or flush) parsed frames to remuxer - if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) { - this._onDataAvailable(this._audioTrack, this._videoTrack); - } - } else { - this._audioInitialMetadataDispatched = true; - } - // then notify new metadata - this._dispatch = false; - this._onTrackMetadata('audio', meta); - - var mi = this._mediaInfo; - mi.audioCodec = meta.originalCodec; - mi.audioSampleRate = meta.audioSampleRate; - mi.audioChannelCount = meta.channelCount; - if (mi.hasVideo) { - if (mi.videoCodec != null) { - mi.mimeType = 'video/x-flv; codecs="' + mi.videoCodec + ',' + mi.audioCodec + '"'; - } - } else { - mi.mimeType = 'video/x-flv; codecs="' + mi.audioCodec + '"'; - } - if (mi.isComplete()) { - this._onMediaInfo(mi); - } - } else if (aacData.packetType === 1) { - // AAC raw frame data - var dts = this._timestampBase + tagTimestamp; - var aacSample = { unit: aacData.data, length: aacData.data.byteLength, dts: dts, pts: dts }; - track.samples.push(aacSample); - track.length += aacData.data.length; - } else { - _logger2.default.e(this.TAG, 'Flv: Unsupported AAC data type ' + aacData.packetType); - } - } else if (soundFormat === 2) { - // MP3 - if (!meta.codec) { - // We need metadata for mp3 audio track, extract info from frame header - var _misc = this._parseMP3AudioData(arrayBuffer, dataOffset + 1, dataSize - 1, true); - if (_misc == undefined) { - return; - } - meta.audioSampleRate = _misc.samplingRate; - meta.channelCount = _misc.channelCount; - meta.codec = _misc.codec; - meta.originalCodec = _misc.originalCodec; - // The decode result of an mp3 sample is 1152 PCM samples - meta.refSampleDuration = 1152 / meta.audioSampleRate * meta.timescale; - _logger2.default.v(this.TAG, 'Parsed MPEG Audio Frame Header'); - - this._audioInitialMetadataDispatched = true; - this._onTrackMetadata('audio', meta); - - var _mi = this._mediaInfo; - _mi.audioCodec = meta.codec; - _mi.audioSampleRate = meta.audioSampleRate; - _mi.audioChannelCount = meta.channelCount; - _mi.audioDataRate = _misc.bitRate; - if (_mi.hasVideo) { - if (_mi.videoCodec != null) { - _mi.mimeType = 'video/x-flv; codecs="' + _mi.videoCodec + ',' + _mi.audioCodec + '"'; - } - } else { - _mi.mimeType = 'video/x-flv; codecs="' + _mi.audioCodec + '"'; - } - if (_mi.isComplete()) { - this._onMediaInfo(_mi); - } - } - - // This packet is always a valid audio packet, extract it - var data = this._parseMP3AudioData(arrayBuffer, dataOffset + 1, dataSize - 1, false); - if (data == undefined) { - return; - } - var _dts = this._timestampBase + tagTimestamp; - var mp3Sample = { unit: data, length: data.byteLength, dts: _dts, pts: _dts }; - track.samples.push(mp3Sample); - track.length += data.length; - } - } - }, { - key: '_parseAACAudioData', - value: function _parseAACAudioData(arrayBuffer, dataOffset, dataSize) { - if (dataSize <= 1) { - _logger2.default.w(this.TAG, 'Flv: Invalid AAC packet, missing AACPacketType or/and Data!'); - return; - } - - var result = {}; - var array = new Uint8Array(arrayBuffer, dataOffset, dataSize); - - result.packetType = array[0]; - - if (array[0] === 0) { - result.data = this._parseAACAudioSpecificConfig(arrayBuffer, dataOffset + 1, dataSize - 1); - } else { - result.data = array.subarray(1); - } - - return result; - } - }, { - key: '_parseAACAudioSpecificConfig', - value: function _parseAACAudioSpecificConfig(arrayBuffer, dataOffset, dataSize) { - var array = new Uint8Array(arrayBuffer, dataOffset, dataSize); - var config = null; - - /* Audio Object Type: - 0: Null - 1: AAC Main - 2: AAC LC - 3: AAC SSR (Scalable Sample Rate) - 4: AAC LTP (Long Term Prediction) - 5: HE-AAC / SBR (Spectral Band Replication) - 6: AAC Scalable - */ - - var audioObjectType = 0; - var originalAudioObjectType = 0; - var audioExtensionObjectType = null; - var samplingIndex = 0; - var extensionSamplingIndex = null; - - // 5 bits - audioObjectType = originalAudioObjectType = array[0] >>> 3; - // 4 bits - samplingIndex = (array[0] & 0x07) << 1 | array[1] >>> 7; - if (samplingIndex < 0 || samplingIndex >= this._mpegSamplingRates.length) { - this._onError(_demuxErrors2.default.FORMAT_ERROR, 'Flv: AAC invalid sampling frequency index!'); - return; - } - - var samplingFrequence = this._mpegSamplingRates[samplingIndex]; - - // 4 bits - var channelConfig = (array[1] & 0x78) >>> 3; - if (channelConfig < 0 || channelConfig >= 8) { - this._onError(_demuxErrors2.default.FORMAT_ERROR, 'Flv: AAC invalid channel configuration'); - return; - } - - if (audioObjectType === 5) { - // HE-AAC? - // 4 bits - extensionSamplingIndex = (array[1] & 0x07) << 1 | array[2] >>> 7; - // 5 bits - audioExtensionObjectType = (array[2] & 0x7C) >>> 2; - } - - // workarounds for various browsers - var userAgent = self.navigator.userAgent.toLowerCase(); - - if (userAgent.indexOf('firefox') !== -1) { - // firefox: use SBR (HE-AAC) if freq less than 24kHz - if (samplingIndex >= 6) { - audioObjectType = 5; - config = new Array(4); - extensionSamplingIndex = samplingIndex - 3; - } else { - // use LC-AAC - audioObjectType = 2; - config = new Array(2); - extensionSamplingIndex = samplingIndex; - } - } else if (userAgent.indexOf('android') !== -1) { - // android: always use LC-AAC - audioObjectType = 2; - config = new Array(2); - extensionSamplingIndex = samplingIndex; - } else { - // for other browsers, e.g. chrome... - // Always use HE-AAC to make it easier to switch aac codec profile - audioObjectType = 5; - extensionSamplingIndex = samplingIndex; - config = new Array(4); - - if (samplingIndex >= 6) { - extensionSamplingIndex = samplingIndex - 3; - } else if (channelConfig === 1) { - // Mono channel - audioObjectType = 2; - config = new Array(2); - extensionSamplingIndex = samplingIndex; - } - } - - config[0] = audioObjectType << 3; - config[0] |= (samplingIndex & 0x0F) >>> 1; - config[1] = (samplingIndex & 0x0F) << 7; - config[1] |= (channelConfig & 0x0F) << 3; - if (audioObjectType === 5) { - config[1] |= (extensionSamplingIndex & 0x0F) >>> 1; - config[2] = (extensionSamplingIndex & 0x01) << 7; - // extended audio object type: force to 2 (LC-AAC) - config[2] |= 2 << 2; - config[3] = 0; - } - - return { - config: config, - samplingRate: samplingFrequence, - channelCount: channelConfig, - codec: 'mp4a.40.' + audioObjectType, - originalCodec: 'mp4a.40.' + originalAudioObjectType - }; - } - }, { - key: '_parseMP3AudioData', - value: function _parseMP3AudioData(arrayBuffer, dataOffset, dataSize, requestHeader) { - if (dataSize < 4) { - _logger2.default.w(this.TAG, 'Flv: Invalid MP3 packet, header missing!'); - return; - } - - var le = this._littleEndian; - var array = new Uint8Array(arrayBuffer, dataOffset, dataSize); - var result = null; - - if (requestHeader) { - if (array[0] !== 0xFF) { - return; - } - var ver = array[1] >>> 3 & 0x03; - var layer = (array[1] & 0x06) >> 1; - - var bitrate_index = (array[2] & 0xF0) >>> 4; - var sampling_freq_index = (array[2] & 0x0C) >>> 2; - - var channel_mode = array[3] >>> 6 & 0x03; - var channel_count = channel_mode !== 3 ? 2 : 1; - - var sample_rate = 0; - var bit_rate = 0; - var object_type = 34; // Layer-3, listed in MPEG-4 Audio Object Types - - var codec = 'mp3'; - - switch (ver) { - case 0: - // MPEG 2.5 - sample_rate = this._mpegAudioV25SampleRateTable[sampling_freq_index]; - break; - case 2: - // MPEG 2 - sample_rate = this._mpegAudioV20SampleRateTable[sampling_freq_index]; - break; - case 3: - // MPEG 1 - sample_rate = this._mpegAudioV10SampleRateTable[sampling_freq_index]; - break; - } - - switch (layer) { - case 1: - // Layer 3 - object_type = 34; - if (bitrate_index < this._mpegAudioL3BitRateTable.length) { - bit_rate = this._mpegAudioL3BitRateTable[bitrate_index]; - } - break; - case 2: - // Layer 2 - object_type = 33; - if (bitrate_index < this._mpegAudioL2BitRateTable.length) { - bit_rate = this._mpegAudioL2BitRateTable[bitrate_index]; - } - break; - case 3: - // Layer 1 - object_type = 32; - if (bitrate_index < this._mpegAudioL1BitRateTable.length) { - bit_rate = this._mpegAudioL1BitRateTable[bitrate_index]; - } - break; - } - - result = { - bitRate: bit_rate, - samplingRate: sample_rate, - channelCount: channel_count, - codec: codec, - originalCodec: codec - }; - } else { - result = array; - } - - return result; - } - }, { - key: '_parseVideoData', - value: function _parseVideoData(arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition) { - if (dataSize <= 1) { - _logger2.default.w(this.TAG, 'Flv: Invalid video packet, missing VideoData payload!'); - return; - } - - if (this._hasVideoFlagOverrided === true && this._hasVideo === false) { - // If hasVideo: false indicated explicitly in MediaDataSource, - // Ignore all the video packets - return; - } - - var spec = new Uint8Array(arrayBuffer, dataOffset, dataSize)[0]; - - var frameType = (spec & 240) >>> 4; - var codecId = spec & 15; - - if (codecId !== 7) { - this._onError(_demuxErrors2.default.CODEC_UNSUPPORTED, 'Flv: Unsupported codec in video frame: ' + codecId); - return; - } - - this._parseAVCVideoPacket(arrayBuffer, dataOffset + 1, dataSize - 1, tagTimestamp, tagPosition, frameType); - } - }, { - key: '_parseAVCVideoPacket', - value: function _parseAVCVideoPacket(arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition, frameType) { - if (dataSize < 4) { - _logger2.default.w(this.TAG, 'Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime'); - return; - } - - var le = this._littleEndian; - var v = new DataView(arrayBuffer, dataOffset, dataSize); - - var packetType = v.getUint8(0); - var cts_unsigned = v.getUint32(0, !le) & 0x00FFFFFF; - var cts = cts_unsigned << 8 >> 8; // convert to 24-bit signed int - - if (packetType === 0) { - // AVCDecoderConfigurationRecord - this._parseAVCDecoderConfigurationRecord(arrayBuffer, dataOffset + 4, dataSize - 4); - } else if (packetType === 1) { - // One or more Nalus - this._parseAVCVideoData(arrayBuffer, dataOffset + 4, dataSize - 4, tagTimestamp, tagPosition, frameType, cts); - } else if (packetType === 2) { - // empty, AVC end of sequence - } else { - this._onError(_demuxErrors2.default.FORMAT_ERROR, 'Flv: Invalid video packet type ' + packetType); - return; - } - } - }, { - key: '_parseAVCDecoderConfigurationRecord', - value: function _parseAVCDecoderConfigurationRecord(arrayBuffer, dataOffset, dataSize) { - if (dataSize < 7) { - _logger2.default.w(this.TAG, 'Flv: Invalid AVCDecoderConfigurationRecord, lack of data!'); - return; - } - - var meta = this._videoMetadata; - var track = this._videoTrack; - var le = this._littleEndian; - var v = new DataView(arrayBuffer, dataOffset, dataSize); - - if (!meta) { - if (this._hasVideo === false && this._hasVideoFlagOverrided === false) { - this._hasVideo = true; - this._mediaInfo.hasVideo = true; - } - - meta = this._videoMetadata = {}; - meta.type = 'video'; - meta.id = track.id; - meta.timescale = this._timescale; - meta.duration = this._duration; - } else { - if (typeof meta.avcc !== 'undefined') { - _logger2.default.w(this.TAG, 'Found another AVCDecoderConfigurationRecord!'); - } - } - - var version = v.getUint8(0); // configurationVersion - var avcProfile = v.getUint8(1); // avcProfileIndication - var profileCompatibility = v.getUint8(2); // profile_compatibility - var avcLevel = v.getUint8(3); // AVCLevelIndication - - if (version !== 1 || avcProfile === 0) { - this._onError(_demuxErrors2.default.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord'); - return; - } - - this._naluLengthSize = (v.getUint8(4) & 3) + 1; // lengthSizeMinusOne - if (this._naluLengthSize !== 3 && this._naluLengthSize !== 4) { - // holy shit!!! - this._onError(_demuxErrors2.default.FORMAT_ERROR, 'Flv: Strange NaluLengthSizeMinusOne: ' + (this._naluLengthSize - 1)); - return; - } - - var spsCount = v.getUint8(5) & 31; // numOfSequenceParameterSets - if (spsCount === 0) { - this._onError(_demuxErrors2.default.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No SPS'); - return; - } else if (spsCount > 1) { - _logger2.default.w(this.TAG, 'Flv: Strange AVCDecoderConfigurationRecord: SPS Count = ' + spsCount); - } - - var offset = 6; - - for (var i = 0; i < spsCount; i++) { - var len = v.getUint16(offset, !le); // sequenceParameterSetLength - offset += 2; - - if (len === 0) { - continue; - } - - // Notice: Nalu without startcode header (00 00 00 01) - var sps = new Uint8Array(arrayBuffer, dataOffset + offset, len); - offset += len; - - var config = _spsParser2.default.parseSPS(sps); - if (i !== 0) { - // ignore other sps's config - continue; - } - - meta.codecWidth = config.codec_size.width; - meta.codecHeight = config.codec_size.height; - meta.presentWidth = config.present_size.width; - meta.presentHeight = config.present_size.height; - - meta.profile = config.profile_string; - meta.level = config.level_string; - meta.bitDepth = config.bit_depth; - meta.chromaFormat = config.chroma_format; - meta.sarRatio = config.sar_ratio; - meta.frameRate = config.frame_rate; - - if (config.frame_rate.fixed === false || config.frame_rate.fps_num === 0 || config.frame_rate.fps_den === 0) { - meta.frameRate = this._referenceFrameRate; - } - - var fps_den = meta.frameRate.fps_den; - var fps_num = meta.frameRate.fps_num; - meta.refSampleDuration = meta.timescale * (fps_den / fps_num); - - var codecArray = sps.subarray(1, 4); - var codecString = 'avc1.'; - for (var j = 0; j < 3; j++) { - var h = codecArray[j].toString(16); - if (h.length < 2) { - h = '0' + h; - } - codecString += h; - } - meta.codec = codecString; - - var mi = this._mediaInfo; - mi.width = meta.codecWidth; - mi.height = meta.codecHeight; - mi.fps = meta.frameRate.fps; - mi.profile = meta.profile; - mi.level = meta.level; - mi.refFrames = config.ref_frames; - mi.chromaFormat = config.chroma_format_string; - mi.sarNum = meta.sarRatio.width; - mi.sarDen = meta.sarRatio.height; - mi.videoCodec = codecString; - - if (mi.hasAudio) { - if (mi.audioCodec != null) { - mi.mimeType = 'video/x-flv; codecs="' + mi.videoCodec + ',' + mi.audioCodec + '"'; - } - } else { - mi.mimeType = 'video/x-flv; codecs="' + mi.videoCodec + '"'; - } - if (mi.isComplete()) { - this._onMediaInfo(mi); - } - } - - var ppsCount = v.getUint8(offset); // numOfPictureParameterSets - if (ppsCount === 0) { - this._onError(_demuxErrors2.default.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No PPS'); - return; - } else if (ppsCount > 1) { - _logger2.default.w(this.TAG, 'Flv: Strange AVCDecoderConfigurationRecord: PPS Count = ' + ppsCount); - } - - offset++; - - for (var _i = 0; _i < ppsCount; _i++) { - var _len = v.getUint16(offset, !le); // pictureParameterSetLength - offset += 2; - - if (_len === 0) { - continue; - } - - // pps is useless for extracting video information - offset += _len; - } - - meta.avcc = new Uint8Array(dataSize); - meta.avcc.set(new Uint8Array(arrayBuffer, dataOffset, dataSize), 0); - _logger2.default.v(this.TAG, 'Parsed AVCDecoderConfigurationRecord'); - - if (this._isInitialMetadataDispatched()) { - // flush parsed frames - if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) { - this._onDataAvailable(this._audioTrack, this._videoTrack); - } - } else { - this._videoInitialMetadataDispatched = true; - } - // notify new metadata - this._dispatch = false; - this._onTrackMetadata('video', meta); - } - }, { - key: '_parseAVCVideoData', - value: function _parseAVCVideoData(arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition, frameType, cts) { - var le = this._littleEndian; - var v = new DataView(arrayBuffer, dataOffset, dataSize); - - var units = [], - length = 0; - - var offset = 0; - var lengthSize = this._naluLengthSize; - var dts = this._timestampBase + tagTimestamp; - var keyframe = frameType === 1; // from FLV Frame Type constants - - while (offset < dataSize) { - if (offset + 4 >= dataSize) { - _logger2.default.w(this.TAG, 'Malformed Nalu near timestamp ' + dts + ', offset = ' + offset + ', dataSize = ' + dataSize); - break; // data not enough for next Nalu - } - // Nalu with length-header (AVC1) - var naluSize = v.getUint32(offset, !le); // Big-Endian read - if (lengthSize === 3) { - naluSize >>>= 8; - } - if (naluSize > dataSize - lengthSize) { - _logger2.default.w(this.TAG, 'Malformed Nalus near timestamp ' + dts + ', NaluSize > DataSize!'); - return; - } - - var unitType = v.getUint8(offset + lengthSize) & 0x1F; - - if (unitType === 5) { - // IDR - keyframe = true; - } - - var data = new Uint8Array(arrayBuffer, dataOffset + offset, lengthSize + naluSize); - var unit = { type: unitType, data: data }; - units.push(unit); - length += data.byteLength; - - offset += lengthSize + naluSize; - } - - if (units.length) { - var track = this._videoTrack; - var avcSample = { - units: units, - length: length, - isKeyframe: keyframe, - dts: dts, - cts: cts, - pts: dts + cts - }; - if (keyframe) { - avcSample.fileposition = tagPosition; - } - track.samples.push(avcSample); - track.length += length; - } - } - }, { - key: 'onTrackMetadata', - get: function get() { - return this._onTrackMetadata; - }, - set: function set(callback) { - this._onTrackMetadata = callback; - } - - // prototype: function(mediaInfo: MediaInfo): void - - }, { - key: 'onMediaInfo', - get: function get() { - return this._onMediaInfo; - }, - set: function set(callback) { - this._onMediaInfo = callback; - } - - // prototype: function(type: number, info: string): void - - }, { - key: 'onError', - get: function get() { - return this._onError; - }, - set: function set(callback) { - this._onError = callback; - } - - // prototype: function(videoTrack: any, audioTrack: any): void - - }, { - key: 'onDataAvailable', - get: function get() { - return this._onDataAvailable; - }, - set: function set(callback) { - this._onDataAvailable = callback; - } - - // timestamp base for output samples, must be in milliseconds - - }, { - key: 'timestampBase', - get: function get() { - return this._timestampBase; - }, - set: function set(base) { - this._timestampBase = base; - } - }, { - key: 'overridedDuration', - get: function get() { - return this._duration; - } - - // Force-override media duration. Must be in milliseconds, int32 - , - set: function set(duration) { - this._durationOverrided = true; - this._duration = duration; - this._mediaInfo.duration = duration; - } - - // Force-override audio track present flag, boolean - - }, { - key: 'overridedHasAudio', - set: function set(hasAudio) { - this._hasAudioFlagOverrided = true; - this._hasAudio = hasAudio; - this._mediaInfo.hasAudio = hasAudio; - } - - // Force-override video track present flag, boolean - - }, { - key: 'overridedHasVideo', - set: function set(hasVideo) { - this._hasVideoFlagOverrided = true; - this._hasVideo = hasVideo; - this._mediaInfo.hasVideo = hasVideo; - } - }], [{ - key: 'probe', - value: function probe(buffer) { - var data = new Uint8Array(buffer); - var mismatch = { match: false }; - - if (data[0] !== 0x46 || data[1] !== 0x4C || data[2] !== 0x56 || data[3] !== 0x01) { - return mismatch; - } - - var hasAudio = (data[4] & 4) >>> 2 !== 0; - var hasVideo = (data[4] & 1) !== 0; - - var offset = ReadBig32(data, 5); - - if (offset < 9) { - return mismatch; - } - - return { - match: true, - consumed: offset, - dataOffset: offset, - hasAudioTrack: hasAudio, - hasVideoTrack: hasVideo - }; - } - }]); - - return FLVDemuxer; -}(); - -exports.default = FLVDemuxer; - -},{"../core/media-info.js":7,"../utils/exception.js":40,"../utils/logger.js":41,"./amf-parser.js":15,"./demux-errors.js":16,"./sps-parser.js":19}],19:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var _expGolomb = _dereq_('./exp-golomb.js'); - -var _expGolomb2 = _interopRequireDefault(_expGolomb); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var SPSParser = function () { - function SPSParser() { - _classCallCheck(this, SPSParser); - } - - _createClass(SPSParser, null, [{ - key: '_ebsp2rbsp', - value: function _ebsp2rbsp(uint8array) { - var src = uint8array; - var src_length = src.byteLength; - var dst = new Uint8Array(src_length); - var dst_idx = 0; - - for (var i = 0; i < src_length; i++) { - if (i >= 2) { - // Unescape: Skip 0x03 after 00 00 - if (src[i] === 0x03 && src[i - 1] === 0x00 && src[i - 2] === 0x00) { - continue; - } - } - dst[dst_idx] = src[i]; - dst_idx++; - } - - return new Uint8Array(dst.buffer, 0, dst_idx); - } - }, { - key: 'parseSPS', - value: function parseSPS(uint8array) { - var rbsp = SPSParser._ebsp2rbsp(uint8array); - var gb = new _expGolomb2.default(rbsp); - - gb.readByte(); - var profile_idc = gb.readByte(); // profile_idc - gb.readByte(); // constraint_set_flags[5] + reserved_zero[3] - var level_idc = gb.readByte(); // level_idc - gb.readUEG(); // seq_parameter_set_id - - var profile_string = SPSParser.getProfileString(profile_idc); - var level_string = SPSParser.getLevelString(level_idc); - var chroma_format_idc = 1; - var chroma_format = 420; - var chroma_format_table = [0, 420, 422, 444]; - var bit_depth = 8; - - if (profile_idc === 100 || profile_idc === 110 || profile_idc === 122 || profile_idc === 244 || profile_idc === 44 || profile_idc === 83 || profile_idc === 86 || profile_idc === 118 || profile_idc === 128 || profile_idc === 138 || profile_idc === 144) { - - chroma_format_idc = gb.readUEG(); - if (chroma_format_idc === 3) { - gb.readBits(1); // separate_colour_plane_flag - } - if (chroma_format_idc <= 3) { - chroma_format = chroma_format_table[chroma_format_idc]; - } - - bit_depth = gb.readUEG() + 8; // bit_depth_luma_minus8 - gb.readUEG(); // bit_depth_chroma_minus8 - gb.readBits(1); // qpprime_y_zero_transform_bypass_flag - if (gb.readBool()) { - // seq_scaling_matrix_present_flag - var scaling_list_count = chroma_format_idc !== 3 ? 8 : 12; - for (var i = 0; i < scaling_list_count; i++) { - if (gb.readBool()) { - // seq_scaling_list_present_flag - if (i < 6) { - SPSParser._skipScalingList(gb, 16); - } else { - SPSParser._skipScalingList(gb, 64); - } - } - } - } - } - gb.readUEG(); // log2_max_frame_num_minus4 - var pic_order_cnt_type = gb.readUEG(); - if (pic_order_cnt_type === 0) { - gb.readUEG(); // log2_max_pic_order_cnt_lsb_minus_4 - } else if (pic_order_cnt_type === 1) { - gb.readBits(1); // delta_pic_order_always_zero_flag - gb.readSEG(); // offset_for_non_ref_pic - gb.readSEG(); // offset_for_top_to_bottom_field - var num_ref_frames_in_pic_order_cnt_cycle = gb.readUEG(); - for (var _i = 0; _i < num_ref_frames_in_pic_order_cnt_cycle; _i++) { - gb.readSEG(); // offset_for_ref_frame - } - } - var ref_frames = gb.readUEG(); // max_num_ref_frames - gb.readBits(1); // gaps_in_frame_num_value_allowed_flag - - var pic_width_in_mbs_minus1 = gb.readUEG(); - var pic_height_in_map_units_minus1 = gb.readUEG(); - - var frame_mbs_only_flag = gb.readBits(1); - if (frame_mbs_only_flag === 0) { - gb.readBits(1); // mb_adaptive_frame_field_flag - } - gb.readBits(1); // direct_8x8_inference_flag - - var frame_crop_left_offset = 0; - var frame_crop_right_offset = 0; - var frame_crop_top_offset = 0; - var frame_crop_bottom_offset = 0; - - var frame_cropping_flag = gb.readBool(); - if (frame_cropping_flag) { - frame_crop_left_offset = gb.readUEG(); - frame_crop_right_offset = gb.readUEG(); - frame_crop_top_offset = gb.readUEG(); - frame_crop_bottom_offset = gb.readUEG(); - } - - var sar_width = 1, - sar_height = 1; - var fps = 0, - fps_fixed = true, - fps_num = 0, - fps_den = 0; - - var vui_parameters_present_flag = gb.readBool(); - if (vui_parameters_present_flag) { - if (gb.readBool()) { - // aspect_ratio_info_present_flag - var aspect_ratio_idc = gb.readByte(); - var sar_w_table = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2]; - var sar_h_table = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1]; - - if (aspect_ratio_idc > 0 && aspect_ratio_idc < 16) { - sar_width = sar_w_table[aspect_ratio_idc - 1]; - sar_height = sar_h_table[aspect_ratio_idc - 1]; - } else if (aspect_ratio_idc === 255) { - sar_width = gb.readByte() << 8 | gb.readByte(); - sar_height = gb.readByte() << 8 | gb.readByte(); - } - } - - if (gb.readBool()) { - // overscan_info_present_flag - gb.readBool(); // overscan_appropriate_flag - } - if (gb.readBool()) { - // video_signal_type_present_flag - gb.readBits(4); // video_format & video_full_range_flag - if (gb.readBool()) { - // colour_description_present_flag - gb.readBits(24); // colour_primaries & transfer_characteristics & matrix_coefficients - } - } - if (gb.readBool()) { - // chroma_loc_info_present_flag - gb.readUEG(); // chroma_sample_loc_type_top_field - gb.readUEG(); // chroma_sample_loc_type_bottom_field - } - if (gb.readBool()) { - // timing_info_present_flag - var num_units_in_tick = gb.readBits(32); - var time_scale = gb.readBits(32); - fps_fixed = gb.readBool(); // fixed_frame_rate_flag - - fps_num = time_scale; - fps_den = num_units_in_tick * 2; - fps = fps_num / fps_den; - } - } - - var sarScale = 1; - if (sar_width !== 1 || sar_height !== 1) { - sarScale = sar_width / sar_height; - } - - var crop_unit_x = 0, - crop_unit_y = 0; - if (chroma_format_idc === 0) { - crop_unit_x = 1; - crop_unit_y = 2 - frame_mbs_only_flag; - } else { - var sub_wc = chroma_format_idc === 3 ? 1 : 2; - var sub_hc = chroma_format_idc === 1 ? 2 : 1; - crop_unit_x = sub_wc; - crop_unit_y = sub_hc * (2 - frame_mbs_only_flag); - } - - var codec_width = (pic_width_in_mbs_minus1 + 1) * 16; - var codec_height = (2 - frame_mbs_only_flag) * ((pic_height_in_map_units_minus1 + 1) * 16); - - codec_width -= (frame_crop_left_offset + frame_crop_right_offset) * crop_unit_x; - codec_height -= (frame_crop_top_offset + frame_crop_bottom_offset) * crop_unit_y; - - var present_width = Math.ceil(codec_width * sarScale); - - gb.destroy(); - gb = null; - - return { - profile_string: profile_string, // baseline, high, high10, ... - level_string: level_string, // 3, 3.1, 4, 4.1, 5, 5.1, ... - bit_depth: bit_depth, // 8bit, 10bit, ... - ref_frames: ref_frames, - chroma_format: chroma_format, // 4:2:0, 4:2:2, ... - chroma_format_string: SPSParser.getChromaFormatString(chroma_format), - - frame_rate: { - fixed: fps_fixed, - fps: fps, - fps_den: fps_den, - fps_num: fps_num - }, - - sar_ratio: { - width: sar_width, - height: sar_height - }, - - codec_size: { - width: codec_width, - height: codec_height - }, - - present_size: { - width: present_width, - height: codec_height - } - }; - } - }, { - key: '_skipScalingList', - value: function _skipScalingList(gb, count) { - var last_scale = 8, - next_scale = 8; - var delta_scale = 0; - for (var i = 0; i < count; i++) { - if (next_scale !== 0) { - delta_scale = gb.readSEG(); - next_scale = (last_scale + delta_scale + 256) % 256; - } - last_scale = next_scale === 0 ? last_scale : next_scale; - } - } - }, { - key: 'getProfileString', - value: function getProfileString(profile_idc) { - switch (profile_idc) { - case 66: - return 'Baseline'; - case 77: - return 'Main'; - case 88: - return 'Extended'; - case 100: - return 'High'; - case 110: - return 'High10'; - case 122: - return 'High422'; - case 244: - return 'High444'; - default: - return 'Unknown'; - } - } - }, { - key: 'getLevelString', - value: function getLevelString(level_idc) { - return (level_idc / 10).toFixed(1); - } - }, { - key: 'getChromaFormatString', - value: function getChromaFormatString(chroma) { - switch (chroma) { - case 420: - return '4:2:0'; - case 422: - return '4:2:2'; - case 444: - return '4:4:4'; - default: - return 'Unknown'; - } - } - }]); - - return SPSParser; -}(); - -exports.default = SPSParser; - -},{"./exp-golomb.js":17}],20:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var _polyfill = _dereq_('./utils/polyfill.js'); - -var _polyfill2 = _interopRequireDefault(_polyfill); - -var _features = _dereq_('./core/features.js'); - -var _features2 = _interopRequireDefault(_features); - -var _flvPlayer = _dereq_('./player/flv-player.js'); - -var _flvPlayer2 = _interopRequireDefault(_flvPlayer); - -var _nativePlayer = _dereq_('./player/native-player.js'); - -var _nativePlayer2 = _interopRequireDefault(_nativePlayer); - -var _playerEvents = _dereq_('./player/player-events.js'); - -var _playerEvents2 = _interopRequireDefault(_playerEvents); - -var _playerErrors = _dereq_('./player/player-errors.js'); - -var _loggingControl = _dereq_('./utils/logging-control.js'); - -var _loggingControl2 = _interopRequireDefault(_loggingControl); - -var _exception = _dereq_('./utils/exception.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// here are all the interfaces - -// install polyfills -_polyfill2.default.install(); - -// factory method -function createPlayer(mediaDataSource, optionalConfig) { - var mds = mediaDataSource; - if (mds == null || (typeof mds === 'undefined' ? 'undefined' : _typeof(mds)) !== 'object') { - throw new _exception.InvalidArgumentException('MediaDataSource must be an javascript object!'); - } - - if (!mds.hasOwnProperty('type')) { - throw new _exception.InvalidArgumentException('MediaDataSource must has type field to indicate video file type!'); - } - - switch (mds.type) { - case 'flv': - return new _flvPlayer2.default(mds, optionalConfig); - default: - return new _nativePlayer2.default(mds, optionalConfig); - } -} - -// feature detection -function isSupported() { - return _features2.default.supportMSEH264Playback(); -} - -function getFeatureList() { - return _features2.default.getFeatureList(); -} - -// interfaces -var flvjs = {}; - -flvjs.createPlayer = createPlayer; -flvjs.isSupported = isSupported; -flvjs.getFeatureList = getFeatureList; - -flvjs.Events = _playerEvents2.default; -flvjs.ErrorTypes = _playerErrors.ErrorTypes; -flvjs.ErrorDetails = _playerErrors.ErrorDetails; - -flvjs.FlvPlayer = _flvPlayer2.default; -flvjs.NativePlayer = _nativePlayer2.default; -flvjs.LoggingControl = _loggingControl2.default; - -Object.defineProperty(flvjs, 'version', { - enumerable: true, - get: function get() { - // replaced by browserify-versionify transform - return '1.4.0'; - } -}); - -exports.default = flvjs; - -},{"./core/features.js":6,"./player/flv-player.js":32,"./player/native-player.js":33,"./player/player-errors.js":34,"./player/player-events.js":35,"./utils/exception.js":40,"./utils/logging-control.js":42,"./utils/polyfill.js":43}],21:[function(_dereq_,module,exports){ -'use strict'; - -// entry/index file - -// make it compatible with browserify's umd wrapper -module.exports = _dereq_('./flv.js').default; - -},{"./flv.js":20}],22:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _logger = _dereq_('../utils/logger.js'); - -var _logger2 = _interopRequireDefault(_logger); - -var _browser = _dereq_('../utils/browser.js'); - -var _browser2 = _interopRequireDefault(_browser); - -var _loader = _dereq_('./loader.js'); - -var _exception = _dereq_('../utils/exception.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* fetch + stream IO loader. Currently working on chrome 43+. - * fetch provides a better alternative http API to XMLHttpRequest - * - * fetch spec https://fetch.spec.whatwg.org/ - * stream spec https://streams.spec.whatwg.org/ - */ -var FetchStreamLoader = function (_BaseLoader) { - _inherits(FetchStreamLoader, _BaseLoader); - - _createClass(FetchStreamLoader, null, [{ - key: 'isSupported', - value: function isSupported() { - try { - // fetch + stream is broken on Microsoft Edge. Disable before build 15048. - // see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8196907/ - // Fixed in Jan 10, 2017. Build 15048+ removed from blacklist. - var isWorkWellEdge = _browser2.default.msedge && _browser2.default.version.minor >= 15048; - var browserNotBlacklisted = _browser2.default.msedge ? isWorkWellEdge : true; - return self.fetch && self.ReadableStream && browserNotBlacklisted; - } catch (e) { - return false; - } - } - }]); - - function FetchStreamLoader(seekHandler, config) { - _classCallCheck(this, FetchStreamLoader); - - var _this = _possibleConstructorReturn(this, (FetchStreamLoader.__proto__ || Object.getPrototypeOf(FetchStreamLoader)).call(this, 'fetch-stream-loader')); - - _this.TAG = 'FetchStreamLoader'; - - _this._seekHandler = seekHandler; - _this._config = config; - _this._needStash = true; - - _this._requestAbort = false; - _this._contentLength = null; - _this._receivedLength = 0; - return _this; - } - - _createClass(FetchStreamLoader, [{ - key: 'destroy', - value: function destroy() { - if (this.isWorking()) { - this.abort(); - } - _get(FetchStreamLoader.prototype.__proto__ || Object.getPrototypeOf(FetchStreamLoader.prototype), 'destroy', this).call(this); - } - }, { - key: 'open', - value: function open(dataSource, range) { - var _this2 = this; - - this._dataSource = dataSource; - this._range = range; - - var sourceURL = dataSource.url; - if (this._config.reuseRedirectedURL && dataSource.redirectedURL != undefined) { - sourceURL = dataSource.redirectedURL; - } - - var seekConfig = this._seekHandler.getConfig(sourceURL, range); - - var headers = new self.Headers(); - - if (_typeof(seekConfig.headers) === 'object') { - var configHeaders = seekConfig.headers; - for (var key in configHeaders) { - if (configHeaders.hasOwnProperty(key)) { - headers.append(key, configHeaders[key]); - } - } - } - - var params = { - method: 'GET', - headers: headers, - mode: 'cors', - cache: 'default', - // The default policy of Fetch API in the whatwg standard - // Safari incorrectly indicates 'no-referrer' as default policy, fuck it - referrerPolicy: 'no-referrer-when-downgrade' - }; - - // cors is enabled by default - if (dataSource.cors === false) { - // no-cors means 'disregard cors policy', which can only be used in ServiceWorker - params.mode = 'same-origin'; - } - - // withCredentials is disabled by default - if (dataSource.withCredentials) { - params.credentials = 'include'; - } - - // referrerPolicy from config - if (dataSource.referrerPolicy) { - params.referrerPolicy = dataSource.referrerPolicy; - } - - this._status = _loader.LoaderStatus.kConnecting; - self.fetch(seekConfig.url, params).then(function (res) { - if (_this2._requestAbort) { - _this2._requestAbort = false; - _this2._status = _loader.LoaderStatus.kIdle; - return; - } - if (res.ok && res.status >= 200 && res.status <= 299) { - if (res.url !== seekConfig.url) { - if (_this2._onURLRedirect) { - var redirectedURL = _this2._seekHandler.removeURLParameters(res.url); - _this2._onURLRedirect(redirectedURL); - } - } - - var lengthHeader = res.headers.get('Content-Length'); - if (lengthHeader != null) { - _this2._contentLength = parseInt(lengthHeader); - if (_this2._contentLength !== 0) { - if (_this2._onContentLengthKnown) { - _this2._onContentLengthKnown(_this2._contentLength); - } - } - } - - return _this2._pump.call(_this2, res.body.getReader()); - } else { - _this2._status = _loader.LoaderStatus.kError; - if (_this2._onError) { - _this2._onError(_loader.LoaderErrors.HTTP_STATUS_CODE_INVALID, { code: res.status, msg: res.statusText }); - } else { - throw new _exception.RuntimeException('FetchStreamLoader: Http code invalid, ' + res.status + ' ' + res.statusText); - } - } - }).catch(function (e) { - _this2._status = _loader.LoaderStatus.kError; - if (_this2._onError) { - _this2._onError(_loader.LoaderErrors.EXCEPTION, { code: -1, msg: e.message }); - } else { - throw e; - } - }); - } - }, { - key: 'abort', - value: function abort() { - this._requestAbort = true; - } - }, { - key: '_pump', - value: function _pump(reader) { - var _this3 = this; - - // ReadableStreamReader - return reader.read().then(function (result) { - if (result.done) { - _this3._status = _loader.LoaderStatus.kComplete; - if (_this3._onComplete) { - _this3._onComplete(_this3._range.from, _this3._range.from + _this3._receivedLength - 1); - } - } else { - if (_this3._requestAbort === true) { - _this3._requestAbort = false; - _this3._status = _loader.LoaderStatus.kComplete; - return reader.cancel(); - } - - _this3._status = _loader.LoaderStatus.kBuffering; - - var chunk = result.value.buffer; - var byteStart = _this3._range.from + _this3._receivedLength; - _this3._receivedLength += chunk.byteLength; - - if (_this3._onDataArrival) { - _this3._onDataArrival(chunk, byteStart, _this3._receivedLength); - } - - _this3._pump(reader); - } - }).catch(function (e) { - if (e.code === 11 && _browser2.default.msedge) { - // InvalidStateError on Microsoft Edge - // Workaround: Edge may throw InvalidStateError after ReadableStreamReader.cancel() call - // Ignore the unknown exception. - // Related issue: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11265202/ - return; - } - - _this3._status = _loader.LoaderStatus.kError; - var type = 0; - var info = null; - - if ((e.code === 19 || e.message === 'network error') && ( // NETWORK_ERR - _this3._contentLength === null || _this3._contentLength !== null && _this3._receivedLength < _this3._contentLength)) { - type = _loader.LoaderErrors.EARLY_EOF; - info = { code: e.code, msg: 'Fetch stream meet Early-EOF' }; - } else { - type = _loader.LoaderErrors.EXCEPTION; - info = { code: e.code, msg: e.message }; - } - - if (_this3._onError) { - _this3._onError(type, info); - } else { - throw new _exception.RuntimeException(info.msg); - } - }); - } - }]); - - return FetchStreamLoader; -}(_loader.BaseLoader); - -exports.default = FetchStreamLoader; - -},{"../utils/browser.js":39,"../utils/exception.js":40,"../utils/logger.js":41,"./loader.js":24}],23:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var _logger = _dereq_('../utils/logger.js'); - -var _logger2 = _interopRequireDefault(_logger); - -var _speedSampler = _dereq_('./speed-sampler.js'); - -var _speedSampler2 = _interopRequireDefault(_speedSampler); - -var _loader = _dereq_('./loader.js'); - -var _fetchStreamLoader = _dereq_('./fetch-stream-loader.js'); - -var _fetchStreamLoader2 = _interopRequireDefault(_fetchStreamLoader); - -var _xhrMozChunkedLoader = _dereq_('./xhr-moz-chunked-loader.js'); - -var _xhrMozChunkedLoader2 = _interopRequireDefault(_xhrMozChunkedLoader); - -var _xhrMsstreamLoader = _dereq_('./xhr-msstream-loader.js'); - -var _xhrMsstreamLoader2 = _interopRequireDefault(_xhrMsstreamLoader); - -var _xhrRangeLoader = _dereq_('./xhr-range-loader.js'); - -var _xhrRangeLoader2 = _interopRequireDefault(_xhrRangeLoader); - -var _websocketLoader = _dereq_('./websocket-loader.js'); - -var _websocketLoader2 = _interopRequireDefault(_websocketLoader); - -var _rangeSeekHandler = _dereq_('./range-seek-handler.js'); - -var _rangeSeekHandler2 = _interopRequireDefault(_rangeSeekHandler); - -var _paramSeekHandler = _dereq_('./param-seek-handler.js'); - -var _paramSeekHandler2 = _interopRequireDefault(_paramSeekHandler); - -var _exception = _dereq_('../utils/exception.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * DataSource: { - * url: string, - * filesize: number, - * cors: boolean, - * withCredentials: boolean - * } - * - */ - -// Manage IO Loaders -var IOController = function () { - function IOController(dataSource, config, extraData) { - _classCallCheck(this, IOController); - - this.TAG = 'IOController'; - - this._config = config; - this._extraData = extraData; - - this._stashInitialSize = 1024 * 384; // default initial size: 384KB - if (config.stashInitialSize != undefined && config.stashInitialSize > 0) { - // apply from config - this._stashInitialSize = config.stashInitialSize; - } - - this._stashUsed = 0; - this._stashSize = this._stashInitialSize; - this._bufferSize = 1024 * 1024 * 3; // initial size: 3MB - this._stashBuffer = new ArrayBuffer(this._bufferSize); - this._stashByteStart = 0; - this._enableStash = true; - if (config.enableStashBuffer === false) { - this._enableStash = false; - } - - this._loader = null; - this._loaderClass = null; - this._seekHandler = null; - - this._dataSource = dataSource; - this._isWebSocketURL = /wss?:\/\/(.+?)/.test(dataSource.url); - this._refTotalLength = dataSource.filesize ? dataSource.filesize : null; - this._totalLength = this._refTotalLength; - this._fullRequestFlag = false; - this._currentRange = null; - this._redirectedURL = null; - - this._speedNormalized = 0; - this._speedSampler = new _speedSampler2.default(); - this._speedNormalizeList = [64, 128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096]; - - this._isEarlyEofReconnecting = false; - - this._paused = false; - this._resumeFrom = 0; - - this._onDataArrival = null; - this._onSeeked = null; - this._onError = null; - this._onComplete = null; - this._onRedirect = null; - this._onRecoveredEarlyEof = null; - - this._selectSeekHandler(); - this._selectLoader(); - this._createLoader(); - } - - _createClass(IOController, [{ - key: 'destroy', - value: function destroy() { - if (this._loader.isWorking()) { - this._loader.abort(); - } - this._loader.destroy(); - this._loader = null; - this._loaderClass = null; - this._dataSource = null; - this._stashBuffer = null; - this._stashUsed = this._stashSize = this._bufferSize = this._stashByteStart = 0; - this._currentRange = null; - this._speedSampler = null; - - this._isEarlyEofReconnecting = false; - - this._onDataArrival = null; - this._onSeeked = null; - this._onError = null; - this._onComplete = null; - this._onRedirect = null; - this._onRecoveredEarlyEof = null; - - this._extraData = null; - } - }, { - key: 'isWorking', - value: function isWorking() { - return this._loader && this._loader.isWorking() && !this._paused; - } - }, { - key: 'isPaused', - value: function isPaused() { - return this._paused; - } - }, { - key: '_selectSeekHandler', - value: function _selectSeekHandler() { - var config = this._config; - - if (config.seekType === 'range') { - this._seekHandler = new _rangeSeekHandler2.default(this._config.rangeLoadZeroStart); - } else if (config.seekType === 'param') { - var paramStart = config.seekParamStart || 'bstart'; - var paramEnd = config.seekParamEnd || 'bend'; - - this._seekHandler = new _paramSeekHandler2.default(paramStart, paramEnd); - } else if (config.seekType === 'custom') { - if (typeof config.customSeekHandler !== 'function') { - throw new _exception.InvalidArgumentException('Custom seekType specified in config but invalid customSeekHandler!'); - } - this._seekHandler = new config.customSeekHandler(); - } else { - throw new _exception.InvalidArgumentException('Invalid seekType in config: ' + config.seekType); - } - } - }, { - key: '_selectLoader', - value: function _selectLoader() { - if (this._isWebSocketURL) { - this._loaderClass = _websocketLoader2.default; - } else if (_fetchStreamLoader2.default.isSupported()) { - this._loaderClass = _fetchStreamLoader2.default; - } else if (_xhrMozChunkedLoader2.default.isSupported()) { - this._loaderClass = _xhrMozChunkedLoader2.default; - } else if (_xhrRangeLoader2.default.isSupported()) { - this._loaderClass = _xhrRangeLoader2.default; - } else { - throw new _exception.RuntimeException('Your browser doesn\'t support xhr with arraybuffer responseType!'); - } - } - }, { - key: '_createLoader', - value: function _createLoader() { - this._loader = new this._loaderClass(this._seekHandler, this._config); - if (this._loader.needStashBuffer === false) { - this._enableStash = false; - } - this._loader.onContentLengthKnown = this._onContentLengthKnown.bind(this); - this._loader.onURLRedirect = this._onURLRedirect.bind(this); - this._loader.onDataArrival = this._onLoaderChunkArrival.bind(this); - this._loader.onComplete = this._onLoaderComplete.bind(this); - this._loader.onError = this._onLoaderError.bind(this); - } - }, { - key: 'open', - value: function open(optionalFrom) { - this._currentRange = { from: 0, to: -1 }; - if (optionalFrom) { - this._currentRange.from = optionalFrom; - } - - this._speedSampler.reset(); - if (!optionalFrom) { - this._fullRequestFlag = true; - } - - this._loader.open(this._dataSource, Object.assign({}, this._currentRange)); - } - }, { - key: 'abort', - value: function abort() { - this._loader.abort(); - - if (this._paused) { - this._paused = false; - this._resumeFrom = 0; - } - } - }, { - key: 'pause', - value: function pause() { - if (this.isWorking()) { - this._loader.abort(); - - if (this._stashUsed !== 0) { - this._resumeFrom = this._stashByteStart; - this._currentRange.to = this._stashByteStart - 1; - } else { - this._resumeFrom = this._currentRange.to + 1; - } - this._stashUsed = 0; - this._stashByteStart = 0; - this._paused = true; - } - } - }, { - key: 'resume', - value: function resume() { - if (this._paused) { - this._paused = false; - var bytes = this._resumeFrom; - this._resumeFrom = 0; - this._internalSeek(bytes, true); - } - } - }, { - key: 'seek', - value: function seek(bytes) { - this._paused = false; - this._stashUsed = 0; - this._stashByteStart = 0; - this._internalSeek(bytes, true); - } - - /** - * When seeking request is from media seeking, unconsumed stash data should be dropped - * However, stash data shouldn't be dropped if seeking requested from http reconnection - * - * @dropUnconsumed: Ignore and discard all unconsumed data in stash buffer - */ - - }, { - key: '_internalSeek', - value: function _internalSeek(bytes, dropUnconsumed) { - if (this._loader.isWorking()) { - this._loader.abort(); - } - - // dispatch & flush stash buffer before seek - this._flushStashBuffer(dropUnconsumed); - - this._loader.destroy(); - this._loader = null; - - var requestRange = { from: bytes, to: -1 }; - this._currentRange = { from: requestRange.from, to: -1 }; - - this._speedSampler.reset(); - this._stashSize = this._stashInitialSize; - this._createLoader(); - this._loader.open(this._dataSource, requestRange); - - if (this._onSeeked) { - this._onSeeked(); - } - } - }, { - key: 'updateUrl', - value: function updateUrl(url) { - if (!url || typeof url !== 'string' || url.length === 0) { - throw new _exception.InvalidArgumentException('Url must be a non-empty string!'); - } - - this._dataSource.url = url; - - // TODO: replace with new url - } - }, { - key: '_expandBuffer', - value: function _expandBuffer(expectedBytes) { - var bufferNewSize = this._stashSize; - while (bufferNewSize + 1024 * 1024 * 1 < expectedBytes) { - bufferNewSize *= 2; - } - - bufferNewSize += 1024 * 1024 * 1; // bufferSize = stashSize + 1MB - if (bufferNewSize === this._bufferSize) { - return; - } - - var newBuffer = new ArrayBuffer(bufferNewSize); - - if (this._stashUsed > 0) { - // copy existing data into new buffer - var stashOldArray = new Uint8Array(this._stashBuffer, 0, this._stashUsed); - var stashNewArray = new Uint8Array(newBuffer, 0, bufferNewSize); - stashNewArray.set(stashOldArray, 0); - } - - this._stashBuffer = newBuffer; - this._bufferSize = bufferNewSize; - } - }, { - key: '_normalizeSpeed', - value: function _normalizeSpeed(input) { - var list = this._speedNormalizeList; - var last = list.length - 1; - var mid = 0; - var lbound = 0; - var ubound = last; - - if (input < list[0]) { - return list[0]; - } - - // binary search - while (lbound <= ubound) { - mid = lbound + Math.floor((ubound - lbound) / 2); - if (mid === last || input >= list[mid] && input < list[mid + 1]) { - return list[mid]; - } else if (list[mid] < input) { - lbound = mid + 1; - } else { - ubound = mid - 1; - } - } - } - }, { - key: '_adjustStashSize', - value: function _adjustStashSize(normalized) { - var stashSizeKB = 0; - - if (this._config.isLive) { - // live stream: always use single normalized speed for size of stashSizeKB - stashSizeKB = normalized; - } else { - if (normalized < 512) { - stashSizeKB = normalized; - } else if (normalized >= 512 && normalized <= 1024) { - stashSizeKB = Math.floor(normalized * 1.5); - } else { - stashSizeKB = normalized * 2; - } - } - - if (stashSizeKB > 8192) { - stashSizeKB = 8192; - } - - var bufferSize = stashSizeKB * 1024 + 1024 * 1024 * 1; // stashSize + 1MB - if (this._bufferSize < bufferSize) { - this._expandBuffer(bufferSize); - } - this._stashSize = stashSizeKB * 1024; - } - }, { - key: '_dispatchChunks', - value: function _dispatchChunks(chunks, byteStart) { - this._currentRange.to = byteStart + chunks.byteLength - 1; - return this._onDataArrival(chunks, byteStart); - } - }, { - key: '_onURLRedirect', - value: function _onURLRedirect(redirectedURL) { - this._redirectedURL = redirectedURL; - if (this._onRedirect) { - this._onRedirect(redirectedURL); - } - } - }, { - key: '_onContentLengthKnown', - value: function _onContentLengthKnown(contentLength) { - if (contentLength && this._fullRequestFlag) { - this._totalLength = contentLength; - this._fullRequestFlag = false; - } - } - }, { - key: '_onLoaderChunkArrival', - value: function _onLoaderChunkArrival(chunk, byteStart, receivedLength) { - if (!this._onDataArrival) { - throw new _exception.IllegalStateException('IOController: No existing consumer (onDataArrival) callback!'); - } - if (this._paused) { - return; - } - if (this._isEarlyEofReconnecting) { - // Auto-reconnect for EarlyEof succeed, notify to upper-layer by callback - this._isEarlyEofReconnecting = false; - if (this._onRecoveredEarlyEof) { - this._onRecoveredEarlyEof(); - } - } - - this._speedSampler.addBytes(chunk.byteLength); - - // adjust stash buffer size according to network speed dynamically - var KBps = this._speedSampler.lastSecondKBps; - if (KBps !== 0) { - var normalized = this._normalizeSpeed(KBps); - if (this._speedNormalized !== normalized) { - this._speedNormalized = normalized; - this._adjustStashSize(normalized); - } - } - - if (!this._enableStash) { - // disable stash - if (this._stashUsed === 0) { - // dispatch chunk directly to consumer; - // check ret value (consumed bytes) and stash unconsumed to stashBuffer - var consumed = this._dispatchChunks(chunk, byteStart); - if (consumed < chunk.byteLength) { - // unconsumed data remain. - var remain = chunk.byteLength - consumed; - if (remain > this._bufferSize) { - this._expandBuffer(remain); - } - var stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize); - stashArray.set(new Uint8Array(chunk, consumed), 0); - this._stashUsed += remain; - this._stashByteStart = byteStart + consumed; - } - } else { - // else: Merge chunk into stashBuffer, and dispatch stashBuffer to consumer. - if (this._stashUsed + chunk.byteLength > this._bufferSize) { - this._expandBuffer(this._stashUsed + chunk.byteLength); - } - var _stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize); - _stashArray.set(new Uint8Array(chunk), this._stashUsed); - this._stashUsed += chunk.byteLength; - var _consumed = this._dispatchChunks(this._stashBuffer.slice(0, this._stashUsed), this._stashByteStart); - if (_consumed < this._stashUsed && _consumed > 0) { - // unconsumed data remain - var remainArray = new Uint8Array(this._stashBuffer, _consumed); - _stashArray.set(remainArray, 0); - } - this._stashUsed -= _consumed; - this._stashByteStart += _consumed; - } - } else { - // enable stash - if (this._stashUsed === 0 && this._stashByteStart === 0) { - // seeked? or init chunk? - // This is the first chunk after seek action - this._stashByteStart = byteStart; - } - if (this._stashUsed + chunk.byteLength <= this._stashSize) { - // just stash - var _stashArray2 = new Uint8Array(this._stashBuffer, 0, this._stashSize); - _stashArray2.set(new Uint8Array(chunk), this._stashUsed); - this._stashUsed += chunk.byteLength; - } else { - // stashUsed + chunkSize > stashSize, size limit exceeded - var _stashArray3 = new Uint8Array(this._stashBuffer, 0, this._bufferSize); - if (this._stashUsed > 0) { - // There're stash datas in buffer - // dispatch the whole stashBuffer, and stash remain data - // then append chunk to stashBuffer (stash) - var buffer = this._stashBuffer.slice(0, this._stashUsed); - var _consumed2 = this._dispatchChunks(buffer, this._stashByteStart); - if (_consumed2 < buffer.byteLength) { - if (_consumed2 > 0) { - var _remainArray = new Uint8Array(buffer, _consumed2); - _stashArray3.set(_remainArray, 0); - this._stashUsed = _remainArray.byteLength; - this._stashByteStart += _consumed2; - } - } else { - this._stashUsed = 0; - this._stashByteStart += _consumed2; - } - if (this._stashUsed + chunk.byteLength > this._bufferSize) { - this._expandBuffer(this._stashUsed + chunk.byteLength); - _stashArray3 = new Uint8Array(this._stashBuffer, 0, this._bufferSize); - } - _stashArray3.set(new Uint8Array(chunk), this._stashUsed); - this._stashUsed += chunk.byteLength; - } else { - // stash buffer empty, but chunkSize > stashSize (oh, holy shit) - // dispatch chunk directly and stash remain data - var _consumed3 = this._dispatchChunks(chunk, byteStart); - if (_consumed3 < chunk.byteLength) { - var _remain = chunk.byteLength - _consumed3; - if (_remain > this._bufferSize) { - this._expandBuffer(_remain); - _stashArray3 = new Uint8Array(this._stashBuffer, 0, this._bufferSize); - } - _stashArray3.set(new Uint8Array(chunk, _consumed3), 0); - this._stashUsed += _remain; - this._stashByteStart = byteStart + _consumed3; - } - } - } - } - } - }, { - key: '_flushStashBuffer', - value: function _flushStashBuffer(dropUnconsumed) { - if (this._stashUsed > 0) { - var buffer = this._stashBuffer.slice(0, this._stashUsed); - var consumed = this._dispatchChunks(buffer, this._stashByteStart); - var remain = buffer.byteLength - consumed; - - if (consumed < buffer.byteLength) { - if (dropUnconsumed) { - _logger2.default.w(this.TAG, remain + ' bytes unconsumed data remain when flush buffer, dropped'); - } else { - if (consumed > 0) { - var stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize); - var remainArray = new Uint8Array(buffer, consumed); - stashArray.set(remainArray, 0); - this._stashUsed = remainArray.byteLength; - this._stashByteStart += consumed; - } - return 0; - } - } - this._stashUsed = 0; - this._stashByteStart = 0; - return remain; - } - return 0; - } - }, { - key: '_onLoaderComplete', - value: function _onLoaderComplete(from, to) { - // Force-flush stash buffer, and drop unconsumed data - this._flushStashBuffer(true); - - if (this._onComplete) { - this._onComplete(this._extraData); - } - } - }, { - key: '_onLoaderError', - value: function _onLoaderError(type, data) { - _logger2.default.e(this.TAG, 'Loader error, code = ' + data.code + ', msg = ' + data.msg); - - this._flushStashBuffer(false); - - if (this._isEarlyEofReconnecting) { - // Auto-reconnect for EarlyEof failed, throw UnrecoverableEarlyEof error to upper-layer - this._isEarlyEofReconnecting = false; - type = _loader.LoaderErrors.UNRECOVERABLE_EARLY_EOF; - } - - switch (type) { - case _loader.LoaderErrors.EARLY_EOF: - { - if (!this._config.isLive) { - // Do internal http reconnect if not live stream - if (this._totalLength) { - var nextFrom = this._currentRange.to + 1; - if (nextFrom < this._totalLength) { - _logger2.default.w(this.TAG, 'Connection lost, trying reconnect...'); - this._isEarlyEofReconnecting = true; - this._internalSeek(nextFrom, false); - } - return; - } - // else: We don't know totalLength, throw UnrecoverableEarlyEof - } - // live stream: throw UnrecoverableEarlyEof error to upper-layer - type = _loader.LoaderErrors.UNRECOVERABLE_EARLY_EOF; - break; - } - case _loader.LoaderErrors.UNRECOVERABLE_EARLY_EOF: - case _loader.LoaderErrors.CONNECTING_TIMEOUT: - case _loader.LoaderErrors.HTTP_STATUS_CODE_INVALID: - case _loader.LoaderErrors.EXCEPTION: - break; - } - - if (this._onError) { - this._onError(type, data); - } else { - throw new _exception.RuntimeException('IOException: ' + data.msg); - } - } - }, { - key: 'status', - get: function get() { - return this._loader.status; - } - }, { - key: 'extraData', - get: function get() { - return this._extraData; - }, - set: function set(data) { - this._extraData = data; - } - - // prototype: function onDataArrival(chunks: ArrayBuffer, byteStart: number): number - - }, { - key: 'onDataArrival', - get: function get() { - return this._onDataArrival; - }, - set: function set(callback) { - this._onDataArrival = callback; - } - }, { - key: 'onSeeked', - get: function get() { - return this._onSeeked; - }, - set: function set(callback) { - this._onSeeked = callback; - } - - // prototype: function onError(type: number, info: {code: number, msg: string}): void - - }, { - key: 'onError', - get: function get() { - return this._onError; - }, - set: function set(callback) { - this._onError = callback; - } - }, { - key: 'onComplete', - get: function get() { - return this._onComplete; - }, - set: function set(callback) { - this._onComplete = callback; - } - }, { - key: 'onRedirect', - get: function get() { - return this._onRedirect; - }, - set: function set(callback) { - this._onRedirect = callback; - } - }, { - key: 'onRecoveredEarlyEof', - get: function get() { - return this._onRecoveredEarlyEof; - }, - set: function set(callback) { - this._onRecoveredEarlyEof = callback; - } - }, { - key: 'currentURL', - get: function get() { - return this._dataSource.url; - } - }, { - key: 'hasRedirect', - get: function get() { - return this._redirectedURL != null || this._dataSource.redirectedURL != undefined; - } - }, { - key: 'currentRedirectedURL', - get: function get() { - return this._redirectedURL || this._dataSource.redirectedURL; - } - - // in KB/s - - }, { - key: 'currentSpeed', - get: function get() { - if (this._loaderClass === _xhrRangeLoader2.default) { - // SpeedSampler is inaccuracy if loader is RangeLoader - return this._loader.currentSpeed; - } - return this._speedSampler.lastSecondKBps; - } - }, { - key: 'loaderType', - get: function get() { - return this._loader.type; - } - }]); - - return IOController; -}(); - -exports.default = IOController; - -},{"../utils/exception.js":40,"../utils/logger.js":41,"./fetch-stream-loader.js":22,"./loader.js":24,"./param-seek-handler.js":25,"./range-seek-handler.js":26,"./speed-sampler.js":27,"./websocket-loader.js":28,"./xhr-moz-chunked-loader.js":29,"./xhr-msstream-loader.js":30,"./xhr-range-loader.js":31}],24:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.BaseLoader = exports.LoaderErrors = exports.LoaderStatus = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var _exception = _dereq_('../utils/exception.js'); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var LoaderStatus = exports.LoaderStatus = { - kIdle: 0, - kConnecting: 1, - kBuffering: 2, - kError: 3, - kComplete: 4 -}; - -var LoaderErrors = exports.LoaderErrors = { - OK: 'OK', - EXCEPTION: 'Exception', - HTTP_STATUS_CODE_INVALID: 'HttpStatusCodeInvalid', - CONNECTING_TIMEOUT: 'ConnectingTimeout', - EARLY_EOF: 'EarlyEof', - UNRECOVERABLE_EARLY_EOF: 'UnrecoverableEarlyEof' -}; - -/* Loader has callbacks which have following prototypes: - * function onContentLengthKnown(contentLength: number): void - * function onURLRedirect(url: string): void - * function onDataArrival(chunk: ArrayBuffer, byteStart: number, receivedLength: number): void - * function onError(errorType: number, errorInfo: {code: number, msg: string}): void - * function onComplete(rangeFrom: number, rangeTo: number): void - */ - -var BaseLoader = exports.BaseLoader = function () { - function BaseLoader(typeName) { - _classCallCheck(this, BaseLoader); - - this._type = typeName || 'undefined'; - this._status = LoaderStatus.kIdle; - this._needStash = false; - // callbacks - this._onContentLengthKnown = null; - this._onURLRedirect = null; - this._onDataArrival = null; - this._onError = null; - this._onComplete = null; - } - - _createClass(BaseLoader, [{ - key: 'destroy', - value: function destroy() { - this._status = LoaderStatus.kIdle; - this._onContentLengthKnown = null; - this._onURLRedirect = null; - this._onDataArrival = null; - this._onError = null; - this._onComplete = null; - } - }, { - key: 'isWorking', - value: function isWorking() { - return this._status === LoaderStatus.kConnecting || this._status === LoaderStatus.kBuffering; - } - }, { - key: 'open', - - - // pure virtual - value: function open(dataSource, range) { - throw new _exception.NotImplementedException('Unimplemented abstract function!'); - } - }, { - key: 'abort', - value: function abort() { - throw new _exception.NotImplementedException('Unimplemented abstract function!'); - } - }, { - key: 'type', - get: function get() { - return this._type; - } - }, { - key: 'status', - get: function get() { - return this._status; - } - }, { - key: 'needStashBuffer', - get: function get() { - return this._needStash; - } - }, { - key: 'onContentLengthKnown', - get: function get() { - return this._onContentLengthKnown; - }, - set: function set(callback) { - this._onContentLengthKnown = callback; - } - }, { - key: 'onURLRedirect', - get: function get() { - return this._onURLRedirect; - }, - set: function set(callback) { - this._onURLRedirect = callback; - } - }, { - key: 'onDataArrival', - get: function get() { - return this._onDataArrival; - }, - set: function set(callback) { - this._onDataArrival = callback; - } - }, { - key: 'onError', - get: function get() { - return this._onError; - }, - set: function set(callback) { - this._onError = callback; - } - }, { - key: 'onComplete', - get: function get() { - return this._onComplete; - }, - set: function set(callback) { - this._onComplete = callback; - } - }]); - - return BaseLoader; -}(); - -},{"../utils/exception.js":40}],25:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var ParamSeekHandler = function () { - function ParamSeekHandler(paramStart, paramEnd) { - _classCallCheck(this, ParamSeekHandler); - - this._startName = paramStart; - this._endName = paramEnd; - } - - _createClass(ParamSeekHandler, [{ - key: 'getConfig', - value: function getConfig(baseUrl, range) { - var url = baseUrl; - - if (range.from !== 0 || range.to !== -1) { - var needAnd = true; - if (url.indexOf('?') === -1) { - url += '?'; - needAnd = false; - } - - if (needAnd) { - url += '&'; - } - - url += this._startName + '=' + range.from.toString(); - - if (range.to !== -1) { - url += '&' + this._endName + '=' + range.to.toString(); - } - } - - return { - url: url, - headers: {} - }; - } - }, { - key: 'removeURLParameters', - value: function removeURLParameters(seekedURL) { - var baseURL = seekedURL.split('?')[0]; - var params = undefined; - - var queryIndex = seekedURL.indexOf('?'); - if (queryIndex !== -1) { - params = seekedURL.substring(queryIndex + 1); - } - - var resultParams = ''; - - if (params != undefined && params.length > 0) { - var pairs = params.split('&'); - - for (var i = 0; i < pairs.length; i++) { - var pair = pairs[i].split('='); - var requireAnd = i > 0; - - if (pair[0] !== this._startName && pair[0] !== this._endName) { - if (requireAnd) { - resultParams += '&'; - } - resultParams += pairs[i]; - } - } - } - - return resultParams.length === 0 ? baseURL : baseURL + '?' + resultParams; - } - }]); - - return ParamSeekHandler; -}(); - -exports.default = ParamSeekHandler; - -},{}],26:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var RangeSeekHandler = function () { - function RangeSeekHandler(zeroStart) { - _classCallCheck(this, RangeSeekHandler); - - this._zeroStart = zeroStart || false; - } - - _createClass(RangeSeekHandler, [{ - key: 'getConfig', - value: function getConfig(url, range) { - var headers = {}; - - if (range.from !== 0 || range.to !== -1) { - var param = void 0; - if (range.to !== -1) { - param = 'bytes=' + range.from.toString() + '-' + range.to.toString(); - } else { - param = 'bytes=' + range.from.toString() + '-'; - } - headers['Range'] = param; - } else if (this._zeroStart) { - headers['Range'] = 'bytes=0-'; - } - - return { - url: url, - headers: headers - }; - } - }, { - key: 'removeURLParameters', - value: function removeURLParameters(seekedURL) { - return seekedURL; - } - }]); - - return RangeSeekHandler; -}(); - -exports.default = RangeSeekHandler; - -},{}],27:[function(_dereq_,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// Utility class to calculate realtime network I/O speed -var SpeedSampler = function () { - function SpeedSampler() { - _classCallCheck(this, SpeedSampler); - - // milliseconds - this._firstCheckpoint = 0; - this._lastCheckpoint = 0; - this._intervalBytes = 0; - this._totalBytes = 0; - this._lastSecondBytes = 0; - - // compatibility detection - if (self.performance && self.performance.now) { - this._now = self.performance.now.bind(self.performance); - } else { - this._now = Date.now; - } - } - - _createClass(SpeedSampler, [{ - key: "reset", - value: function reset() { - this._firstCheckpoint = this._lastCheckpoint = 0; - this._totalBytes = this._intervalBytes = 0; - this._lastSecondBytes = 0; - } - }, { - key: "addBytes", - value: function addBytes(bytes) { - if (this._firstCheckpoint === 0) { - this._firstCheckpoint = this._now(); - this._lastCheckpoint = this._firstCheckpoint; - this._intervalBytes += bytes; - this._totalBytes += bytes; - } else if (this._now() - this._lastCheckpoint < 1000) { - this._intervalBytes += bytes; - this._totalBytes += bytes; - } else { - // duration >= 1000 - this._lastSecondBytes = this._intervalBytes; - this._intervalBytes = bytes; - this._totalBytes += bytes; - this._lastCheckpoint = this._now(); - } - } - }, { - key: "currentKBps", - get: function get() { - this.addBytes(0); - - var durationSeconds = (this._now() - this._lastCheckpoint) / 1000; - if (durationSeconds == 0) durationSeconds = 1; - return this._intervalBytes / durationSeconds / 1024; - } - }, { - key: "lastSecondKBps", - get: function get() { - this.addBytes(0); - - if (this._lastSecondBytes !== 0) { - return this._lastSecondBytes / 1024; - } else { - // lastSecondBytes === 0 - if (this._now() - this._lastCheckpoint >= 500) { - // if time interval since last checkpoint has exceeded 500ms - // the speed is nearly accurate - return this.currentKBps; - } else { - // We don't know - return 0; - } - } - } - }, { - key: "averageKBps", - get: function get() { - var durationSeconds = (this._now() - this._firstCheckpoint) / 1000; - return this._totalBytes / durationSeconds / 1024; - } - }]); - - return SpeedSampler; -}(); - -exports.default = SpeedSampler; - -},{}],28:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _logger = _dereq_('../utils/logger.js'); - -var _logger2 = _interopRequireDefault(_logger); - -var _loader = _dereq_('./loader.js'); - -var _exception = _dereq_('../utils/exception.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// For FLV over WebSocket live stream -var WebSocketLoader = function (_BaseLoader) { - _inherits(WebSocketLoader, _BaseLoader); - - _createClass(WebSocketLoader, null, [{ - key: 'isSupported', - value: function isSupported() { - try { - return typeof self.WebSocket !== 'undefined'; - } catch (e) { - return false; - } - } - }]); - - function WebSocketLoader() { - _classCallCheck(this, WebSocketLoader); - - var _this = _possibleConstructorReturn(this, (WebSocketLoader.__proto__ || Object.getPrototypeOf(WebSocketLoader)).call(this, 'websocket-loader')); - - _this.TAG = 'WebSocketLoader'; - - _this._needStash = true; - - _this._ws = null; - _this._requestAbort = false; - _this._receivedLength = 0; - return _this; - } - - _createClass(WebSocketLoader, [{ - key: 'destroy', - value: function destroy() { - if (this._ws) { - this.abort(); - } - _get(WebSocketLoader.prototype.__proto__ || Object.getPrototypeOf(WebSocketLoader.prototype), 'destroy', this).call(this); - } - }, { - key: 'open', - value: function open(dataSource) { - try { - var ws = this._ws = new self.WebSocket(dataSource.url); - ws.binaryType = 'arraybuffer'; - ws.onopen = this._onWebSocketOpen.bind(this); - ws.onclose = this._onWebSocketClose.bind(this); - ws.onmessage = this._onWebSocketMessage.bind(this); - ws.onerror = this._onWebSocketError.bind(this); - - this._status = _loader.LoaderStatus.kConnecting; - } catch (e) { - this._status = _loader.LoaderStatus.kError; - - var info = { code: e.code, msg: e.message }; - - if (this._onError) { - this._onError(_loader.LoaderErrors.EXCEPTION, info); - } else { - throw new _exception.RuntimeException(info.msg); - } - } - } - }, { - key: 'abort', - value: function abort() { - var ws = this._ws; - if (ws && (ws.readyState === 0 || ws.readyState === 1)) { - // CONNECTING || OPEN - this._requestAbort = true; - ws.close(); - } - - this._ws = null; - this._status = _loader.LoaderStatus.kComplete; - } - }, { - key: '_onWebSocketOpen', - value: function _onWebSocketOpen(e) { - this._status = _loader.LoaderStatus.kBuffering; - } - }, { - key: '_onWebSocketClose', - value: function _onWebSocketClose(e) { - if (this._requestAbort === true) { - this._requestAbort = false; - return; - } - - this._status = _loader.LoaderStatus.kComplete; - - if (this._onComplete) { - this._onComplete(0, this._receivedLength - 1); - } - } - }, { - key: '_onWebSocketMessage', - value: function _onWebSocketMessage(e) { - var _this2 = this; - - if (e.data instanceof ArrayBuffer) { - this._dispatchArrayBuffer(e.data); - } else if (e.data instanceof Blob) { - var reader = new FileReader(); - reader.onload = function () { - _this2._dispatchArrayBuffer(reader.result); - }; - reader.readAsArrayBuffer(e.data); - } else { - this._status = _loader.LoaderStatus.kError; - var info = { code: -1, msg: 'Unsupported WebSocket message type: ' + e.data.constructor.name }; - - if (this._onError) { - this._onError(_loader.LoaderErrors.EXCEPTION, info); - } else { - throw new _exception.RuntimeException(info.msg); - } - } - } - }, { - key: '_dispatchArrayBuffer', - value: function _dispatchArrayBuffer(arraybuffer) { - var chunk = arraybuffer; - var byteStart = this._receivedLength; - this._receivedLength += chunk.byteLength; - - if (this._onDataArrival) { - this._onDataArrival(chunk, byteStart, this._receivedLength); - } - } - }, { - key: '_onWebSocketError', - value: function _onWebSocketError(e) { - this._status = _loader.LoaderStatus.kError; - - var info = { - code: e.code, - msg: e.message - }; - - if (this._onError) { - this._onError(_loader.LoaderErrors.EXCEPTION, info); - } else { - throw new _exception.RuntimeException(info.msg); - } - } - }]); - - return WebSocketLoader; -}(_loader.BaseLoader); - -exports.default = WebSocketLoader; - -},{"../utils/exception.js":40,"../utils/logger.js":41,"./loader.js":24}],29:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _logger = _dereq_('../utils/logger.js'); - -var _logger2 = _interopRequireDefault(_logger); - -var _loader = _dereq_('./loader.js'); - -var _exception = _dereq_('../utils/exception.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// For FireFox browser which supports `xhr.responseType = 'moz-chunked-arraybuffer'` -var MozChunkedLoader = function (_BaseLoader) { - _inherits(MozChunkedLoader, _BaseLoader); - - _createClass(MozChunkedLoader, null, [{ - key: 'isSupported', - value: function isSupported() { - try { - var xhr = new XMLHttpRequest(); - // Firefox 37- requires .open() to be called before setting responseType - xhr.open('GET', 'https://example.com', true); - xhr.responseType = 'moz-chunked-arraybuffer'; - return xhr.responseType === 'moz-chunked-arraybuffer'; - } catch (e) { - _logger2.default.w('MozChunkedLoader', e.message); - return false; - } - } - }]); - - function MozChunkedLoader(seekHandler, config) { - _classCallCheck(this, MozChunkedLoader); - - var _this = _possibleConstructorReturn(this, (MozChunkedLoader.__proto__ || Object.getPrototypeOf(MozChunkedLoader)).call(this, 'xhr-moz-chunked-loader')); - - _this.TAG = 'MozChunkedLoader'; - - _this._seekHandler = seekHandler; - _this._config = config; - _this._needStash = true; - - _this._xhr = null; - _this._requestAbort = false; - _this._contentLength = null; - _this._receivedLength = 0; - return _this; - } - - _createClass(MozChunkedLoader, [{ - key: 'destroy', - value: function destroy() { - if (this.isWorking()) { - this.abort(); - } - if (this._xhr) { - this._xhr.onreadystatechange = null; - this._xhr.onprogress = null; - this._xhr.onloadend = null; - this._xhr.onerror = null; - this._xhr = null; - } - _get(MozChunkedLoader.prototype.__proto__ || Object.getPrototypeOf(MozChunkedLoader.prototype), 'destroy', this).call(this); - } - }, { - key: 'open', - value: function open(dataSource, range) { - this._dataSource = dataSource; - this._range = range; - - var sourceURL = dataSource.url; - if (this._config.reuseRedirectedURL && dataSource.redirectedURL != undefined) { - sourceURL = dataSource.redirectedURL; - } - - var seekConfig = this._seekHandler.getConfig(sourceURL, range); - this._requestURL = seekConfig.url; - - var xhr = this._xhr = new XMLHttpRequest(); - xhr.open('GET', seekConfig.url, true); - xhr.responseType = 'moz-chunked-arraybuffer'; - xhr.onreadystatechange = this._onReadyStateChange.bind(this); - xhr.onprogress = this._onProgress.bind(this); - xhr.onloadend = this._onLoadEnd.bind(this); - xhr.onerror = this._onXhrError.bind(this); - - // cors is auto detected and enabled by xhr - - // withCredentials is disabled by default - if (dataSource.withCredentials) { - xhr.withCredentials = true; - } - - if (_typeof(seekConfig.headers) === 'object') { - var headers = seekConfig.headers; - - for (var key in headers) { - if (headers.hasOwnProperty(key)) { - xhr.setRequestHeader(key, headers[key]); - } - } - } - - this._status = _loader.LoaderStatus.kConnecting; - xhr.send(); - } - }, { - key: 'abort', - value: function abort() { - this._requestAbort = true; - if (this._xhr) { - this._xhr.abort(); - } - this._status = _loader.LoaderStatus.kComplete; - } - }, { - key: '_onReadyStateChange', - value: function _onReadyStateChange(e) { - var xhr = e.target; - - if (xhr.readyState === 2) { - // HEADERS_RECEIVED - if (xhr.responseURL != undefined && xhr.responseURL !== this._requestURL) { - if (this._onURLRedirect) { - var redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL); - this._onURLRedirect(redirectedURL); - } - } - - if (xhr.status !== 0 && (xhr.status < 200 || xhr.status > 299)) { - this._status = _loader.LoaderStatus.kError; - if (this._onError) { - this._onError(_loader.LoaderErrors.HTTP_STATUS_CODE_INVALID, { code: xhr.status, msg: xhr.statusText }); - } else { - throw new _exception.RuntimeException('MozChunkedLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText); - } - } else { - this._status = _loader.LoaderStatus.kBuffering; - } - } - } - }, { - key: '_onProgress', - value: function _onProgress(e) { - if (this._status === _loader.LoaderStatus.kError) { - // Ignore error response - return; - } - - if (this._contentLength === null) { - if (e.total !== null && e.total !== 0) { - this._contentLength = e.total; - if (this._onContentLengthKnown) { - this._onContentLengthKnown(this._contentLength); - } - } - } - - var chunk = e.target.response; - var byteStart = this._range.from + this._receivedLength; - this._receivedLength += chunk.byteLength; - - if (this._onDataArrival) { - this._onDataArrival(chunk, byteStart, this._receivedLength); - } - } - }, { - key: '_onLoadEnd', - value: function _onLoadEnd(e) { - if (this._requestAbort === true) { - this._requestAbort = false; - return; - } else if (this._status === _loader.LoaderStatus.kError) { - return; - } - - this._status = _loader.LoaderStatus.kComplete; - if (this._onComplete) { - this._onComplete(this._range.from, this._range.from + this._receivedLength - 1); - } - } - }, { - key: '_onXhrError', - value: function _onXhrError(e) { - this._status = _loader.LoaderStatus.kError; - var type = 0; - var info = null; - - if (this._contentLength && e.loaded < this._contentLength) { - type = _loader.LoaderErrors.EARLY_EOF; - info = { code: -1, msg: 'Moz-Chunked stream meet Early-Eof' }; - } else { - type = _loader.LoaderErrors.EXCEPTION; - info = { code: -1, msg: e.constructor.name + ' ' + e.type }; - } - - if (this._onError) { - this._onError(type, info); - } else { - throw new _exception.RuntimeException(info.msg); - } - } - }]); - - return MozChunkedLoader; -}(_loader.BaseLoader); - -exports.default = MozChunkedLoader; - -},{"../utils/exception.js":40,"../utils/logger.js":41,"./loader.js":24}],30:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _logger = _dereq_('../utils/logger.js'); - -var _logger2 = _interopRequireDefault(_logger); - -var _loader = _dereq_('./loader.js'); - -var _exception = _dereq_('../utils/exception.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* Notice: ms-stream may cause IE/Edge browser crash if seek too frequently!!! - * The browser may crash in wininet.dll. Disable for now. - * - * For IE11/Edge browser by microsoft which supports `xhr.responseType = 'ms-stream'` - * Notice that ms-stream API sucks. The buffer is always expanding along with downloading. - * - * We need to abort the xhr if buffer size exceeded limit size (e.g. 16 MiB), then do reconnect. - * in order to release previous ArrayBuffer to avoid memory leak - * - * Otherwise, the ArrayBuffer will increase to a terrible size that equals final file size. - */ -var MSStreamLoader = function (_BaseLoader) { - _inherits(MSStreamLoader, _BaseLoader); - - _createClass(MSStreamLoader, null, [{ - key: 'isSupported', - value: function isSupported() { - try { - if (typeof self.MSStream === 'undefined' || typeof self.MSStreamReader === 'undefined') { - return false; - } - - var xhr = new XMLHttpRequest(); - xhr.open('GET', 'https://example.com', true); - xhr.responseType = 'ms-stream'; - return xhr.responseType === 'ms-stream'; - } catch (e) { - _logger2.default.w('MSStreamLoader', e.message); - return false; - } - } - }]); - - function MSStreamLoader(seekHandler, config) { - _classCallCheck(this, MSStreamLoader); - - var _this = _possibleConstructorReturn(this, (MSStreamLoader.__proto__ || Object.getPrototypeOf(MSStreamLoader)).call(this, 'xhr-msstream-loader')); - - _this.TAG = 'MSStreamLoader'; - - _this._seekHandler = seekHandler; - _this._config = config; - _this._needStash = true; - - _this._xhr = null; - _this._reader = null; // MSStreamReader - - _this._totalRange = null; - _this._currentRange = null; - - _this._currentRequestURL = null; - _this._currentRedirectedURL = null; - - _this._contentLength = null; - _this._receivedLength = 0; - - _this._bufferLimit = 16 * 1024 * 1024; // 16MB - _this._lastTimeBufferSize = 0; - _this._isReconnecting = false; - return _this; - } - - _createClass(MSStreamLoader, [{ - key: 'destroy', - value: function destroy() { - if (this.isWorking()) { - this.abort(); - } - if (this._reader) { - this._reader.onprogress = null; - this._reader.onload = null; - this._reader.onerror = null; - this._reader = null; - } - if (this._xhr) { - this._xhr.onreadystatechange = null; - this._xhr = null; - } - _get(MSStreamLoader.prototype.__proto__ || Object.getPrototypeOf(MSStreamLoader.prototype), 'destroy', this).call(this); - } - }, { - key: 'open', - value: function open(dataSource, range) { - this._internalOpen(dataSource, range, false); - } - }, { - key: '_internalOpen', - value: function _internalOpen(dataSource, range, isSubrange) { - this._dataSource = dataSource; - - if (!isSubrange) { - this._totalRange = range; - } else { - this._currentRange = range; - } - - var sourceURL = dataSource.url; - if (this._config.reuseRedirectedURL) { - if (this._currentRedirectedURL != undefined) { - sourceURL = this._currentRedirectedURL; - } else if (dataSource.redirectedURL != undefined) { - sourceURL = dataSource.redirectedURL; - } - } - - var seekConfig = this._seekHandler.getConfig(sourceURL, range); - this._currentRequestURL = seekConfig.url; - - var reader = this._reader = new self.MSStreamReader(); - reader.onprogress = this._msrOnProgress.bind(this); - reader.onload = this._msrOnLoad.bind(this); - reader.onerror = this._msrOnError.bind(this); - - var xhr = this._xhr = new XMLHttpRequest(); - xhr.open('GET', seekConfig.url, true); - xhr.responseType = 'ms-stream'; - xhr.onreadystatechange = this._xhrOnReadyStateChange.bind(this); - xhr.onerror = this._xhrOnError.bind(this); - - if (dataSource.withCredentials) { - xhr.withCredentials = true; - } - - if (_typeof(seekConfig.headers) === 'object') { - var headers = seekConfig.headers; - - for (var key in headers) { - if (headers.hasOwnProperty(key)) { - xhr.setRequestHeader(key, headers[key]); - } - } - } - - if (this._isReconnecting) { - this._isReconnecting = false; - } else { - this._status = _loader.LoaderStatus.kConnecting; - } - xhr.send(); - } - }, { - key: 'abort', - value: function abort() { - this._internalAbort(); - this._status = _loader.LoaderStatus.kComplete; - } - }, { - key: '_internalAbort', - value: function _internalAbort() { - if (this._reader) { - if (this._reader.readyState === 1) { - // LOADING - this._reader.abort(); - } - this._reader.onprogress = null; - this._reader.onload = null; - this._reader.onerror = null; - this._reader = null; - } - if (this._xhr) { - this._xhr.abort(); - this._xhr.onreadystatechange = null; - this._xhr = null; - } - } - }, { - key: '_xhrOnReadyStateChange', - value: function _xhrOnReadyStateChange(e) { - var xhr = e.target; - - if (xhr.readyState === 2) { - // HEADERS_RECEIVED - if (xhr.status >= 200 && xhr.status <= 299) { - this._status = _loader.LoaderStatus.kBuffering; - - if (xhr.responseURL != undefined) { - var redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL); - if (xhr.responseURL !== this._currentRequestURL && redirectedURL !== this._currentRedirectedURL) { - this._currentRedirectedURL = redirectedURL; - if (this._onURLRedirect) { - this._onURLRedirect(redirectedURL); - } - } - } - - var lengthHeader = xhr.getResponseHeader('Content-Length'); - if (lengthHeader != null && this._contentLength == null) { - var length = parseInt(lengthHeader); - if (length > 0) { - this._contentLength = length; - if (this._onContentLengthKnown) { - this._onContentLengthKnown(this._contentLength); - } - } - } - } else { - this._status = _loader.LoaderStatus.kError; - if (this._onError) { - this._onError(_loader.LoaderErrors.HTTP_STATUS_CODE_INVALID, { code: xhr.status, msg: xhr.statusText }); - } else { - throw new _exception.RuntimeException('MSStreamLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText); - } - } - } else if (xhr.readyState === 3) { - // LOADING - if (xhr.status >= 200 && xhr.status <= 299) { - this._status = _loader.LoaderStatus.kBuffering; - - var msstream = xhr.response; - this._reader.readAsArrayBuffer(msstream); - } - } - } - }, { - key: '_xhrOnError', - value: function _xhrOnError(e) { - this._status = _loader.LoaderStatus.kError; - var type = _loader.LoaderErrors.EXCEPTION; - var info = { code: -1, msg: e.constructor.name + ' ' + e.type }; - - if (this._onError) { - this._onError(type, info); - } else { - throw new _exception.RuntimeException(info.msg); - } - } - }, { - key: '_msrOnProgress', - value: function _msrOnProgress(e) { - var reader = e.target; - var bigbuffer = reader.result; - if (bigbuffer == null) { - // result may be null, workaround for buggy M$ - this._doReconnectIfNeeded(); - return; - } - - var slice = bigbuffer.slice(this._lastTimeBufferSize); - this._lastTimeBufferSize = bigbuffer.byteLength; - var byteStart = this._totalRange.from + this._receivedLength; - this._receivedLength += slice.byteLength; - - if (this._onDataArrival) { - this._onDataArrival(slice, byteStart, this._receivedLength); - } - - if (bigbuffer.byteLength >= this._bufferLimit) { - _logger2.default.v(this.TAG, 'MSStream buffer exceeded max size near ' + (byteStart + slice.byteLength) + ', reconnecting...'); - this._doReconnectIfNeeded(); - } - } - }, { - key: '_doReconnectIfNeeded', - value: function _doReconnectIfNeeded() { - if (this._contentLength == null || this._receivedLength < this._contentLength) { - this._isReconnecting = true; - this._lastTimeBufferSize = 0; - this._internalAbort(); - - var range = { - from: this._totalRange.from + this._receivedLength, - to: -1 - }; - this._internalOpen(this._dataSource, range, true); - } - } - }, { - key: '_msrOnLoad', - value: function _msrOnLoad(e) { - // actually it is onComplete event - this._status = _loader.LoaderStatus.kComplete; - if (this._onComplete) { - this._onComplete(this._totalRange.from, this._totalRange.from + this._receivedLength - 1); - } - } - }, { - key: '_msrOnError', - value: function _msrOnError(e) { - this._status = _loader.LoaderStatus.kError; - var type = 0; - var info = null; - - if (this._contentLength && this._receivedLength < this._contentLength) { - type = _loader.LoaderErrors.EARLY_EOF; - info = { code: -1, msg: 'MSStream meet Early-Eof' }; - } else { - type = _loader.LoaderErrors.EARLY_EOF; - info = { code: -1, msg: e.constructor.name + ' ' + e.type }; - } - - if (this._onError) { - this._onError(type, info); - } else { - throw new _exception.RuntimeException(info.msg); - } - } - }]); - - return MSStreamLoader; -}(_loader.BaseLoader); - -exports.default = MSStreamLoader; - -},{"../utils/exception.js":40,"../utils/logger.js":41,"./loader.js":24}],31:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _logger = _dereq_('../utils/logger.js'); - -var _logger2 = _interopRequireDefault(_logger); - -var _speedSampler = _dereq_('./speed-sampler.js'); - -var _speedSampler2 = _interopRequireDefault(_speedSampler); - -var _loader = _dereq_('./loader.js'); - -var _exception = _dereq_('../utils/exception.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// Universal IO Loader, implemented by adding Range header in xhr's request header -var RangeLoader = function (_BaseLoader) { - _inherits(RangeLoader, _BaseLoader); - - _createClass(RangeLoader, null, [{ - key: 'isSupported', - value: function isSupported() { - try { - var xhr = new XMLHttpRequest(); - xhr.open('GET', 'https://example.com', true); - xhr.responseType = 'arraybuffer'; - return xhr.responseType === 'arraybuffer'; - } catch (e) { - _logger2.default.w('RangeLoader', e.message); - return false; - } - } - }]); - - function RangeLoader(seekHandler, config) { - _classCallCheck(this, RangeLoader); - - var _this = _possibleConstructorReturn(this, (RangeLoader.__proto__ || Object.getPrototypeOf(RangeLoader)).call(this, 'xhr-range-loader')); - - _this.TAG = 'RangeLoader'; - - _this._seekHandler = seekHandler; - _this._config = config; - _this._needStash = false; - - _this._chunkSizeKBList = [128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192]; - _this._currentChunkSizeKB = 384; - _this._currentSpeedNormalized = 0; - _this._zeroSpeedChunkCount = 0; - - _this._xhr = null; - _this._speedSampler = new _speedSampler2.default(); - - _this._requestAbort = false; - _this._waitForTotalLength = false; - _this._totalLengthReceived = false; - - _this._currentRequestURL = null; - _this._currentRedirectedURL = null; - _this._currentRequestRange = null; - _this._totalLength = null; // size of the entire file - _this._contentLength = null; // Content-Length of entire request range - _this._receivedLength = 0; // total received bytes - _this._lastTimeLoaded = 0; // received bytes of current request sub-range - return _this; - } - - _createClass(RangeLoader, [{ - key: 'destroy', - value: function destroy() { - if (this.isWorking()) { - this.abort(); - } - if (this._xhr) { - this._xhr.onreadystatechange = null; - this._xhr.onprogress = null; - this._xhr.onload = null; - this._xhr.onerror = null; - this._xhr = null; - } - _get(RangeLoader.prototype.__proto__ || Object.getPrototypeOf(RangeLoader.prototype), 'destroy', this).call(this); - } - }, { - key: 'open', - value: function open(dataSource, range) { - this._dataSource = dataSource; - this._range = range; - this._status = _loader.LoaderStatus.kConnecting; - - var useRefTotalLength = false; - if (this._dataSource.filesize != undefined && this._dataSource.filesize !== 0) { - useRefTotalLength = true; - this._totalLength = this._dataSource.filesize; - } - - if (!this._totalLengthReceived && !useRefTotalLength) { - // We need total filesize - this._waitForTotalLength = true; - this._internalOpen(this._dataSource, { from: 0, to: -1 }); - } else { - // We have filesize, start loading - this._openSubRange(); - } - } - }, { - key: '_openSubRange', - value: function _openSubRange() { - var chunkSize = this._currentChunkSizeKB * 1024; - - var from = this._range.from + this._receivedLength; - var to = from + chunkSize; - - if (this._contentLength != null) { - if (to - this._range.from >= this._contentLength) { - to = this._range.from + this._contentLength - 1; - } - } - - this._currentRequestRange = { from: from, to: to }; - this._internalOpen(this._dataSource, this._currentRequestRange); - } - }, { - key: '_internalOpen', - value: function _internalOpen(dataSource, range) { - this._lastTimeLoaded = 0; - - var sourceURL = dataSource.url; - if (this._config.reuseRedirectedURL) { - if (this._currentRedirectedURL != undefined) { - sourceURL = this._currentRedirectedURL; - } else if (dataSource.redirectedURL != undefined) { - sourceURL = dataSource.redirectedURL; - } - } - - var seekConfig = this._seekHandler.getConfig(sourceURL, range); - this._currentRequestURL = seekConfig.url; - - var xhr = this._xhr = new XMLHttpRequest(); - xhr.open('GET', seekConfig.url, true); - xhr.responseType = 'arraybuffer'; - xhr.onreadystatechange = this._onReadyStateChange.bind(this); - xhr.onprogress = this._onProgress.bind(this); - xhr.onload = this._onLoad.bind(this); - xhr.onerror = this._onXhrError.bind(this); - - if (dataSource.withCredentials) { - xhr.withCredentials = true; - } - - if (_typeof(seekConfig.headers) === 'object') { - var headers = seekConfig.headers; - - for (var key in headers) { - if (headers.hasOwnProperty(key)) { - xhr.setRequestHeader(key, headers[key]); - } - } - } - - xhr.send(); - } - }, { - key: 'abort', - value: function abort() { - this._requestAbort = true; - this._internalAbort(); - this._status = _loader.LoaderStatus.kComplete; - } - }, { - key: '_internalAbort', - value: function _internalAbort() { - if (this._xhr) { - this._xhr.onreadystatechange = null; - this._xhr.onprogress = null; - this._xhr.onload = null; - this._xhr.onerror = null; - this._xhr.abort(); - this._xhr = null; - } - } - }, { - key: '_onReadyStateChange', - value: function _onReadyStateChange(e) { - var xhr = e.target; - - if (xhr.readyState === 2) { - // HEADERS_RECEIVED - if (xhr.responseURL != undefined) { - // if the browser support this property - var redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL); - if (xhr.responseURL !== this._currentRequestURL && redirectedURL !== this._currentRedirectedURL) { - this._currentRedirectedURL = redirectedURL; - if (this._onURLRedirect) { - this._onURLRedirect(redirectedURL); - } - } - } - - if (xhr.status >= 200 && xhr.status <= 299) { - if (this._waitForTotalLength) { - return; - } - this._status = _loader.LoaderStatus.kBuffering; - } else { - this._status = _loader.LoaderStatus.kError; - if (this._onError) { - this._onError(_loader.LoaderErrors.HTTP_STATUS_CODE_INVALID, { code: xhr.status, msg: xhr.statusText }); - } else { - throw new _exception.RuntimeException('RangeLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText); - } - } - } - } - }, { - key: '_onProgress', - value: function _onProgress(e) { - if (this._status === _loader.LoaderStatus.kError) { - // Ignore error response - return; - } - - if (this._contentLength === null) { - var openNextRange = false; - - if (this._waitForTotalLength) { - this._waitForTotalLength = false; - this._totalLengthReceived = true; - openNextRange = true; - - var total = e.total; - this._internalAbort(); - if (total != null & total !== 0) { - this._totalLength = total; - } - } - - // calculate currrent request range's contentLength - if (this._range.to === -1) { - this._contentLength = this._totalLength - this._range.from; - } else { - // to !== -1 - this._contentLength = this._range.to - this._range.from + 1; - } - - if (openNextRange) { - this._openSubRange(); - return; - } - if (this._onContentLengthKnown) { - this._onContentLengthKnown(this._contentLength); - } - } - - var delta = e.loaded - this._lastTimeLoaded; - this._lastTimeLoaded = e.loaded; - this._speedSampler.addBytes(delta); - } - }, { - key: '_normalizeSpeed', - value: function _normalizeSpeed(input) { - var list = this._chunkSizeKBList; - var last = list.length - 1; - var mid = 0; - var lbound = 0; - var ubound = last; - - if (input < list[0]) { - return list[0]; - } - - while (lbound <= ubound) { - mid = lbound + Math.floor((ubound - lbound) / 2); - if (mid === last || input >= list[mid] && input < list[mid + 1]) { - return list[mid]; - } else if (list[mid] < input) { - lbound = mid + 1; - } else { - ubound = mid - 1; - } - } - } - }, { - key: '_onLoad', - value: function _onLoad(e) { - if (this._status === _loader.LoaderStatus.kError) { - // Ignore error response - return; - } - - if (this._waitForTotalLength) { - this._waitForTotalLength = false; - return; - } - - this._lastTimeLoaded = 0; - var KBps = this._speedSampler.lastSecondKBps; - if (KBps === 0) { - this._zeroSpeedChunkCount++; - if (this._zeroSpeedChunkCount >= 3) { - // Try get currentKBps after 3 chunks - KBps = this._speedSampler.currentKBps; - } - } - - if (KBps !== 0) { - var normalized = this._normalizeSpeed(KBps); - if (this._currentSpeedNormalized !== normalized) { - this._currentSpeedNormalized = normalized; - this._currentChunkSizeKB = normalized; - } - } - - var chunk = e.target.response; - var byteStart = this._range.from + this._receivedLength; - this._receivedLength += chunk.byteLength; - - var reportComplete = false; - - if (this._contentLength != null && this._receivedLength < this._contentLength) { - // continue load next chunk - this._openSubRange(); - } else { - reportComplete = true; - } - - // dispatch received chunk - if (this._onDataArrival) { - this._onDataArrival(chunk, byteStart, this._receivedLength); - } - - if (reportComplete) { - this._status = _loader.LoaderStatus.kComplete; - if (this._onComplete) { - this._onComplete(this._range.from, this._range.from + this._receivedLength - 1); - } - } - } - }, { - key: '_onXhrError', - value: function _onXhrError(e) { - this._status = _loader.LoaderStatus.kError; - var type = 0; - var info = null; - - if (this._contentLength && this._receivedLength > 0 && this._receivedLength < this._contentLength) { - type = _loader.LoaderErrors.EARLY_EOF; - info = { code: -1, msg: 'RangeLoader meet Early-Eof' }; - } else { - type = _loader.LoaderErrors.EXCEPTION; - info = { code: -1, msg: e.constructor.name + ' ' + e.type }; - } - - if (this._onError) { - this._onError(type, info); - } else { - throw new _exception.RuntimeException(info.msg); - } - } - }, { - key: 'currentSpeed', - get: function get() { - return this._speedSampler.lastSecondKBps; - } - }]); - - return RangeLoader; -}(_loader.BaseLoader); - -exports.default = RangeLoader; - -},{"../utils/exception.js":40,"../utils/logger.js":41,"./loader.js":24,"./speed-sampler.js":27}],32:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var _events = _dereq_('events'); - -var _events2 = _interopRequireDefault(_events); - -var _logger = _dereq_('../utils/logger.js'); - -var _logger2 = _interopRequireDefault(_logger); - -var _browser = _dereq_('../utils/browser.js'); - -var _browser2 = _interopRequireDefault(_browser); - -var _playerEvents = _dereq_('./player-events.js'); - -var _playerEvents2 = _interopRequireDefault(_playerEvents); - -var _transmuxer = _dereq_('../core/transmuxer.js'); - -var _transmuxer2 = _interopRequireDefault(_transmuxer); - -var _transmuxingEvents = _dereq_('../core/transmuxing-events.js'); - -var _transmuxingEvents2 = _interopRequireDefault(_transmuxingEvents); - -var _mseController = _dereq_('../core/mse-controller.js'); - -var _mseController2 = _interopRequireDefault(_mseController); - -var _mseEvents = _dereq_('../core/mse-events.js'); - -var _mseEvents2 = _interopRequireDefault(_mseEvents); - -var _playerErrors = _dereq_('./player-errors.js'); - -var _config = _dereq_('../config.js'); - -var _exception = _dereq_('../utils/exception.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var FlvPlayer = function () { - function FlvPlayer(mediaDataSource, config) { - _classCallCheck(this, FlvPlayer); - - this.TAG = 'FlvPlayer'; - this._type = 'FlvPlayer'; - this._emitter = new _events2.default(); - - this._config = (0, _config.createDefaultConfig)(); - if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') { - Object.assign(this._config, config); - } - - if (mediaDataSource.type.toLowerCase() !== 'flv') { - throw new _exception.InvalidArgumentException('FlvPlayer requires an flv MediaDataSource input!'); - } - - if (mediaDataSource.isLive === true) { - this._config.isLive = true; - } - - this.e = { - onvLoadedMetadata: this._onvLoadedMetadata.bind(this), - onvSeeking: this._onvSeeking.bind(this), - onvCanPlay: this._onvCanPlay.bind(this), - onvStalled: this._onvStalled.bind(this), - onvProgress: this._onvProgress.bind(this) - }; - - if (self.performance && self.performance.now) { - this._now = self.performance.now.bind(self.performance); - } else { - this._now = Date.now; - } - - this._pendingSeekTime = null; // in seconds - this._requestSetTime = false; - this._seekpointRecord = null; - this._progressChecker = null; - - this._mediaDataSource = mediaDataSource; - this._mediaElement = null; - this._msectl = null; - this._transmuxer = null; - - this._mseSourceOpened = false; - this._hasPendingLoad = false; - this._receivedCanPlay = false; - - this._mediaInfo = null; - this._statisticsInfo = null; - - var chromeNeedIDRFix = _browser2.default.chrome && (_browser2.default.version.major < 50 || _browser2.default.version.major === 50 && _browser2.default.version.build < 2661); - this._alwaysSeekKeyframe = chromeNeedIDRFix || _browser2.default.msedge || _browser2.default.msie ? true : false; - - if (this._alwaysSeekKeyframe) { - this._config.accurateSeek = false; - } - } - - _createClass(FlvPlayer, [{ - key: 'destroy', - value: function destroy() { - if (this._progressChecker != null) { - window.clearInterval(this._progressChecker); - this._progressChecker = null; - } - if (this._transmuxer) { - this.unload(); - } - if (this._mediaElement) { - this.detachMediaElement(); - } - this.e = null; - this._mediaDataSource = null; - - this._emitter.removeAllListeners(); - this._emitter = null; - } - }, { - key: 'on', - value: function on(event, listener) { - var _this = this; - - if (event === _playerEvents2.default.MEDIA_INFO) { - if (this._mediaInfo != null) { - Promise.resolve().then(function () { - _this._emitter.emit(_playerEvents2.default.MEDIA_INFO, _this.mediaInfo); - }); - } - } else if (event === _playerEvents2.default.STATISTICS_INFO) { - if (this._statisticsInfo != null) { - Promise.resolve().then(function () { - _this._emitter.emit(_playerEvents2.default.STATISTICS_INFO, _this.statisticsInfo); - }); - } - } - this._emitter.addListener(event, listener); - } - }, { - key: 'off', - value: function off(event, listener) { - this._emitter.removeListener(event, listener); - } - }, { - key: 'attachMediaElement', - value: function attachMediaElement(mediaElement) { - var _this2 = this; - - this._mediaElement = mediaElement; - mediaElement.addEventListener('loadedmetadata', this.e.onvLoadedMetadata); - mediaElement.addEventListener('seeking', this.e.onvSeeking); - mediaElement.addEventListener('canplay', this.e.onvCanPlay); - mediaElement.addEventListener('stalled', this.e.onvStalled); - mediaElement.addEventListener('progress', this.e.onvProgress); - - this._msectl = new _mseController2.default(this._config); - - this._msectl.on(_mseEvents2.default.UPDATE_END, this._onmseUpdateEnd.bind(this)); - this._msectl.on(_mseEvents2.default.BUFFER_FULL, this._onmseBufferFull.bind(this)); - this._msectl.on(_mseEvents2.default.SOURCE_OPEN, function () { - _this2._mseSourceOpened = true; - if (_this2._hasPendingLoad) { - _this2._hasPendingLoad = false; - _this2.load(); - } - }); - this._msectl.on(_mseEvents2.default.ERROR, function (info) { - _this2._emitter.emit(_playerEvents2.default.ERROR, _playerErrors.ErrorTypes.MEDIA_ERROR, _playerErrors.ErrorDetails.MEDIA_MSE_ERROR, info); - }); - - this._msectl.attachMediaElement(mediaElement); - - if (this._pendingSeekTime != null) { - try { - mediaElement.currentTime = this._pendingSeekTime; - this._pendingSeekTime = null; - } catch (e) { - // IE11 may throw InvalidStateError if readyState === 0 - // We can defer set currentTime operation after loadedmetadata - } - } - } - }, { - key: 'detachMediaElement', - value: function detachMediaElement() { - if (this._mediaElement) { - this._msectl.detachMediaElement(); - this._mediaElement.removeEventListener('loadedmetadata', this.e.onvLoadedMetadata); - this._mediaElement.removeEventListener('seeking', this.e.onvSeeking); - this._mediaElement.removeEventListener('canplay', this.e.onvCanPlay); - this._mediaElement.removeEventListener('stalled', this.e.onvStalled); - this._mediaElement.removeEventListener('progress', this.e.onvProgress); - this._mediaElement = null; - } - if (this._msectl) { - this._msectl.destroy(); - this._msectl = null; - } - } - }, { - key: 'load', - value: function load() { - var _this3 = this; - - if (!this._mediaElement) { - throw new _exception.IllegalStateException('HTMLMediaElement must be attached before load()!'); - } - if (this._transmuxer) { - throw new _exception.IllegalStateException('FlvPlayer.load() has been called, please call unload() first!'); - } - if (this._hasPendingLoad) { - return; - } - - if (this._config.deferLoadAfterSourceOpen && this._mseSourceOpened === false) { - this._hasPendingLoad = true; - return; - } - - if (this._mediaElement.readyState > 0) { - this._requestSetTime = true; - // IE11 may throw InvalidStateError if readyState === 0 - this._mediaElement.currentTime = 0; - } - - this._transmuxer = new _transmuxer2.default(this._mediaDataSource, this._config); - - this._transmuxer.on(_transmuxingEvents2.default.INIT_SEGMENT, function (type, is) { - _this3._msectl.appendInitSegment(is); - }); - this._transmuxer.on(_transmuxingEvents2.default.MEDIA_SEGMENT, function (type, ms) { - _this3._msectl.appendMediaSegment(ms); - - // lazyLoad check - if (_this3._config.lazyLoad && !_this3._config.isLive) { - var currentTime = _this3._mediaElement.currentTime; - if (ms.info.endDts >= (currentTime + _this3._config.lazyLoadMaxDuration) * 1000) { - if (_this3._progressChecker == null) { - _logger2.default.v(_this3.TAG, 'Maximum buffering duration exceeded, suspend transmuxing task'); - _this3._suspendTransmuxer(); - } - } - } - }); - this._transmuxer.on(_transmuxingEvents2.default.LOADING_COMPLETE, function () { - _this3._msectl.endOfStream(); - _this3._emitter.emit(_playerEvents2.default.LOADING_COMPLETE); - }); - this._transmuxer.on(_transmuxingEvents2.default.RECOVERED_EARLY_EOF, function () { - _this3._emitter.emit(_playerEvents2.default.RECOVERED_EARLY_EOF); - }); - this._transmuxer.on(_transmuxingEvents2.default.IO_ERROR, function (detail, info) { - _this3._emitter.emit(_playerEvents2.default.ERROR, _playerErrors.ErrorTypes.NETWORK_ERROR, detail, info); - }); - this._transmuxer.on(_transmuxingEvents2.default.DEMUX_ERROR, function (detail, info) { - _this3._emitter.emit(_playerEvents2.default.ERROR, _playerErrors.ErrorTypes.MEDIA_ERROR, detail, { code: -1, msg: info }); - }); - this._transmuxer.on(_transmuxingEvents2.default.MEDIA_INFO, function (mediaInfo) { - _this3._mediaInfo = mediaInfo; - _this3._emitter.emit(_playerEvents2.default.MEDIA_INFO, Object.assign({}, mediaInfo)); - }); - this._transmuxer.on(_transmuxingEvents2.default.STATISTICS_INFO, function (statInfo) { - _this3._statisticsInfo = _this3._fillStatisticsInfo(statInfo); - _this3._emitter.emit(_playerEvents2.default.STATISTICS_INFO, Object.assign({}, _this3._statisticsInfo)); - }); - this._transmuxer.on(_transmuxingEvents2.default.RECOMMEND_SEEKPOINT, function (milliseconds) { - if (_this3._mediaElement && !_this3._config.accurateSeek) { - _this3._requestSetTime = true; - _this3._mediaElement.currentTime = milliseconds / 1000; - } - }); - - this._transmuxer.open(); - } - }, { - key: 'unload', - value: function unload() { - if (this._mediaElement) { - this._mediaElement.pause(); - } - if (this._msectl) { - this._msectl.seek(0); - } - if (this._transmuxer) { - this._transmuxer.close(); - this._transmuxer.destroy(); - this._transmuxer = null; - } - } - }, { - key: 'play', - value: function play() { - return this._mediaElement.play(); - } - }, { - key: 'pause', - value: function pause() { - this._mediaElement.pause(); - } - }, { - key: '_fillStatisticsInfo', - value: function _fillStatisticsInfo(statInfo) { - statInfo.playerType = this._type; - - if (!(this._mediaElement instanceof HTMLVideoElement)) { - return statInfo; - } - - var hasQualityInfo = true; - var decoded = 0; - var dropped = 0; - - if (this._mediaElement.getVideoPlaybackQuality) { - var quality = this._mediaElement.getVideoPlaybackQuality(); - decoded = quality.totalVideoFrames; - dropped = quality.droppedVideoFrames; - } else if (this._mediaElement.webkitDecodedFrameCount != undefined) { - decoded = this._mediaElement.webkitDecodedFrameCount; - dropped = this._mediaElement.webkitDroppedFrameCount; - } else { - hasQualityInfo = false; - } - - if (hasQualityInfo) { - statInfo.decodedFrames = decoded; - statInfo.droppedFrames = dropped; - } - - return statInfo; - } - }, { - key: '_onmseUpdateEnd', - value: function _onmseUpdateEnd() { - if (!this._config.lazyLoad || this._config.isLive) { - return; - } - - var buffered = this._mediaElement.buffered; - var currentTime = this._mediaElement.currentTime; - var currentRangeStart = 0; - var currentRangeEnd = 0; - - for (var i = 0; i < buffered.length; i++) { - var start = buffered.start(i); - var end = buffered.end(i); - if (start <= currentTime && currentTime < end) { - currentRangeStart = start; - currentRangeEnd = end; - break; - } - } - - if (currentRangeEnd >= currentTime + this._config.lazyLoadMaxDuration && this._progressChecker == null) { - _logger2.default.v(this.TAG, 'Maximum buffering duration exceeded, suspend transmuxing task'); - this._suspendTransmuxer(); - } - } - }, { - key: '_onmseBufferFull', - value: function _onmseBufferFull() { - _logger2.default.v(this.TAG, 'MSE SourceBuffer is full, suspend transmuxing task'); - if (this._progressChecker == null) { - this._suspendTransmuxer(); - } - } - }, { - key: '_suspendTransmuxer', - value: function _suspendTransmuxer() { - if (this._transmuxer) { - this._transmuxer.pause(); - - if (this._progressChecker == null) { - this._progressChecker = window.setInterval(this._checkProgressAndResume.bind(this), 1000); - } - } - } - }, { - key: '_checkProgressAndResume', - value: function _checkProgressAndResume() { - var currentTime = this._mediaElement.currentTime; - var buffered = this._mediaElement.buffered; - - var needResume = false; - - for (var i = 0; i < buffered.length; i++) { - var from = buffered.start(i); - var to = buffered.end(i); - if (currentTime >= from && currentTime < to) { - if (currentTime >= to - this._config.lazyLoadRecoverDuration) { - needResume = true; - } - break; - } - } - - if (needResume) { - window.clearInterval(this._progressChecker); - this._progressChecker = null; - if (needResume) { - _logger2.default.v(this.TAG, 'Continue loading from paused position'); - this._transmuxer.resume(); - } - } - } - }, { - key: '_isTimepointBuffered', - value: function _isTimepointBuffered(seconds) { - var buffered = this._mediaElement.buffered; - - for (var i = 0; i < buffered.length; i++) { - var from = buffered.start(i); - var to = buffered.end(i); - if (seconds >= from && seconds < to) { - return true; - } - } - return false; - } - }, { - key: '_internalSeek', - value: function _internalSeek(seconds) { - var directSeek = this._isTimepointBuffered(seconds); - - var directSeekBegin = false; - var directSeekBeginTime = 0; - - if (seconds < 1.0 && this._mediaElement.buffered.length > 0) { - var videoBeginTime = this._mediaElement.buffered.start(0); - if (videoBeginTime < 1.0 && seconds < videoBeginTime || _browser2.default.safari) { - directSeekBegin = true; - // also workaround for Safari: Seek to 0 may cause video stuck, use 0.1 to avoid - directSeekBeginTime = _browser2.default.safari ? 0.1 : videoBeginTime; - } - } - - if (directSeekBegin) { - // seek to video begin, set currentTime directly if beginPTS buffered - this._requestSetTime = true; - this._mediaElement.currentTime = directSeekBeginTime; - } else if (directSeek) { - // buffered position - if (!this._alwaysSeekKeyframe) { - this._requestSetTime = true; - this._mediaElement.currentTime = seconds; - } else { - var idr = this._msectl.getNearestKeyframe(Math.floor(seconds * 1000)); - this._requestSetTime = true; - if (idr != null) { - this._mediaElement.currentTime = idr.dts / 1000; - } else { - this._mediaElement.currentTime = seconds; - } - } - if (this._progressChecker != null) { - this._checkProgressAndResume(); - } - } else { - if (this._progressChecker != null) { - window.clearInterval(this._progressChecker); - this._progressChecker = null; - } - this._msectl.seek(seconds); - this._transmuxer.seek(Math.floor(seconds * 1000)); // in milliseconds - // no need to set mediaElement.currentTime if non-accurateSeek, - // just wait for the recommend_seekpoint callback - if (this._config.accurateSeek) { - this._requestSetTime = true; - this._mediaElement.currentTime = seconds; - } - } - } - }, { - key: '_checkAndApplyUnbufferedSeekpoint', - value: function _checkAndApplyUnbufferedSeekpoint() { - if (this._seekpointRecord) { - if (this._seekpointRecord.recordTime <= this._now() - 100) { - var target = this._mediaElement.currentTime; - this._seekpointRecord = null; - if (!this._isTimepointBuffered(target)) { - if (this._progressChecker != null) { - window.clearTimeout(this._progressChecker); - this._progressChecker = null; - } - // .currentTime is consists with .buffered timestamp - // Chrome/Edge use DTS, while FireFox/Safari use PTS - this._msectl.seek(target); - this._transmuxer.seek(Math.floor(target * 1000)); - // set currentTime if accurateSeek, or wait for recommend_seekpoint callback - if (this._config.accurateSeek) { - this._requestSetTime = true; - this._mediaElement.currentTime = target; - } - } - } else { - window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50); - } - } - } - }, { - key: '_checkAndResumeStuckPlayback', - value: function _checkAndResumeStuckPlayback(stalled) { - var media = this._mediaElement; - if (stalled || !this._receivedCanPlay || media.readyState < 2) { - // HAVE_CURRENT_DATA - var buffered = media.buffered; - if (buffered.length > 0 && media.currentTime < buffered.start(0)) { - _logger2.default.w(this.TAG, 'Playback seems stuck at ' + media.currentTime + ', seek to ' + buffered.start(0)); - this._requestSetTime = true; - this._mediaElement.currentTime = buffered.start(0); - this._mediaElement.removeEventListener('progress', this.e.onvProgress); - } - } else { - // Playback didn't stuck, remove progress event listener - this._mediaElement.removeEventListener('progress', this.e.onvProgress); - } - } - }, { - key: '_onvLoadedMetadata', - value: function _onvLoadedMetadata(e) { - if (this._pendingSeekTime != null) { - this._mediaElement.currentTime = this._pendingSeekTime; - this._pendingSeekTime = null; - } - } - }, { - key: '_onvSeeking', - value: function _onvSeeking(e) { - // handle seeking request from browser's progress bar - var target = this._mediaElement.currentTime; - var buffered = this._mediaElement.buffered; - - if (this._requestSetTime) { - this._requestSetTime = false; - return; - } - - if (target < 1.0 && buffered.length > 0) { - // seek to video begin, set currentTime directly if beginPTS buffered - var videoBeginTime = buffered.start(0); - if (videoBeginTime < 1.0 && target < videoBeginTime || _browser2.default.safari) { - this._requestSetTime = true; - // also workaround for Safari: Seek to 0 may cause video stuck, use 0.1 to avoid - this._mediaElement.currentTime = _browser2.default.safari ? 0.1 : videoBeginTime; - return; - } - } - - if (this._isTimepointBuffered(target)) { - if (this._alwaysSeekKeyframe) { - var idr = this._msectl.getNearestKeyframe(Math.floor(target * 1000)); - if (idr != null) { - this._requestSetTime = true; - this._mediaElement.currentTime = idr.dts / 1000; - } - } - if (this._progressChecker != null) { - this._checkProgressAndResume(); - } - return; - } - - this._seekpointRecord = { - seekPoint: target, - recordTime: this._now() - }; - window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50); - } - }, { - key: '_onvCanPlay', - value: function _onvCanPlay(e) { - this._receivedCanPlay = true; - this._mediaElement.removeEventListener('canplay', this.e.onvCanPlay); - } - }, { - key: '_onvStalled', - value: function _onvStalled(e) { - this._checkAndResumeStuckPlayback(true); - } - }, { - key: '_onvProgress', - value: function _onvProgress(e) { - this._checkAndResumeStuckPlayback(); - } - }, { - key: 'type', - get: function get() { - return this._type; - } - }, { - key: 'buffered', - get: function get() { - return this._mediaElement.buffered; - } - }, { - key: 'duration', - get: function get() { - return this._mediaElement.duration; - } - }, { - key: 'volume', - get: function get() { - return this._mediaElement.volume; - }, - set: function set(value) { - this._mediaElement.volume = value; - } - }, { - key: 'muted', - get: function get() { - return this._mediaElement.muted; - }, - set: function set(muted) { - this._mediaElement.muted = muted; - } - }, { - key: 'currentTime', - get: function get() { - if (this._mediaElement) { - return this._mediaElement.currentTime; - } - return 0; - }, - set: function set(seconds) { - if (this._mediaElement) { - this._internalSeek(seconds); - } else { - this._pendingSeekTime = seconds; - } - } - }, { - key: 'mediaInfo', - get: function get() { - return Object.assign({}, this._mediaInfo); - } - }, { - key: 'statisticsInfo', - get: function get() { - if (this._statisticsInfo == null) { - this._statisticsInfo = {}; - } - this._statisticsInfo = this._fillStatisticsInfo(this._statisticsInfo); - return Object.assign({}, this._statisticsInfo); - } - }]); - - return FlvPlayer; -}(); - -exports.default = FlvPlayer; - -},{"../config.js":5,"../core/mse-controller.js":9,"../core/mse-events.js":10,"../core/transmuxer.js":11,"../core/transmuxing-events.js":13,"../utils/browser.js":39,"../utils/exception.js":40,"../utils/logger.js":41,"./player-errors.js":34,"./player-events.js":35,"events":2}],33:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var _events = _dereq_('events'); - -var _events2 = _interopRequireDefault(_events); - -var _playerEvents = _dereq_('./player-events.js'); - -var _playerEvents2 = _interopRequireDefault(_playerEvents); - -var _config = _dereq_('../config.js'); - -var _exception = _dereq_('../utils/exception.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -// Player wrapper for browser's native player (HTMLVideoElement) without MediaSource src. -var NativePlayer = function () { - function NativePlayer(mediaDataSource, config) { - _classCallCheck(this, NativePlayer); - - this.TAG = 'NativePlayer'; - this._type = 'NativePlayer'; - this._emitter = new _events2.default(); - - this._config = (0, _config.createDefaultConfig)(); - if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') { - Object.assign(this._config, config); - } - - if (mediaDataSource.type.toLowerCase() === 'flv') { - throw new _exception.InvalidArgumentException('NativePlayer does\'t support flv MediaDataSource input!'); - } - if (mediaDataSource.hasOwnProperty('segments')) { - throw new _exception.InvalidArgumentException('NativePlayer(' + mediaDataSource.type + ') doesn\'t support multipart playback!'); - } - - this.e = { - onvLoadedMetadata: this._onvLoadedMetadata.bind(this) - }; - - this._pendingSeekTime = null; - this._statisticsReporter = null; - - this._mediaDataSource = mediaDataSource; - this._mediaElement = null; - } - - _createClass(NativePlayer, [{ - key: 'destroy', - value: function destroy() { - if (this._mediaElement) { - this.unload(); - this.detachMediaElement(); - } - this.e = null; - this._mediaDataSource = null; - this._emitter.removeAllListeners(); - this._emitter = null; - } - }, { - key: 'on', - value: function on(event, listener) { - var _this = this; - - if (event === _playerEvents2.default.MEDIA_INFO) { - if (this._mediaElement != null && this._mediaElement.readyState !== 0) { - // HAVE_NOTHING - Promise.resolve().then(function () { - _this._emitter.emit(_playerEvents2.default.MEDIA_INFO, _this.mediaInfo); - }); - } - } else if (event === _playerEvents2.default.STATISTICS_INFO) { - if (this._mediaElement != null && this._mediaElement.readyState !== 0) { - Promise.resolve().then(function () { - _this._emitter.emit(_playerEvents2.default.STATISTICS_INFO, _this.statisticsInfo); - }); - } - } - this._emitter.addListener(event, listener); - } - }, { - key: 'off', - value: function off(event, listener) { - this._emitter.removeListener(event, listener); - } - }, { - key: 'attachMediaElement', - value: function attachMediaElement(mediaElement) { - this._mediaElement = mediaElement; - mediaElement.addEventListener('loadedmetadata', this.e.onvLoadedMetadata); - - if (this._pendingSeekTime != null) { - try { - mediaElement.currentTime = this._pendingSeekTime; - this._pendingSeekTime = null; - } catch (e) { - // IE11 may throw InvalidStateError if readyState === 0 - // Defer set currentTime operation after loadedmetadata - } - } - } - }, { - key: 'detachMediaElement', - value: function detachMediaElement() { - if (this._mediaElement) { - this._mediaElement.src = ''; - this._mediaElement.removeAttribute('src'); - this._mediaElement.removeEventListener('loadedmetadata', this.e.onvLoadedMetadata); - this._mediaElement = null; - } - if (this._statisticsReporter != null) { - window.clearInterval(this._statisticsReporter); - this._statisticsReporter = null; - } - } - }, { - key: 'load', - value: function load() { - if (!this._mediaElement) { - throw new _exception.IllegalStateException('HTMLMediaElement must be attached before load()!'); - } - this._mediaElement.src = this._mediaDataSource.url; - - if (this._mediaElement.readyState > 0) { - this._mediaElement.currentTime = 0; - } - - this._mediaElement.preload = 'auto'; - this._mediaElement.load(); - this._statisticsReporter = window.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval); - } - }, { - key: 'unload', - value: function unload() { - if (this._mediaElement) { - this._mediaElement.src = ''; - this._mediaElement.removeAttribute('src'); - } - if (this._statisticsReporter != null) { - window.clearInterval(this._statisticsReporter); - this._statisticsReporter = null; - } - } - }, { - key: 'play', - value: function play() { - return this._mediaElement.play(); - } - }, { - key: 'pause', - value: function pause() { - this._mediaElement.pause(); - } - }, { - key: '_onvLoadedMetadata', - value: function _onvLoadedMetadata(e) { - if (this._pendingSeekTime != null) { - this._mediaElement.currentTime = this._pendingSeekTime; - this._pendingSeekTime = null; - } - this._emitter.emit(_playerEvents2.default.MEDIA_INFO, this.mediaInfo); - } - }, { - key: '_reportStatisticsInfo', - value: function _reportStatisticsInfo() { - this._emitter.emit(_playerEvents2.default.STATISTICS_INFO, this.statisticsInfo); - } - }, { - key: 'type', - get: function get() { - return this._type; - } - }, { - key: 'buffered', - get: function get() { - return this._mediaElement.buffered; - } - }, { - key: 'duration', - get: function get() { - return this._mediaElement.duration; - } - }, { - key: 'volume', - get: function get() { - return this._mediaElement.volume; - }, - set: function set(value) { - this._mediaElement.volume = value; - } - }, { - key: 'muted', - get: function get() { - return this._mediaElement.muted; - }, - set: function set(muted) { - this._mediaElement.muted = muted; - } - }, { - key: 'currentTime', - get: function get() { - if (this._mediaElement) { - return this._mediaElement.currentTime; - } - return 0; - }, - set: function set(seconds) { - if (this._mediaElement) { - this._mediaElement.currentTime = seconds; - } else { - this._pendingSeekTime = seconds; - } - } - }, { - key: 'mediaInfo', - get: function get() { - var mediaPrefix = this._mediaElement instanceof HTMLAudioElement ? 'audio/' : 'video/'; - var info = { - mimeType: mediaPrefix + this._mediaDataSource.type - }; - if (this._mediaElement) { - info.duration = Math.floor(this._mediaElement.duration * 1000); - if (this._mediaElement instanceof HTMLVideoElement) { - info.width = this._mediaElement.videoWidth; - info.height = this._mediaElement.videoHeight; - } - } - return info; - } - }, { - key: 'statisticsInfo', - get: function get() { - var info = { - playerType: this._type, - url: this._mediaDataSource.url - }; - - if (!(this._mediaElement instanceof HTMLVideoElement)) { - return info; - } - - var hasQualityInfo = true; - var decoded = 0; - var dropped = 0; - - if (this._mediaElement.getVideoPlaybackQuality) { - var quality = this._mediaElement.getVideoPlaybackQuality(); - decoded = quality.totalVideoFrames; - dropped = quality.droppedVideoFrames; - } else if (this._mediaElement.webkitDecodedFrameCount != undefined) { - decoded = this._mediaElement.webkitDecodedFrameCount; - dropped = this._mediaElement.webkitDroppedFrameCount; - } else { - hasQualityInfo = false; - } - - if (hasQualityInfo) { - info.decodedFrames = decoded; - info.droppedFrames = dropped; - } - - return info; - } - }]); - - return NativePlayer; -}(); - -exports.default = NativePlayer; - -},{"../config.js":5,"../utils/exception.js":40,"./player-events.js":35,"events":2}],34:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.ErrorDetails = exports.ErrorTypes = undefined; - -var _loader = _dereq_('../io/loader.js'); - -var _demuxErrors = _dereq_('../demux/demux-errors.js'); - -var _demuxErrors2 = _interopRequireDefault(_demuxErrors); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var ErrorTypes = exports.ErrorTypes = { - NETWORK_ERROR: 'NetworkError', - MEDIA_ERROR: 'MediaError', - OTHER_ERROR: 'OtherError' -}; - -var ErrorDetails = exports.ErrorDetails = { - NETWORK_EXCEPTION: _loader.LoaderErrors.EXCEPTION, - NETWORK_STATUS_CODE_INVALID: _loader.LoaderErrors.HTTP_STATUS_CODE_INVALID, - NETWORK_TIMEOUT: _loader.LoaderErrors.CONNECTING_TIMEOUT, - NETWORK_UNRECOVERABLE_EARLY_EOF: _loader.LoaderErrors.UNRECOVERABLE_EARLY_EOF, - - MEDIA_MSE_ERROR: 'MediaMSEError', - - MEDIA_FORMAT_ERROR: _demuxErrors2.default.FORMAT_ERROR, - MEDIA_FORMAT_UNSUPPORTED: _demuxErrors2.default.FORMAT_UNSUPPORTED, - MEDIA_CODEC_UNSUPPORTED: _demuxErrors2.default.CODEC_UNSUPPORTED -}; - -},{"../demux/demux-errors.js":16,"../io/loader.js":24}],35:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var PlayerEvents = { - ERROR: 'error', - LOADING_COMPLETE: 'loading_complete', - RECOVERED_EARLY_EOF: 'recovered_early_eof', - MEDIA_INFO: 'media_info', - STATISTICS_INFO: 'statistics_info' -}; - -exports.default = PlayerEvents; - -},{}],36:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * This file is modified from dailymotion's hls.js library (hls.js/src/helper/aac.js) - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var AAC = function () { - function AAC() { - _classCallCheck(this, AAC); - } - - _createClass(AAC, null, [{ - key: 'getSilentFrame', - value: function getSilentFrame(codec, channelCount) { - if (codec === 'mp4a.40.2') { - // handle LC-AAC - if (channelCount === 1) { - return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]); - } else if (channelCount === 2) { - return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]); - } else if (channelCount === 3) { - return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x8e]); - } else if (channelCount === 4) { - return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38]); - } else if (channelCount === 5) { - return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38]); - } else if (channelCount === 6) { - return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2, 0x00, 0x20, 0x08, 0xe0]); - } - } else { - // handle HE-AAC (mp4a.40.5 / mp4a.40.29) - if (channelCount === 1) { - // ffmpeg -y -f lavfi -i "aevalsrc=0:d=0.05" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac - return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]); - } else if (channelCount === 2) { - // ffmpeg -y -f lavfi -i "aevalsrc=0|0:d=0.05" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac - return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]); - } else if (channelCount === 3) { - // ffmpeg -y -f lavfi -i "aevalsrc=0|0|0:d=0.05" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac - return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]); - } - } - return null; - } - }]); - - return AAC; -}(); - -exports.default = AAC; - -},{}],37:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * This file is derived from dailymotion's hls.js library (hls.js/src/remux/mp4-generator.js) - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// MP4 boxes generator for ISO BMFF (ISO Base Media File Format, defined in ISO/IEC 14496-12) -var MP4 = function () { - function MP4() { - _classCallCheck(this, MP4); - } - - _createClass(MP4, null, [{ - key: 'init', - value: function init() { - MP4.types = { - avc1: [], avcC: [], btrt: [], dinf: [], - dref: [], esds: [], ftyp: [], hdlr: [], - mdat: [], mdhd: [], mdia: [], mfhd: [], - minf: [], moof: [], moov: [], mp4a: [], - mvex: [], mvhd: [], sdtp: [], stbl: [], - stco: [], stsc: [], stsd: [], stsz: [], - stts: [], tfdt: [], tfhd: [], traf: [], - trak: [], trun: [], trex: [], tkhd: [], - vmhd: [], smhd: [], '.mp3': [] - }; - - for (var name in MP4.types) { - if (MP4.types.hasOwnProperty(name)) { - MP4.types[name] = [name.charCodeAt(0), name.charCodeAt(1), name.charCodeAt(2), name.charCodeAt(3)]; - } - } - - var constants = MP4.constants = {}; - - constants.FTYP = new Uint8Array([0x69, 0x73, 0x6F, 0x6D, // major_brand: isom - 0x0, 0x0, 0x0, 0x1, // minor_version: 0x01 - 0x69, 0x73, 0x6F, 0x6D, // isom - 0x61, 0x76, 0x63, 0x31 // avc1 - ]); - - constants.STSD_PREFIX = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags - 0x00, 0x00, 0x00, 0x01 // entry_count - ]); - - constants.STTS = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags - 0x00, 0x00, 0x00, 0x00 // entry_count - ]); - - constants.STSC = constants.STCO = constants.STTS; - - constants.STSZ = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags - 0x00, 0x00, 0x00, 0x00, // sample_size - 0x00, 0x00, 0x00, 0x00 // sample_count - ]); - - constants.HDLR_VIDEO = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags - 0x00, 0x00, 0x00, 0x00, // pre_defined - 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide' - 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x69, 0x64, 0x65, 0x6F, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00 // name: VideoHandler - ]); - - constants.HDLR_AUDIO = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags - 0x00, 0x00, 0x00, 0x00, // pre_defined - 0x73, 0x6F, 0x75, 0x6E, // handler_type: 'soun' - 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x6F, 0x75, 0x6E, 0x64, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00 // name: SoundHandler - ]); - - constants.DREF = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags - 0x00, 0x00, 0x00, 0x01, // entry_count - 0x00, 0x00, 0x00, 0x0C, // entry_size - 0x75, 0x72, 0x6C, 0x20, // type 'url ' - 0x00, 0x00, 0x00, 0x01 // version(0) + flags - ]); - - // Sound media header - constants.SMHD = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags - 0x00, 0x00, 0x00, 0x00 // balance(2) + reserved(2) - ]); - - // video media header - constants.VMHD = new Uint8Array([0x00, 0x00, 0x00, 0x01, // version(0) + flags - 0x00, 0x00, // graphicsmode: 2 bytes - 0x00, 0x00, 0x00, 0x00, // opcolor: 3 * 2 bytes - 0x00, 0x00]); - } - - // Generate a box - - }, { - key: 'box', - value: function box(type) { - var size = 8; - var result = null; - var datas = Array.prototype.slice.call(arguments, 1); - var arrayCount = datas.length; - - for (var i = 0; i < arrayCount; i++) { - size += datas[i].byteLength; - } - - result = new Uint8Array(size); - result[0] = size >>> 24 & 0xFF; // size - result[1] = size >>> 16 & 0xFF; - result[2] = size >>> 8 & 0xFF; - result[3] = size & 0xFF; - - result.set(type, 4); // type - - var offset = 8; - for (var _i = 0; _i < arrayCount; _i++) { - // data body - result.set(datas[_i], offset); - offset += datas[_i].byteLength; - } - - return result; - } - - // emit ftyp & moov - - }, { - key: 'generateInitSegment', - value: function generateInitSegment(meta) { - var ftyp = MP4.box(MP4.types.ftyp, MP4.constants.FTYP); - var moov = MP4.moov(meta); - - var result = new Uint8Array(ftyp.byteLength + moov.byteLength); - result.set(ftyp, 0); - result.set(moov, ftyp.byteLength); - return result; - } - - // Movie metadata box - - }, { - key: 'moov', - value: function moov(meta) { - var mvhd = MP4.mvhd(meta.timescale, meta.duration); - var trak = MP4.trak(meta); - var mvex = MP4.mvex(meta); - return MP4.box(MP4.types.moov, mvhd, trak, mvex); - } - - // Movie header box - - }, { - key: 'mvhd', - value: function mvhd(timescale, duration) { - return MP4.box(MP4.types.mvhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags - 0x00, 0x00, 0x00, 0x00, // creation_time - 0x00, 0x00, 0x00, 0x00, // modification_time - timescale >>> 24 & 0xFF, // timescale: 4 bytes - timescale >>> 16 & 0xFF, timescale >>> 8 & 0xFF, timescale & 0xFF, duration >>> 24 & 0xFF, // duration: 4 bytes - duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, 0x00, 0x01, 0x00, 0x00, // Preferred rate: 1.0 - 0x01, 0x00, 0x00, 0x00, // PreferredVolume(1.0, 2bytes) + reserved(2bytes) - 0x00, 0x00, 0x00, 0x00, // reserved: 4 + 4 bytes - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix---- - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // ----end composition matrix---- - 0x00, 0x00, 0x00, 0x00, // ----begin pre_defined 6 * 4 bytes---- - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ----end pre_defined 6 * 4 bytes---- - 0xFF, 0xFF, 0xFF, 0xFF // next_track_ID - ])); - } - - // Track box - - }, { - key: 'trak', - value: function trak(meta) { - return MP4.box(MP4.types.trak, MP4.tkhd(meta), MP4.mdia(meta)); - } - - // Track header box - - }, { - key: 'tkhd', - value: function tkhd(meta) { - var trackId = meta.id, - duration = meta.duration; - var width = meta.presentWidth, - height = meta.presentHeight; - - return MP4.box(MP4.types.tkhd, new Uint8Array([0x00, 0x00, 0x00, 0x07, // version(0) + flags - 0x00, 0x00, 0x00, 0x00, // creation_time - 0x00, 0x00, 0x00, 0x00, // modification_time - trackId >>> 24 & 0xFF, // track_ID: 4 bytes - trackId >>> 16 & 0xFF, trackId >>> 8 & 0xFF, trackId & 0xFF, 0x00, 0x00, 0x00, 0x00, // reserved: 4 bytes - duration >>> 24 & 0xFF, // duration: 4 bytes - duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // layer(2bytes) + alternate_group(2bytes) - 0x00, 0x00, 0x00, 0x00, // volume(2bytes) + reserved(2bytes) - 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix---- - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // ----end composition matrix---- - width >>> 8 & 0xFF, // width and height - width & 0xFF, 0x00, 0x00, height >>> 8 & 0xFF, height & 0xFF, 0x00, 0x00])); - } - - // Media Box - - }, { - key: 'mdia', - value: function mdia(meta) { - return MP4.box(MP4.types.mdia, MP4.mdhd(meta), MP4.hdlr(meta), MP4.minf(meta)); - } - - // Media header box - - }, { - key: 'mdhd', - value: function mdhd(meta) { - var timescale = meta.timescale; - var duration = meta.duration; - return MP4.box(MP4.types.mdhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags - 0x00, 0x00, 0x00, 0x00, // creation_time - 0x00, 0x00, 0x00, 0x00, // modification_time - timescale >>> 24 & 0xFF, // timescale: 4 bytes - timescale >>> 16 & 0xFF, timescale >>> 8 & 0xFF, timescale & 0xFF, duration >>> 24 & 0xFF, // duration: 4 bytes - duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, 0x55, 0xC4, // language: und (undetermined) - 0x00, 0x00 // pre_defined = 0 - ])); - } - - // Media handler reference box - - }, { - key: 'hdlr', - value: function hdlr(meta) { - var data = null; - if (meta.type === 'audio') { - data = MP4.constants.HDLR_AUDIO; - } else { - data = MP4.constants.HDLR_VIDEO; - } - return MP4.box(MP4.types.hdlr, data); - } - - // Media infomation box - - }, { - key: 'minf', - value: function minf(meta) { - var xmhd = null; - if (meta.type === 'audio') { - xmhd = MP4.box(MP4.types.smhd, MP4.constants.SMHD); - } else { - xmhd = MP4.box(MP4.types.vmhd, MP4.constants.VMHD); - } - return MP4.box(MP4.types.minf, xmhd, MP4.dinf(), MP4.stbl(meta)); - } - - // Data infomation box - - }, { - key: 'dinf', - value: function dinf() { - var result = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, MP4.constants.DREF)); - return result; - } - - // Sample table box - - }, { - key: 'stbl', - value: function stbl(meta) { - var result = MP4.box(MP4.types.stbl, // type: stbl - MP4.stsd(meta), // Sample Description Table - MP4.box(MP4.types.stts, MP4.constants.STTS), // Time-To-Sample - MP4.box(MP4.types.stsc, MP4.constants.STSC), // Sample-To-Chunk - MP4.box(MP4.types.stsz, MP4.constants.STSZ), // Sample size - MP4.box(MP4.types.stco, MP4.constants.STCO // Chunk offset - )); - return result; - } - - // Sample description box - - }, { - key: 'stsd', - value: function stsd(meta) { - if (meta.type === 'audio') { - if (meta.codec === 'mp3') { - return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp3(meta)); - } - // else: aac -> mp4a - return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp4a(meta)); - } else { - return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.avc1(meta)); - } - } - }, { - key: 'mp3', - value: function mp3(meta) { - var channelCount = meta.channelCount; - var sampleRate = meta.audioSampleRate; - - var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // reserved(4) - 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2) - 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes - 0x00, 0x00, 0x00, 0x00, 0x00, channelCount, // channelCount(2) - 0x00, 0x10, // sampleSize(2) - 0x00, 0x00, 0x00, 0x00, // reserved(4) - sampleRate >>> 8 & 0xFF, // Audio sample rate - sampleRate & 0xFF, 0x00, 0x00]); - - return MP4.box(MP4.types['.mp3'], data); - } - }, { - key: 'mp4a', - value: function mp4a(meta) { - var channelCount = meta.channelCount; - var sampleRate = meta.audioSampleRate; - - var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // reserved(4) - 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2) - 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes - 0x00, 0x00, 0x00, 0x00, 0x00, channelCount, // channelCount(2) - 0x00, 0x10, // sampleSize(2) - 0x00, 0x00, 0x00, 0x00, // reserved(4) - sampleRate >>> 8 & 0xFF, // Audio sample rate - sampleRate & 0xFF, 0x00, 0x00]); - - return MP4.box(MP4.types.mp4a, data, MP4.esds(meta)); - } - }, { - key: 'esds', - value: function esds(meta) { - var config = meta.config || []; - var configSize = config.length; - var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version 0 + flags - - 0x03, // descriptor_type - 0x17 + configSize, // length3 - 0x00, 0x01, // es_id - 0x00, // stream_priority - - 0x04, // descriptor_type - 0x0F + configSize, // length - 0x40, // codec: mpeg4_audio - 0x15, // stream_type: Audio - 0x00, 0x00, 0x00, // buffer_size - 0x00, 0x00, 0x00, 0x00, // maxBitrate - 0x00, 0x00, 0x00, 0x00, // avgBitrate - - 0x05 // descriptor_type - ].concat([configSize]).concat(config).concat([0x06, 0x01, 0x02 // GASpecificConfig - ])); - return MP4.box(MP4.types.esds, data); - } - }, { - key: 'avc1', - value: function avc1(meta) { - var avcc = meta.avcc; - var width = meta.codecWidth, - height = meta.codecHeight; - - var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // reserved(4) - 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2) - 0x00, 0x00, 0x00, 0x00, // pre_defined(2) + reserved(2) - 0x00, 0x00, 0x00, 0x00, // pre_defined: 3 * 4 bytes - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, width >>> 8 & 0xFF, // width: 2 bytes - width & 0xFF, height >>> 8 & 0xFF, // height: 2 bytes - height & 0xFF, 0x00, 0x48, 0x00, 0x00, // horizresolution: 4 bytes - 0x00, 0x48, 0x00, 0x00, // vertresolution: 4 bytes - 0x00, 0x00, 0x00, 0x00, // reserved: 4 bytes - 0x00, 0x01, // frame_count - 0x0A, // strlen - 0x78, 0x71, 0x71, 0x2F, // compressorname: 32 bytes - 0x66, 0x6C, 0x76, 0x2E, 0x6A, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, // depth - 0xFF, 0xFF // pre_defined = -1 - ]); - return MP4.box(MP4.types.avc1, data, MP4.box(MP4.types.avcC, avcc)); - } - - // Movie Extends box - - }, { - key: 'mvex', - value: function mvex(meta) { - return MP4.box(MP4.types.mvex, MP4.trex(meta)); - } - - // Track Extends box - - }, { - key: 'trex', - value: function trex(meta) { - var trackId = meta.id; - var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags - trackId >>> 24 & 0xFF, // track_ID - trackId >>> 16 & 0xFF, trackId >>> 8 & 0xFF, trackId & 0xFF, 0x00, 0x00, 0x00, 0x01, // default_sample_description_index - 0x00, 0x00, 0x00, 0x00, // default_sample_duration - 0x00, 0x00, 0x00, 0x00, // default_sample_size - 0x00, 0x01, 0x00, 0x01 // default_sample_flags - ]); - return MP4.box(MP4.types.trex, data); - } - - // Movie fragment box - - }, { - key: 'moof', - value: function moof(track, baseMediaDecodeTime) { - return MP4.box(MP4.types.moof, MP4.mfhd(track.sequenceNumber), MP4.traf(track, baseMediaDecodeTime)); - } - }, { - key: 'mfhd', - value: function mfhd(sequenceNumber) { - var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, sequenceNumber >>> 24 & 0xFF, // sequence_number: int32 - sequenceNumber >>> 16 & 0xFF, sequenceNumber >>> 8 & 0xFF, sequenceNumber & 0xFF]); - return MP4.box(MP4.types.mfhd, data); - } - - // Track fragment box - - }, { - key: 'traf', - value: function traf(track, baseMediaDecodeTime) { - var trackId = track.id; - - // Track fragment header box - var tfhd = MP4.box(MP4.types.tfhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) & flags - trackId >>> 24 & 0xFF, // track_ID - trackId >>> 16 & 0xFF, trackId >>> 8 & 0xFF, trackId & 0xFF])); - // Track Fragment Decode Time - var tfdt = MP4.box(MP4.types.tfdt, new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) & flags - baseMediaDecodeTime >>> 24 & 0xFF, // baseMediaDecodeTime: int32 - baseMediaDecodeTime >>> 16 & 0xFF, baseMediaDecodeTime >>> 8 & 0xFF, baseMediaDecodeTime & 0xFF])); - var sdtp = MP4.sdtp(track); - var trun = MP4.trun(track, sdtp.byteLength + 16 + 16 + 8 + 16 + 8 + 8); - - return MP4.box(MP4.types.traf, tfhd, tfdt, trun, sdtp); - } - - // Sample Dependency Type box - - }, { - key: 'sdtp', - value: function sdtp(track) { - var samples = track.samples || []; - var sampleCount = samples.length; - var data = new Uint8Array(4 + sampleCount); - // 0~4 bytes: version(0) & flags - for (var i = 0; i < sampleCount; i++) { - var flags = samples[i].flags; - data[i + 4] = flags.isLeading << 6 | // is_leading: 2 (bit) - flags.dependsOn << 4 // sample_depends_on - | flags.isDependedOn << 2 // sample_is_depended_on - | flags.hasRedundancy; // sample_has_redundancy - } - return MP4.box(MP4.types.sdtp, data); - } - - // Track fragment run box - - }, { - key: 'trun', - value: function trun(track, offset) { - var samples = track.samples || []; - var sampleCount = samples.length; - var dataSize = 12 + 16 * sampleCount; - var data = new Uint8Array(dataSize); - offset += 8 + dataSize; - - data.set([0x00, 0x00, 0x0F, 0x01, // version(0) & flags - sampleCount >>> 24 & 0xFF, // sample_count - sampleCount >>> 16 & 0xFF, sampleCount >>> 8 & 0xFF, sampleCount & 0xFF, offset >>> 24 & 0xFF, // data_offset - offset >>> 16 & 0xFF, offset >>> 8 & 0xFF, offset & 0xFF], 0); - - for (var i = 0; i < sampleCount; i++) { - var duration = samples[i].duration; - var size = samples[i].size; - var flags = samples[i].flags; - var cts = samples[i].cts; - data.set([duration >>> 24 & 0xFF, // sample_duration - duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, size >>> 24 & 0xFF, // sample_size - size >>> 16 & 0xFF, size >>> 8 & 0xFF, size & 0xFF, flags.isLeading << 2 | flags.dependsOn, // sample_flags - flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.isNonSync, 0x00, 0x00, // sample_degradation_priority - cts >>> 24 & 0xFF, // sample_composition_time_offset - cts >>> 16 & 0xFF, cts >>> 8 & 0xFF, cts & 0xFF], 12 + 16 * i); - } - return MP4.box(MP4.types.trun, data); - } - }, { - key: 'mdat', - value: function mdat(data) { - return MP4.box(MP4.types.mdat, data); - } - }]); - - return MP4; -}(); - -MP4.init(); - -exports.default = MP4; - -},{}],38:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var _logger = _dereq_('../utils/logger.js'); - -var _logger2 = _interopRequireDefault(_logger); - -var _mp4Generator = _dereq_('./mp4-generator.js'); - -var _mp4Generator2 = _interopRequireDefault(_mp4Generator); - -var _aacSilent = _dereq_('./aac-silent.js'); - -var _aacSilent2 = _interopRequireDefault(_aacSilent); - -var _browser = _dereq_('../utils/browser.js'); - -var _browser2 = _interopRequireDefault(_browser); - -var _mediaSegmentInfo = _dereq_('../core/media-segment-info.js'); - -var _exception = _dereq_('../utils/exception.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -// Fragmented mp4 remuxer -var MP4Remuxer = function () { - function MP4Remuxer(config) { - _classCallCheck(this, MP4Remuxer); - - this.TAG = 'MP4Remuxer'; - - this._config = config; - this._isLive = config.isLive === true ? true : false; - - this._dtsBase = -1; - this._dtsBaseInited = false; - this._audioDtsBase = Infinity; - this._videoDtsBase = Infinity; - this._audioNextDts = undefined; - this._videoNextDts = undefined; - this._audioStashedLastSample = null; - this._videoStashedLastSample = null; - - this._audioMeta = null; - this._videoMeta = null; - - this._audioSegmentInfoList = new _mediaSegmentInfo.MediaSegmentInfoList('audio'); - this._videoSegmentInfoList = new _mediaSegmentInfo.MediaSegmentInfoList('video'); - - this._onInitSegment = null; - this._onMediaSegment = null; - - // Workaround for chrome < 50: Always force first sample as a Random Access Point in media segment - // see https://bugs.chromium.org/p/chromium/issues/detail?id=229412 - this._forceFirstIDR = _browser2.default.chrome && (_browser2.default.version.major < 50 || _browser2.default.version.major === 50 && _browser2.default.version.build < 2661) ? true : false; - - // Workaround for IE11/Edge: Fill silent aac frame after keyframe-seeking - // Make audio beginDts equals with video beginDts, in order to fix seek freeze - this._fillSilentAfterSeek = _browser2.default.msedge || _browser2.default.msie; - - // While only FireFox supports 'audio/mp4, codecs="mp3"', use 'audio/mpeg' for chrome, safari, ... - this._mp3UseMpegAudio = !_browser2.default.firefox; - - this._fillAudioTimestampGap = this._config.fixAudioTimestampGap; - } - - _createClass(MP4Remuxer, [{ - key: 'destroy', - value: function destroy() { - this._dtsBase = -1; - this._dtsBaseInited = false; - this._audioMeta = null; - this._videoMeta = null; - this._audioSegmentInfoList.clear(); - this._audioSegmentInfoList = null; - this._videoSegmentInfoList.clear(); - this._videoSegmentInfoList = null; - this._onInitSegment = null; - this._onMediaSegment = null; - } - }, { - key: 'bindDataSource', - value: function bindDataSource(producer) { - producer.onDataAvailable = this.remux.bind(this); - producer.onTrackMetadata = this._onTrackMetadataReceived.bind(this); - return this; - } - - /* prototype: function onInitSegment(type: string, initSegment: ArrayBuffer): void - InitSegment: { - type: string, - data: ArrayBuffer, - codec: string, - container: string - } - */ - - }, { - key: 'insertDiscontinuity', - value: function insertDiscontinuity() { - this._audioNextDts = this._videoNextDts = undefined; - } - }, { - key: 'seek', - value: function seek(originalDts) { - this._audioStashedLastSample = null; - this._videoStashedLastSample = null; - this._videoSegmentInfoList.clear(); - this._audioSegmentInfoList.clear(); - } - }, { - key: 'remux', - value: function remux(audioTrack, videoTrack) { - if (!this._onMediaSegment) { - throw new _exception.IllegalStateException('MP4Remuxer: onMediaSegment callback must be specificed!'); - } - if (!this._dtsBaseInited) { - this._calculateDtsBase(audioTrack, videoTrack); - } - this._remuxVideo(videoTrack); - this._remuxAudio(audioTrack); - } - }, { - key: '_onTrackMetadataReceived', - value: function _onTrackMetadataReceived(type, metadata) { - var metabox = null; - - var container = 'mp4'; - var codec = metadata.codec; - - if (type === 'audio') { - this._audioMeta = metadata; - if (metadata.codec === 'mp3' && this._mp3UseMpegAudio) { - // 'audio/mpeg' for MP3 audio track - container = 'mpeg'; - codec = ''; - metabox = new Uint8Array(); - } else { - // 'audio/mp4, codecs="codec"' - metabox = _mp4Generator2.default.generateInitSegment(metadata); - } - } else if (type === 'video') { - this._videoMeta = metadata; - metabox = _mp4Generator2.default.generateInitSegment(metadata); - } else { - return; - } - - // dispatch metabox (Initialization Segment) - if (!this._onInitSegment) { - throw new _exception.IllegalStateException('MP4Remuxer: onInitSegment callback must be specified!'); - } - this._onInitSegment(type, { - type: type, - data: metabox.buffer, - codec: codec, - container: type + '/' + container, - mediaDuration: metadata.duration // in timescale 1000 (milliseconds) - }); - } - }, { - key: '_calculateDtsBase', - value: function _calculateDtsBase(audioTrack, videoTrack) { - if (this._dtsBaseInited) { - return; - } - - if (audioTrack.samples && audioTrack.samples.length) { - this._audioDtsBase = audioTrack.samples[0].dts; - } - if (videoTrack.samples && videoTrack.samples.length) { - this._videoDtsBase = videoTrack.samples[0].dts; - } - - this._dtsBase = Math.min(this._audioDtsBase, this._videoDtsBase); - this._dtsBaseInited = true; - } - }, { - key: 'flushStashedSamples', - value: function flushStashedSamples() { - var videoSample = this._videoStashedLastSample; - var audioSample = this._audioStashedLastSample; - - var videoTrack = { - type: 'video', - id: 1, - sequenceNumber: 0, - samples: [], - length: 0 - }; - - if (videoSample != null) { - videoTrack.samples.push(videoSample); - videoTrack.length = videoSample.length; - } - - var audioTrack = { - type: 'audio', - id: 2, - sequenceNumber: 0, - samples: [], - length: 0 - }; - - if (audioSample != null) { - audioTrack.samples.push(audioSample); - audioTrack.length = audioSample.length; - } - - this._videoStashedLastSample = null; - this._audioStashedLastSample = null; - - this._remuxVideo(videoTrack, true); - this._remuxAudio(audioTrack, true); - } - }, { - key: '_remuxAudio', - value: function _remuxAudio(audioTrack, force) { - if (this._audioMeta == null) { - return; - } - - var track = audioTrack; - var samples = track.samples; - var dtsCorrection = undefined; - var firstDts = -1, - lastDts = -1, - lastPts = -1; - var refSampleDuration = this._audioMeta.refSampleDuration; - - var mpegRawTrack = this._audioMeta.codec === 'mp3' && this._mp3UseMpegAudio; - var firstSegmentAfterSeek = this._dtsBaseInited && this._audioNextDts === undefined; - - var insertPrefixSilentFrame = false; - - if (!samples || samples.length === 0) { - return; - } - if (samples.length === 1 && !force) { - // If [sample count in current batch] === 1 && (force != true) - // Ignore and keep in demuxer's queue - return; - } // else if (force === true) do remux - - var offset = 0; - var mdatbox = null; - var mdatBytes = 0; - - // calculate initial mdat size - if (mpegRawTrack) { - // for raw mpeg buffer - offset = 0; - mdatBytes = track.length; - } else { - // for fmp4 mdat box - offset = 8; // size + type - mdatBytes = 8 + track.length; - } - - var lastSample = null; - - // Pop the lastSample and waiting for stash - if (samples.length > 1) { - lastSample = samples.pop(); - mdatBytes -= lastSample.length; - } - - // Insert [stashed lastSample in the previous batch] to the front - if (this._audioStashedLastSample != null) { - var sample = this._audioStashedLastSample; - this._audioStashedLastSample = null; - samples.unshift(sample); - mdatBytes += sample.length; - } - - // Stash the lastSample of current batch, waiting for next batch - if (lastSample != null) { - this._audioStashedLastSample = lastSample; - } - - var firstSampleOriginalDts = samples[0].dts - this._dtsBase; - - // calculate dtsCorrection - if (this._audioNextDts) { - dtsCorrection = firstSampleOriginalDts - this._audioNextDts; - } else { - // this._audioNextDts == undefined - if (this._audioSegmentInfoList.isEmpty()) { - dtsCorrection = 0; - if (this._fillSilentAfterSeek && !this._videoSegmentInfoList.isEmpty()) { - if (this._audioMeta.originalCodec !== 'mp3') { - insertPrefixSilentFrame = true; - } - } - } else { - var _lastSample = this._audioSegmentInfoList.getLastSampleBefore(firstSampleOriginalDts); - if (_lastSample != null) { - var distance = firstSampleOriginalDts - (_lastSample.originalDts + _lastSample.duration); - if (distance <= 3) { - distance = 0; - } - var expectedDts = _lastSample.dts + _lastSample.duration + distance; - dtsCorrection = firstSampleOriginalDts - expectedDts; - } else { - // lastSample == null, cannot found - dtsCorrection = 0; - } - } - } - - if (insertPrefixSilentFrame) { - // align audio segment beginDts to match with current video segment's beginDts - var firstSampleDts = firstSampleOriginalDts - dtsCorrection; - var videoSegment = this._videoSegmentInfoList.getLastSegmentBefore(firstSampleOriginalDts); - if (videoSegment != null && videoSegment.beginDts < firstSampleDts) { - var silentUnit = _aacSilent2.default.getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount); - if (silentUnit) { - var dts = videoSegment.beginDts; - var silentFrameDuration = firstSampleDts - videoSegment.beginDts; - _logger2.default.v(this.TAG, 'InsertPrefixSilentAudio: dts: ' + dts + ', duration: ' + silentFrameDuration); - samples.unshift({ unit: silentUnit, dts: dts, pts: dts }); - mdatBytes += silentUnit.byteLength; - } // silentUnit == null: Cannot generate, skip - } else { - insertPrefixSilentFrame = false; - } - } - - var mp4Samples = []; - - // Correct dts for each sample, and calculate sample duration. Then output to mp4Samples - for (var i = 0; i < samples.length; i++) { - var _sample = samples[i]; - var unit = _sample.unit; - var originalDts = _sample.dts - this._dtsBase; - var _dts = originalDts - dtsCorrection; - - if (firstDts === -1) { - firstDts = _dts; - } - - var sampleDuration = 0; - - if (i !== samples.length - 1) { - var nextDts = samples[i + 1].dts - this._dtsBase - dtsCorrection; - sampleDuration = nextDts - _dts; - } else { - // the last sample - if (lastSample != null) { - // use stashed sample's dts to calculate sample duration - var _nextDts = lastSample.dts - this._dtsBase - dtsCorrection; - sampleDuration = _nextDts - _dts; - } else if (mp4Samples.length >= 1) { - // use second last sample duration - sampleDuration = mp4Samples[mp4Samples.length - 1].duration; - } else { - // the only one sample, use reference sample duration - sampleDuration = Math.floor(refSampleDuration); - } - } - - var needFillSilentFrames = false; - var silentFrames = null; - - // Silent frame generation, if large timestamp gap detected && config.fixAudioTimestampGap - if (sampleDuration > refSampleDuration * 1.5 && this._audioMeta.codec !== 'mp3' && this._fillAudioTimestampGap && !_browser2.default.safari) { - // We need to insert silent frames to fill timestamp gap - needFillSilentFrames = true; - var delta = Math.abs(sampleDuration - refSampleDuration); - var frameCount = Math.ceil(delta / refSampleDuration); - var currentDts = _dts + refSampleDuration; // Notice: in float - - _logger2.default.w(this.TAG, 'Large audio timestamp gap detected, may cause AV sync to drift. ' + 'Silent frames will be generated to avoid unsync.\n' + ('dts: ' + (_dts + sampleDuration) + ' ms, expected: ' + (_dts + Math.round(refSampleDuration)) + ' ms, ') + ('delta: ' + Math.round(delta) + ' ms, generate: ' + frameCount + ' frames')); - - var _silentUnit = _aacSilent2.default.getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount); - if (_silentUnit == null) { - _logger2.default.w(this.TAG, 'Unable to generate silent frame for ' + (this._audioMeta.originalCodec + ' with ' + this._audioMeta.channelCount + ' channels, repeat last frame')); - // Repeat last frame - _silentUnit = unit; - } - silentFrames = []; - - for (var j = 0; j < frameCount; j++) { - var intDts = Math.round(currentDts); // round to integer - if (silentFrames.length > 0) { - // Set previous frame sample duration - var previousFrame = silentFrames[silentFrames.length - 1]; - previousFrame.duration = intDts - previousFrame.dts; - } - var frame = { - dts: intDts, - pts: intDts, - cts: 0, - unit: _silentUnit, - size: _silentUnit.byteLength, - duration: 0, // wait for next sample - originalDts: originalDts, - flags: { - isLeading: 0, - dependsOn: 1, - isDependedOn: 0, - hasRedundancy: 0 - } - }; - silentFrames.push(frame); - mdatBytes += unit.byteLength; - currentDts += refSampleDuration; - } - - // last frame: align end time to next frame dts - var lastFrame = silentFrames[silentFrames.length - 1]; - lastFrame.duration = _dts + sampleDuration - lastFrame.dts; - - // silentFrames.forEach((frame) => { - // Log.w(this.TAG, `SilentAudio: dts: ${frame.dts}, duration: ${frame.duration}`); - // }); - - // Set correct sample duration for current frame - sampleDuration = Math.round(refSampleDuration); - } - - mp4Samples.push({ - dts: _dts, - pts: _dts, - cts: 0, - unit: _sample.unit, - size: _sample.unit.byteLength, - duration: sampleDuration, - originalDts: originalDts, - flags: { - isLeading: 0, - dependsOn: 1, - isDependedOn: 0, - hasRedundancy: 0 - } - }); - - if (needFillSilentFrames) { - // Silent frames should be inserted after wrong-duration frame - mp4Samples.push.apply(mp4Samples, silentFrames); - } - } - - // allocate mdatbox - if (mpegRawTrack) { - // allocate for raw mpeg buffer - mdatbox = new Uint8Array(mdatBytes); - } else { - // allocate for fmp4 mdat box - mdatbox = new Uint8Array(mdatBytes); - // size field - mdatbox[0] = mdatBytes >>> 24 & 0xFF; - mdatbox[1] = mdatBytes >>> 16 & 0xFF; - mdatbox[2] = mdatBytes >>> 8 & 0xFF; - mdatbox[3] = mdatBytes & 0xFF; - // type field (fourCC) - mdatbox.set(_mp4Generator2.default.types.mdat, 4); - } - - // Write samples into mdatbox - for (var _i = 0; _i < mp4Samples.length; _i++) { - var _unit = mp4Samples[_i].unit; - mdatbox.set(_unit, offset); - offset += _unit.byteLength; - } - - var latest = mp4Samples[mp4Samples.length - 1]; - lastDts = latest.dts + latest.duration; - this._audioNextDts = lastDts; - - // fill media segment info & add to info list - var info = new _mediaSegmentInfo.MediaSegmentInfo(); - info.beginDts = firstDts; - info.endDts = lastDts; - info.beginPts = firstDts; - info.endPts = lastDts; - info.originalBeginDts = mp4Samples[0].originalDts; - info.originalEndDts = latest.originalDts + latest.duration; - info.firstSample = new _mediaSegmentInfo.SampleInfo(mp4Samples[0].dts, mp4Samples[0].pts, mp4Samples[0].duration, mp4Samples[0].originalDts, false); - info.lastSample = new _mediaSegmentInfo.SampleInfo(latest.dts, latest.pts, latest.duration, latest.originalDts, false); - if (!this._isLive) { - this._audioSegmentInfoList.append(info); - } - - track.samples = mp4Samples; - track.sequenceNumber++; - - var moofbox = null; - - if (mpegRawTrack) { - // Generate empty buffer, because useless for raw mpeg - moofbox = new Uint8Array(); - } else { - // Generate moof for fmp4 segment - moofbox = _mp4Generator2.default.moof(track, firstDts); - } - - track.samples = []; - track.length = 0; - - var segment = { - type: 'audio', - data: this._mergeBoxes(moofbox, mdatbox).buffer, - sampleCount: mp4Samples.length, - info: info - }; - - if (mpegRawTrack && firstSegmentAfterSeek) { - // For MPEG audio stream in MSE, if seeking occurred, before appending new buffer - // We need explicitly set timestampOffset to the desired point in timeline for mpeg SourceBuffer. - segment.timestampOffset = firstDts; - } - - this._onMediaSegment('audio', segment); - } - }, { - key: '_remuxVideo', - value: function _remuxVideo(videoTrack, force) { - if (this._videoMeta == null) { - return; - } - - var track = videoTrack; - var samples = track.samples; - var dtsCorrection = undefined; - var firstDts = -1, - lastDts = -1; - var firstPts = -1, - lastPts = -1; - - if (!samples || samples.length === 0) { - return; - } - if (samples.length === 1 && !force) { - // If [sample count in current batch] === 1 && (force != true) - // Ignore and keep in demuxer's queue - return; - } // else if (force === true) do remux - - var offset = 8; - var mdatbox = null; - var mdatBytes = 8 + videoTrack.length; - - var lastSample = null; - - // Pop the lastSample and waiting for stash - if (samples.length > 1) { - lastSample = samples.pop(); - mdatBytes -= lastSample.length; - } - - // Insert [stashed lastSample in the previous batch] to the front - if (this._videoStashedLastSample != null) { - var sample = this._videoStashedLastSample; - this._videoStashedLastSample = null; - samples.unshift(sample); - mdatBytes += sample.length; - } - - // Stash the lastSample of current batch, waiting for next batch - if (lastSample != null) { - this._videoStashedLastSample = lastSample; - } - - var firstSampleOriginalDts = samples[0].dts - this._dtsBase; - - // calculate dtsCorrection - if (this._videoNextDts) { - dtsCorrection = firstSampleOriginalDts - this._videoNextDts; - } else { - // this._videoNextDts == undefined - if (this._videoSegmentInfoList.isEmpty()) { - dtsCorrection = 0; - } else { - var _lastSample2 = this._videoSegmentInfoList.getLastSampleBefore(firstSampleOriginalDts); - if (_lastSample2 != null) { - var distance = firstSampleOriginalDts - (_lastSample2.originalDts + _lastSample2.duration); - if (distance <= 3) { - distance = 0; - } - var expectedDts = _lastSample2.dts + _lastSample2.duration + distance; - dtsCorrection = firstSampleOriginalDts - expectedDts; - } else { - // lastSample == null, cannot found - dtsCorrection = 0; - } - } - } - - var info = new _mediaSegmentInfo.MediaSegmentInfo(); - var mp4Samples = []; - - // Correct dts for each sample, and calculate sample duration. Then output to mp4Samples - for (var i = 0; i < samples.length; i++) { - var _sample2 = samples[i]; - var originalDts = _sample2.dts - this._dtsBase; - var isKeyframe = _sample2.isKeyframe; - var dts = originalDts - dtsCorrection; - var cts = _sample2.cts; - var pts = dts + cts; - - if (firstDts === -1) { - firstDts = dts; - firstPts = pts; - } - - var sampleDuration = 0; - - if (i !== samples.length - 1) { - var nextDts = samples[i + 1].dts - this._dtsBase - dtsCorrection; - sampleDuration = nextDts - dts; - } else { - // the last sample - if (lastSample != null) { - // use stashed sample's dts to calculate sample duration - var _nextDts2 = lastSample.dts - this._dtsBase - dtsCorrection; - sampleDuration = _nextDts2 - dts; - } else if (mp4Samples.length >= 1) { - // use second last sample duration - sampleDuration = mp4Samples[mp4Samples.length - 1].duration; - } else { - // the only one sample, use reference sample duration - sampleDuration = Math.floor(this._videoMeta.refSampleDuration); - } - } - - if (isKeyframe) { - var syncPoint = new _mediaSegmentInfo.SampleInfo(dts, pts, sampleDuration, _sample2.dts, true); - syncPoint.fileposition = _sample2.fileposition; - info.appendSyncPoint(syncPoint); - } - - mp4Samples.push({ - dts: dts, - pts: pts, - cts: cts, - units: _sample2.units, - size: _sample2.length, - isKeyframe: isKeyframe, - duration: sampleDuration, - originalDts: originalDts, - flags: { - isLeading: 0, - dependsOn: isKeyframe ? 2 : 1, - isDependedOn: isKeyframe ? 1 : 0, - hasRedundancy: 0, - isNonSync: isKeyframe ? 0 : 1 - } - }); - } - - // allocate mdatbox - mdatbox = new Uint8Array(mdatBytes); - mdatbox[0] = mdatBytes >>> 24 & 0xFF; - mdatbox[1] = mdatBytes >>> 16 & 0xFF; - mdatbox[2] = mdatBytes >>> 8 & 0xFF; - mdatbox[3] = mdatBytes & 0xFF; - mdatbox.set(_mp4Generator2.default.types.mdat, 4); - - // Write samples into mdatbox - for (var _i2 = 0; _i2 < mp4Samples.length; _i2++) { - var units = mp4Samples[_i2].units; - while (units.length) { - var unit = units.shift(); - var data = unit.data; - mdatbox.set(data, offset); - offset += data.byteLength; - } - } - - var latest = mp4Samples[mp4Samples.length - 1]; - lastDts = latest.dts + latest.duration; - lastPts = latest.pts + latest.duration; - this._videoNextDts = lastDts; - - // fill media segment info & add to info list - info.beginDts = firstDts; - info.endDts = lastDts; - info.beginPts = firstPts; - info.endPts = lastPts; - info.originalBeginDts = mp4Samples[0].originalDts; - info.originalEndDts = latest.originalDts + latest.duration; - info.firstSample = new _mediaSegmentInfo.SampleInfo(mp4Samples[0].dts, mp4Samples[0].pts, mp4Samples[0].duration, mp4Samples[0].originalDts, mp4Samples[0].isKeyframe); - info.lastSample = new _mediaSegmentInfo.SampleInfo(latest.dts, latest.pts, latest.duration, latest.originalDts, latest.isKeyframe); - if (!this._isLive) { - this._videoSegmentInfoList.append(info); - } - - track.samples = mp4Samples; - track.sequenceNumber++; - - // workaround for chrome < 50: force first sample as a random access point - // see https://bugs.chromium.org/p/chromium/issues/detail?id=229412 - if (this._forceFirstIDR) { - var flags = mp4Samples[0].flags; - flags.dependsOn = 2; - flags.isNonSync = 0; - } - - var moofbox = _mp4Generator2.default.moof(track, firstDts); - track.samples = []; - track.length = 0; - - this._onMediaSegment('video', { - type: 'video', - data: this._mergeBoxes(moofbox, mdatbox).buffer, - sampleCount: mp4Samples.length, - info: info - }); - } - }, { - key: '_mergeBoxes', - value: function _mergeBoxes(moof, mdat) { - var result = new Uint8Array(moof.byteLength + mdat.byteLength); - result.set(moof, 0); - result.set(mdat, moof.byteLength); - return result; - } - }, { - key: 'onInitSegment', - get: function get() { - return this._onInitSegment; - }, - set: function set(callback) { - this._onInitSegment = callback; - } - - /* prototype: function onMediaSegment(type: string, mediaSegment: MediaSegment): void - MediaSegment: { - type: string, - data: ArrayBuffer, - sampleCount: int32 - info: MediaSegmentInfo - } - */ - - }, { - key: 'onMediaSegment', - get: function get() { - return this._onMediaSegment; - }, - set: function set(callback) { - this._onMediaSegment = callback; - } - }]); - - return MP4Remuxer; -}(); - -exports.default = MP4Remuxer; - -},{"../core/media-segment-info.js":8,"../utils/browser.js":39,"../utils/exception.js":40,"../utils/logger.js":41,"./aac-silent.js":36,"./mp4-generator.js":37}],39:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var Browser = {}; - -function detect() { - // modified from jquery-browser-plugin - - var ua = self.navigator.userAgent.toLowerCase(); - - var match = /(edge)\/([\w.]+)/.exec(ua) || /(opr)[\/]([\w.]+)/.exec(ua) || /(chrome)[ \/]([\w.]+)/.exec(ua) || /(iemobile)[\/]([\w.]+)/.exec(ua) || /(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(ua) || /(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(ua) || /(webkit)[ \/]([\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || ua.indexOf('trident') >= 0 && /(rv)(?::| )([\w.]+)/.exec(ua) || ua.indexOf('compatible') < 0 && /(firefox)[ \/]([\w.]+)/.exec(ua) || []; - - var platform_match = /(ipad)/.exec(ua) || /(ipod)/.exec(ua) || /(windows phone)/.exec(ua) || /(iphone)/.exec(ua) || /(kindle)/.exec(ua) || /(android)/.exec(ua) || /(windows)/.exec(ua) || /(mac)/.exec(ua) || /(linux)/.exec(ua) || /(cros)/.exec(ua) || []; - - var matched = { - browser: match[5] || match[3] || match[1] || '', - version: match[2] || match[4] || '0', - majorVersion: match[4] || match[2] || '0', - platform: platform_match[0] || '' - }; - - var browser = {}; - if (matched.browser) { - browser[matched.browser] = true; - - var versionArray = matched.majorVersion.split('.'); - browser.version = { - major: parseInt(matched.majorVersion, 10), - string: matched.version - }; - if (versionArray.length > 1) { - browser.version.minor = parseInt(versionArray[1], 10); - } - if (versionArray.length > 2) { - browser.version.build = parseInt(versionArray[2], 10); - } - } - - if (matched.platform) { - browser[matched.platform] = true; - } - - if (browser.chrome || browser.opr || browser.safari) { - browser.webkit = true; - } - - // MSIE. IE11 has 'rv' identifer - if (browser.rv || browser.iemobile) { - if (browser.rv) { - delete browser.rv; - } - var msie = 'msie'; - matched.browser = msie; - browser[msie] = true; - } - - // Microsoft Edge - if (browser.edge) { - delete browser.edge; - var msedge = 'msedge'; - matched.browser = msedge; - browser[msedge] = true; - } - - // Opera 15+ - if (browser.opr) { - var opera = 'opera'; - matched.browser = opera; - browser[opera] = true; - } - - // Stock android browsers are marked as Safari - if (browser.safari && browser.android) { - var android = 'android'; - matched.browser = android; - browser[android] = true; - } - - browser.name = matched.browser; - browser.platform = matched.platform; - - for (var key in Browser) { - if (Browser.hasOwnProperty(key)) { - delete Browser[key]; - } - } - Object.assign(Browser, browser); -} - -detect(); - -exports.default = Browser; - -},{}],40:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var RuntimeException = exports.RuntimeException = function () { - function RuntimeException(message) { - _classCallCheck(this, RuntimeException); - - this._message = message; - } - - _createClass(RuntimeException, [{ - key: 'toString', - value: function toString() { - return this.name + ': ' + this.message; - } - }, { - key: 'name', - get: function get() { - return 'RuntimeException'; - } - }, { - key: 'message', - get: function get() { - return this._message; - } - }]); - - return RuntimeException; -}(); - -var IllegalStateException = exports.IllegalStateException = function (_RuntimeException) { - _inherits(IllegalStateException, _RuntimeException); - - function IllegalStateException(message) { - _classCallCheck(this, IllegalStateException); - - return _possibleConstructorReturn(this, (IllegalStateException.__proto__ || Object.getPrototypeOf(IllegalStateException)).call(this, message)); - } - - _createClass(IllegalStateException, [{ - key: 'name', - get: function get() { - return 'IllegalStateException'; - } - }]); - - return IllegalStateException; -}(RuntimeException); - -var InvalidArgumentException = exports.InvalidArgumentException = function (_RuntimeException2) { - _inherits(InvalidArgumentException, _RuntimeException2); - - function InvalidArgumentException(message) { - _classCallCheck(this, InvalidArgumentException); - - return _possibleConstructorReturn(this, (InvalidArgumentException.__proto__ || Object.getPrototypeOf(InvalidArgumentException)).call(this, message)); - } - - _createClass(InvalidArgumentException, [{ - key: 'name', - get: function get() { - return 'InvalidArgumentException'; - } - }]); - - return InvalidArgumentException; -}(RuntimeException); - -var NotImplementedException = exports.NotImplementedException = function (_RuntimeException3) { - _inherits(NotImplementedException, _RuntimeException3); - - function NotImplementedException(message) { - _classCallCheck(this, NotImplementedException); - - return _possibleConstructorReturn(this, (NotImplementedException.__proto__ || Object.getPrototypeOf(NotImplementedException)).call(this, message)); - } - - _createClass(NotImplementedException, [{ - key: 'name', - get: function get() { - return 'NotImplementedException'; - } - }]); - - return NotImplementedException; -}(RuntimeException); - -},{}],41:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var _events = _dereq_('events'); - -var _events2 = _interopRequireDefault(_events); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var Log = function () { - function Log() { - _classCallCheck(this, Log); - } - - _createClass(Log, null, [{ - key: 'e', - value: function e(tag, msg) { - if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG; - - var str = '[' + tag + '] > ' + msg; - - if (Log.ENABLE_CALLBACK) { - Log.emitter.emit('log', 'error', str); - } - - if (!Log.ENABLE_ERROR) { - return; - } - - if (console.error) { - console.error(str); - } else if (console.warn) { - console.warn(str); - } else { - console.log(str); - } - } - }, { - key: 'i', - value: function i(tag, msg) { - if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG; - - var str = '[' + tag + '] > ' + msg; - - if (Log.ENABLE_CALLBACK) { - Log.emitter.emit('log', 'info', str); - } - - if (!Log.ENABLE_INFO) { - return; - } - - if (console.info) { - console.info(str); - } else { - console.log(str); - } - } - }, { - key: 'w', - value: function w(tag, msg) { - if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG; - - var str = '[' + tag + '] > ' + msg; - - if (Log.ENABLE_CALLBACK) { - Log.emitter.emit('log', 'warn', str); - } - - if (!Log.ENABLE_WARN) { - return; - } - - if (console.warn) { - console.warn(str); - } else { - console.log(str); - } - } - }, { - key: 'd', - value: function d(tag, msg) { - if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG; - - var str = '[' + tag + '] > ' + msg; - - if (Log.ENABLE_CALLBACK) { - Log.emitter.emit('log', 'debug', str); - } - - if (!Log.ENABLE_DEBUG) { - return; - } - - if (console.debug) { - console.debug(str); - } else { - console.log(str); - } - } - }, { - key: 'v', - value: function v(tag, msg) { - if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG; - - var str = '[' + tag + '] > ' + msg; - - if (Log.ENABLE_CALLBACK) { - Log.emitter.emit('log', 'verbose', str); - } - - if (!Log.ENABLE_VERBOSE) { - return; - } - - console.log(str); - } - }]); - - return Log; -}(); - -Log.GLOBAL_TAG = 'flv.js'; -Log.FORCE_GLOBAL_TAG = false; -Log.ENABLE_ERROR = true; -Log.ENABLE_INFO = true; -Log.ENABLE_WARN = true; -Log.ENABLE_DEBUG = true; -Log.ENABLE_VERBOSE = true; - -Log.ENABLE_CALLBACK = false; - -Log.emitter = new _events2.default(); - -exports.default = Log; - -},{"events":2}],42:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var _events = _dereq_('events'); - -var _events2 = _interopRequireDefault(_events); - -var _logger = _dereq_('./logger.js'); - -var _logger2 = _interopRequireDefault(_logger); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var LoggingControl = function () { - function LoggingControl() { - _classCallCheck(this, LoggingControl); - } - - _createClass(LoggingControl, null, [{ - key: 'getConfig', - value: function getConfig() { - return { - globalTag: _logger2.default.GLOBAL_TAG, - forceGlobalTag: _logger2.default.FORCE_GLOBAL_TAG, - enableVerbose: _logger2.default.ENABLE_VERBOSE, - enableDebug: _logger2.default.ENABLE_DEBUG, - enableInfo: _logger2.default.ENABLE_INFO, - enableWarn: _logger2.default.ENABLE_WARN, - enableError: _logger2.default.ENABLE_ERROR, - enableCallback: _logger2.default.ENABLE_CALLBACK - }; - } - }, { - key: 'applyConfig', - value: function applyConfig(config) { - _logger2.default.GLOBAL_TAG = config.globalTag; - _logger2.default.FORCE_GLOBAL_TAG = config.forceGlobalTag; - _logger2.default.ENABLE_VERBOSE = config.enableVerbose; - _logger2.default.ENABLE_DEBUG = config.enableDebug; - _logger2.default.ENABLE_INFO = config.enableInfo; - _logger2.default.ENABLE_WARN = config.enableWarn; - _logger2.default.ENABLE_ERROR = config.enableError; - _logger2.default.ENABLE_CALLBACK = config.enableCallback; - } - }, { - key: '_notifyChange', - value: function _notifyChange() { - var emitter = LoggingControl.emitter; - - if (emitter.listenerCount('change') > 0) { - var config = LoggingControl.getConfig(); - emitter.emit('change', config); - } - } - }, { - key: 'registerListener', - value: function registerListener(listener) { - LoggingControl.emitter.addListener('change', listener); - } - }, { - key: 'removeListener', - value: function removeListener(listener) { - LoggingControl.emitter.removeListener('change', listener); - } - }, { - key: 'addLogListener', - value: function addLogListener(listener) { - _logger2.default.emitter.addListener('log', listener); - if (_logger2.default.emitter.listenerCount('log') > 0) { - _logger2.default.ENABLE_CALLBACK = true; - LoggingControl._notifyChange(); - } - } - }, { - key: 'removeLogListener', - value: function removeLogListener(listener) { - _logger2.default.emitter.removeListener('log', listener); - if (_logger2.default.emitter.listenerCount('log') === 0) { - _logger2.default.ENABLE_CALLBACK = false; - LoggingControl._notifyChange(); - } - } - }, { - key: 'forceGlobalTag', - get: function get() { - return _logger2.default.FORCE_GLOBAL_TAG; - }, - set: function set(enable) { - _logger2.default.FORCE_GLOBAL_TAG = enable; - LoggingControl._notifyChange(); - } - }, { - key: 'globalTag', - get: function get() { - return _logger2.default.GLOBAL_TAG; - }, - set: function set(tag) { - _logger2.default.GLOBAL_TAG = tag; - LoggingControl._notifyChange(); - } - }, { - key: 'enableAll', - get: function get() { - return _logger2.default.ENABLE_VERBOSE && _logger2.default.ENABLE_DEBUG && _logger2.default.ENABLE_INFO && _logger2.default.ENABLE_WARN && _logger2.default.ENABLE_ERROR; - }, - set: function set(enable) { - _logger2.default.ENABLE_VERBOSE = enable; - _logger2.default.ENABLE_DEBUG = enable; - _logger2.default.ENABLE_INFO = enable; - _logger2.default.ENABLE_WARN = enable; - _logger2.default.ENABLE_ERROR = enable; - LoggingControl._notifyChange(); - } - }, { - key: 'enableDebug', - get: function get() { - return _logger2.default.ENABLE_DEBUG; - }, - set: function set(enable) { - _logger2.default.ENABLE_DEBUG = enable; - LoggingControl._notifyChange(); - } - }, { - key: 'enableVerbose', - get: function get() { - return _logger2.default.ENABLE_VERBOSE; - }, - set: function set(enable) { - _logger2.default.ENABLE_VERBOSE = enable; - LoggingControl._notifyChange(); - } - }, { - key: 'enableInfo', - get: function get() { - return _logger2.default.ENABLE_INFO; - }, - set: function set(enable) { - _logger2.default.ENABLE_INFO = enable; - LoggingControl._notifyChange(); - } - }, { - key: 'enableWarn', - get: function get() { - return _logger2.default.ENABLE_WARN; - }, - set: function set(enable) { - _logger2.default.ENABLE_WARN = enable; - LoggingControl._notifyChange(); - } - }, { - key: 'enableError', - get: function get() { - return _logger2.default.ENABLE_ERROR; - }, - set: function set(enable) { - _logger2.default.ENABLE_ERROR = enable; - LoggingControl._notifyChange(); - } - }]); - - return LoggingControl; -}(); - -LoggingControl.emitter = new _events2.default(); - -exports.default = LoggingControl; - -},{"./logger.js":41,"events":2}],43:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var Polyfill = function () { - function Polyfill() { - _classCallCheck(this, Polyfill); - } - - _createClass(Polyfill, null, [{ - key: 'install', - value: function install() { - // ES6 Object.setPrototypeOf - Object.setPrototypeOf = Object.setPrototypeOf || function (obj, proto) { - obj.__proto__ = proto; - return obj; - }; - - // ES6 Object.assign - Object.assign = Object.assign || function (target) { - if (target === undefined || target === null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - - var output = Object(target); - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - if (source !== undefined && source !== null) { - for (var key in source) { - if (source.hasOwnProperty(key)) { - output[key] = source[key]; - } - } - } - } - return output; - }; - - // ES6 Promise (missing support in IE11) - if (typeof self.Promise !== 'function') { - _dereq_('es6-promise').polyfill(); - } - } - }]); - - return Polyfill; -}(); - -Polyfill.install(); - -exports.default = Polyfill; - -},{"es6-promise":1}],44:[function(_dereq_,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -/* - * Copyright (C) 2016 Bilibili. All Rights Reserved. - * - * This file is derived from C++ project libWinTF8 (https://github.com/m13253/libWinTF8) - * @author zheng qian - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -function checkContinuation(uint8array, start, checkLength) { - var array = uint8array; - if (start + checkLength < array.length) { - while (checkLength--) { - if ((array[++start] & 0xC0) !== 0x80) return false; - } - return true; - } else { - return false; - } -} - -function decodeUTF8(uint8array) { - var out = []; - var input = uint8array; - var i = 0; - var length = uint8array.length; - - while (i < length) { - if (input[i] < 0x80) { - out.push(String.fromCharCode(input[i])); - ++i; - continue; - } else if (input[i] < 0xC0) { - // fallthrough - } else if (input[i] < 0xE0) { - if (checkContinuation(input, i, 1)) { - var ucs4 = (input[i] & 0x1F) << 6 | input[i + 1] & 0x3F; - if (ucs4 >= 0x80) { - out.push(String.fromCharCode(ucs4 & 0xFFFF)); - i += 2; - continue; - } - } - } else if (input[i] < 0xF0) { - if (checkContinuation(input, i, 2)) { - var _ucs = (input[i] & 0xF) << 12 | (input[i + 1] & 0x3F) << 6 | input[i + 2] & 0x3F; - if (_ucs >= 0x800 && (_ucs & 0xF800) !== 0xD800) { - out.push(String.fromCharCode(_ucs & 0xFFFF)); - i += 3; - continue; - } - } - } else if (input[i] < 0xF8) { - if (checkContinuation(input, i, 3)) { - var _ucs2 = (input[i] & 0x7) << 18 | (input[i + 1] & 0x3F) << 12 | (input[i + 2] & 0x3F) << 6 | input[i + 3] & 0x3F; - if (_ucs2 > 0x10000 && _ucs2 < 0x110000) { - _ucs2 -= 0x10000; - out.push(String.fromCharCode(_ucs2 >>> 10 | 0xD800)); - out.push(String.fromCharCode(_ucs2 & 0x3FF | 0xDC00)); - i += 4; - continue; - } - } - } - out.push(String.fromCharCode(0xFFFD)); - ++i; - } - - return out.join(''); -} - -exports.default = decodeUTF8; - -},{}]},{},[21])(21) -}); - -//# sourceMappingURL=flv.js.map diff --git a/js/hls.min.js b/js/hls.min.js deleted file mode 100644 index d5cf628..0000000 --- a/js/hls.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Hls=e():t.Hls=e()}(this,function(){return function(t){function e(i){if(r[i])return r[i].exports;var a=r[i]={i:i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,e),a.l=!0,a.exports}var r={};return e.m=t,e.c=r,e.d=function(t,r,i){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/hls.js/dist/",e(e.s=7)}([function(t,e,r){"use strict";function i(){}function a(t,e){return e="["+t+"] > "+e}function n(t){var e=self.console[t];return e?function(){for(var r=arguments.length,i=Array(r),n=0;n1?e-1:0),i=1;i0)return e.subarray(i,i+a)},t._readSize=function(t,e){var r=0;return r=(127&t[e])<<21,r|=(127&t[e+1])<<14,r|=(127&t[e+2])<<7,r|=127&t[e+3]},t.getTimeStamp=function(e){for(var r=t.getID3Frames(e),i=0;i>4){case 0:return i;case 1:case 2:case 3:case 4:case 5:case 6:case 7:i+=String.fromCharCode(o);break;case 12:case 13:e=t[a++],i+=String.fromCharCode((31&o)<<6|63&e);break;case 14:e=t[a++],r=t[a++],i+=String.fromCharCode((15&o)<<12|(63&e)<<6|(63&r)<<0)}}return i},t}();e.a=a},function(t,e){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(t){return"function"==typeof t}function a(t){return"number"==typeof t}function n(t){return"object"==typeof t&&null!==t}function o(t){return void 0===t}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(t){if(!a(t)||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},r.prototype.emit=function(t){var e,r,a,s,l,u;if(this._events||(this._events={}),"error"===t&&(!this._events.error||n(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var d=new Error('Uncaught, unspecified "error" event. ('+e+")");throw d.context=e,d}if(r=this._events[t],o(r))return!1;if(i(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),r.apply(this,s)}else if(n(r))for(s=Array.prototype.slice.call(arguments,1),u=r.slice(),a=u.length,l=0;l0&&this._events[t].length>a&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(t,e){function r(){this.removeListener(t,r),a||(a=!0,e.apply(this,arguments))}if(!i(e))throw TypeError("listener must be a function");var a=!1;return r.listener=e,this.on(t,r),this},r.prototype.removeListener=function(t,e){var r,a,o,s;if(!i(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(r=this._events[t],o=r.length,a=-1,r===e||i(r.listener)&&r.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(n(r)){for(s=o;s-- >0;)if(r[s]===e||r[s].listener&&r[s].listener===e){a=s;break}if(a<0)return this;1===r.length?(r.length=0,delete this._events[t]):r.splice(a,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},r.prototype.removeAllListeners=function(t){var e,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[t],i(r))this.removeListener(t,r);else if(r)for(;r.length;)this.removeListener(t,r[r.length-1]);return delete this._events[t],this},r.prototype.listeners=function(t){return this._events&&this._events[t]?i(this._events[t])?[this._events[t]]:this._events[t].slice():[]},r.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(i(e))return 1;if(e)return e.length}return 0},r.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e,r){!function(e){var r=/^((?:[^\/;?#]+:)?)(\/\/[^\/\;?#]*)?(.*?)??(;.*?)?(\?.*?)?(#.*?)?$/,i=/^([^\/;?#]*)(.*)$/,a=/(?:\/|^)\.(?=\/)/g,n=/(?:\/|^)\.\.\/(?!\.\.\/).*?(?=\/)/g,o={buildAbsoluteURL:function(t,e,r){if(r=r||{},t=t.trim(),!(e=e.trim())){if(!r.alwaysNormalize)return t;var a=this.parseURL(t);if(!s)throw new Error("Error trying to parse base URL.");return a.path=o.normalizePath(a.path),o.buildURLFromParts(a)}var n=this.parseURL(e);if(!n)throw new Error("Error trying to parse relative URL.");if(n.scheme)return r.alwaysNormalize?(n.path=o.normalizePath(n.path),o.buildURLFromParts(n)):e;var s=this.parseURL(t);if(!s)throw new Error("Error trying to parse base URL.");if(!s.netLoc&&s.path&&"/"!==s.path[0]){var l=i.exec(s.path);s.netLoc=l[1],s.path=l[2]}s.netLoc&&!s.path&&(s.path="/");var u={scheme:s.scheme,netLoc:n.netLoc,path:null,params:n.params,query:n.query,fragment:n.fragment};if(!n.netLoc&&(u.netLoc=s.netLoc,"/"!==n.path[0]))if(n.path){var d=s.path,h=d.substring(0,d.lastIndexOf("/")+1)+n.path;u.path=o.normalizePath(h)}else u.path=s.path,n.params||(u.params=s.params,n.query||(u.query=s.query));return null===u.path&&(u.path=r.alwaysNormalize?o.normalizePath(n.path):n.path),o.buildURLFromParts(u)},parseURL:function(t){var e=r.exec(t);return e?{scheme:e[1]||"",netLoc:e[2]||"",path:e[3]||"",params:e[4]||"",query:e[5]||"",fragment:e[6]||""}:null},normalizePath:function(t){for(t=t.split("").reverse().join("").replace(a,"");t.length!==(t=t.replace(n,"")).length;);return t.split("").reverse().join("")},buildURLFromParts:function(t){return t.scheme+t.netLoc+t.path+t.params+t.query+t.fragment}};t.exports=o}()},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e,r,i){var a,n,o,s,l,u=navigator.userAgent.toLowerCase(),d=i,h=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];return a=1+((192&e[r+2])>>>6),(n=(60&e[r+2])>>>2)>h.length-1?void t.trigger(Event.ERROR,{type:k.b.MEDIA_ERROR,details:k.a.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+n}):(s=(1&e[r+2])<<2,s|=(192&e[r+3])>>>6,N.b.log("manifest codec:"+i+",ADTS data:type:"+a+",sampleingIndex:"+n+"["+h[n]+"Hz],channelConfig:"+s),/firefox/i.test(u)?n>=6?(a=5,l=new Array(4),o=n-3):(a=2,l=new Array(2),o=n):-1!==u.indexOf("android")?(a=2,l=new Array(2),o=n):(a=5,l=new Array(4),i&&(-1!==i.indexOf("mp4a.40.29")||-1!==i.indexOf("mp4a.40.5"))||!i&&n>=6?o=n-3:((i&&-1!==i.indexOf("mp4a.40.2")&&(n>=6&&1===s||/vivaldi/i.test(u))||!i&&1===s)&&(a=2,l=new Array(2)),o=n)),l[0]=a<<3,l[0]|=(14&n)>>1,l[1]|=(1&n)<<7,l[1]|=s<<3,5===a&&(l[1]|=(14&o)>>1,l[2]=(1&o)<<7,l[2]|=8,l[3]=0),{config:l,samplerate:h[n],channelCount:s,codec:"mp4a.40."+a,manifestCodec:d})}function l(t,e){return 255===t[e]&&240==(246&t[e+1])}function u(t,e){return 1&t[e+1]?7:9}function d(t,e){return(3&t[e+3])<<11|t[e+4]<<3|(224&t[e+5])>>>5}function h(t,e){return!!(e+10&&e+n+o<=l)return s=r+i*a,{headerLength:n,frameLength:o,stamp:s}}function v(t,e,r,i,a){var n=p(t.samplerate),o=g(e,r,i,a,n);if(o){var s=o.stamp,l=o.headerLength,u=o.frameLength,d={unit:e.subarray(r+l,r+l+u),pts:s,dts:s};return t.samples.push(d),t.len+=u,{sample:d,length:u+l}}}function y(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function m(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function b(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function E(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function T(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function R(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function S(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function A(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function L(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function w(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var D=r(1),k=r(2),I=function(){function t(e,r){i(this,t),this.subtle=e,this.aesIV=r}return t.prototype.decrypt=function(t,e){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},e,t)},t}(),O=I,C=function(){function t(e,r){a(this,t),this.subtle=e,this.key=r}return t.prototype.expandKey=function(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])},t}(),P=C,x=function(){function t(){n(this,t),this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.initTable()}return t.prototype.uint8ArrayToUint32Array_=function(t){for(var e=new DataView(t),r=new Uint32Array(4),i=0;i<4;i++)r[i]=e.getUint32(4*i);return r},t.prototype.initTable=function(){var t=this.sBox,e=this.invSBox,r=this.subMix,i=r[0],a=r[1],n=r[2],o=r[3],s=this.invSubMix,l=s[0],u=s[1],d=s[2],h=s[3],c=new Uint32Array(256),f=0,p=0,g=0;for(g=0;g<256;g++)c[g]=g<128?g<<1:g<<1^283;for(g=0;g<256;g++){var v=p^p<<1^p<<2^p<<3^p<<4;v=v>>>8^255&v^99,t[f]=v,e[v]=f;var y=c[f],m=c[y],b=c[m],E=257*c[v]^16843008*v;i[f]=E<<24|E>>>8,a[f]=E<<16|E>>>16,n[f]=E<<8|E>>>24,o[f]=E,E=16843009*b^65537*m^257*y^16843008*f,l[v]=E<<24|E>>>8,u[v]=E<<16|E>>>16,d[v]=E<<8|E>>>24,h[v]=E,f?(f=y^c[c[c[b^y]]],p^=c[c[p]]):f=p=1}},t.prototype.expandKey=function(t){for(var e=this.uint8ArrayToUint32Array_(t),r=!0,i=0;i=8){return["moof","ftyp","styp"].indexOf(t.bin2str(e.subarray(4,8)))>=0}return!1},t.bin2str=function(t){return String.fromCharCode.apply(null,t)},t.readUint32=function(t,e){t.data&&(e+=t.start,t=t.data);var r=t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3];return r<0?4294967296+r:r},t.writeUint32=function(t,e,r){t.data&&(e+=t.start,t=t.data),t[e]=r>>24,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=255&r},t.findBox=function(e,r){var i,a,n,o,s,l,u,d=[];if(e.data?(l=e.start,o=e.end,e=e.data):(l=0,o=e.byteLength),!r.length)return null;for(i=l;i1?i+a:o,n===r[0]&&(1===r.length?d.push({data:e,start:i+8,end:u}):(s=t.findBox({data:e,start:i+8,end:u},r.slice(1)),s.length&&(d=d.concat(s)))),i=u;return d},t.parseInitSegment=function(e){var r=[];return t.findBox(e,["moov","trak"]).forEach(function(e){var i=t.findBox(e,["tkhd"])[0];if(i){var a=i.data[i.start],n=0===a?12:20,o=t.readUint32(i,n),s=t.findBox(e,["mdia","mdhd"])[0];if(s){a=s.data[s.start],n=0===a?12:20;var l=t.readUint32(s,n),u=t.findBox(e,["mdia","hdlr"])[0];if(u){var d=t.bin2str(u.data.subarray(u.start+8,u.start+12)),h={soun:"audio",vide:"video"}[d];h&&(r[o]={timescale:l,type:h},r[h]={timescale:l,id:o})}}}}),r},t.getStartDTS=function(e,r){var i,a,n;return i=t.findBox(r,["moof","traf"]),a=[].concat.apply([],i.map(function(r){return t.findBox(r,["tfhd"]).map(function(i){var a,n,o;return a=t.readUint32(i,4),n=e[a].timescale||9e4,o=t.findBox(r,["tfdt"]).map(function(e){var r,i;return r=e.data[e.start],i=t.readUint32(e,4),1===r&&(i*=Math.pow(2,32),i+=t.readUint32(e,8)),i})[0],(o=o||1/0)/n})})),n=Math.min.apply(null,a),isFinite(n)?n:0},t.offsetStartDTS=function(e,r,i){t.findBox(r,["moof","traf"]).map(function(r){return t.findBox(r,["tfhd"]).map(function(a){var n=t.readUint32(a,4),o=e[n].timescale||9e4;t.findBox(r,["tfdt"]).map(function(e){var r=e.data[e.start],a=t.readUint32(e,4);if(0===r)t.writeUint32(e,4,a-i*o);else{a*=Math.pow(2,32),a+=t.readUint32(e,8),a-=i*o;var n=Math.floor(a/(j+1)),s=Math.floor(a%(j+1));t.writeUint32(e,4,n),t.writeUint32(e,8,s)}})})})},t.prototype.append=function(e,r,i,a){var n=this.initData;n||(this.resetInitSegment(e,this.audioCodec,this.videoCodec),n=this.initData);var o=void 0,s=this.initPTS;if(void 0===s){var l=t.getStartDTS(n,e);this.initPTS=s=l-r,this.observer.trigger(D.a.INIT_PTS_FOUND,{initPTS:s})}t.offsetStartDTS(n,e,s),o=t.getStartDTS(n,e),this.remuxer.remux(n.audio,n.video,null,null,o,i,a,e)},t.prototype.destroy=function(){},t}(),W=K,V={BitratesMap:[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],SamplingRateMap:[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],appendFrame:function(t,e,r,i,a){if(!(r+24>e.length)){var n=this.parseHeader(e,r);if(n&&r+n.frameLength<=e.length){var o=10368e4/n.sampleRate,s=i+a*o,l={unit:e.subarray(r,r+n.frameLength),pts:s,dts:s};return t.config=[],t.channelCount=n.channelCount,t.samplerate=n.sampleRate,t.samples.push(l),t.len+=n.frameLength,{sample:l,length:n.frameLength}}}},parseHeader:function(t,e){var r=t[e+1]>>3&3,i=t[e+1]>>1&3,a=t[e+2]>>4&15,n=t[e+2]>>2&3,o=!!(2&t[e+2]);if(1!==r&&0!==a&&15!==a&&3!==n){var s=3===r?3-i:3===i?3:4,l=1e3*V.BitratesMap[14*s+a-1],u=3===r?0:2===r?1:2,d=V.SamplingRateMap[3*u+n],h=o?1:0;return{sampleRate:d,channelCount:t[e+3]>>6==3?1:2,frameLength:3===i?(3===r?12:6)*l/d+h<<2:(3===r?144:72)*l/d+h|0}}},isHeaderPattern:function(t,e){return 255===t[e]&&224==(224&t[e+1])&&0!=(6&t[e+1])},isHeader:function(t,e){return!!(e+1t?(this.word<<=t,this.bitsAvailable-=t):(t-=this.bitsAvailable,e=t>>3,t-=e>>3,this.bytesAvailable-=e,this.loadWord(),this.word<<=t,this.bitsAvailable-=t)},t.prototype.readBits=function(t){var e=Math.min(this.bitsAvailable,t),r=this.word>>>32-e;return t>32&&N.b.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=e,this.bitsAvailable>0?this.word<<=e:this.bytesAvailable>0&&this.loadWord(),e=t-e,e>0&&this.bitsAvailable?r<>>t))return this.word<<=t,this.bitsAvailable-=t,t;return this.loadWord(),t+this.skipLZ()},t.prototype.skipUEG=function(){this.skipBits(1+this.skipLZ())},t.prototype.skipEG=function(){this.skipBits(1+this.skipLZ())},t.prototype.readUEG=function(){var t=this.skipLZ();return this.readBits(t+1)-1},t.prototype.readEG=function(){var t=this.readUEG();return 1&t?1+t>>>1:-1*(t>>>1)},t.prototype.readBoolean=function(){return 1===this.readBits(1)},t.prototype.readUByte=function(){return this.readBits(8)},t.prototype.readUShort=function(){return this.readBits(16)},t.prototype.readUInt=function(){return this.readBits(32)},t.prototype.skipScalingList=function(t){var e,r,i=8,a=8;for(e=0;e=t.length)return void r();if(!(t[e].unit.length<32)){var i=this.decrypter.isSync();if(this.decryptAacSample(t,e,r,i),!i)return}}},t.prototype.getAvcEncryptedData=function(t){for(var e=16*Math.floor((t.length-48)/160)+16,r=new Int8Array(e),i=0,a=32;a<=t.length-16;a+=160,i+=16)r.set(t.subarray(a,a+16),i);return r},t.prototype.getAvcDecryptedUnit=function(t,e){e=new Uint8Array(e);for(var r=0,i=32;i<=t.length-16;i+=160,r+=16)t.set(e.subarray(r,r+16),i);return t},t.prototype.decryptAvcSample=function(t,e,r,i,a,n){var o=this.discardEPB(a.data),s=this.getAvcEncryptedData(o),l=this;this.decryptBuffer(s.buffer,function(s){a.data=l.getAvcDecryptedUnit(o,s),n||l.decryptAvcSamples(t,e,r+1,i)})},t.prototype.decryptAvcSamples=function(t,e,r,i){for(;;e++,r=0){if(e>=t.length)return void i();for(var a=t[e].units;!(r>=a.length);r++){var n=a[r];if(!(n.length<=48||1!==n.type&&5!==n.type)){var o=this.decrypter.isSync();if(this.decryptAvcSample(t,e,r,i,n,o),!o)return}}}},t}(),Q=q,J=function(){function t(e,r,i,a){T(this,t),this.observer=e,this.config=i,this.typeSupported=a,this.remuxer=r,this.sampleAes=null}return t.prototype.setDecryptData=function(t){null!=t&&null!=t.key&&"SAMPLE-AES"===t.method?this.sampleAes=new Q(this.observer,this.config,t,this.discardEPB):this.sampleAes=null},t.probe=function(t){return t.length>=564&&71===t[0]&&71===t[188]&&71===t[376]},t.prototype.resetInitSegment=function(t,e,r,i){this.pmtParsed=!1,this._pmtId=-1,this._avcTrack={container:"video/mp2t",type:"video",id:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],len:0,dropped:0},this._audioTrack={container:"video/mp2t",type:"audio",id:-1,inputTimeScale:9e4,duration:i,sequenceNumber:0,samples:[],len:0,isAAC:!0},this._id3Track={type:"id3",id:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],len:0},this._txtTrack={type:"text",id:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],len:0},this.aacOverFlow=null,this.aacLastPTS=null,this.avcSample=null,this.audioCodec=e,this.videoCodec=r,this._duration=i},t.prototype.resetTimeStamp=function(){},t.prototype.append=function(t,e,r,i){var a,n,o,s,l,u=t.length,d=!1;this.contiguous=r;var h=this.pmtParsed,c=this._avcTrack,f=this._audioTrack,p=this._id3Track,g=c.id,v=f.id,y=p.id,m=this._pmtId,b=c.pesData,E=f.pesData,T=p.pesData,R=this._parsePAT,S=this._parsePMT,A=this._parsePES,_=this._parseAVCPES.bind(this),L=this._parseAACPES.bind(this),w=this._parseMPEGPES.bind(this),I=this._parseID3PES.bind(this);for(u-=u%188,a=0;a>4>1){if((s=a+5+t[a+4])===a+188)continue}else s=a+4;switch(o){case g:n&&(b&&(l=A(b))&&_(l,!1),b={data:[],size:0}),b&&(b.data.push(t.subarray(s,a+188)),b.size+=a+188-s);break;case v:n&&(E&&(l=A(E))&&(f.isAAC?L(l):w(l)),E={data:[],size:0}),E&&(E.data.push(t.subarray(s,a+188)),E.size+=a+188-s);break;case y:n&&(T&&(l=A(T))&&I(l),T={data:[],size:0}),T&&(T.data.push(t.subarray(s,a+188)),T.size+=a+188-s);break;case 0:n&&(s+=t[s]+1),m=this._pmtId=R(t,s);break;case m:n&&(s+=t[s]+1);var O=S(t,s,!0===this.typeSupported.mpeg||!0===this.typeSupported.mp3,null!=this.sampleAes);g=O.avc,g>0&&(c.id=g),v=O.audio,v>0&&(f.id=v,f.isAAC=O.isAAC),y=O.id3,y>0&&(p.id=y),d&&!h&&(N.b.log("reparse from beginning"),d=!1,a=-188),h=this.pmtParsed=!0;break;case 17:case 8191:break;default:d=!0}}else this.observer.trigger(D.a.ERROR,{type:k.b.MEDIA_ERROR,details:k.a.FRAG_PARSING_ERROR,fatal:!1,reason:"TS packet did not start with 0x47"});b&&(l=A(b))?(_(l,!0),c.pesData=null):c.pesData=b,E&&(l=A(E))?(f.isAAC?L(l):w(l),f.pesData=null):(E&&E.size&&N.b.log("last AAC PES packet truncated,might overlap between fragments"),f.pesData=E),T&&(l=A(T))?(I(l),p.pesData=null):p.pesData=T,null==this.sampleAes?this.remuxer.remux(f,c,p,this._txtTrack,e,r,i):this.decryptAndRemux(f,c,p,this._txtTrack,e,r,i)},t.prototype.decryptAndRemux=function(t,e,r,i,a,n,o){if(t.samples&&t.isAAC){var s=this;this.sampleAes.decryptAacSamples(t.samples,0,function(){s.decryptAndRemuxAvc(t,e,r,i,a,n,o)})}else this.decryptAndRemuxAvc(t,e,r,i,a,n,o)},t.prototype.decryptAndRemuxAvc=function(t,e,r,i,a,n,o){if(e.samples){var s=this;this.sampleAes.decryptAvcSamples(e.samples,0,0,function(){s.remuxer.remux(t,e,r,i,a,n,o)})}else this.remuxer.remux(t,e,r,i,a,n,o)},t.prototype.destroy=function(){this._initPTS=this._initDTS=void 0,this._duration=0},t.prototype._parsePAT=function(t,e){return(31&t[e+10])<<8|t[e+11]},t.prototype._parsePMT=function(t,e,r,i){var a,n,o,s,l={audio:-1,avc:-1,id3:-1,isAAC:!0};for(a=(15&t[e+1])<<8|t[e+2],n=e+3+a-4,o=(15&t[e+10])<<8|t[e+11],e+=12+o;e1;){var h=new Uint8Array(d[0].length+d[1].length);h.set(d[0]),h.set(d[1],d[0].length),d[0]=h,d.splice(1,1)}if(e=d[0],1===(e[0]<<16)+(e[1]<<8)+e[2]){if((i=(e[4]<<8)+e[5])&&i>t.size-6)return null;r=e[7],192&r&&(o=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,o>4294967295&&(o-=8589934592),64&r?(s=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,s>4294967295&&(s-=8589934592),o-s>54e5&&(N.b.warn(Math.round((o-s)/9e4)+"s delta between PTS and DTS, align them"),o=s)):s=o),a=e[8],l=a+9,t.size-=l,n=new Uint8Array(t.size);for(var c=0,f=d.length;cp){l-=p;continue}e=e.subarray(l),p-=l,l=0}n.set(e,u),u+=p}return i&&(i-=a+3),{data:n,pts:o,dts:s,len:i}}return null},t.prototype.pushAccesUnit=function(t,e){if(t.units.length&&t.frame){var r=e.samples,i=r.length;!this.config.forceKeyFrameOnDiscontinuity||!0===t.key||e.sps&&(i||this.contiguous)?(t.id=i,r.push(t)):e.dropped++}t.debug.length&&N.b.log(t.pts+"/"+t.dts+":"+t.debug)},t.prototype._parseAVCPES=function(t,e){var r,i,a,n=this,o=this._avcTrack,s=this._parseAVCNALu(t.data),l=this.avcSample,u=!1,d=this.pushAccesUnit.bind(this),h=function(t,e,r,i){return{key:t,pts:e,dts:r,units:[],debug:i}};t.data=null,l&&s.length&&(d(l,o),l=this.avcSample=h(!1,t.pts,t.dts,"")),s.forEach(function(e){switch(e.type){case 1:i=!0,l.frame=!0;var s=e.data;if(u&&s.length>4){var c=new z(s).readSliceType();2!==c&&4!==c&&7!==c&&9!==c||(l.key=!0)}break;case 5:i=!0,l||(l=n.avcSample=h(!0,t.pts,t.dts,"")),l.key=!0,l.frame=!0;break;case 6:i=!0,r=new z(n.discardEPB(e.data)),r.readUByte();for(var f=0,p=0,g=!1,v=0;!g&&r.bytesAvailable>1;){f=0;do{v=r.readUByte(),f+=v}while(255===v);p=0;do{v=r.readUByte(),p+=v}while(255===v);if(4===f&&0!==r.bytesAvailable){g=!0;if(181===r.readUByte()){if(49===r.readUShort()){if(1195456820===r.readUInt()){if(3===r.readUByte()){var y=r.readUByte(),m=r.readUByte(),b=31&y,E=[y,m];for(a=0;a0){if(e.pts>=t[r-1].pts)t.push(e);else for(var i=r-1;i>=0;i--)if(e.pts=0)i={data:t.subarray(c,o-u-1),type:n},h.push(i);else{var f=this._getLastNalUnit();if(f&&(d&&o<=4-d&&f.state&&(f.data=f.data.subarray(0,f.data.byteLength-d)),(r=o-u-1)>0)){var p=new Uint8Array(f.data.byteLength+r);p.set(f.data,0),p.set(t.subarray(0,r),f.data.byteLength),f.data=p}}o=0&&u>=0&&(i={data:t.subarray(c,s),type:n,state:u},h.push(i)),0===h.length){var g=this._getLastNalUnit();if(g){var v=new Uint8Array(g.data.byteLength+t.byteLength);v.set(g.data,0),v.set(t,g.data.byteLength),g.data=v}}return l.naluState=u,h},t.prototype.discardEPB=function(t){for(var e,r,i=t.byteLength,a=[],n=1;n1&&(N.b.log("AAC: align PTS for overlapping frames by "+Math.round((m-l)/90)),l=m)}for(;i>24&255,e[1]=i>>16&255,e[2]=i>>8&255,e[3]=255&i,e.set(t,4),a=0,i=8;a>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,a>>24,a>>16&255,a>>8&255,255&a,85,196,0,0]))},t.mdia=function(e){return t.box(t.types.mdia,t.mdhd(e.timescale,e.duration),t.hdlr(e.type),t.minf(e))},t.mfhd=function(e){return t.box(t.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))},t.minf=function(e){return"audio"===e.type?t.box(t.types.minf,t.box(t.types.smhd,t.SMHD),t.DINF,t.stbl(e)):t.box(t.types.minf,t.box(t.types.vmhd,t.VMHD),t.DINF,t.stbl(e))},t.moof=function(e,r,i){return t.box(t.types.moof,t.mfhd(e),t.traf(i,r))},t.moov=function(e){for(var r=e.length,i=[];r--;)i[r]=t.trak(e[r]);return t.box.apply(null,[t.types.moov,t.mvhd(e[0].timescale,e[0].duration)].concat(i).concat(t.mvex(e)))},t.mvex=function(e){for(var r=e.length,i=[];r--;)i[r]=t.trex(e[r]);return t.box.apply(null,[t.types.mvex].concat(i))},t.mvhd=function(e,r){r*=e;var i=Math.floor(r/(it+1)),a=Math.floor(r%(it+1)),n=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,a>>24,a>>16&255,a>>8&255,255&a,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return t.box(t.types.mvhd,n)},t.sdtp=function(e){var r,i,a=e.samples||[],n=new Uint8Array(4+a.length);for(i=0;i>>8&255),n.push(255&a),n=n.concat(Array.prototype.slice.call(i));for(r=0;r>>8&255),o.push(255&a),o=o.concat(Array.prototype.slice.call(i));var s=t.box(t.types.avcC,new Uint8Array([1,n[3],n[4],n[5],255,224|e.sps.length].concat(n).concat([e.pps.length]).concat(o))),l=e.width,u=e.height,d=e.pixelRatio[0],h=e.pixelRatio[1];return t.box(t.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,l>>8&255,255&l,u>>8&255,255&u,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),s,t.box(t.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),t.box(t.types.pasp,new Uint8Array([d>>24,d>>16&255,d>>8&255,255&d,h>>24,h>>16&255,h>>8&255,255&h])))},t.esds=function(t){var e=t.config.length;return new Uint8Array([0,0,0,0,3,23+e,0,1,0,4,15+e,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([e]).concat(t.config).concat([6,1,2]))},t.mp4a=function(e){var r=e.samplerate;return t.box(t.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]),t.box(t.types.esds,t.esds(e)))},t.mp3=function(e){var r=e.samplerate;return t.box(t.types[".mp3"],new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]))},t.stsd=function(e){return"audio"===e.type?e.isAAC||"mp3"!==e.codec?t.box(t.types.stsd,t.STSD,t.mp4a(e)):t.box(t.types.stsd,t.STSD,t.mp3(e)):t.box(t.types.stsd,t.STSD,t.avc1(e))},t.tkhd=function(e){var r=e.id,i=e.duration*e.timescale,a=e.width,n=e.height,o=Math.floor(i/(it+1)),s=Math.floor(i%(it+1));return t.box(t.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,o>>24,o>>16&255,o>>8&255,255&o,s>>24,s>>16&255,s>>8&255,255&s,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,a>>8&255,255&a,0,0,n>>8&255,255&n,0,0]))},t.traf=function(e,r){var i=t.sdtp(e),a=e.id,n=Math.floor(r/(it+1)),o=Math.floor(r%(it+1));return t.box(t.types.traf,t.box(t.types.tfhd,new Uint8Array([0,0,0,0,a>>24,a>>16&255,a>>8&255,255&a])),t.box(t.types.tfdt,new Uint8Array([1,0,0,0,n>>24,n>>16&255,n>>8&255,255&n,o>>24,o>>16&255,o>>8&255,255&o])),t.trun(e,i.length+16+20+8+16+8+8),i)},t.trak=function(e){return e.duration=e.duration||4294967295,t.box(t.types.trak,t.tkhd(e),t.mdia(e))},t.trex=function(e){var r=e.id;return t.box(t.types.trex,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))},t.trun=function(e,r){var i,a,n,o,s,l,u=e.samples||[],d=u.length,h=12+16*d,c=new Uint8Array(h);for(r+=8+h,c.set([0,0,15,1,d>>>24&255,d>>>16&255,d>>>8&255,255&d,r>>>24&255,r>>>16&255,r>>>8&255,255&r],0),i=0;i>>24&255,n>>>16&255,n>>>8&255,255&n,o>>>24&255,o>>>16&255,o>>>8&255,255&o,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.paddingValue<<1|s.isNonSync,61440&s.degradPrio,15&s.degradPrio,l>>>24&255,l>>>16&255,l>>>8&255,255&l],12+16*i);return t.box(t.types.trun,c)},t.initSegment=function(e){t.types||t.init();var r,i=t.moov(e);return r=new Uint8Array(t.FTYP.byteLength+i.byteLength),r.set(t.FTYP),r.set(i,t.FTYP.byteLength),r},t}(),nt=at,ot=function(){function t(e,r,i,a){_(this,t),this.observer=e,this.config=r,this.typeSupported=i;var n=navigator.userAgent;this.isSafari=a&&a.indexOf("Apple")>-1&&n&&!n.match("CriOS"),this.ISGenerated=!1}return t.prototype.destroy=function(){},t.prototype.resetTimeStamp=function(t){this._initPTS=this._initDTS=t},t.prototype.resetInitSegment=function(){this.ISGenerated=!1},t.prototype.remux=function(t,e,r,i,a,n,o){if(this.ISGenerated){if(o){var s=this._initPTS,l=this._PTSNormalize,u=t.inputTimeScale||e.inputTimeScale,d=1/0,h=1/0,c=t.samples;if(c.length&&(d=h=l(c[0].pts-u*a,s)),c=e.samples,c.length){var f=c[0];d=Math.min(d,l(f.pts-u*a,s)),h=Math.min(h,l(f.dts-u*a,s))}if(d!==1/0){var p=s-d;Math.abs(p)>10*u&&(N.b.warn("timestamp inconsistency, "+(p/u).toFixed(3)+"s delta against expected value: missing discontinuity ? reset initPTS/initDTS"),this._initPTS=d,this._initDTS=h,this.observer.trigger(D.a.INIT_PTS_FOUND,{initPTS:d}))}}}else this.generateIS(t,e,a);if(this.ISGenerated)if(t.samples.length){t.timescale||(N.b.warn("regenerate InitSegment as audio detected"),this.generateIS(t,e,a));var g=this.remuxAudio(t,a,n,o);if(e.samples.length){var v=void 0;g&&(v=g.endPTS-g.startPTS),e.timescale||(N.b.warn("regenerate InitSegment as video detected"),this.generateIS(t,e,a)),this.remuxVideo(e,a,n,v,o)}}else{var y=void 0;e.samples.length&&(y=this.remuxVideo(e,a,n,o)),y&&t.codec&&this.remuxEmptyAudio(t,a,n,y)}r.samples.length&&this.remuxID3(r,a),i.samples.length&&this.remuxText(i,a),this.observer.trigger(D.a.FRAG_PARSED)},t.prototype.generateIS=function(t,e,r){var i,a,n=this.observer,o=t.samples,s=e.samples,l=this.typeSupported,u="audio/mp4",d={},h={tracks:d},c=void 0===this._initPTS;if(c&&(i=a=1/0),t.config&&o.length&&(t.timescale=t.samplerate,N.b.log("audio sampling rate : "+t.samplerate),t.isAAC||(l.mpeg?(u="audio/mpeg",t.codec=""):l.mp3&&(t.codec="mp3")),d.audio={container:u,codec:t.codec,initSegment:!t.isAAC&&l.mpeg?new Uint8Array:nt.initSegment([t]),metadata:{channelCount:t.channelCount}},c&&(i=a=o[0].pts-t.inputTimeScale*r)),e.sps&&e.pps&&s.length){var f=e.inputTimeScale;e.timescale=f,d.video={container:"video/mp4",codec:e.codec,initSegment:nt.initSegment([e]),metadata:{width:e.width,height:e.height}},c&&(i=Math.min(i,s[0].pts-f*r),a=Math.min(a,s[0].dts-f*r),this.observer.trigger(D.a.INIT_PTS_FOUND,{initPTS:i}))}Object.keys(d).length?(n.trigger(D.a.FRAG_PARSING_INIT_SEGMENT,h),this.ISGenerated=!0,c&&(this._initPTS=i,this._initDTS=a)):n.trigger(D.a.ERROR,{type:k.b.MEDIA_ERROR,details:k.a.FRAG_PARSING_ERROR,fatal:!1,reason:"no audio/video samples found"})},t.prototype.remuxVideo=function(t,e,r,i,a){var n,o,s,l,u,d,h,c=8,f=t.timescale,p=t.samples,g=[],v=p.length,y=this._PTSNormalize,m=this._initDTS,b=this.nextAvcDts,E=this.isSafari;E&&(r|=p.length&&b&&(a&&Math.abs(e-b/f)<.1||Math.abs(p[0].pts-b-m)1?N.b.log("AVC:"+A+" ms hole between fragments detected,filling it"):A<-1&&N.b.log("AVC:"+-A+" ms overlapping between fragments detected"),u=b,p[0].dts=u,l=Math.max(l-A,b),p[0].pts=l,N.b.log("Video/PTS/DTS adjusted: "+Math.round(l/90)+"/"+Math.round(u/90)+",delta:"+A+" ms")),S=p[p.length-1],h=Math.max(S.dts,0),d=Math.max(S.pts,0,h),E&&(n=Math.round((h-u)/(p.length-1)));for(var _=0,L=0,w=0;w0?U-1:U].dts;if(z.stretchShortVideoTrack){var Q=z.maxBufferHole,J=z.maxSeekHole,$=Math.floor(Math.min(Q,J)*f),Z=(i?l+i*f:this.nextAudioPts)-B.pts;Z>$?(n=Z-q,n<0&&(n=q),N.b.log("It is approximately "+Z/90+" ms to the next segment; using duration "+n/90+" ms for the last video frame.")):n=q}else n=q}j=Math.round(B.pts-B.dts)}g.push({size:H,duration:n,cts:j,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:B.key?2:1,isNonSync:B.key?0:1}})}this.nextAvcDts=h+n;var tt=t.dropped;if(t.len=0,t.nbNalu=0,t.dropped=0,g.length&&navigator.userAgent.toLowerCase().indexOf("chrome")>-1){var et=g[0].flags;et.dependsOn=2,et.isNonSync=0}t.samples=g,s=nt.moof(t.sequenceNumber++,u,t),t.samples=[];var rt={data1:s,data2:o,startPTS:l/f,endPTS:(d+n)/f,startDTS:u/f,endDTS:this.nextAvcDts/f,type:"video",nb:g.length,dropped:tt};return this.observer.trigger(D.a.FRAG_PARSING_DATA,rt),rt},t.prototype.remuxAudio=function(t,e,r,i){var a,n,o,s,l,u,d,h=t.inputTimeScale,c=t.timescale,f=h/c,p=t.isAAC?1024:1152,g=p*f,v=this._PTSNormalize,y=this._initDTS,m=!t.isAAC&&this.typeSupported.mpeg,b=t.samples,E=[],T=this.nextAudioPts;if(r|=b.length&&T&&(i&&Math.abs(e-T/h)<.1||Math.abs(b[0].pts-T-y)<20*g),r||(T=e*h),b.forEach(function(t){t.pts=t.dts=v(t.pts-y,T)}),b.sort(function(t,e){return t.pts-e.pts}),i&&t.isAAC)for(var R=0,S=T;R=g&&w<1e4&&S){var I=Math.round(A/g);N.b.warn("Injecting "+I+" audio frame @ "+(S/h).toFixed(3)+"s due to "+Math.round(1e3*A/h)+" ms gap.");for(var O=0;O0&&B<1e4)G=Math.round((U-T)/g),N.b.log(B+" ms hole between AAC samples detected,filling it"),G>0&&(o=rt.getSilentFrame(t.manifestCodec||t.codec,t.channelCount),o||(o=M.subarray()),t.len+=G*o.length);else if(B<-12){N.b.log("drop overlapping AAC sample, expected/parsed/delta:"+(T/h).toFixed(3)+"s/"+(U/h).toFixed(3)+"s/"+-B+"ms"),t.len-=M.byteLength;continue}U=T}if(u=Math.max(0,U),!(t.len>0))return;var H=m?t.len:t.len+8;a=m?0:8;try{s=new Uint8Array(H)}catch(t){return void this.observer.trigger(D.a.ERROR,{type:k.b.MUX_ERROR,details:k.a.REMUX_ALLOC_ERROR,fatal:!1,bytes:H,reason:"fail allocating audio mdat "+H})}if(!m){new DataView(s.buffer).setUint32(0,H),s.set(nt.types.mdat,4)}for(var j=0;j=2&&(W=E[V-2].duration,n.duration=W),V){this.nextAudioPts=T=d+f*W,t.len=0,t.samples=E,l=m?new Uint8Array:nt.moof(t.sequenceNumber++,u/f,t),t.samples=[];var Y=u/h,X=T/h,z={data1:l,data2:s,startPTS:Y,endPTS:X,startDTS:Y,endDTS:X,type:"audio",nb:V};return this.observer.trigger(D.a.FRAG_PARSING_DATA,z),z}return null},t.prototype.remuxEmptyAudio=function(t,e,r,i){var a=t.inputTimeScale,n=t.samplerate?t.samplerate:a,o=a/n,s=this.nextAudioPts,l=(void 0!==s?s:i.startDTS*a)+this._initDTS,u=i.endDTS*a+this._initDTS,d=1024*o,h=Math.ceil((u-l)/d),c=rt.getSilentFrame(t.manifestCodec||t.codec,t.channelCount);if(N.b.warn("remux empty Audio"),!c)return void N.b.trace("Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec!");for(var f=[],p=0;p4294967296;)t+=r;return t},t}(),st=ot,lt=function(){function t(e){L(this,t),this.observer=e}return t.prototype.destroy=function(){},t.prototype.resetTimeStamp=function(){},t.prototype.resetInitSegment=function(){},t.prototype.remux=function(t,e,r,i,a,n,o,s){var l=this.observer,u="";t&&(u+="audio"),e&&(u+="video"),l.trigger(D.a.FRAG_PARSING_DATA,{data1:s,startPTS:a,startDTS:a,type:u,nb:1,dropped:0}),l.trigger(D.a.FRAG_PARSED)},t}(),ut=lt,dt=function(){function t(e,r,i,a){w(this,t),this.observer=e,this.typeSupported=r,this.config=i,this.vendor=a}return t.prototype.destroy=function(){var t=this.demuxer;t&&t.destroy()},t.prototype.push=function(t,e,r,i,a,n,o,s,l,u,d,h){if(t.byteLength>0&&null!=e&&null!=e.key&&"AES-128"===e.method){var c=this.decrypter;null==c&&(c=this.decrypter=new U(this.observer,this.config));var f,p=this;try{f=performance.now()}catch(t){f=Date.now()}c.decrypt(t,e.key.buffer,e.iv.buffer,function(t){var c;try{c=performance.now()}catch(t){c=Date.now()}p.observer.trigger(D.a.FRAG_DECRYPTED,{stats:{tstart:f,tdecrypt:c}}),p.pushDecrypted(new Uint8Array(t),e,new Uint8Array(r),i,a,n,o,s,l,u,d,h)})}else this.pushDecrypted(new Uint8Array(t),e,new Uint8Array(r),i,a,n,o,s,l,u,d,h)},t.prototype.pushDecrypted=function(t,e,r,i,a,n,o,s,l,u,d,h){var c=this.demuxer;if(!c||o&&!this.probe(t)){for(var f=this.observer,p=this.typeSupported,g=this.config,v=[{demux:$,remux:st},{demux:H,remux:st},{demux:tt,remux:st},{demux:W,remux:ut}],y=0,m=v.length;ye?i.start+i.duration:Math.max(i.start-a.duration,0):r>e?(i.duration=n-i.start,i.duration<0&&wt.b.warn("negative duration computed for frag "+i.sn+",level "+i.level+", there should be some duration drift between playlist and fragment!")):(a.duration=i.start-n,a.duration<0&&wt.b.warn("negative duration computed for frag "+a.sn+",level "+a.level+", there should be some duration drift between playlist and fragment!"))}function v(t,e,r,i,a,n){if(!isNaN(e.startPTS)){var o=Math.abs(e.startPTS-r);isNaN(e.deltaPTS)?e.deltaPTS=o:e.deltaPTS=Math.max(o,e.deltaPTS),r=Math.min(r,e.startPTS),i=Math.max(i,e.endPTS),a=Math.min(a,e.startDTS),n=Math.max(n,e.endDTS)}var s=r-e.start;e.start=e.startPTS=r,e.endPTS=i,e.startDTS=a,e.endDTS=n,e.duration=i-r;var l=e.sn;if(!t||lt.endSN)return 0;var u,d,h;for(u=l-t.startSN,d=t.fragments,e=d[u],h=u;h>0;h--)g(d,h,h-1);for(h=u;h=0&&ne?-1:0})}function E(t,e,r){var i=!1;return e&&e.details&&r&&(r.endCC>r.startCC||t&&t.cc59?e(r[1],r[2],0,r[4]):e(0,r[1],r[2],r[4]):null}function rt(){this.values=Object.create(null)}function it(t,e,r,i){var a=i?t.split(i):[t];for(var n in a)if("string"==typeof a[n]){var o=a[n].split(r);if(2===o.length){var s=o[0],l=o[1];e(s,l)}}}function at(t,e,r){function i(){var e=et(t);if(null===e)throw new Error("Malformed timestamp: "+n);return t=t.replace(/^[^\sa-zA-Z-]+/,""),e}function a(){t=t.replace(/^\s+/,"")}var n=t;if(a(),e.startTime=i(),a(),"--\x3e"!==t.substr(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+n);t=t.substr(3),a(),e.endTime=i(),a(),function(t,e){var i=new rt;it(t,function(t,e){switch(t){case"region":for(var a=r.length-1;a>=0;a--)if(r[a].id===e){i.set(t,r[a].region);break}break;case"vertical":i.alt(t,e,["rl","lr"]);break;case"line":var n=e.split(","),o=n[0];i.integer(t,o),i.percent(t,o)&&i.set("snapToLines",!1),i.alt(t,o,["auto"]),2===n.length&&i.alt("lineAlign",n[1],["start",Ke,"end"]);break;case"position":n=e.split(","),i.percent(t,n[0]),2===n.length&&i.alt("positionAlign",n[1],["start",Ke,"end","line-left","line-right","auto"]);break;case"size":i.percent(t,e);break;case"align":i.alt(t,e,["start",Ke,"end","left","right"])}},/:/,/\s/),e.region=i.get("region",null),e.vertical=i.get("vertical","");var a=i.get("line","auto");"auto"===a&&-1===je.line&&(a=-1),e.line=a,e.lineAlign=i.get("lineAlign","start"),e.snapToLines=i.get("snapToLines",!0),e.size=i.get("size",100),e.align=i.get("align",Ke);var n=i.get("position","auto");"auto"===n&&50===je.position&&(n="start"===e.align||"left"===e.align?0:"end"===e.align||"right"===e.align?100:50),e.position=n}(t,e)}function nt(t){return t.replace(//gi,"\n")}function ot(t,e,r){for(var i=void 0,a=void 0,n=void 0,o=void 0,s=void 0,l=[],u=0;u=16?o--:o++,navigator.userAgent.match(/Firefox\//)?a.line=u+1:a.line=u>7?u-2:u+1,a.align="left",a.position=Math.max(0,Math.min(100,o/32*100)),l.push(a)}return l}function st(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function lt(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function ut(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function dt(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function ht(t){if(t){var e=t.mode;for("disabled"===e&&(t.mode="hidden");t.cues.length>0;)t.removeCue(t.cues[0]);t.mode=e}}function ct(t,e){return t&&(!t._id||/^subtitle/.test(t._id))&&t.label===e.name&&!(t.textTrack1||t.textTrack2)}function ft(t,e,r,i){return Math.min(e,i)-Math.max(t,r)}function pt(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function gt(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function vt(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function yt(t){for(var e=[],r=0;r1?r-1:0),n=1;nNumber.MAX_SAFE_INTEGER?1/0:e},t.prototype.hexadecimalInteger=function(t){if(this[t]){var e=(this[t]||"0x").slice(2);e=(1&e.length?"0":"")+e;for(var r=new Uint8Array(e.length/2),i=0;iNumber.MAX_SAFE_INTEGER?1/0:e},t.prototype.decimalFloatingPoint=function(t){return parseFloat(this[t])},t.prototype.enumeratedString=function(t){return this[t]},t.prototype.decimalResolution=function(t){var e=Ot.exec(this[t]);if(null!==e)return{width:parseInt(e[1],10),height:parseInt(e[2],10)}},t.parseAttrList=function(t){var e,r={};for(Ct.lastIndex=0;null!==(e=Ct.exec(t));){var i=e[2];0===i.indexOf('"')&&i.lastIndexOf('"')===i.length-1&&(i=i.slice(1,-1)),r[e[1]]=i}return r},t}(),xt=Pt,Ft=function(){function t(t,e){for(var r=0;r>8*(15-r)&255;return e},t.prototype.fragmentDecryptdataFromLevelkey=function(t,e){var r=t;return t&&t.method&&t.uri&&!t.iv&&(r=new Gt,r.method=t.method,r.baseuri=t.baseuri,r.reluri=t.reluri,r.iv=this.createInitializationVector(e)),r},t.prototype.cloneObj=function(t){return JSON.parse(JSON.stringify(t))},Ft(t,[{key:"url",get:function(){return!this._url&&this.relurl&&(this._url=At.a.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url},set:function(t){this._url=t}},{key:"programDateTime",get:function(){return!this._programDateTime&&this.rawProgramDateTime&&(this._programDateTime=new Date(Date.parse(this.rawProgramDateTime))),this._programDateTime}},{key:"byteRange",get:function(){if(!this._byteRange){var t=this._byteRange=[];if(this.rawByteRange){var e=this.rawByteRange.split("@",2);if(1===e.length){var r=this.lastByteRangeEndOffset;t[0]=r||0}else t[0]=parseInt(e[1]);t[1]=parseInt(e[0])+t[0]}}return this._byteRange}},{key:"byteRangeStartOffset",get:function(){return this.byteRange[0]}},{key:"byteRangeEndOffset",get:function(){return this.byteRange[1]}},{key:"decryptdata",get:function(){return this._decryptdata||(this._decryptdata=this.fragmentDecryptdataFromLevelkey(this.levelkey,this.sn)),this._decryptdata}}]),t}(),jt=function(t){function e(r){s(this,e);var i=n(this,t.call(this,r,_t.a.MANIFEST_LOADING,_t.a.LEVEL_LOADING,_t.a.AUDIO_TRACK_LOADING,_t.a.SUBTITLE_TRACK_LOADING));return i.loaders={},i}return o(e,t),e.prototype.destroy=function(){for(var t in this.loaders){var e=this.loaders[t];e&&e.destroy()}this.loaders={},It.prototype.destroy.call(this)},e.prototype.onManifestLoading=function(t){this.load(t.url,{type:"manifest"})},e.prototype.onLevelLoading=function(t){this.load(t.url,{type:"level",level:t.level,id:t.id})},e.prototype.onAudioTrackLoading=function(t){this.load(t.url,{type:"audioTrack",id:t.id})},e.prototype.onSubtitleTrackLoading=function(t){this.load(t.url,{type:"subtitleTrack",id:t.id})},e.prototype.load=function(t,e){var r=this.loaders[e.type];if(r){var i=r.context;if(i&&i.url===t)return void wt.b.trace("playlist request ongoing");wt.b.warn("abort previous loader for type:"+e.type),r.abort()}var a=this.hls.config,n=void 0,o=void 0,s=void 0,l=void 0;"manifest"===e.type?(n=a.manifestLoadingMaxRetry,o=a.manifestLoadingTimeOut,s=a.manifestLoadingRetryDelay,l=a.manifestLoadingMaxRetryTimeout):(n=a.levelLoadingMaxRetry,o=a.levelLoadingTimeOut,s=a.levelLoadingRetryDelay,l=a.levelLoadingMaxRetryTimeout,wt.b.log("loading playlist for "+e.type+" "+(e.level||e.id))),r=this.loaders[e.type]=e.loader=void 0!==a.pLoader?new a.pLoader(a):new a.loader(a),e.url=t,e.responseType="";var u=void 0,d=void 0;u={timeout:o,maxRetry:n,retryDelay:s,maxRetryDelay:l},d={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)},r.load(e,u,d)},e.prototype.resolve=function(t,e){return At.a.buildAbsoluteURL(e,t,{alwaysNormalize:!0})},e.prototype.parseMasterPlaylist=function(t,e){var r=[],i=void 0;for(Nt.lastIndex=0;null!=(i=Nt.exec(t));){var a={},n=a.attrs=new xt(i[1]);a.url=this.resolve(i[2],e);var o=n.decimalResolution("RESOLUTION");o&&(a.width=o.width,a.height=o.height),a.bitrate=n.decimalInteger("AVERAGE-BANDWIDTH")||n.decimalInteger("BANDWIDTH"),a.name=n.NAME;var s=n.CODECS;if(s){s=s.split(/[ ,]+/);for(var l=0;l3&&void 0!==arguments[3]?arguments[3]:[],a=void 0,n=[],o=0;for(Mt.lastIndex=0;null!==(a=Mt.exec(t));){var s={},l=new xt(a[1]);if(l.TYPE===r){if(s.groupId=l["GROUP-ID"],s.instreamId=l["INSTREAM-ID"],s.name=l.NAME,s.type=r,s.default="YES"===l.DEFAULT,s.autoselect="YES"===l.AUTOSELECT,s.forced="YES"===l.FORCED,l.URI&&(s.url=this.resolve(l.URI,e)),s.lang=l.LANGUAGE,s.name||(s.name=s.lang),i.length){var u=function(t,e){return t.find(function(t){return t.id===e})}(i,s.groupId);s.audioCodec=u?u.codec:i[0].codec}s.id=o++,n.push(s)}}return n},e.prototype.avc1toavcoti=function(t){var e,r=t.split(".");return r.length>2?(e=r.shift()+".",e+=parseInt(r.shift()).toString(16),e+=("000"+parseInt(r.shift()).toString(16)).substr(-4)):e=t,e},e.prototype.parseLevelPlaylist=function(t,e,r,i){var a,n,o=0,s=0,l={type:null,version:null,url:e,fragments:[],live:!0,startSN:0},u=new Gt,d=0,h=null,c=new Ht;for(Ut.lastIndex=0;null!==(a=Ut.exec(t));){var f=a[1];if(f){c.duration=parseFloat(f);var p=(" "+a[2]).slice(1);c.title=p||null,c.tagList.push(p?["INF",f,p]:["INF",f])}else if(a[3]){if(!isNaN(c.duration)){var g=o++;c.type=i,c.start=s,c.levelkey=u,c.sn=g,c.level=r,c.cc=d,c.baseurl=e,c.relurl=(" "+a[3]).slice(1),l.fragments.push(c),h=c,s+=c.duration,c=new Ht}}else if(a[4]){if(c.rawByteRange=(" "+a[4]).slice(1),h){var v=h.byteRangeEndOffset;v&&(c.lastByteRangeEndOffset=v)}}else if(a[5])c.rawProgramDateTime=(" "+a[5]).slice(1),c.tagList.push(["PROGRAM-DATE-TIME",c.rawProgramDateTime]);else{for(a=a[0].match(Bt),n=1;n=0&&(u.method=T,u.baseuri=e,u.reluri=R,u.key=null,u.iv=S));break;case"START":var A=y,_=new xt(A),L=_.decimalFloatingPoint("TIME-OFFSET");isNaN(L)||(l.startTimeOffset=L);break;case"MAP":var w=new xt(y);c.relurl=w.URI,c.rawByteRange=w.BYTERANGE,c.baseurl=e,c.level=r,c.type=i,c.sn="initSegment",l.initSegment=c,c=new Ht;break;default:wt.b.warn("line parsed but not handled: "+a)}}}return c=h,c&&!c.relurl&&(l.fragments.pop(),s-=c.duration),l.totalduration=s,l.averagetargetduration=s/l.fragments.length,l.endSN=o-1,l.startCC=l.fragments[0]?l.fragments[0].cc:0,l.endCC=d,l},e.prototype.loadsuccess=function(t,e,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=t.data,n=t.url,o=r.type,s=r.id,l=r.level,u=this.hls;if(this.loaders[o]=void 0,void 0!==n&&0!==n.indexOf("data:")||(n=r.url),e.tload=performance.now(),0===a.indexOf("#EXTM3U"))if(a.indexOf("#EXTINF:")>0){var d="audioTrack"!==o&&"subtitleTrack"!==o,h=isNaN(l)?isNaN(s)?0:s:l,c=this.parseLevelPlaylist(a,n,h,"audioTrack"===o?"audio":"subtitleTrack"===o?"subtitle":"main");c.tload=e.tload,"manifest"===o&&u.trigger(_t.a.MANIFEST_LOADED,{levels:[{url:n,details:c}],audioTracks:[],url:n,stats:e,networkDetails:i}),e.tparsed=performance.now(),c.targetduration?d?u.trigger(_t.a.LEVEL_LOADED,{details:c,level:l||0,id:s||0,stats:e,networkDetails:i}):"audioTrack"===o?u.trigger(_t.a.AUDIO_TRACK_LOADED,{details:c,id:s,stats:e,networkDetails:i}):"subtitleTrack"===o&&u.trigger(_t.a.SUBTITLE_TRACK_LOADED,{details:c,id:s,stats:e,networkDetails:i}):u.trigger(_t.a.ERROR,{type:Lt.b.NETWORK_ERROR,details:Lt.a.MANIFEST_PARSING_ERROR,fatal:!0,url:n,reason:"invalid targetduration",networkDetails:i})}else{var f=this.parseMasterPlaylist(a,n);if(f.length){var p=f.map(function(t){return{id:t.attrs.AUDIO,codec:t.audioCodec}}),g=this.parseMasterPlaylistMedia(a,n,"AUDIO",p),v=this.parseMasterPlaylistMedia(a,n,"SUBTITLES"),y=this.parseMasterPlaylistMedia(a,n,"CLOSED-CAPTIONS");if(g.length){var m=!1;g.forEach(function(t){t.url||(m=!0)}),!1===m&&f[0].audioCodec&&!f[0].attrs.AUDIO&&(wt.b.log("audio codec signaled in quality level, but no embedded audio track signaled, create one"),g.unshift({type:"main",name:"main"}))}u.trigger(_t.a.MANIFEST_LOADED,{levels:f,audioTracks:g,subtitles:v,captions:y,url:n,stats:e,networkDetails:i})}else"manifest"===o?u.trigger(_t.a.ERROR,{type:Lt.b.NETWORK_ERROR,details:Lt.a.MANIFEST_PARSING_ERROR,fatal:!0,url:n,reason:"no level found in manifest",networkDetails:i}):u.trigger(_t.a.ERROR,{type:Lt.b.NETWORK_ERROR,details:Lt.a.MANIFEST_EMPTY_ERROR,fatal:!1,url:n,reason:"no level found in manifest",context:r})}else u.trigger(_t.a.ERROR,{type:Lt.b.NETWORK_ERROR,details:Lt.a.MANIFEST_PARSING_ERROR,fatal:!0,url:n,reason:"no EXTM3U delimiter",networkDetails:i})},e.prototype.loaderror=function(t,e){var r,i,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=e.loader;switch(e.type){case"manifest":r=Lt.a.MANIFEST_LOAD_ERROR,i=!0;break;case"level":r=Lt.a.LEVEL_LOAD_ERROR,i=!1;break;case"audioTrack":r=Lt.a.AUDIO_TRACK_LOAD_ERROR,i=!1}n&&(n.abort(),this.loaders[e.type]=void 0),this.hls.trigger(_t.a.ERROR,{type:Lt.b.NETWORK_ERROR,details:r,fatal:i,url:e.url,loader:n,response:t,context:e,networkDetails:a})},e.prototype.loadtimeout=function(t,e){var r,i,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=e.loader;switch(e.type){case"manifest":r=Lt.a.MANIFEST_LOAD_TIMEOUT,i=!0;break;case"level":r=Lt.a.LEVEL_LOAD_TIMEOUT,i=!1;break;case"audioTrack":r=Lt.a.AUDIO_TRACK_LOAD_TIMEOUT,i=!1}n&&(n.abort(),this.loaders[e.type]=void 0),this.hls.trigger(_t.a.ERROR,{type:Lt.b.NETWORK_ERROR,details:r,fatal:i,url:e.url,loader:n,context:e,networkDetails:a})},e}(It),Kt=jt,Wt=function(t){function e(r){l(this,e);var i=u(this,t.call(this,r,_t.a.FRAG_LOADING));return i.loaders={},i}return d(e,t),e.prototype.destroy=function(){var t=this.loaders;for(var e in t){var r=t[e];r&&r.destroy()}this.loaders={},It.prototype.destroy.call(this)},e.prototype.onFragLoading=function(t){var e=t.frag,r=e.type,i=this.loaders[r],a=this.hls.config;e.loaded=0,i&&(wt.b.warn("abort previous fragment loader for type:"+r),i.abort()),i=this.loaders[r]=e.loader=void 0!==a.fLoader?new a.fLoader(a):new a.loader(a);var n=void 0,o=void 0,s=void 0;n={url:e.url,frag:e,responseType:"arraybuffer",progressData:!1};var l=e.byteRangeStartOffset,u=e.byteRangeEndOffset;isNaN(l)||isNaN(u)||(n.rangeStart=l,n.rangeEnd=u),o={timeout:a.fragLoadingTimeOut,maxRetry:0,retryDelay:0,maxRetryDelay:a.fragLoadingMaxRetryTimeout},s={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this),onProgress:this.loadprogress.bind(this)},i.load(n,o,s)},e.prototype.loadsuccess=function(t,e,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=t.data,n=r.frag;n.loader=void 0,this.loaders[n.type]=void 0,this.hls.trigger(_t.a.FRAG_LOADED,{payload:a,frag:n,stats:e,networkDetails:i})},e.prototype.loaderror=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=e.loader;i&&i.abort(),this.loaders[e.type]=void 0,this.hls.trigger(_t.a.ERROR,{type:Lt.b.NETWORK_ERROR,details:Lt.a.FRAG_LOAD_ERROR,fatal:!1,frag:e.frag,response:t,networkDetails:r})},e.prototype.loadtimeout=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=e.loader;i&&i.abort(),this.loaders[e.type]=void 0,this.hls.trigger(_t.a.ERROR,{type:Lt.b.NETWORK_ERROR,details:Lt.a.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e.frag,networkDetails:r})},e.prototype.loadprogress=function(t,e,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=e.frag;a.loaded=t.loaded,this.hls.trigger(_t.a.FRAG_LOAD_PROGRESS,{frag:a,stats:t,networkDetails:i})},e}(It),Vt=Wt,Yt=function(t){function e(r){h(this,e);var i=c(this,t.call(this,r,_t.a.KEY_LOADING));return i.loaders={},i.decryptkey=null,i.decrypturl=null,i}return f(e,t),e.prototype.destroy=function(){for(var t in this.loaders){var e=this.loaders[t];e&&e.destroy()}this.loaders={},It.prototype.destroy.call(this)},e.prototype.onKeyLoading=function(t){var e=t.frag,r=e.type,i=this.loaders[r],a=e.decryptdata,n=a.uri;if(n!==this.decrypturl||null===this.decryptkey){var o=this.hls.config;i&&(wt.b.warn("abort previous key loader for type:"+r),i.abort()),e.loader=this.loaders[r]=new o.loader(o),this.decrypturl=n,this.decryptkey=null;var s=void 0,l=void 0,u=void 0;s={url:n,frag:e,responseType:"arraybuffer"},l={timeout:o.fragLoadingTimeOut,maxRetry:o.fragLoadingMaxRetry,retryDelay:o.fragLoadingRetryDelay,maxRetryDelay:o.fragLoadingMaxRetryTimeout},u={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)},e.loader.load(s,l,u)}else this.decryptkey&&(a.key=this.decryptkey,this.hls.trigger(_t.a.KEY_LOADED,{frag:e}))},e.prototype.loadsuccess=function(t,e,r){var i=r.frag;this.decryptkey=i.decryptdata.key=new Uint8Array(t.data),i.loader=void 0,this.loaders[i.type]=void 0,this.hls.trigger(_t.a.KEY_LOADED,{frag:i})},e.prototype.loaderror=function(t,e){var r=e.frag,i=r.loader;i&&i.abort(),this.loaders[e.type]=void 0,this.hls.trigger(_t.a.ERROR,{type:Lt.b.NETWORK_ERROR,details:Lt.a.KEY_LOAD_ERROR,fatal:!1,frag:r,response:t})},e.prototype.loadtimeout=function(t,e){var r=e.frag,i=r.loader;i&&i.abort(),this.loaders[e.type]=void 0,this.hls.trigger(_t.a.ERROR,{type:Lt.b.NETWORK_ERROR,details:Lt.a.KEY_LOAD_TIMEOUT,fatal:!1,frag:r})},e}(It),Xt=Yt,zt={search:function(t,e){for(var r=0,i=t.length-1,a=null,n=null;r<=i;){a=(r+i)/2|0,n=t[a];var o=e(n);if(o>0)r=a+1;else{if(!(o<0))return n;i=a-1}}return null}},qt=zt,Qt={isBuffered:function(t,e){if(t)for(var r=t.buffered,i=0;i=r.start(i)&&e<=r.end(i))return!0;return!1},bufferInfo:function(t,e,r){var i={len:0,start:e,end:e,nextStart:void 0};if(!t)return i;try{for(var a=t.buffered,n=[],o=0;od&&(l[u-1].end=t[s].end):l.push(t[s])}else l.push(t[s])}for(s=0,i=0,a=n=e;s=h&&e1?e-1:0),a=1;a1?e-1:0),a=1;a0&&-1===t&&(wt.b.log("override startPosition with lastCurrentTime @"+e.toFixed(3)),t=e),this.state=le.IDLE,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}else this.forceStartLoad=!0,this.state=le.STOPPED},e.prototype.stopLoad=function(){var t=this.fragCurrent;t&&(t.loader&&t.loader.abort(),this.fragCurrent=null),this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.state=le.STOPPED,this.forceStartLoad=!1},e.prototype.tick=function(){1===++this.ticks&&(this.doTick(),this.ticks>1&&setTimeout(this.tick,1),this.ticks=0)},e.prototype.doTick=function(){switch(this.state){case le.ERROR:break;case le.BUFFER_FLUSHING:this.fragLoadError=0;break;case le.IDLE:this._doTickIdle();break;case le.WAITING_LEVEL:var t=this.levels[this.level];t&&t.details&&(this.state=le.IDLE);break;case le.FRAG_LOADING_WAITING_RETRY:var e=performance.now(),r=this.retryDate;(!r||e>=r||this.media&&this.media.seeking)&&(wt.b.log("mediaController: retryDate reached, switch back to IDLE state"),this.state=le.IDLE);break;case le.ERROR:case le.STOPPED:case le.FRAG_LOADING:case le.PARSING:case le.PARSED:case le.ENDED:}this._checkBuffer(),this._checkFragmentChanged()},e.prototype._doTickIdle=function(){var t=this.hls,e=t.config,r=this.media;if(void 0===this.levelLastLoaded||r||!this.startFragRequested&&e.startFragPrefetch){var i=0;this.loadedmetadata?i=r.currentTime:this.nextLoadPosition&&(i=this.nextLoadPosition);var a=t.nextLoadLevel,n=this.levels[a];if(n){var o=n.bitrate,s=void 0;s=o?Math.max(8*e.maxBufferSize/o,e.maxBufferLength):e.maxBufferLength,s=Math.min(s,e.maxMaxBufferLength);var l=Jt.bufferInfo(this.mediaBuffer?this.mediaBuffer:r,i,e.maxBufferHole),u=l.len;if(!(u>=s)){wt.b.trace("buffer length of "+u.toFixed(3)+" is below max of "+s.toFixed(3)+". checking for more payload ..."),this.level=t.nextLoadLevel=a;var d=n.details;if(void 0===d||d.live&&this.levelLastLoaded!==a)return void(this.state=le.WAITING_LEVEL);var h=this.fragPrevious;if(!d.live&&h&&h.sn===d.endSN&&u&&!l.nextStart){if(Math.min(r.duration,h.start+h.duration)-Math.max(l.end,h.start)<=Math.max(.2,h.duration)){var c={};return this.altAudio&&(c.type="video"),this.hls.trigger(_t.a.BUFFER_EOS,c),void(this.state=le.ENDED)}}this._fetchPayloadOrEos(i,l,d)}}}},e.prototype._fetchPayloadOrEos=function(t,e,r){var i=this.fragPrevious,a=this.level,n=r.fragments,o=n.length;if(0!==o){var s=n[0].start,l=n[o-1].start+n[o-1].duration,u=e.end,d=void 0;if(r.initSegment&&!r.initSegment.data)d=r.initSegment;else if(r.live){var h=this.config.initialLiveManifestSize;if(oh&&(l.currentTime=h),this.nextLoadPosition=h}if(t.PTSKnown&&e>i&&l&&l.readyState)return null;if(this.startFragRequested&&!t.PTSKnown){if(a){var c=a.sn+1,f=a.cc+1;c>=t.startSN&&c<=t.endSN?(u=n[c-t.startSN],wt.b.log("live playlist, switching playlist, load frag with next SN: "+u.sn)):f>=t.startCC&&f<=t.endCC&&(u=m(n,f),wt.b.log("Live playlist switch, cannot find frag with target SN. Loading frag with next CC: "+u.cc)),u||(u=qt.search(n,function(t){return a.cc-t.cc}))&&wt.b.log("live playlist, switching playlist, load frag with same CC: "+u.sn)}u||(u=n[Math.min(o-1,Math.round(o/2))],wt.b.log("live playlist, switching playlist, unknown, load middle frag : "+u.sn))}return u},e.prototype._findFragment=function(t,e,r,i,a,n,o){var s=this.hls.config,l=void 0,u=void 0,d=s.maxFragLookUpTolerance,h=e?i[e.sn-i[0].sn+1]:void 0,c=function(t){var e=Math.min(d,t.duration);return t.start+t.duration-e<=a?1:t.start-e>a&&t.start?-1:0};if(an-d&&(d=0),u=h&&!c(h)?h:qt.search(i,c)):u=i[r-1],u){l=u;var f=l.sn-o.startSN,p=e&&l.level===e.level,g=i[f-1],v=i[f+1];if(e&&l.sn===e.sn)if(p&&!l.backtracked)if(l.sns.maxBufferHole&&e.dropped&&f&&!l.backtracked?(l=g,wt.b.warn("SN just loaded, with large PTS gap between audio and video, maybe frag is not starting with a keyframe ? load previous one to try to overcome this"),e.loadCounter--):(l=v,wt.b.log("SN just loaded, load next one: "+l.sn))}else l=null;else l.backtracked&&(v&&v.backtracked?(wt.b.warn("Already backtracked from fragment "+v.sn+", will not backtrack to fragment "+l.sn+". Loading fragment "+v.sn),l=v):(wt.b.warn("Loaded fragment with dropped frames, backtracking 1 segment to find a keyframe"),l.dropped=0,g?(g.loadCounter&&g.loadCounter--,l=g,l.backtracked=!0):f&&(l=null)))}return l},e.prototype._loadFragmentOrKey=function(t,e,r,i,a){var n=this.hls,o=n.config;if(!t.decryptdata||null==t.decryptdata.uri||null!=t.decryptdata.key){if(wt.b.log("Loading "+t.sn+" of ["+r.startSN+" ,"+r.endSN+"],level "+e+", currentTime:"+i.toFixed(3)+",bufferEnd:"+a),void 0!==this.fragLoadIdx?this.fragLoadIdx++:this.fragLoadIdx=0,t.loadCounter){t.loadCounter++;var s=o.fragLoadingLoopThreshold;if(t.loadCounter>s&&Math.abs(this.fragLoadIdx-t.loadIdx)e.endPTS?1:0})},e.prototype.followingBufferedFrag=function(t){return t?this.getBufferedFrag(t.endPTS+.5):null},e.prototype._checkFragmentChanged=function(){var t,e,r=this.media;if(r&&r.readyState&&!1===r.seeking&&(e=r.currentTime,e>r.playbackRate*this.lastCurrentTime&&(this.lastCurrentTime=e),Jt.isBuffered(r,e)?t=this.getBufferedFrag(e):Jt.isBuffered(r,e+.1)&&(t=this.getBufferedFrag(e+.1)),t)){var i=t;if(i!==this.fragPlaying){this.hls.trigger(_t.a.FRAG_CHANGED,{frag:i});var a=i.level;this.fragPlaying&&this.fragPlaying.level===a||this.hls.trigger(_t.a.LEVEL_SWITCHED,{level:a}),this.fragPlaying=i}}},e.prototype.immediateLevelSwitch=function(){if(wt.b.log("immediateLevelSwitch"),!this.immediateSwitch){this.immediateSwitch=!0;var t=this.media,e=void 0;t?(e=t.paused,t.pause()):e=!0,this.previouslyPaused=e}var r=this.fragCurrent;r&&r.loader&&r.loader.abort(),this.fragCurrent=null,this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold,this.flushMainBuffer(0,Number.POSITIVE_INFINITY)},e.prototype.immediateLevelSwitchEnd=function(){var t=this.media;t&&t.buffered.length&&(this.immediateSwitch=!1,Jt.isBuffered(t,t.currentTime)&&(t.currentTime-=1e-4),this.previouslyPaused||t.play())},e.prototype.nextLevelSwitch=function(){var t=this.media;if(t&&t.readyState){var e=void 0,r=void 0,i=void 0;if(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold,r=this.getBufferedFrag(t.currentTime),r&&r.startPTS>1&&this.flushMainBuffer(0,r.startPTS-1),t.paused)e=0;else{var a=this.hls.nextLoadLevel,n=this.levels[a],o=this.fragLastKbps;e=o&&this.fragCurrent?this.fragCurrent.duration*n.bitrate/(1e3*o)+1:0}if((i=this.getBufferedFrag(t.currentTime+e))&&(i=this.followingBufferedFrag(i))){var s=this.fragCurrent;s&&s.loader&&s.loader.abort(),this.fragCurrent=null,this.flushMainBuffer(i.maxStartPTS,Number.POSITIVE_INFINITY)}}},e.prototype.flushMainBuffer=function(t,e){this.state=le.BUFFER_FLUSHING;var r={startOffset:t,endOffset:e};this.altAudio&&(r.type="video"),this.hls.trigger(_t.a.BUFFER_FLUSHING,r)},e.prototype.onMediaAttached=function(t){var e=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),this.onvended=this.onMediaEnded.bind(this),e.addEventListener("seeking",this.onvseeking),e.addEventListener("seeked",this.onvseeked),e.addEventListener("ended",this.onvended);var r=this.config;this.levels&&r.autoStartLoad&&this.hls.startLoad(r.startPosition)},e.prototype.onMediaDetaching=function(){var t=this.media;t&&t.ended&&(wt.b.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0);var e=this.levels;e&&e.forEach(function(t){t.details&&t.details.fragments.forEach(function(t){t.loadCounter=void 0,t.backtracked=void 0})}),t&&(t.removeEventListener("seeking",this.onvseeking),t.removeEventListener("seeked",this.onvseeked),t.removeEventListener("ended",this.onvended),this.onvseeking=this.onvseeked=this.onvended=null),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.stopLoad()},e.prototype.onMediaSeeking=function(){var t=this.media,e=t?t.currentTime:void 0,r=this.config;isNaN(e)||wt.b.log("media seeking to "+e.toFixed(3));var i=this.mediaBuffer?this.mediaBuffer:t,a=Jt.bufferInfo(i,e,this.config.maxBufferHole);if(this.state===le.FRAG_LOADING){var n=this.fragCurrent;if(0===a.len&&n){var o=r.maxFragLookUpTolerance,s=n.start-o,l=n.start+n.duration+o;el?(n.loader&&(wt.b.log("seeking outside of buffer while fragment load in progress, cancel fragment load"),n.loader.abort()),this.fragCurrent=null,this.fragPrevious=null,this.state=le.IDLE):wt.b.log("seeking outside of buffer but within currently loaded fragment range")}}else this.state===le.ENDED&&(0===a.len&&(this.fragPrevious=0),this.state=le.IDLE);t&&(this.lastCurrentTime=e),this.state!==le.FRAG_LOADING&&void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*r.fragLoadingLoopThreshold),this.loadedmetadata||(this.nextLoadPosition=this.startPosition=e),this.tick()},e.prototype.onMediaSeeked=function(){var t=this.media,e=t?t.currentTime:void 0;isNaN(e)||wt.b.log("media seeked to "+e.toFixed(3)),this.tick()},e.prototype.onMediaEnded=function(){wt.b.log("media ended"),this.startPosition=this.lastCurrentTime=0},e.prototype.onManifestLoading=function(){wt.b.log("trigger BUFFER_RESET"),this.hls.trigger(_t.a.BUFFER_RESET),this._bufferedFrags=[],this.stalled=!1,this.startPosition=this.lastCurrentTime=0},e.prototype.onManifestParsed=function(t){var e,r=!1,i=!1;t.levels.forEach(function(t){(e=t.audioCodec)&&(-1!==e.indexOf("mp4a.40.2")&&(r=!0),-1!==e.indexOf("mp4a.40.5")&&(i=!0))}),this.audioCodecSwitch=r&&i,this.audioCodecSwitch&&wt.b.log("both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=t.levels,this.startLevelLoaded=!1,this.startFragRequested=!1;var a=this.config;(a.autoStartLoad||this.forceStartLoad)&&this.hls.startLoad(a.startPosition)},e.prototype.onLevelLoaded=function(t){var e=t.details,r=t.level,i=this.levels[this.levelLastLoaded],a=this.levels[r],n=e.totalduration,o=0;if(wt.b.log("level "+r+" loaded ["+e.startSN+","+e.endSN+"], cc ["+e.startCC+", "+e.endCC+"] duration:"+n),e.live){var s=a.details;s&&e.fragments.length>0?(y(s,e),o=e.fragments[0].start,this.liveSyncPosition=this.computeLivePosition(o,s),e.PTSKnown?wt.b.log("live playlist sliding:"+o.toFixed(3)):(wt.b.log("live playlist - outdated PTS, unknown sliding"),S(this.fragPrevious,i,e))):(wt.b.log("live playlist - first load, unknown sliding"),e.PTSKnown=!1,S(this.fragPrevious,i,e))}else e.PTSKnown=!1;if(this.levelLastLoaded=r,a.details=e,this.hls.trigger(_t.a.LEVEL_UPDATED,{details:e,level:r}),!1===this.startFragRequested){if(-1===this.startPosition||-1===this.lastCurrentTime){var l=e.startTimeOffset;isNaN(l)?e.live?(this.startPosition=this.computeLivePosition(o,e),wt.b.log("configure startPosition to "+this.startPosition)):this.startPosition=0:(l<0&&(wt.b.log("negative start time offset "+l+", count from end of last fragment"),l=o+n+l),wt.b.log("start time offset found in playlist, adjust startPosition to "+l),this.startPosition=l),this.lastCurrentTime=this.startPosition}this.nextLoadPosition=this.startPosition}this.state===le.WAITING_LEVEL&&(this.state=le.IDLE),this.tick()},e.prototype.onKeyLoaded=function(){this.state===le.KEY_LOADING&&(this.state=le.IDLE,this.tick())},e.prototype.onFragLoaded=function(t){var e=this.fragCurrent,r=t.frag;if(this.state===le.FRAG_LOADING&&e&&"main"===r.type&&r.level===e.level&&r.sn===e.sn){var i=t.stats,a=this.levels[e.level],n=a.details;if(wt.b.log("Loaded "+e.sn+" of ["+n.startSN+" ,"+n.endSN+"],level "+e.level),this.bitrateTest=!1,this.stats=i,!0===r.bitrateTest&&this.hls.nextLoadLevel)this.state=le.IDLE,this.startFragRequested=!1,i.tparsed=i.tbuffered=performance.now(),this.hls.trigger(_t.a.FRAG_BUFFERED,{stats:i,frag:e,id:"main"}),this.tick();else if("initSegment"===r.sn)this.state=le.IDLE,i.tparsed=i.tbuffered=performance.now(),n.initSegment.data=t.payload,this.hls.trigger(_t.a.FRAG_BUFFERED,{stats:i,frag:e,id:"main"}),this.tick();else{this.state=le.PARSING;var o=n.totalduration,s=e.level,l=e.sn,u=this.config.defaultAudioCodec||a.audioCodec;this.audioCodecSwap&&(wt.b.log("swapping playlist audio codec"),void 0===u&&(u=this.lastAudioCodec),u&&(u=-1!==u.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5")),this.pendingBuffering=!0,this.appended=!1,wt.b.log("Parsing "+l+" of ["+n.startSN+" ,"+n.endSN+"],level "+s+", cc "+e.cc);var d=this.demuxer;d||(d=this.demuxer=new ae(this.hls,"main"));var h=this.media,c=h&&h.seeking,f=!c&&(n.PTSKnown||!n.live),p=n.initSegment?n.initSegment.data:[];d.push(t.payload,p,u,a.videoCodec,e,o,f,void 0)}}this.fragLoadError=0},e.prototype.onFragParsingInitSegment=function(t){var e=this.fragCurrent,r=t.frag;if(e&&"main"===t.id&&r.sn===e.sn&&r.level===e.level&&this.state===le.PARSING){var i,a,n=t.tracks;if(n.audio&&this.altAudio&&delete n.audio,a=n.audio){var o=this.levels[this.level].audioCodec,s=navigator.userAgent.toLowerCase();o&&this.audioCodecSwap&&(wt.b.log("swapping playlist audio codec"),o=-1!==o.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),this.audioCodecSwitch&&1!==a.metadata.channelCount&&-1===s.indexOf("firefox")&&(o="mp4a.40.5"),-1!==s.indexOf("android")&&"audio/mpeg"!==a.container&&(o="mp4a.40.2",wt.b.log("Android: force audio codec to "+o)),a.levelCodec=o,a.id=t.id}a=n.video,a&&(a.levelCodec=this.levels[this.level].videoCodec,a.id=t.id),this.hls.trigger(_t.a.BUFFER_CODECS,n);for(i in n){a=n[i],wt.b.log("main track:"+i+",container:"+a.container+",codecs[level/parsed]=["+a.levelCodec+"/"+a.codec+"]");var l=a.initSegment;l&&(this.appended=!0,this.pendingBuffering=!0,this.hls.trigger(_t.a.BUFFER_APPENDING,{type:i,data:l,parent:"main",content:"initSegment"}))}this.tick()}},e.prototype.onFragParsingData=function(t){var e=this,r=this.fragCurrent,i=t.frag;if(r&&"main"===t.id&&i.sn===r.sn&&i.level===r.level&&("audio"!==t.type||!this.altAudio)&&this.state===le.PARSING){var a=this.levels[this.level],n=r;if(isNaN(t.endPTS)&&(t.endPTS=t.startPTS+r.duration,t.endDTS=t.startDTS+r.duration),wt.b.log("Parsed "+t.type+",PTS:["+t.startPTS.toFixed(3)+","+t.endPTS.toFixed(3)+"],DTS:["+t.startDTS.toFixed(3)+"/"+t.endDTS.toFixed(3)+"],nb:"+t.nb+",dropped:"+(t.dropped||0)),"video"===t.type)if(n.dropped=t.dropped,n.dropped){if(!n.backtracked)return wt.b.warn("missing video frame(s), backtracking fragment"),n.backtracked=!0,this.nextLoadPosition=t.startPTS,this.state=le.IDLE,this.fragPrevious=n,void this.tick();wt.b.warn("Already backtracked on this fragment, appending with the gap")}else n.backtracked=!1;var o=v(a.details,n,t.startPTS,t.endPTS,t.startDTS,t.endDTS),s=this.hls;s.trigger(_t.a.LEVEL_PTS_UPDATED,{details:a.details,level:this.level,drift:o,type:t.type,start:t.startPTS,end:t.endPTS}),[t.data1,t.data2].forEach(function(r){r&&r.length&&e.state===le.PARSING&&(e.appended=!0,e.pendingBuffering=!0,s.trigger(_t.a.BUFFER_APPENDING,{type:t.type,data:r,parent:"main",content:"data"}))}),this.tick()}},e.prototype.onFragParsed=function(t){var e=this.fragCurrent,r=t.frag;e&&"main"===t.id&&r.sn===e.sn&&r.level===e.level&&this.state===le.PARSING&&(this.stats.tparsed=performance.now(),this.state=le.PARSED,this._checkAppendedParsed())},e.prototype.onAudioTrackSwitching=function(t){var e=!!t.url,r=t.id;if(!e){if(this.mediaBuffer!==this.media){wt.b.log("switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;var i=this.fragCurrent;i.loader&&(wt.b.log("switching to main audio track, cancel main fragment load"),i.loader.abort()),this.fragCurrent=null,this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.state=le.IDLE}var a=this.hls;a.trigger(_t.a.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"}),a.trigger(_t.a.AUDIO_TRACK_SWITCHED,{id:r}),this.altAudio=!1}},e.prototype.onAudioTrackSwitched=function(t){var e=t.id,r=!!this.hls.audioTracks[e].url;if(r){var i=this.videoBuffer;i&&this.mediaBuffer!==i&&(wt.b.log("switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=i)}this.altAudio=r,this.tick()},e.prototype.onBufferCreated=function(t){var e=t.tracks,r=void 0,i=void 0,a=!1;for(var n in e){var o=e[n];"main"===o.id?(i=n,r=o,"video"===n&&(this.videoBuffer=e[n].buffer)):a=!0}a&&r?(wt.b.log("alternate track found, use "+i+".buffered to schedule main fragment loading"),this.mediaBuffer=r.buffer):this.mediaBuffer=this.media},e.prototype.onBufferAppended=function(t){if("main"===t.parent){var e=this.state;e!==le.PARSING&&e!==le.PARSED||(this.pendingBuffering=t.pending>0,this._checkAppendedParsed())}},e.prototype._checkAppendedParsed=function(){if(!(this.state!==le.PARSED||this.appended&&this.pendingBuffering)){var t=this.fragCurrent;if(t){var e=this.mediaBuffer?this.mediaBuffer:this.media;wt.b.log("main buffered : "+oe.toString(e.buffered));var r=this._bufferedFrags.filter(function(t){return Jt.isBuffered(e,(t.startPTS+t.endPTS)/2)});r.push(t),this._bufferedFrags=r.sort(function(t,e){return t.startPTS-e.startPTS}),this.fragPrevious=t;var i=this.stats;i.tbuffered=performance.now(),this.fragLastKbps=Math.round(8*i.total/(i.tbuffered-i.tfirst)),this.hls.trigger(_t.a.FRAG_BUFFERED,{stats:i,frag:t,id:"main"}),this.state=le.IDLE}this.tick()}},e.prototype.onError=function(t){var e=t.frag||this.fragCurrent;if(!e||"main"===e.type){var r=this.media,i=r&&Jt.isBuffered(r,r.currentTime)&&Jt.isBuffered(r,r.currentTime+.5);switch(t.details){case Lt.a.FRAG_LOAD_ERROR:case Lt.a.FRAG_LOAD_TIMEOUT:case Lt.a.KEY_LOAD_ERROR:case Lt.a.KEY_LOAD_TIMEOUT:if(!t.fatal){var a=this.fragLoadError;a?a++:a=1;var n=this.config;if(a<=n.fragLoadingMaxRetry||i||e.autoLevel&&e.level){this.fragLoadError=a,e.loadCounter=0;var o=Math.min(Math.pow(2,a-1)*n.fragLoadingRetryDelay,n.fragLoadingMaxRetryTimeout);wt.b.warn("mediaController: frag loading failed, retry in "+o+" ms"),this.retryDate=performance.now()+o,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.state=le.FRAG_LOADING_WAITING_RETRY}else wt.b.error("mediaController: "+t.details+" reaches max retry, redispatch as fatal ..."),t.fatal=!0,this.state=le.ERROR}break;case Lt.a.FRAG_LOOP_LOADING_ERROR:t.fatal||(i?(this._reduceMaxBufferLength(e.duration),this.state=le.IDLE):e.autoLevel&&0!==e.level||(t.fatal=!0,this.state=le.ERROR));break;case Lt.a.LEVEL_LOAD_ERROR:case Lt.a.LEVEL_LOAD_TIMEOUT:this.state!==le.ERROR&&(t.fatal?(this.state=le.ERROR,wt.b.warn("streamController: "+t.details+",switch to "+this.state+" state ...")):t.levelRetry||this.state!==le.WAITING_LEVEL||(this.state=le.IDLE));break;case Lt.a.BUFFER_FULL_ERROR:"main"!==t.parent||this.state!==le.PARSING&&this.state!==le.PARSED||(i?(this._reduceMaxBufferLength(this.config.maxBufferLength),this.state=le.IDLE):(wt.b.warn("buffer full error also media.currentTime is not buffered, flush everything"),this.fragCurrent=null,this.flushMainBuffer(0,Number.POSITIVE_INFINITY)))}}},e.prototype._reduceMaxBufferLength=function(t){var e=this.config;e.maxMaxBufferLength>=t&&(e.maxMaxBufferLength/=2,wt.b.warn("main:reduce max buffer length to "+e.maxMaxBufferLength+"s"),this.fragLoadIdx+=2*e.fragLoadingLoopThreshold)},e.prototype._checkBuffer=function(){var t=this.media,e=this.config;if(t&&t.readyState){var r=t.currentTime,i=this.mediaBuffer?this.mediaBuffer:t,a=i.buffered;if(!this.loadedmetadata&&a.length){this.loadedmetadata=!0;var n=t.seeking?r:this.startPosition,o=Jt.isBuffered(i,n),s=a.start(0);(r!==n||!o&&Math.abs(n-s)1e3*e.lowBufferWatchdogPeriod){this.stallReported||(this.stallReported=!0,wt.b.warn("playback stalling in low buffer @"+r),c.trigger(_t.a.ERROR,{type:Lt.b.MEDIA_ERROR,details:Lt.a.BUFFER_STALLED_ERROR,fatal:!1,buffer:p}));var v=l.nextStart,y=v-r;if(v&&y0){this.nudgeRetry=++g;var m=g*e.nudgeOffset;wt.b.log("adjust currentTime from "+t.currentTime+" to next buffered @ "+v+" + nudge "+m),t.currentTime=v+m,this.stalled=void 0,c.trigger(_t.a.ERROR,{type:Lt.b.MEDIA_ERROR,details:Lt.a.BUFFER_SEEK_OVER_HOLE,fatal:!1,hole:v+m-r})}}else if(p>.5&&f>1e3*e.highBufferWatchdogPeriod)if(this.stallReported||(this.stallReported=!0,wt.b.warn("playback stalling in high buffer @"+r),c.trigger(_t.a.ERROR,{type:Lt.b.MEDIA_ERROR,details:Lt.a.BUFFER_STALLED_ERROR,fatal:!1,buffer:p})),this.stalled=void 0,this.nudgeRetry=++g,g"+t),this.hls.trigger(_t.a.STREAM_STATE_TRANSITION,{previousState:e,nextState:t})}},get:function(){return this._state}},{key:"currentLevel",get:function(){var t=this.media;if(t){var e=this.getBufferedFrag(t.currentTime);if(e)return e.level}return-1}},{key:"nextBufferedFrag",get:function(){var t=this.media;return t?this.followingBufferedFrag(this.getBufferedFrag(t.currentTime)):null}},{key:"nextLevel",get:function(){var t=this.nextBufferedFrag;return t?t.level:-1}},{key:"liveSyncPosition",get:function(){return this._liveSyncPosition},set:function(t){this._liveSyncPosition=t}}]),e}(It),de=ue,he=function(){function t(t,e){for(var r=0;r0})}else l.trigger(_t.a.ERROR,{type:Lt.b.MEDIA_ERROR,details:Lt.a.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:l.url,reason:"no level with compatible codecs found in manifest"})},e.prototype.setLevelInternal=function(t){var e=this._levels,r=this.hls;if(t>=0&&t1&&a.loadErrort&&(this._level===t&&void 0!==e[t].details||this.setLevelInternal(t))}},{key:"manualLevel",get:function(){return this._manualLevel},set:function(t){this._manualLevel=t,void 0===this._startLevel&&(this._startLevel=t),-1!==t&&(this.level=t)}},{key:"firstLevel",get:function(){return this._firstLevel},set:function(t){this._firstLevel=t}},{key:"startLevel",get:function(){if(void 0===this._startLevel){var t=this.hls.config.startLevel;return void 0!==t?t:this._firstLevel}return this._startLevel},set:function(t){this._startLevel=t}},{key:"nextLoadLevel",get:function(){return-1!==this._manualLevel?this._manualLevel:this.hls.nextAutoLevel},set:function(t){this.level=t,-1===this._manualLevel&&(this.hls.nextAutoLevel=t)}}]),e}(It),fe=ce,pe=r(3),ge=function(t){function e(r){I(this,e);var i=O(this,t.call(this,r,_t.a.MEDIA_ATTACHED,_t.a.MEDIA_DETACHING,_t.a.FRAG_PARSING_METADATA));return i.id3Track=void 0,i.media=void 0,i}return C(e,t),e.prototype.destroy=function(){It.prototype.destroy.call(this)},e.prototype.onMediaAttached=function(t){this.media=t.media,this.media&&(this.id3Track=this.media.addTextTrack("metadata","id3"),this.id3Track.mode="hidden")},e.prototype.onMediaDetaching=function(){this.media=void 0},e.prototype.onFragParsingMetadata=function(t){for(var e=t.frag,r=t.samples,i=window.WebKitDataCue||window.VTTCue||window.TextTrackCue,a=0;a=this.minWeight_},t.prototype.getEstimate=function(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_},t.prototype.destroy=function(){},t}(),Ee=be,Te=function(){function t(t,e){for(var r=0;r500*r.duration/s){var l=t.levels,u=Math.max(1,n.bw?n.bw/8:1e3*n.loaded/o),d=l[r.level],h=d.realBitrate?Math.max(d.realBitrate,d.bitrate):d.bitrate,c=n.total?n.total:Math.max(n.loaded,Math.round(r.duration*h/8)),f=e.currentTime,p=(c-n.loaded)/u,g=(Jt.bufferInfo(e,f,t.config.maxBufferHole).end-f)/s;if(g<2*r.duration/s&&p>g){var v=void 0,y=void 0;for(y=r.level-1;y>a;y--){var m=l[y].realBitrate?Math.max(l[y].realBitrate,l[y].bitrate):l[y].bitrate;if((v=r.duration*m/(6.4*u))=i;u--){var d=l[u],h=d.details,c=h?h.totalduration/h.fragments.length:e,f=!!h&&h.live,p=void 0;p=u<=t?o*r:s*r;var g=l[u].realBitrate?Math.max(l[u].realBitrate,l[u].bitrate):l[u].bitrate,v=g*c/p;if(wt.b.trace("level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: "+u+"/"+Math.round(p)+"/"+g+"/"+c+"/"+n+"/"+v),p>g&&(!v||f&&!this.bitrateTestDelay||v=0)return c;wt.b.trace("rebuffering expected to happen, lets try to find a quality level minimizing the rebuffering");var f=s?Math.min(s,i.maxStarvationDelay):i.maxStarvationDelay,p=i.abrBandWidthFactor,g=i.abrBandWidthUpFactor;if(0===h){var v=this.bitrateTestDelay;if(v){f=(s?Math.min(s,i.maxLoadingDelay):i.maxLoadingDelay)-v,wt.b.trace("bitrate test took "+Math.round(1e3*v)+"ms, set first fragment max fetchDuration to "+Math.round(1e3*f)+" ms"),p=g=1}}return c=this._findBestLevel(o,s,d,a,e,h+f,p,g,r),Math.max(c,0)}}]),e}(It),Se=Re,Ae=function(t){function e(r){U(this,e);var i=B(this,t.call(this,r,_t.a.MEDIA_ATTACHING,_t.a.MEDIA_DETACHING,_t.a.MANIFEST_PARSED,_t.a.BUFFER_RESET,_t.a.BUFFER_APPENDING,_t.a.BUFFER_CODECS,_t.a.BUFFER_EOS,_t.a.BUFFER_FLUSHING,_t.a.LEVEL_PTS_UPDATED,_t.a.LEVEL_UPDATED));return i._msDuration=null,i._levelDuration=null,i.onsbue=i.onSBUpdateEnd.bind(i),i.onsbe=i.onSBUpdateError.bind(i),i.pendingTracks={},i.tracks={},i}return G(e,t),e.prototype.destroy=function(){It.prototype.destroy.call(this)},e.prototype.onLevelPtsUpdated=function(t){var e=t.type,r=this.tracks.audio;if("audio"===e&&r&&"audio/mpeg"===r.container){var i=this.sourceBuffer.audio;if(Math.abs(i.timestampOffset-t.start)>.1){var a=i.updating;try{i.abort()}catch(t){a=!0,wt.b.warn("can not abort audio buffer: "+t)}a?this.audioTimestampOffset=t.start:(wt.b.warn("change mpeg audio timestamp offset from "+i.timestampOffset+" to "+t.start),i.timestampOffset=t.start)}}},e.prototype.onManifestParsed=function(t){var e=t.audio,r=t.video||t.levels.length&&t.audio,i=0;t.altAudio&&(e||r)&&(i=(e?1:0)+(r?1:0),wt.b.log(i+" sourceBuffer(s) expected")),this.sourceBufferNb=i},e.prototype.onMediaAttaching=function(t){var e=this.media=t.media;if(e){var r=this.mediaSource=new MediaSource;this.onmso=this.onMediaSourceOpen.bind(this),this.onmse=this.onMediaSourceEnded.bind(this),this.onmsc=this.onMediaSourceClose.bind(this),r.addEventListener("sourceopen",this.onmso),r.addEventListener("sourceended",this.onmse),r.addEventListener("sourceclose",this.onmsc),e.src=URL.createObjectURL(r)}},e.prototype.onMediaDetaching=function(){wt.b.log("media source detaching");var t=this.mediaSource;if(t){if("open"===t.readyState)try{t.endOfStream()}catch(t){wt.b.warn("onMediaDetaching:"+t.message+" while calling endOfStream")}t.removeEventListener("sourceopen",this.onmso),t.removeEventListener("sourceended",this.onmse),t.removeEventListener("sourceclose",this.onmsc),this.media&&(URL.revokeObjectURL(this.media.src),this.media.removeAttribute("src"),this.media.load()),this.mediaSource=null,this.media=null,this.pendingTracks={},this.tracks={},this.sourceBuffer={},this.flushRange=[],this.segments=[],this.appended=0}this.onmso=this.onmse=this.onmsc=null,this.hls.trigger(_t.a.MEDIA_DETACHED)},e.prototype.onMediaSourceOpen=function(){wt.b.log("media source opened"),this.hls.trigger(_t.a.MEDIA_ATTACHED,{media:this.media});var t=this.mediaSource;t&&t.removeEventListener("sourceopen",this.onmso),this.checkPendingTracks()},e.prototype.checkPendingTracks=function(){var t=this.pendingTracks,e=Object.keys(t).length;e&&(this.sourceBufferNb<=e||0===this.sourceBufferNb)&&(this.createSourceBuffers(t),this.pendingTracks={},this.doAppending())},e.prototype.onMediaSourceClose=function(){wt.b.log("media source closed")},e.prototype.onMediaSourceEnded=function(){wt.b.log("media source ended")},e.prototype.onSBUpdateEnd=function(){if(this.audioTimestampOffset){var t=this.sourceBuffer.audio;wt.b.warn("change mpeg audio timestamp offset from "+t.timestampOffset+" to "+this.audioTimestampOffset),t.timestampOffset=this.audioTimestampOffset,delete this.audioTimestampOffset}this._needsFlush&&this.doFlush(),this._needsEos&&this.checkEos(),this.appending=!1;var e=this.parent,r=this.segments.reduce(function(t,r){return r.parent===e?t+1:t},0);this.hls.trigger(_t.a.BUFFER_APPENDED,{parent:e,pending:r}),this._needsFlush||this.doAppending(),this.updateMediaElementDuration()},e.prototype.onSBUpdateError=function(t){wt.b.error("sourceBuffer error:",t),this.hls.trigger(_t.a.ERROR,{type:Lt.b.MEDIA_ERROR,details:Lt.a.BUFFER_APPENDING_ERROR,fatal:!1})},e.prototype.onBufferReset=function(){var t=this.sourceBuffer;for(var e in t){var r=t[e];try{this.mediaSource.removeSourceBuffer(r),r.removeEventListener("updateend",this.onsbue),r.removeEventListener("error",this.onsbe)}catch(t){}}this.sourceBuffer={},this.flushRange=[],this.segments=[],this.appended=0},e.prototype.onBufferCodecs=function(t){if(0===Object.keys(this.sourceBuffer).length){for(var e in t)this.pendingTracks[e]=t[e];var r=this.mediaSource;r&&"open"===r.readyState&&this.checkPendingTracks()}},e.prototype.createSourceBuffers=function(t){var e=this.sourceBuffer,r=this.mediaSource;for(var i in t)if(!e[i]){var a=t[i],n=a.levelCodec||a.codec,o=a.container+";codecs="+n;wt.b.log("creating sourceBuffer("+o+")");try{var s=e[i]=r.addSourceBuffer(o);s.addEventListener("updateend",this.onsbue),s.addEventListener("error",this.onsbe),this.tracks[i]={codec:n,container:a.container},a.buffer=s}catch(t){wt.b.error("error while trying to add sourceBuffer:"+t.message),this.hls.trigger(_t.a.ERROR,{type:Lt.b.MEDIA_ERROR,details:Lt.a.BUFFER_ADD_CODEC_ERROR,fatal:!1,err:t,mimeType:o})}}this.hls.trigger(_t.a.BUFFER_CREATED,{tracks:t})},e.prototype.onBufferAppending=function(t){this._needsFlush||(this.segments?this.segments.push(t):this.segments=[t],this.doAppending())},e.prototype.onBufferAppendFail=function(t){wt.b.error("sourceBuffer error:",t.event),this.hls.trigger(_t.a.ERROR,{type:Lt.b.MEDIA_ERROR,details:Lt.a.BUFFER_APPENDING_ERROR,fatal:!1})},e.prototype.onBufferEos=function(t){var e=this.sourceBuffer,r=t.type;for(var i in e)r&&i!==r||e[i].ended||(e[i].ended=!0,wt.b.log(i+" sourceBuffer now EOS"));this.checkEos()},e.prototype.checkEos=function(){var t=this.sourceBuffer,e=this.mediaSource;if(!e||"open"!==e.readyState)return void(this._needsEos=!1);for(var r in t){var i=t[r];if(!i.ended)return;if(i.updating)return void(this._needsEos=!0)}wt.b.log("all media data available, signal endOfStream() to MediaSource and stop loading fragment");try{e.endOfStream()}catch(t){wt.b.warn("exception while calling mediaSource.endOfStream()")}this._needsEos=!1},e.prototype.onBufferFlushing=function(t){this.flushRange.push({start:t.startOffset,end:t.endOffset,type:t.type}),this.flushBufferCounter=0,this.doFlush()},e.prototype.onLevelUpdated=function(t){var e=t.details;0!==e.fragments.length&&(this._levelDuration=e.totalduration+e.fragments[0].start,this.updateMediaElementDuration())},e.prototype.updateMediaElementDuration=function(){var t=this.media,e=this.mediaSource,r=this.sourceBuffer,i=this._levelDuration;if(null!==i&&t&&e&&r&&0!==t.readyState&&"open"===e.readyState){for(var a in r)if(r[a].updating)return;null===this._msDuration&&(this._msDuration=e.duration);var n=t.duration;(i>this._msDuration&&i>n||n===1/0||isNaN(n))&&(wt.b.log("Updating mediasource duration to "+i.toFixed(3)),this._msDuration=e.duration=i)}},e.prototype.doFlush=function(){for(;this.flushRange.length;){var t=this.flushRange[0];if(!this.flushBuffer(t.start,t.end,t.type))return void(this._needsFlush=!0);this.flushRange.shift(),this.flushBufferCounter=0}if(0===this.flushRange.length){this._needsFlush=!1;var e=0,r=this.sourceBuffer;try{for(var i in r)e+=r[i].buffered.length}catch(t){wt.b.error("error while accessing sourceBuffer.buffered")}this.appended=e,this.hls.trigger(_t.a.BUFFER_FLUSHED)}},e.prototype.doAppending=function(){var t=this.hls,e=this.sourceBuffer,r=this.segments;if(Object.keys(e).length){if(this.media.error)return this.segments=[],void wt.b.error("trying to append although a media error occured, flush segment and abort");if(this.appending)return;if(r&&r.length){var i=r.shift();try{var a=i.type,n=e[a];n?n.updating?r.unshift(i):(n.ended=!1,this.parent=i.parent,n.appendBuffer(i.data),this.appendError=0,this.appended++,this.appending=!0):this.onSBUpdateEnd()}catch(e){wt.b.error("error while trying to append buffer:"+e.message),r.unshift(i);var o={type:Lt.b.MEDIA_ERROR,parent:i.parent};if(22===e.code)return this.segments=[],o.details=Lt.a.BUFFER_FULL_ERROR,o.fatal=!1,void t.trigger(_t.a.ERROR,o);if(this.appendError?this.appendError++:this.appendError=1,o.details=Lt.a.BUFFER_APPEND_ERROR,this.appendError>t.config.appendErrorMaxRetry)return wt.b.log("fail "+t.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),r=[],o.fatal=!0,void t.trigger(_t.a.ERROR,o);o.fatal=!1,t.trigger(_t.a.ERROR,o)}}}},e.prototype.flushBuffer=function(t,e,r){var i,a,n,o,s,l,u=this.sourceBuffer;if(Object.keys(u).length){if(wt.b.log("flushBuffer,pos/start/end: "+this.media.currentTime.toFixed(3)+"/"+t+"/"+e),this.flushBufferCounter.5)return this.flushBufferCounter++,wt.b.log("flush "+d+" ["+s+","+l+"], of ["+n+","+o+"], pos:"+this.media.currentTime),i.remove(s,l),!1}catch(t){wt.b.warn("exception while accessing sourcebuffer, it might have been removed from MediaSource")}}}else wt.b.warn("abort flushing too many retries");wt.b.log("buffer flushed")}return!0},e}(It),_e=Ae,Le=function(){function t(t,e){for(var r=0;rthis.autoLevelCapping&&e.streamController.nextLevelSwitch(),this.autoLevelCapping=e.autoLevelCapping}}},e.prototype.getMaxLevel=function(t){var r=this;if(!this.levels)return-1;var i=this.levels.filter(function(i,a){return e.isLevelAllowed(a,r.restrictedLevels)&&a<=t});return e.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)},e.isLevelAllowed=function(t){return-1===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]).indexOf(t)},e.getMaxLevelByMediaSize=function(t,e,r){if(!t||t&&!t.length)return-1;for(var i=t.length-1,a=0;a=e||n.height>=r)&&function(t,e){return!e||(t.width!==e.width||t.height!==e.height)}(n,t[a+1])){i=a;break}}return i},Le(e,[{key:"mediaWidth",get:function(){var t=void 0,r=this.media;return r&&(t=r.width||r.clientWidth||r.offsetWidth,t*=e.contentScaleFactor),t}},{key:"mediaHeight",get:function(){var t=void 0,r=this.media;return r&&(t=r.height||r.clientHeight||r.offsetHeight,t*=e.contentScaleFactor),t}}],[{key:"contentScaleFactor",get:function(){var t=1;try{t=window.devicePixelRatio}catch(t){}return t}}]),e}(It),De=we,ke=function(t){function e(r){return W(this,e),V(this,t.call(this,r,_t.a.MEDIA_ATTACHING))}return Y(e,t),e.prototype.destroy=function(){this.timer&&clearInterval(this.timer),this.isVideoPlaybackQualityAvailable=!1},e.prototype.onMediaAttaching=function(t){var e=this.hls.config;if(e.capLevelOnFPSDrop){"function"==typeof(this.video=t.media instanceof HTMLVideoElement?t.media:null).getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),clearInterval(this.timer),this.timer=setInterval(this.checkFPSInterval.bind(this),e.fpsDroppedMonitoringPeriod)}},e.prototype.checkFPS=function(t,e,r){var i=performance.now();if(e){if(this.lastTime){var a=i-this.lastTime,n=r-this.lastDroppedFrames,o=e-this.lastDecodedFrames,s=1e3*n/a,l=this.hls;if(l.trigger(_t.a.FPS_DROP,{currentDropped:n,currentDecoded:o,totalDroppedFrames:r}),s>0&&n>l.config.fpsDroppedMonitoringThreshold*o){var u=l.currentLevel;wt.b.warn("drop FPS ratio greater than max allowed value for currentLevel: "+u),u>0&&(-1===l.autoLevelCapping||l.autoLevelCapping>=u)&&(u-=1,l.trigger(_t.a.FPS_DROP_LEVEL_CAPPING,{level:u,droppedLevel:l.currentLevel}),l.autoLevelCapping=u,l.streamController.nextLevelSwitch())}}this.lastTime=i,this.lastDroppedFrames=r,this.lastDecodedFrames=e}},e.prototype.checkFPSInterval=function(){var t=this.video;if(t)if(this.isVideoPlaybackQualityAvailable){var e=t.getVideoPlaybackQuality();this.checkFPS(t,e.totalVideoFrames,e.droppedVideoFrames)}else this.checkFPS(t,t.webkitDecodedFrameCount,t.webkitDroppedFrameCount)},e}(It),Ie=ke,Oe=function(){function t(e){X(this,t),e&&e.xhrSetup&&(this.xhrSetup=e.xhrSetup)}return t.prototype.destroy=function(){this.abort(),this.loader=null},t.prototype.abort=function(){var t=this.loader;t&&4!==t.readyState&&(this.stats.aborted=!0,t.abort()),window.clearTimeout(this.requestTimeout),this.requestTimeout=null,window.clearTimeout(this.retryTimeout),this.retryTimeout=null},t.prototype.load=function(t,e,r){this.context=t,this.config=e,this.callbacks=r,this.stats={trequest:performance.now(),retry:0},this.retryDelay=e.retryDelay,this.loadInternal()},t.prototype.loadInternal=function(){var t,e=this.context;t="undefined"!=typeof XDomainRequest?this.loader=new XDomainRequest:this.loader=new XMLHttpRequest;var r=this.stats;r.tfirst=0,r.loaded=0;var i=this.xhrSetup;try{if(i)try{i(t,e.url)}catch(r){t.open("GET",e.url,!0),i(t,e.url)}t.readyState||t.open("GET",e.url,!0)}catch(r){return void this.callbacks.onError({code:t.status,text:r.message},e)}e.rangeEnd&&t.setRequestHeader("Range","bytes="+e.rangeStart+"-"+(e.rangeEnd-1)),t.onreadystatechange=this.readystatechange.bind(this),t.onprogress=this.loadprogress.bind(this),t.responseType=e.responseType,this.requestTimeout=window.setTimeout(this.loadtimeout.bind(this),this.config.timeout),t.send()},t.prototype.readystatechange=function(t){var e=t.currentTarget,r=e.readyState,i=this.stats,a=this.context,n=this.config;if(!i.aborted&&r>=2)if(window.clearTimeout(this.requestTimeout),0===i.tfirst&&(i.tfirst=Math.max(performance.now(),i.trequest)),4===r){var o=e.status;if(o>=200&&o<300){i.tload=Math.max(i.tfirst,performance.now());var s=void 0,l=void 0;"arraybuffer"===a.responseType?(s=e.response,l=s.byteLength):(s=e.responseText,l=s.length),i.loaded=i.total=l;var u={url:e.responseURL,data:s};this.callbacks.onSuccess(u,i,a,e)}else i.retry>=n.maxRetry||o>=400&&o<499?(wt.b.error(o+" while loading "+a.url),this.callbacks.onError({code:o,text:e.statusText},a,e)):(wt.b.warn(o+" while loading "+a.url+", retrying in "+this.retryDelay+"..."),this.destroy(),this.retryTimeout=window.setTimeout(this.loadInternal.bind(this),this.retryDelay),this.retryDelay=Math.min(2*this.retryDelay,n.maxRetryDelay),i.retry++)}else this.requestTimeout=window.setTimeout(this.loadtimeout.bind(this),n.timeout)},t.prototype.loadtimeout=function(){wt.b.warn("timeout while loading "+this.context.url),this.callbacks.onTimeout(this.stats,this.context,null)},t.prototype.loadprogress=function(t){var e=t.currentTarget,r=this.stats;r.loaded=t.loaded,t.lengthComputable&&(r.total=t.total);var i=this.callbacks.onProgress;i&&i(r,this.context,null,e)},t}(),Ce=Oe,Pe=function(){function t(t,e){for(var r=0;r1&&setTimeout(this.tick,1),this.ticks=0)},e.prototype.doTick=function(){this.updateTrack(this.trackId)},e.prototype.onError=function(t){t.fatal&&t.type===Lt.b.NETWORK_ERROR&&this.cleanTimer()},e.prototype.onManifestLoading=function(){this.tracks=[],this.trackId=-1},e.prototype.onManifestParsed=function(t){var e=this,r=t.audioTracks||[],i=!1;this.tracks=r,this.hls.trigger(_t.a.AUDIO_TRACKS_UPDATED,{audioTracks:r});var a=0;r.forEach(function(t){if(t.default&&!i)return e.audioTrack=a,void(i=!0);a++}),!1===i&&r.length&&(wt.b.log("no default audio track defined, use first audio track as default"),this.audioTrack=0)},e.prototype.onAudioTrackLoaded=function(t){t.id=0&&t=0&&t0&&-1===t?(wt.b.log("audio:override startPosition with lastCurrentTime @"+e.toFixed(3)),this.state=Me.IDLE):(this.lastCurrentTime=this.startPosition?this.startPosition:t,this.state=Me.STARTING),this.nextLoadPosition=this.startPosition=this.lastCurrentTime,this.tick()}else this.startPosition=t,this.state=Me.STOPPED},e.prototype.stopLoad=function(){var t=this.fragCurrent;t&&(t.loader&&t.loader.abort(),this.fragCurrent=null),this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.state=Me.STOPPED},e.prototype.tick=function(){1===++this.ticks&&(this.doTick(),this.ticks>1&&setTimeout(this.tick,1),this.ticks=0)},e.prototype.doTick=function(){var t=void 0,e=void 0,r=this.hls,i=r.config;switch(this.state){case Me.ERROR:case Me.PAUSED:case Me.BUFFER_FLUSHING:break;case Me.STARTING:this.state=Me.WAITING_TRACK,this.loadedmetadata=!1;break;case Me.IDLE:var a=this.tracks;if(!a)break;if(!this.media&&(this.startFragRequested||!i.startFragPrefetch))break;var n=0;this.loadedmetadata?n=this.media.currentTime:this.nextLoadPosition>=0&&(n=this.nextLoadPosition);var o=this.mediaBuffer?this.mediaBuffer:this.media,s=Jt.bufferInfo(o,n,i.maxBufferHole),l=s.len,u=s.end,d=this.fragPrevious,h=i.maxMaxBufferLength,c=this.audioSwitch,f=this.trackId;if((lv||s.nextStart))return;wt.b.log("alt audio track ahead of main track, seek to start of alt audio track"),this.media.currentTime=v+.05}if(e.initSegment&&!e.initSegment.data)m=e.initSegment;else if(u<=v){if(m=p[0],null!==this.videoTrackCC&&m.cc!==this.videoTrackCC&&(m=b(p,this.videoTrackCC)),e.live&&m.loadIdx&&m.loadIdx===this.fragLoadIdx){var E=s.nextStart?s.nextStart:v;return wt.b.log("no alt audio available @currentTime:"+this.media.currentTime+", seeking @"+(E+.05)),void(this.media.currentTime=E+.05)}}else{var T=void 0,R=i.maxFragLookUpTolerance,S=d?p[d.sn-p[0].sn+1]:void 0,A=function(t){var e=Math.min(R,t.duration);return t.start+t.duration-e<=u?1:t.start-e>u&&t.start?-1:0};uy-R&&(R=0),T=S&&!A(S)?S:qt.search(p,A)):T=p[g-1],T&&(m=T,v=T.start,d&&m.level===d.level&&m.sn===d.sn&&(m.sn_&&Math.abs(this.fragLoadIdx-m.loadIdx)<_)return void r.trigger(_t.a.ERROR,{type:Lt.b.MEDIA_ERROR,details:Lt.a.FRAG_LOOP_LOADING_ERROR,fatal:!1,frag:m})}else m.loadCounter=1;m.loadIdx=this.fragLoadIdx,this.fragCurrent=m,this.startFragRequested=!0,isNaN(m.sn)||(this.nextLoadPosition=m.start+m.duration),r.trigger(_t.a.FRAG_LOADING,{frag:m}),this.state=Me.FRAG_LOADING}}break;case Me.WAITING_TRACK:t=this.tracks[this.trackId],t&&t.details&&(this.state=Me.IDLE);break;case Me.FRAG_LOADING_WAITING_RETRY:var L=performance.now(),w=this.retryDate;o=this.media;var D=o&&o.seeking;(!w||L>=w||D)&&(wt.b.log("audioStreamController: retryDate reached, switch back to IDLE state"),this.state=Me.IDLE);break;case Me.WAITING_INIT_PTS:var k=this.videoTrackCC;if(void 0===this.initPTS[k])break;var I=this.waitingFragment;if(I){var O=I.frag.cc;k!==O?(t=this.tracks[this.trackId],t.details&&t.details.live&&(wt.b.warn("Waiting fragment CC ("+O+") does not match video track CC ("+k+")"),this.waitingFragment=null,this.state=Me.IDLE)):(this.state=Me.FRAG_LOADING,this.onFragLoaded(this.waitingFragment),this.waitingFragment=null)}else this.state=Me.IDLE;break;case Me.STOPPED:case Me.FRAG_LOADING:case Me.PARSING:case Me.PARSED:case Me.ENDED:}},e.prototype.onMediaAttached=function(t){var e=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),e.addEventListener("seeking",this.onvseeking),e.addEventListener("ended",this.onvended);var r=this.config;this.tracks&&r.autoStartLoad&&this.startLoad(r.startPosition)},e.prototype.onMediaDetaching=function(){var t=this.media;t&&t.ended&&(wt.b.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0);var e=this.tracks;e&&e.forEach(function(t){t.details&&t.details.fragments.forEach(function(t){t.loadCounter=void 0})}),t&&(t.removeEventListener("seeking",this.onvseeking),t.removeEventListener("ended",this.onvended),this.onvseeking=this.onvseeked=this.onvended=null),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.stopLoad()},e.prototype.onMediaSeeking=function(){this.state===Me.ENDED&&(this.state=Me.IDLE),this.media&&(this.lastCurrentTime=this.media.currentTime),void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold),this.tick()},e.prototype.onMediaEnded=function(){this.startPosition=this.lastCurrentTime=0},e.prototype.onAudioTracksUpdated=function(t){wt.b.log("audio tracks updated"),this.tracks=t.audioTracks},e.prototype.onAudioTrackSwitching=function(t){var e=!!t.url;this.trackId=t.id,this.fragCurrent=null,this.state=Me.PAUSED,this.waitingFragment=null,e?this.timer||(this.timer=setInterval(this.ontick,100)):this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),e&&(this.audioSwitch=!0,this.state=Me.IDLE,void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold)),this.tick()},e.prototype.onAudioTrackLoaded=function(t){var e=t.details,r=t.id,i=this.tracks[r],a=e.totalduration,n=0;if(wt.b.log("track "+r+" loaded ["+e.startSN+","+e.endSN+"],duration:"+a),e.live){var o=i.details;o&&e.fragments.length>0?(y(o,e),n=e.fragments[0].start,e.PTSKnown?wt.b.log("live audio playlist sliding:"+n.toFixed(3)):wt.b.log("live audio playlist - outdated PTS, unknown sliding")):(e.PTSKnown=!1,wt.b.log("live audio playlist - first load, unknown sliding"))}else e.PTSKnown=!1;if(i.details=e,!this.startFragRequested){if(-1===this.startPosition){var s=e.startTimeOffset;isNaN(s)?this.startPosition=0:(wt.b.log("start time offset found in playlist, adjust startPosition to "+s),this.startPosition=s)}this.nextLoadPosition=this.startPosition}this.state===Me.WAITING_TRACK&&(this.state=Me.IDLE),this.tick()},e.prototype.onKeyLoaded=function(){this.state===Me.KEY_LOADING&&(this.state=Me.IDLE,this.tick())},e.prototype.onFragLoaded=function(t){var e=this.fragCurrent,r=t.frag;if(this.state===Me.FRAG_LOADING&&e&&"audio"===r.type&&r.level===e.level&&r.sn===e.sn){var i=this.tracks[this.trackId],a=i.details,n=a.totalduration,o=e.level,s=e.sn,l=e.cc,u=this.config.defaultAudioCodec||i.audioCodec||"mp4a.40.2",d=this.stats=t.stats;if("initSegment"===s)this.state=Me.IDLE,d.tparsed=d.tbuffered=performance.now(),a.initSegment.data=t.payload,this.hls.trigger(_t.a.FRAG_BUFFERED,{stats:d,frag:e,id:"audio"}),this.tick();else{this.state=Me.PARSING,this.appended=!1,this.demuxer||(this.demuxer=new ae(this.hls,"audio"));var h=this.initPTS[l],c=a.initSegment?a.initSegment.data:[];if(a.initSegment||void 0!==h){this.pendingBuffering=!0,wt.b.log("Demuxing "+s+" of ["+a.startSN+" ,"+a.endSN+"],track "+o);this.demuxer.push(t.payload,c,u,null,e,n,!1,h)}else wt.b.log("unknown video PTS for continuity counter "+l+", waiting for video PTS before demuxing audio frag "+s+" of ["+a.startSN+" ,"+a.endSN+"],track "+o),this.waitingFragment=t,this.state=Me.WAITING_INIT_PTS}}this.fragLoadError=0},e.prototype.onFragParsingInitSegment=function(t){var e=this.fragCurrent,r=t.frag;if(e&&"audio"===t.id&&r.sn===e.sn&&r.level===e.level&&this.state===Me.PARSING){var i=t.tracks,a=void 0;if(i.video&&delete i.video,a=i.audio){a.levelCodec=a.codec,a.id=t.id,this.hls.trigger(_t.a.BUFFER_CODECS,i),wt.b.log("audio track:audio,container:"+a.container+",codecs[level/parsed]=["+a.levelCodec+"/"+a.codec+"]");var n=a.initSegment;if(n){var o={type:"audio",data:n,parent:"audio",content:"initSegment"};this.audioSwitch?this.pendingData=[o]:(this.appended=!0,this.pendingBuffering=!0,this.hls.trigger(_t.a.BUFFER_APPENDING,o))}this.tick()}}},e.prototype.onFragParsingData=function(t){var e=this,r=this.fragCurrent,i=t.frag;if(r&&"audio"===t.id&&"audio"===t.type&&i.sn===r.sn&&i.level===r.level&&this.state===Me.PARSING){var a=this.trackId,n=this.tracks[a],o=this.hls;isNaN(t.endPTS)&&(t.endPTS=t.startPTS+r.duration,t.endDTS=t.startDTS+r.duration),wt.b.log("parsed "+t.type+",PTS:["+t.startPTS.toFixed(3)+","+t.endPTS.toFixed(3)+"],DTS:["+t.startDTS.toFixed(3)+"/"+t.endDTS.toFixed(3)+"],nb:"+t.nb),v(n.details,r,t.startPTS,t.endPTS);var s=this.audioSwitch,l=this.media,u=!1;if(s&&l)if(l.readyState){var d=l.currentTime;wt.b.log("switching audio track : currentTime:"+d),d>=t.startPTS&&(wt.b.log("switching audio track : flushing all audio"),this.state=Me.BUFFER_FLUSHING,o.trigger(_t.a.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"}),u=!0,this.audioSwitch=!1,o.trigger(_t.a.AUDIO_TRACK_SWITCHED,{id:a}))}else this.audioSwitch=!1,o.trigger(_t.a.AUDIO_TRACK_SWITCHED,{id:a});var h=this.pendingData;this.audioSwitch||([t.data1,t.data2].forEach(function(e){e&&e.length&&h.push({type:t.type,data:e,parent:"audio",content:"data"})}),!u&&h.length&&(h.forEach(function(t){e.state===Me.PARSING&&(e.pendingBuffering=!0,e.hls.trigger(_t.a.BUFFER_APPENDING,t))}),this.pendingData=[],this.appended=!0)),this.tick()}},e.prototype.onFragParsed=function(t){var e=this.fragCurrent,r=t.frag;e&&"audio"===t.id&&r.sn===e.sn&&r.level===e.level&&this.state===Me.PARSING&&(this.stats.tparsed=performance.now(),this.state=Me.PARSED,this._checkAppendedParsed())},e.prototype.onBufferCreated=function(t){var e=t.tracks.audio;e&&(this.mediaBuffer=e.buffer,this.loadedmetadata=!0)},e.prototype.onBufferAppended=function(t){if("audio"===t.parent){var e=this.state;e!==Me.PARSING&&e!==Me.PARSED||(this.pendingBuffering=t.pending>0,this._checkAppendedParsed())}},e.prototype._checkAppendedParsed=function(){if(!(this.state!==Me.PARSED||this.appended&&this.pendingBuffering)){var t=this.fragCurrent,e=this.stats,r=this.hls;if(t){this.fragPrevious=t,e.tbuffered=performance.now(),r.trigger(_t.a.FRAG_BUFFERED,{stats:e,frag:t,id:"audio"});var i=this.mediaBuffer?this.mediaBuffer:this.media;wt.b.log("audio buffered : "+oe.toString(i.buffered)),this.audioSwitch&&this.appended&&(this.audioSwitch=!1,r.trigger(_t.a.AUDIO_TRACK_SWITCHED,{id:this.trackId})),this.state=Me.IDLE}this.tick()}},e.prototype.onError=function(t){var e=t.frag;if(!e||"audio"===e.type)switch(t.details){case Lt.a.FRAG_LOAD_ERROR:case Lt.a.FRAG_LOAD_TIMEOUT:if(!t.fatal){var r=this.fragLoadError;r?r++:r=1;var i=this.config;if(r<=i.fragLoadingMaxRetry){this.fragLoadError=r,e.loadCounter=0;var a=Math.min(Math.pow(2,r-1)*i.fragLoadingRetryDelay,i.fragLoadingMaxRetryTimeout);wt.b.warn("audioStreamController: frag loading failed, retry in "+a+" ms"),this.retryDate=performance.now()+a,this.state=Me.FRAG_LOADING_WAITING_RETRY}else wt.b.error("audioStreamController: "+t.details+" reaches max retry, redispatch as fatal ..."),t.fatal=!0,this.state=Me.ERROR}break;case Lt.a.FRAG_LOOP_LOADING_ERROR:case Lt.a.AUDIO_TRACK_LOAD_ERROR:case Lt.a.AUDIO_TRACK_LOAD_TIMEOUT:case Lt.a.KEY_LOAD_ERROR:case Lt.a.KEY_LOAD_TIMEOUT:this.state!==Me.ERROR&&(this.state=t.fatal?Me.ERROR:Me.IDLE,wt.b.warn("audioStreamController: "+t.details+" while loading frag,switch to "+this.state+" state ..."));break;case Lt.a.BUFFER_FULL_ERROR:if("audio"===t.parent&&(this.state===Me.PARSING||this.state===Me.PARSED)){var n=this.mediaBuffer,o=this.media.currentTime;if(n&&Jt.isBuffered(n,o)&&Jt.isBuffered(n,o+.5)){var s=this.config;s.maxMaxBufferLength>=s.maxBufferLength&&(s.maxMaxBufferLength/=2,wt.b.warn("audio:reduce max buffer length to "+s.maxMaxBufferLength+"s"),this.fragLoadIdx+=2*s.fragLoadingLoopThreshold),this.state=Me.IDLE}else wt.b.warn("buffer full error also media.currentTime is not buffered, flush audio buffer"),this.fragCurrent=null,this.state=Me.BUFFER_FLUSHING,this.hls.trigger(_t.a.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"})}}},e.prototype.onBufferFlushed=function(){var t=this,e=this.pendingData;e&&e.length?(wt.b.log("appending pending audio data on Buffer Flushed"),e.forEach(function(e){t.hls.trigger(_t.a.BUFFER_APPENDING,e)}),this.appended=!0,this.pendingData=[],this.state=Me.PARSED):(this.state=Me.IDLE,this.fragPrevious=null,this.tick())},Ne(e,[{key:"state",set:function(t){if(this.state!==t){var e=this.state;this._state=t,wt.b.log("audio stream:"+e+"->"+t)}},get:function(){return this._state}}]),e}(It),Be=Ue,Ge=function(){function t(t){return"string"==typeof t&&(!!n[t.toLowerCase()]&&t.toLowerCase())}function e(t){return"string"==typeof t&&(!!o[t.toLowerCase()]&&t.toLowerCase())}function r(t){for(var e=1;e100)throw new Error("Position must be between 0 and 100.");E=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"size",r({},u,{get:function(){return T},set:function(t){if(t<0||t>100)throw new Error("Size must be between 0 and 100.");T=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"align",r({},u,{get:function(){return R},set:function(t){var r=e(t);if(!r)throw new SyntaxError("An invalid or illegal string was specified.");R=r,this.hasBeenReset=!0}})),s.displayState=void 0,l)return s}if("undefined"!=typeof window&&window.VTTCue)return window.VTTCue;var a="auto",n={"":!0,lr:!0,rl:!0},o={start:!0,middle:!0,end:!0,left:!0,right:!0};return i.prototype.getCueAsHTML=function(){return window.WebVTT.convertCueToDOMTree(window,this.text)},i}(),He=function(){return{decode:function(t){if(!t)return"";if("string"!=typeof t)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(t))}}};rt.prototype={set:function(t,e){this.get(t)||""===e||(this.values[t]=e)},get:function(t,e,r){return r?this.has(t)?this.values[t]:e[r]:this.has(t)?this.values[t]:e},has:function(t){return t in this.values},alt:function(t,e,r){for(var i=0;i=0&&e<=100)&&(this.set(t,e),!0)}};var je=new Ge(0,0,0),Ke="middle"===je.align?"middle":"center";tt.prototype={parse:function(t){function e(){var t=r.buffer,e=0;for(t=nt(t);e=r&&console.log(this.time.toFixed(3)+" ["+t+"] "+e)}},er=function(t){for(var e=[],r=0;rze&&(tr.log("ERROR","Too large cursor position "+this.pos),this.pos=ze)},t.prototype.moveCursor=function(t){var e=this.pos+t;if(t>1)for(var r=this.pos+1;r=144&&this.backSpace();var e=Ye(t);if(this.pos>=ze)return void tr.log("WARNING","Cannot insert "+t.toString(16)+" ("+e+") at position "+this.pos+". Skipping it!");this.chars[this.pos].setChar(e,this.currPenState),this.moveCursor(1)},t.prototype.clearFromPos=function(t){var e;for(e=t;e0&&(r=t?"["+e.join(" | ")+"]":e.join("\n")),r},t.prototype.getTextAndFormat=function(){return this.rows},t}(),or=function(){function t(e,r){st(this,t),this.chNr=e,this.outputFilter=r,this.mode=null,this.verbose=0,this.displayedMemory=new nr,this.nonDisplayedMemory=new nr,this.lastOutputScreen=new nr,this.currRollUpRow=this.displayedMemory.rows[Xe-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}return t.prototype.reset=function(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.currRollUpRow=this.displayedMemory.rows[Xe-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.lastCueEndTime=null},t.prototype.getHandler=function(){return this.outputFilter},t.prototype.setHandler=function(t){this.outputFilter=t},t.prototype.setPAC=function(t){this.writeScreen.setPAC(t)},t.prototype.setBkgData=function(t){this.writeScreen.setBkgData(t)},t.prototype.setMode=function(t){t!==this.mode&&(this.mode=t,tr.log("INFO","MODE="+t),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=t)},t.prototype.insertChars=function(t){for(var e=0;e=46,e.italics)e.foreground="white";else{var r=Math.floor(t/2)-16,i=["white","green","blue","cyan","red","yellow","magenta"];e.foreground=i[r]}tr.log("INFO","MIDROW: "+JSON.stringify(e)),this.writeScreen.setPen(e)},t.prototype.outputDataUpdate=function(){var t=tr.time;null!==t&&this.outputFilter&&(this.outputFilter.updateData&&this.outputFilter.updateData(t,this.displayedMemory),null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,t,this.lastOutputScreen),this.cueStartTime=this.displayedMemory.isEmpty()?null:t):this.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))},t.prototype.cueSplitAtTime=function(t){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,t,this.displayedMemory),this.cueStartTime=t))},t}(),sr=function(){function t(e,r,i){st(this,t),this.field=e||1,this.outputs=[r,i],this.channels=[new or(1,r),new or(2,i)],this.currChNr=-1,this.lastCmdA=null,this.lastCmdB=null,this.bufferedData=[],this.startTime=null,this.lastTime=null,this.dataCounters={padding:0,char:0,cmd:0,other:0}}return t.prototype.getHandler=function(t){return this.channels[t].getHandler()},t.prototype.setHandler=function(t,e){this.channels[t].setHandler(e)},t.prototype.addData=function(t,e){var r,i,a,n=!1;this.lastTime=t,tr.setTime(t);for(var o=0;o ("+er([i,a])+")"),r=this.parseCmd(i,a),r||(r=this.parseMidrow(i,a)),r||(r=this.parsePAC(i,a)),r||(r=this.parseBackgroundAttributes(i,a)),!r&&(n=this.parseChars(i,a)))if(this.currChNr&&this.currChNr>=0){var s=this.channels[this.currChNr-1];s.insertChars(n)}else tr.log("WARNING","No channel found yet. TEXT-MODE?");r?this.dataCounters.cmd+=2:n?this.dataCounters.char+=2:(this.dataCounters.other+=2,tr.log("WARNING","Couldn't parse cleaned data "+er([i,a])+" orig: "+er([e[o],e[o+1]])))}else this.dataCounters.padding+=2},t.prototype.parseCmd=function(t,e){var r=null,i=(20===t||28===t)&&32<=e&&e<=47,a=(23===t||31===t)&&33<=e&&e<=35;if(!i&&!a)return!1;if(t===this.lastCmdA&&e===this.lastCmdB)return this.lastCmdA=null,this.lastCmdB=null,tr.log("DEBUG","Repeated command ("+er([t,e])+") is dropped"),!0;r=20===t||23===t?1:2;var n=this.channels[r-1];return 20===t||28===t?32===e?n.ccRCL():33===e?n.ccBS():34===e?n.ccAOF():35===e?n.ccAON():36===e?n.ccDER():37===e?n.ccRU(2):38===e?n.ccRU(3):39===e?n.ccRU(4):40===e?n.ccFON():41===e?n.ccRDC():42===e?n.ccTR():43===e?n.ccRTD():44===e?n.ccEDM():45===e?n.ccCR():46===e?n.ccENM():47===e&&n.ccEOC():n.ccTO(e-32),this.lastCmdA=t,this.lastCmdB=e,this.currChNr=r,!0},t.prototype.parseMidrow=function(t,e){var r=null;if((17===t||25===t)&&32<=e&&e<=47){if((r=17===t?1:2)!==this.currChNr)return tr.log("ERROR","Mismatch channel in midrow parsing"),!1;return this.channels[r-1].ccMIDROW(e),tr.log("DEBUG","MIDROW ("+er([t,e])+")"),!0}return!1},t.prototype.parsePAC=function(t,e){var r=null,i=null,a=(17<=t&&t<=23||25<=t&&t<=31)&&64<=e&&e<=127,n=(16===t||24===t)&&64<=e&&e<=95;if(!a&&!n)return!1;if(t===this.lastCmdA&&e===this.lastCmdB)return this.lastCmdA=null,this.lastCmdB=null,!0;r=t<=23?1:2,i=64<=e&&e<=95?1===r?qe[t]:Je[t]:1===r?Qe[t]:$e[t];var o=this.interpretPAC(i,e);return this.channels[r-1].setPAC(o),this.lastCmdA=t,this.lastCmdB=e,this.currChNr=r,!0},t.prototype.interpretPAC=function(t,e){var r=e,i={color:null,italics:!1,indent:null,underline:!1,row:t};return r=e>95?e-96:e-64,i.underline=1==(1&r),r<=13?i.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(r/2)]:r<=15?(i.italics=!0,i.color="white"):i.indent=4*Math.floor((r-16)/2),i},t.prototype.parseChars=function(t,e){var r=null,i=null,a=null;if(t>=25?(r=2,a=t-8):(r=1,a=t),17<=a&&a<=19){var n=e;n=17===a?e+80:18===a?e+112:e+144,tr.log("INFO","Special char '"+Ye(n)+"' in channel "+r),i=[n]}else 32<=t&&t<=127&&(i=0===e?[t]:[t,e]);if(i){var o=er(i);tr.log("DEBUG","Char codes = "+o.join(",")),this.lastCmdA=null,this.lastCmdB=null}return i},t.prototype.parseBackgroundAttributes=function(t,e){var r,i,a,n,o=(16===t||24===t)&&32<=e&&e<=47,s=(23===t||31===t)&&45<=e&&e<=47;return!(!o&&!s)&&(r={},16===t||24===t?(i=Math.floor((e-32)/2),r.background=Ze[i],e%2==1&&(r.background=r.background+"_semi")):45===e?r.background="transparent":(r.foreground="black",47===e&&(r.underline=!0)),a=t<24?1:2,n=this.channels[a-1],n.setBkgData(r),this.lastCmdA=null,this.lastCmdB=null,!0)},t.prototype.reset=function(){for(var t=0;t9?parseInt(t.substr(0,t.indexOf(":"))):0;return isNaN(e)||isNaN(r)||isNaN(i)||isNaN(a)?-1:(e+=1e3*r,e+=6e4*i,e+=36e5*a)},hr=function(t){for(var e=5381,r=t.length;r;)e=33*e^t.charCodeAt(--r);return(e>>>0).toString()},cr=function(t,e,r){var i=t[e],a=t[i.prevCC];if(!a||!a.new&&i.new)return t.ccOffset=t.presentationOffset=i.start,void(i.new=!1);for(;a&&a.new;)t.ccOffset+=i.start-a.start,i.new=!1,i=a,a=t[i.prevCC];t.presentationOffset=r},fr={parse:function(t,e,r,i,a,n){var o=/\r\n|\n\r|\n|\r/g,s=String.fromCharCode.apply(null,new Uint8Array(t)).trim().replace(o,"\n").split("\n"),l="00:00.000",u=0,d=0,h=0,c=[],f=void 0,p=!0,g=new We;g.oncue=function(t){var e=r[i],a=r.ccOffset;e&&e.new&&(void 0!==d?a=r.ccOffset=e.start:cr(r,i,h)),h&&(a=h+r.ccOffset-r.presentationOffset),t.startTime+=a-d,t.endTime+=a-d,t.id=hr(t.startTime)+hr(t.endTime)+hr(t.text),t.text=decodeURIComponent(escape(t.text)),t.endTime>0&&c.push(t)},g.onparsingerror=function(t){f=t},g.onflush=function(){if(f&&n)return void n(f);a(c)},s.forEach(function(t){if(p){if(ur(t,"X-TIMESTAMP-MAP=")){p=!1,t.substr(16).split(",").forEach(function(t){ur(t,"LOCAL:")?l=t.substr(6):ur(t,"MPEGTS:")&&(u=parseInt(t.substr(7)))});try{e=e<0?e+8589934592:e,u-=e,d=dr(l)/1e3,h=u/9e4,-1===d&&(f=new Error("Malformed X-TIMESTAMP-MAP: "+t))}catch(e){f=new Error("Malformed X-TIMESTAMP-MAP: "+t)}return}""===t&&(p=!1)}g.parse(t+"\n")}),g.flush()}},pr=fr,gr=function(t){function e(r){lt(this,e);var i=ut(this,t.call(this,r,_t.a.MEDIA_ATTACHING,_t.a.MEDIA_DETACHING,_t.a.FRAG_PARSING_USERDATA,_t.a.MANIFEST_LOADING,_t.a.MANIFEST_LOADED,_t.a.FRAG_LOADED,_t.a.LEVEL_SWITCHING,_t.a.INIT_PTS_FOUND,_t.a.FRAG_PARSING_INIT_SEGMENT));if(i.hls=r,i.config=r.config,i.enabled=!0,i.Cues=r.config.cueHandler,i.textTracks=[],i.tracks=[],i.unparsedVttFrags=[],i.initPTS=void 0,i.cueRanges=[],i.manifestCaptionsLabels={},i.config.enableCEA708Captions){var a=i,n=i.manifestCaptionsLabels,o={newCue:function(t,e,r){if(!a.textTrack1)if(a.config.renderNatively){var i=a.getExistingTrack("1");i?(a.textTrack1=i,ht(a.textTrack1),a.textTrack1.inuse=!0):(a.textTrack1=a.createTextTrack("captions",n.captionsTextTrack1Label,n.captionsTextTrack1LanguageCode),a.textTrack1.textTrack1=!0)}else a.textTrack1={_id:"textTrack1",label:n.captionsTextTrack1Label,kind:"captions",default:!1},a.hls.trigger(_t.a.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:[a.textTrack1]});a.addCues("textTrack1",t,e,r)}},s={newCue:function(t,e,r){if(!a.textTrack2)if(a.config.renderNatively){var i=a.getExistingTrack("2");i?(a.textTrack2=i,ht(a.textTrack2),a.textTrack2.inuse=!0):(a.textTrack2=a.createTextTrack("captions",n.captionsTextTrack2Label,n.captionsTextTrack2LanguageCode),a.textTrack2.textTrack2=!0)}else a.textTrack2={_id:"textTrack2",label:n.captionsTextTrack2Label,kind:"captions",default:!1},a.hls.trigger(_t.a.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:[a.textTrack2]});a.addCues("textTrack2",t,e,r)}};i.cea608Parser=new lr(0,o,s)}return i}return dt(e,t),e.prototype.addCues=function(t,e,r,i){for(var a=this,n=this.cueRanges,o=!1,s=n.length;s--;){var l=n[s],u=ft(l[0],l[1],e,r);if(u>=0&&(l[0]=Math.min(l[0],e),l[1]=Math.max(l[1],r),o=!0,u/(r-e)>.5))return}o||n.push([e,r]);var d=this.Cues.createCues(e,r,i);this.config.renderNatively?d.forEach(function(e){a[t].addCue(e)}):this.hls.trigger(_t.a.CUES_PARSED,{type:"captions",cues:d,track:t})},e.prototype.onInitPtsFound=function(t){var e=this;void 0===this.initPTS&&(this.initPTS=t.initPTS),this.unparsedVttFrags.length&&(this.unparsedVttFrags.forEach(function(t){e.onFragLoaded(t)}),this.unparsedVttFrags=[])},e.prototype.getExistingTrack=function(t){var e=this.media;if(e)for(var r=0;r=0&&t-1&&this.vttFragQueues[this.currentTrackId].length){var t=this.currentlyProcessing=this.vttFragQueues[this.currentTrackId].shift();this.hls.trigger(_t.a.FRAG_LOADING,{frag:t})}},e.prototype.onSubtitleFragProcessed=function(t){t.success&&this.vttFragSNsProcessed[t.frag.trackId].push(t.frag.sn),this.currentlyProcessing=null,this.nextFrag()},e.prototype.onError=function(t){var e=t.frag;e&&"subtitle"!==e.type||this.currentlyProcessing&&(this.currentlyProcessing=null,this.nextFrag())},e.prototype.onSubtitleTracksUpdated=function(t){var e=this;wt.b.log("subtitle tracks updated"),this.tracks=t.subtitleTracks,this.clearVttFragQueues(),this.vttFragSNsProcessed={},this.tracks.forEach(function(t){e.vttFragSNsProcessed[t.id]=[]})},e.prototype.onSubtitleTrackSwitch=function(t){this.currentTrackId=t.id,this.clearVttFragQueues()},e.prototype.onSubtitleTrackLoaded=function(t){var e=this.vttFragSNsProcessed[t.id],r=this.vttFragQueues[t.id],i=this.currentlyProcessing?this.currentlyProcessing.sn:-1,a=function(t){return e.indexOf(t.sn)>-1},n=function(t){return r.some(function(e){return e.sn===t.sn})};t.details.fragments.forEach(function(e){a(e)||e.sn===i||n(e)||(e.trackId=t.id,r.push(e))}),this.nextFrag()},e}(It),Tr=Er,Rr={autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,initialLiveManifestSize:1,maxBufferLength:30,maxBufferSize:6e7,maxBufferHole:.5,maxSeekHole:2,lowBufferWatchdogPeriod:.5,highBufferWatchdogPeriod:3,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.2,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxMaxBufferLength:600,enableWorker:!0,enableSoftwareAES:!0,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,startLevel:void 0,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3,fragLoadingLoopThreshold:3,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:Ce,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,fetchSetup:void 0,abrController:Se,bufferController:_e,capLevelController:De,fpsController:Ie,stretchShortVideoTrack:!1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0};"undefined"!=typeof full&&"full"!==full||(Rr.audioStreamController=Be,Rr.audioTrackController=Fe,Rr.subtitleStreamController=Tr,Rr.subtitleTrackController=br,Rr.timelineController=vr,Rr.cueHandler=Rt,Rr.enableCEA708Captions=!0,Rr.enableWebVTT=!0,Rr.captionsTextTrack1Label="English",Rr.captionsTextTrack1LanguageCode="en",Rr.captionsTextTrack2Label="Spanish",Rr.captionsTextTrack2LanguageCode="es");var Sr=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};Tt(this,t);var i=t.DefaultConfig;if((r.liveSyncDurationCount||r.liveMaxLatencyDurationCount)&&(r.liveSyncDuration||r.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");for(var a in i)a in r||(r[a]=i[a]);if(void 0!==r.liveMaxLatencyDurationCount&&r.liveMaxLatencyDurationCount<=r.liveSyncDurationCount)throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be gt "liveSyncDurationCount"');if(void 0!==r.liveMaxLatencyDuration&&(r.liveMaxLatencyDuration<=r.liveSyncDuration||void 0===r.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be gt "liveSyncDuration"');Object(wt.a)(r.debug),this.config=r,this._autoLevelCapping=-1;var n=this.observer=new te.a;n.trigger=function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;i1?e-1:0),i=1;i0&&void 0!==arguments[0]?arguments[0]:-1;wt.b.log("startLoad("+t+")"),this.networkControllers.forEach(function(e){e.startLoad(t)})},t.prototype.stopLoad=function(){wt.b.log("stopLoad"),this.networkControllers.forEach(function(t){t.stopLoad()})},t.prototype.swapAudioCodec=function(){wt.b.log("swapAudioCodec"),this.streamController.swapAudioCodec()},t.prototype.recoverMediaError=function(){wt.b.log("recoverMediaError");var t=this.media;this.detachMedia(),this.attachMedia(t)},Sr(t,[{key:"levels",get:function(){return this.levelController.levels}},{key:"currentLevel",get:function(){return this.streamController.currentLevel},set:function(t){wt.b.log("set currentLevel:"+t),this.loadLevel=t,this.streamController.immediateLevelSwitch()}},{key:"nextLevel",get:function(){return this.streamController.nextLevel},set:function(t){wt.b.log("set nextLevel:"+t),this.levelController.manualLevel=t,this.streamController.nextLevelSwitch()}},{key:"loadLevel",get:function(){return this.levelController.level},set:function(t){wt.b.log("set loadLevel:"+t),this.levelController.manualLevel=t}},{key:"nextLoadLevel",get:function(){return this.levelController.nextLoadLevel},set:function(t){this.levelController.nextLoadLevel=t}},{key:"firstLevel",get:function(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)},set:function(t){wt.b.log("set firstLevel:"+t),this.levelController.firstLevel=t}},{key:"startLevel",get:function(){return this.levelController.startLevel},set:function(t){wt.b.log("set startLevel:"+t);var e=this;-1!==t&&(t=Math.max(t,e.minAutoLevel)),e.levelController.startLevel=t}},{key:"autoLevelCapping",get:function(){return this._autoLevelCapping},set:function(t){wt.b.log("set autoLevelCapping:"+t),this._autoLevelCapping=t}},{key:"autoLevelEnabled",get:function(){return-1===this.levelController.manualLevel}},{key:"manualLevel",get:function(){return this.levelController.manualLevel}},{key:"minAutoLevel",get:function(){for(var t=this,e=t.levels,r=t.config.minAutoBitrate,i=e?e.length:0,a=0;ar)return a}return 0}},{key:"maxAutoLevel",get:function(){var t=this,e=t.levels,r=t.autoLevelCapping;return-1===r&&e&&e.length?e.length-1:r}},{key:"nextAutoLevel",get:function(){var t=this;return Math.min(Math.max(t.abrController.nextAutoLevel,t.minAutoLevel),t.maxAutoLevel)},set:function(t){var e=this;e.abrController.nextAutoLevel=Math.max(e.minAutoLevel,t)}},{key:"audioTracks",get:function(){var t=this.audioTrackController;return t?t.audioTracks:[]}},{key:"audioTrack",get:function(){var t=this.audioTrackController;return t?t.audioTrack:-1},set:function(t){var e=this.audioTrackController;e&&(e.audioTrack=t)}},{key:"liveSyncPosition",get:function(){return this.streamController.liveSyncPosition}},{key:"subtitleTracks",get:function(){var t=this.subtitleTrackController;return t?t.subtitleTracks:[]}},{key:"subtitleTrack",get:function(){var t=this.subtitleTrackController;return t?t.subtitleTrack:-1},set:function(t){var e=this.subtitleTrackController;e&&(e.subtitleTrack=t)}}]),t}();e.default=Ar},function(t,e,r){function i(t){function e(i){if(r[i])return r[i].exports;var a=r[i]={i:i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,e),a.l=!0,a.exports}var r={};e.m=t,e.c=r,e.i=function(t){return t},e.d=function(t,r,i){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/",e.oe=function(t){throw console.error(t),t};var i=e(e.s=ENTRY_MODULE);return i.default||i}function a(t){return(t+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function n(t){var e=[],r=t.toString(),i=r.match(/^function\s?\(\w+,\s*\w+,\s*(\w+)\)/);if(!i)return e;for(var n,o=i[1],s=new RegExp("(\\\\n|\\W)"+a(o)+"\\((/\\*.*?\\*/)?s?.*?([\\.|\\-|\\w|/|@]+).*?\\)","g");n=s.exec(r);)e.push(n[3]);return e}function o(t,e){for(var r=[e],i=[],a={};r.length;){var o=r.pop();if(!a[o]&&t[o]){a[o]=!0,i.push(o);var s=n(t[o]);r=r.concat(s)}}return i}t.exports=function(t,e){e=e||{};var a=r.m,n=e.all?Object.keys(a):o(a,t),s="("+i.toString().replace("ENTRY_MODULE",JSON.stringify(t))+")({"+n.map(function(t){return JSON.stringify(t)+": "+a[t].toString()}).join(",")+"})(self);",l=new window.Blob([s],{type:"text/javascript"});if(e.bare)return l;var u=window.URL||window.webkitURL||window.mozURL||window.msURL,d=u.createObjectURL(l),h=new window.Worker(d);return h.objectURL=d,h}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=r(6),a=r(1),n=r(0),o=r(4),s=r.n(o),l=function(t){var e=new s.a;e.trigger=function(t){for(var r=arguments.length,i=Array(r>1?r-1:0),a=1;a1?r-1:0),a=1;a+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",s="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",o=new RegExp("^(?:"+n+"|"+s+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?].*?[?]>|]*>|)"),i=new RegExp("^(?:"+n+"|"+s+")");r.exports.HTML_TAG_RE=o,r.exports.HTML_OPEN_CLOSE_TAG_RE=i},{}],4:[function(e,r,t){"use strict";var n=Object.prototype.hasOwnProperty;function s(e,r){return n.call(e,r)}function o(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function i(e){if(e>65535){var r=55296+((e-=65536)>>10),t=56320+(1023&e);return String.fromCharCode(r,t)}return String.fromCharCode(e)}var a=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,c=new RegExp(a.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),l=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,u=e("./entities");var p=/[&<>"]/,h=/[&<>"]/g,f={"&":"&","<":"<",">":">",'"':"""};function d(e){return f[e]}var m=/[.?*+^$[\]\\(){}|-]/g;var _=e("uc.micro/categories/P/regex");t.lib={},t.lib.mdurl=e("mdurl"),t.lib.ucmicro=e("uc.micro"),t.assign=function(e){return Array.prototype.slice.call(arguments,1).forEach((function(r){if(r){if("object"!=typeof r)throw new TypeError(r+"must be object");Object.keys(r).forEach((function(t){e[t]=r[t]}))}})),e},t.isString=function(e){return"[object String]"===function(e){return Object.prototype.toString.call(e)}(e)},t.has=s,t.unescapeMd=function(e){return e.indexOf("\\")<0?e:e.replace(a,"$1")},t.unescapeAll=function(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(c,(function(e,r,t){return r||function(e,r){var t=0;return s(u,r)?u[r]:35===r.charCodeAt(0)&&l.test(r)&&o(t="x"===r[1].toLowerCase()?parseInt(r.slice(2),16):parseInt(r.slice(1),10))?i(t):e}(e,t)}))},t.isValidEntityCode=o,t.fromCodePoint=i,t.escapeHtml=function(e){return p.test(e)?e.replace(h,d):e},t.arrayReplaceAt=function(e,r,t){return[].concat(e.slice(0,r),t,e.slice(r+1))},t.isSpace=function(e){switch(e){case 9:case 32:return!0}return!1},t.isWhiteSpace=function(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},t.isMdAsciiPunct=function(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},t.isPunctChar=function(e){return _.test(e)},t.escapeRE=function(e){return e.replace(m,"\\$&")},t.normalizeReference=function(e){return e=e.trim().replace(/\s+/g," "),"\u1e7e"==="\u1e9e".toLowerCase()&&(e=e.replace(/\u1e9e/g,"\xdf")),e.toLowerCase().toUpperCase()}},{"./entities":1,mdurl:58,"uc.micro":65,"uc.micro/categories/P/regex":63}],5:[function(e,r,t){"use strict";t.parseLinkLabel=e("./parse_link_label"),t.parseLinkDestination=e("./parse_link_destination"),t.parseLinkTitle=e("./parse_link_title")},{"./parse_link_destination":6,"./parse_link_label":7,"./parse_link_title":8}],6:[function(e,r,t){"use strict";var n=e("../common/utils").unescapeAll;r.exports=function(e,r,t){var s,o,i=r,a={ok:!1,pos:0,lines:0,str:""};if(60===e.charCodeAt(r)){for(r++;r=t)return c;if(34!==(o=e.charCodeAt(r))&&39!==o&&40!==o)return c;for(r++,40===o&&(o=41);r=0))try{r.hostname=p.toASCII(r.hostname)}catch(e){}return u.encode(u.format(r))}function k(e){var r=u.parse(e,!0);if(r.hostname&&(!r.protocol||_.indexOf(r.protocol)>=0))try{r.hostname=p.toUnicode(r.hostname)}catch(e){}return u.decode(u.format(r))}function b(e,r){if(!(this instanceof b))return new b(e,r);r||n.isString(e)||(r=e||{},e="default"),this.inline=new c,this.block=new a,this.core=new i,this.renderer=new o,this.linkify=new l,this.validateLink=m,this.normalizeLink=g,this.normalizeLinkText=k,this.utils=n,this.helpers=n.assign({},s),this.options={},this.configure(e),r&&this.set(r)}b.prototype.set=function(e){return n.assign(this.options,e),this},b.prototype.configure=function(e){var r,t=this;if(n.isString(e)&&!(e=h[r=e]))throw new Error('Wrong `markdown-it` preset "'+r+'", check name');if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach((function(r){e.components[r].rules&&t[r].ruler.enableOnly(e.components[r].rules),e.components[r].rules2&&t[r].ruler2.enableOnly(e.components[r].rules2)})),this},b.prototype.enable=function(e,r){var t=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(r){t=t.concat(this[r].ruler.enable(e,!0))}),this),t=t.concat(this.inline.ruler2.enable(e,!0));var n=e.filter((function(e){return t.indexOf(e)<0}));if(n.length&&!r)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this},b.prototype.disable=function(e,r){var t=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(r){t=t.concat(this[r].ruler.disable(e,!0))}),this),t=t.concat(this.inline.ruler2.disable(e,!0));var n=e.filter((function(e){return t.indexOf(e)<0}));if(n.length&&!r)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this},b.prototype.use=function(e){var r=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,r),this},b.prototype.parse=function(e,r){if("string"!=typeof e)throw new Error("Input data should be a String");var t=new this.core.State(e,this,r);return this.core.process(t),t.tokens},b.prototype.render=function(e,r){return r=r||{},this.renderer.render(this.parse(e,r),this.options,r)},b.prototype.parseInline=function(e,r){var t=new this.core.State(e,this,r);return t.inlineMode=!0,this.core.process(t),t.tokens},b.prototype.renderInline=function(e,r){return r=r||{},this.renderer.render(this.parseInline(e,r),this.options,r)},r.exports=b},{"./common/utils":4,"./helpers":5,"./parser_block":10,"./parser_core":11,"./parser_inline":12,"./presets/commonmark":13,"./presets/default":14,"./presets/zero":15,"./renderer":16,"linkify-it":53,mdurl:58,punycode:60}],10:[function(e,r,t){"use strict";var n=e("./ruler"),s=[["table",e("./rules_block/table"),["paragraph","reference"]],["code",e("./rules_block/code")],["fence",e("./rules_block/fence"),["paragraph","reference","blockquote","list"]],["blockquote",e("./rules_block/blockquote"),["paragraph","reference","blockquote","list"]],["hr",e("./rules_block/hr"),["paragraph","reference","blockquote","list"]],["list",e("./rules_block/list"),["paragraph","reference","blockquote"]],["reference",e("./rules_block/reference")],["heading",e("./rules_block/heading"),["paragraph","reference","blockquote"]],["lheading",e("./rules_block/lheading")],["html_block",e("./rules_block/html_block"),["paragraph","reference","blockquote"]],["paragraph",e("./rules_block/paragraph")]];function o(){this.ruler=new n;for(var e=0;e=t))&&!(e.sCount[i]=c){e.line=t;break}for(n=0;n=o)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},i.prototype.parse=function(e,r,t,n){var s,o,i,a=new this.State(e,r,t,n);for(this.tokenize(a),i=(o=this.ruler2.getRules("")).length,s=0;s"+o(e[r].content)+""},i.code_block=function(e,r,t,n,s){var i=e[r];return""+o(e[r].content)+"\n"},i.fence=function(e,r,t,n,i){var a,c,l,u,p=e[r],h=p.info?s(p.info).trim():"",f="";return h&&(f=h.split(/\s+/g)[0]),0===(a=t.highlight&&t.highlight(p.content,f)||o(p.content)).indexOf(""+a+"\n"):"
    "+a+"
    \n"},i.image=function(e,r,t,n,s){var o=e[r];return o.attrs[o.attrIndex("alt")][1]=s.renderInlineAsText(o.children,t,n),s.renderToken(e,r,t)},i.hardbreak=function(e,r,t){return t.xhtmlOut?"
    \n":"
    \n"},i.softbreak=function(e,r,t){return t.breaks?t.xhtmlOut?"
    \n":"
    \n":"\n"},i.text=function(e,r){return o(e[r].content)},i.html_block=function(e,r){return e[r].content},i.html_inline=function(e,r){return e[r].content},a.prototype.renderAttrs=function(e){var r,t,n;if(!e.attrs)return"";for(n="",r=0,t=e.attrs.length;r\n":">")},a.prototype.renderInline=function(e,r,t){for(var n,s="",o=this.rules,i=0,a=e.length;i=4)return!1;if(62!==e.src.charCodeAt(D++))return!1;if(s)return!0;for(c=f=e.sCount[r]+D-(e.bMarks[r]+e.tShift[r]),32===e.src.charCodeAt(D)?(D++,c++,f++,o=!1,v=!0):9===e.src.charCodeAt(D)?(v=!0,(e.bsCount[r]+f)%4==3?(D++,c++,f++,o=!1):o=!0):v=!1,d=[e.bMarks[r]],e.bMarks[r]=D;D=E,k=[e.sCount[r]],e.sCount[r]=f-c,b=[e.tShift[r]],e.tShift[r]=D-e.bMarks[r],C=e.md.block.ruler.getRules("blockquote"),g=e.parentType,e.parentType="blockquote",A=!1,h=r+1;h=(E=e.eMarks[h])));h++)if(62!==e.src.charCodeAt(D++)||A){if(u)break;for(y=!1,a=0,l=C.length;a=E,m.push(e.bsCount[h]),e.bsCount[h]=e.sCount[h]+1+(v?1:0),k.push(e.sCount[h]),e.sCount[h]=f-c,b.push(e.tShift[h]),e.tShift[h]=D-e.bMarks[h]}for(_=e.blkIndent,e.blkIndent=0,(x=e.push("blockquote_open","blockquote",1)).markup=">",x.map=p=[r,0],e.md.block.tokenize(e,r,h),(x=e.push("blockquote_close","blockquote",-1)).markup=">",e.lineMax=w,e.parentType=g,p[1]=e.line,a=0;a=4))break;s=++n}return e.line=s,(o=e.push("code_block","code",0)).content=e.getLines(r,s,4+e.blkIndent,!0),o.map=[r,e.line],!0}},{}],20:[function(e,r,t){"use strict";r.exports=function(e,r,t,n){var s,o,i,a,c,l,u,p=!1,h=e.bMarks[r]+e.tShift[r],f=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(h+3>f)return!1;if(126!==(s=e.src.charCodeAt(h))&&96!==s)return!1;if(c=h,(o=(h=e.skipChars(h,s))-c)<3)return!1;if(u=e.src.slice(c,h),i=e.src.slice(h,f),96===s&&i.indexOf(String.fromCharCode(s))>=0)return!1;if(n)return!0;for(a=r;!(++a>=t)&&!((h=c=e.bMarks[a]+e.tShift[a])<(f=e.eMarks[a])&&e.sCount[a]=4||(h=e.skipChars(h,s))-c=4)return!1;if(35!==(o=e.src.charCodeAt(l))||l>=u)return!1;for(i=1,o=e.src.charCodeAt(++l);35===o&&l6||ll&&n(e.src.charCodeAt(a-1))&&(u=a),e.line=r+1,(c=e.push("heading_open","h"+String(i),1)).markup="########".slice(0,i),c.map=[r,e.line],(c=e.push("inline","",0)).content=e.src.slice(l,u).trim(),c.map=[r,e.line],c.children=[],(c=e.push("heading_close","h"+String(i),-1)).markup="########".slice(0,i),!0))}},{"../common/utils":4}],22:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace;r.exports=function(e,r,t,s){var o,i,a,c,l=e.bMarks[r]+e.tShift[r],u=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(42!==(o=e.src.charCodeAt(l++))&&45!==o&&95!==o)return!1;for(i=1;l|$))/i,/<\/(script|pre|style)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(s.source+"\\s*$"),/^$/,!1]];r.exports=function(e,r,t,n){var s,i,a,c,l=e.bMarks[r]+e.tShift[r],u=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(l))return!1;for(c=e.src.slice(l,u),s=0;s=4)return!1;for(h=e.parentType,e.parentType="paragraph";f3)){if(e.sCount[f]>=e.blkIndent&&(c=e.bMarks[f]+e.tShift[f])<(l=e.eMarks[f])&&(45===(p=e.src.charCodeAt(c))||61===p)&&(c=e.skipChars(c,p),(c=e.skipSpaces(c))>=l)){u=61===p?1:2;break}if(!(e.sCount[f]<0)){for(s=!1,o=0,i=d.length;o=i)return-1;if((t=e.src.charCodeAt(o++))<48||t>57)return-1;for(;;){if(o>=i)return-1;if(!((t=e.src.charCodeAt(o++))>=48&&t<=57)){if(41===t||46===t)break;return-1}if(o-s>=10)return-1}return o=4)return!1;if(e.listIndent>=0&&e.sCount[r]-e.listIndent>=4&&e.sCount[r]=e.blkIndent&&(I=!0),(q=o(e,r))>=0){if(h=!0,S=e.bMarks[r]+e.tShift[r],k=Number(e.src.substr(S,q-S-1)),I&&1!==k)return!1}else{if(!((q=s(e,r))>=0))return!1;h=!1}if(I&&e.skipSpaces(q)>=e.eMarks[r])return!1;if(g=e.src.charCodeAt(q-1),n)return!0;for(_=e.tokens.length,h?(T=e.push("ordered_list_open","ol",1),1!==k&&(T.attrs=[["start",k]])):T=e.push("bullet_list_open","ul",1),T.map=m=[r,0],T.markup=String.fromCharCode(g),v=r,F=!1,z=e.md.block.ruler.getRules("list"),x=e.parentType,e.parentType="list";v=b?1:y-p)>4&&(u=1),l=p+u,(T=e.push("list_item_open","li",1)).markup=String.fromCharCode(g),T.map=f=[r,0],D=e.tight,w=e.tShift[r],A=e.sCount[r],C=e.listIndent,e.listIndent=e.blkIndent,e.blkIndent=l,e.tight=!0,e.tShift[r]=a-e.bMarks[r],e.sCount[r]=y,a>=b&&e.isEmpty(r+1)?e.line=Math.min(e.line+2,t):e.md.block.tokenize(e,r,t,!0),e.tight&&!F||(R=!1),F=e.line-r>1&&e.isEmpty(e.line-1),e.blkIndent=e.listIndent,e.listIndent=C,e.tShift[r]=w,e.sCount[r]=A,e.tight=D,(T=e.push("list_item_close","li",-1)).markup=String.fromCharCode(g),v=r=e.line,f[1]=v,a=e.bMarks[r],v>=t)break;if(e.sCount[v]=4)break;for(L=!1,c=0,d=z.length;c3||e.sCount[c]<0)){for(n=!1,s=0,o=l.length;s=4)return!1;if(91!==e.src.charCodeAt(x))return!1;for(;++x3||e.sCount[w]<0)){for(b=!1,p=0,h=v.length;p0&&this.level++,this.tokens.push(s),s},o.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},o.prototype.skipEmptyLines=function(e){for(var r=this.lineMax;er;)if(!s(this.src.charCodeAt(--e)))return e+1;return e},o.prototype.skipChars=function(e,r){for(var t=this.src.length;et;)if(r!==this.src.charCodeAt(--e))return e+1;return e},o.prototype.getLines=function(e,r,t,n){var o,i,a,c,l,u,p,h=e;if(e>=r)return"";for(u=new Array(r-e),o=0;ht?new Array(i-t+1).join(" ")+this.src.slice(c,l):this.src.slice(c,l)}return u.join("")},o.prototype.Token=n,r.exports=o},{"../common/utils":4,"../token":51}],29:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace;function s(e,r){var t=e.bMarks[r]+e.blkIndent,n=e.eMarks[r];return e.src.substr(t,n-t)}function o(e){var r,t=[],n=0,s=e.length,o=0,i=0,a=!1,c=0;for(r=e.charCodeAt(n);nt)return!1;if(p=r+1,e.sCount[p]=4)return!1;if((l=e.bMarks[p]+e.tShift[p])>=e.eMarks[p])return!1;if(124!==(a=e.src.charCodeAt(l++))&&45!==a&&58!==a)return!1;for(;l=4)return!1;if((f=(h=o(c.replace(/^\||\|$/g,""))).length)>m.length)return!1;if(i)return!0;for((d=e.push("table_open","table",1)).map=g=[r,0],(d=e.push("thead_open","thead",1)).map=[r,r+1],(d=e.push("tr_open","tr",1)).map=[r,r+1],u=0;u=4);p++){for(h=o(c.replace(/^\||\|$/g,"")),d=e.push("tr_open","tr",1),u=0;u/i.test(e)}r.exports=function(e){var r,t,o,i,a,c,l,u,p,h,f,d,m,_,g,k,b,v,y=e.tokens;if(e.md.options.linkify)for(t=0,o=y.length;t=0;r--)if("link_close"!==(c=i[r]).type){if("html_inline"===c.type&&(v=c.content,/^\s]/i.test(v)&&m>0&&m--,s(c.content)&&m++),!(m>0)&&"text"===c.type&&e.md.linkify.test(c.content)){for(p=c.content,b=e.md.linkify.match(p),l=[],d=c.level,f=0,u=0;uf&&((a=new e.Token("text","",0)).content=p.slice(f,h),a.level=d,l.push(a)),(a=new e.Token("link_open","a",1)).attrs=[["href",g]],a.level=d++,a.markup="linkify",a.info="auto",l.push(a),(a=new e.Token("text","",0)).content=k,a.level=d,l.push(a),(a=new e.Token("link_close","a",-1)).level=--d,a.markup="linkify",a.info="auto",l.push(a),f=b[u].lastIndex);f=0;r--)"text"!==(t=e[r]).type||n||(t.content=t.content.replace(o,a)),"link_open"===t.type&&"auto"===t.info&&n--,"link_close"===t.type&&"auto"===t.info&&n++}function l(e){var r,t,s=0;for(r=e.length-1;r>=0;r--)"text"!==(t=e[r]).type||s||n.test(t.content)&&(t.content=t.content.replace(/\+-/g,"\xb1").replace(/\.{2,}/g,"\u2026").replace(/([?!])\u2026/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---([^-]|$)/gm,"$1\u2014$2").replace(/(^|\s)--(\s|$)/gm,"$1\u2013$2").replace(/(^|[^-\s])--([^-\s]|$)/gm,"$1\u2013$2")),"link_open"===t.type&&"auto"===t.info&&s--,"link_close"===t.type&&"auto"===t.info&&s++}r.exports=function(e){var r;if(e.md.options.typographer)for(r=e.tokens.length-1;r>=0;r--)"inline"===e.tokens[r].type&&(s.test(e.tokens[r].content)&&c(e.tokens[r].children),n.test(e.tokens[r].content)&&l(e.tokens[r].children))}},{}],35:[function(e,r,t){"use strict";var n=e("../common/utils").isWhiteSpace,s=e("../common/utils").isPunctChar,o=e("../common/utils").isMdAsciiPunct,i=/['"]/,a=/['"]/g,c="\u2019";function l(e,r,t){return e.substr(0,r)+t+e.substr(r+1)}function u(e,r){var t,i,u,p,h,f,d,m,_,g,k,b,v,y,C,x,A,w,D,E,q;for(D=[],t=0;t=0&&!(D[A].level<=d);A--);if(D.length=A+1,"text"===i.type){h=0,f=(u=i.content).length;e:for(;h=0)_=u.charCodeAt(p.index-1);else for(A=t-1;A>=0&&("softbreak"!==e[A].type&&"hardbreak"!==e[A].type);A--)if("text"===e[A].type){_=e[A].content.charCodeAt(e[A].content.length-1);break}if(g=32,h=48&&_<=57&&(x=C=!1),C&&x&&(C=!1,x=b),C||x){if(x)for(A=D.length-1;A>=0&&(m=D[A],!(D[A].level=0;r--)"inline"===e.tokens[r].type&&i.test(e.tokens[r].content)&&u(e.tokens[r].children,e)}},{"../common/utils":4}],36:[function(e,r,t){"use strict";var n=e("../token");function s(e,r,t){this.src=e,this.env=t,this.tokens=[],this.inlineMode=!1,this.md=r}s.prototype.Token=n,r.exports=s},{"../token":51}],37:[function(e,r,t){"use strict";var n=/^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,s=/^<([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)>/;r.exports=function(e,r){var t,o,i,a,c,l,u=e.pos;return 60===e.src.charCodeAt(u)&&(!((t=e.src.slice(u)).indexOf(">")<0)&&(s.test(t)?(a=(o=t.match(s))[0].slice(1,-1),c=e.md.normalizeLink(a),!!e.md.validateLink(c)&&(r||((l=e.push("link_open","a",1)).attrs=[["href",c]],l.markup="autolink",l.info="auto",(l=e.push("text","",0)).content=e.md.normalizeLinkText(a),(l=e.push("link_close","a",-1)).markup="autolink",l.info="auto"),e.pos+=o[0].length,!0)):!!n.test(t)&&(a=(i=t.match(n))[0].slice(1,-1),c=e.md.normalizeLink("mailto:"+a),!!e.md.validateLink(c)&&(r||((l=e.push("link_open","a",1)).attrs=[["href",c]],l.markup="autolink",l.info="auto",(l=e.push("text","",0)).content=e.md.normalizeLinkText(a),(l=e.push("link_close","a",-1)).markup="autolink",l.info="auto"),e.pos+=i[0].length,!0))))}},{}],38:[function(e,r,t){"use strict";r.exports=function(e,r){var t,n,s,o,i,a,c=e.pos;if(96!==e.src.charCodeAt(c))return!1;for(t=c,c++,n=e.posMax;ci;n-=o.jump+1)if((o=r[n]).marker===s.marker&&(-1===a&&(a=n),o.open&&o.end<0&&o.level===s.level&&(c=!1,(o.close||s.open)&&(o.length+s.length)%3==0&&(o.length%3==0&&s.length%3==0||(c=!0)),!c))){l=n>0&&!r[n-1].open?r[n-1].jump+1:0,s.jump=t-n+l,s.open=!1,o.end=t,o.jump=l,o.close=!1,a=-1;break}-1!==a&&(u[s.marker][(s.length||0)%3]=a)}}r.exports=function(e){var r,t=e.tokens_meta,s=e.tokens_meta.length;for(n(0,e.delimiters),r=0;r=0;t--)95!==(n=r[t]).marker&&42!==n.marker||-1!==n.end&&(s=r[n.end],a=t>0&&r[t-1].end===n.end+1&&r[t-1].token===n.token-1&&r[n.end+1].token===s.token+1&&r[t-1].marker===n.marker,i=String.fromCharCode(n.marker),(o=e.tokens[n.token]).type=a?"strong_open":"em_open",o.tag=a?"strong":"em",o.nesting=1,o.markup=a?i+i:i,o.content="",(o=e.tokens[s.token]).type=a?"strong_close":"em_close",o.tag=a?"strong":"em",o.nesting=-1,o.markup=a?i+i:i,o.content="",a&&(e.tokens[r[t-1].token].content="",e.tokens[r[n.end+1].token].content="",t--))}r.exports.tokenize=function(e,r){var t,n,s=e.pos,o=e.src.charCodeAt(s);if(r)return!1;if(95!==o&&42!==o)return!1;for(n=e.scanDelims(e.pos,42===o),t=0;t?@[]^_`{|}~-".split("").forEach((function(e){s[e.charCodeAt(0)]=1})),r.exports=function(e,r){var t,o=e.pos,i=e.posMax;if(92!==e.src.charCodeAt(o))return!1;if(++o=o)&&(!(33!==(t=e.src.charCodeAt(i+1))&&63!==t&&47!==t&&!function(e){var r=32|e;return r>=97&&r<=122}(t))&&(!!(s=e.src.slice(i).match(n))&&(r||(e.push("html_inline","",0).content=e.src.slice(i,i+s[0].length)),e.pos+=s[0].length,!0))))}},{"../common/html_re":3}],44:[function(e,r,t){"use strict";var n=e("../common/utils").normalizeReference,s=e("../common/utils").isSpace;r.exports=function(e,r){var t,o,i,a,c,l,u,p,h,f,d,m,_,g="",k=e.pos,b=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;if(l=e.pos+2,(c=e.md.helpers.parseLinkLabel(e,e.pos+1,!1))<0)return!1;if((u=c+1)=b)return!1;for(_=u,(h=e.md.helpers.parseLinkDestination(e.src,u,e.posMax)).ok&&(g=e.md.normalizeLink(h.str),e.md.validateLink(g)?u=h.pos:g=""),_=u;u=b||41!==e.src.charCodeAt(u))return e.pos=k,!1;u++}else{if(void 0===e.env.references)return!1;if(u=0?a=e.src.slice(_,u++):u=c+1):u=c+1,a||(a=e.src.slice(l,c)),!(p=e.env.references[n(a)]))return e.pos=k,!1;g=p.href,f=p.title}return r||(i=e.src.slice(l,c),e.md.inline.parse(i,e.md,e.env,m=[]),(d=e.push("image","img",0)).attrs=t=[["src",g],["alt",""]],d.children=m,d.content=i,f&&t.push(["title",f])),e.pos=u,e.posMax=b,!0}},{"../common/utils":4}],45:[function(e,r,t){"use strict";var n=e("../common/utils").normalizeReference,s=e("../common/utils").isSpace;r.exports=function(e,r){var t,o,i,a,c,l,u,p,h,f="",d=e.pos,m=e.posMax,_=e.pos,g=!0;if(91!==e.src.charCodeAt(e.pos))return!1;if(c=e.pos+1,(a=e.md.helpers.parseLinkLabel(e,e.pos,!0))<0)return!1;if((l=a+1)=m)return!1;for(_=l,(u=e.md.helpers.parseLinkDestination(e.src,l,e.posMax)).ok&&(f=e.md.normalizeLink(u.str),e.md.validateLink(f)?l=u.pos:f=""),_=l;l=m||41!==e.src.charCodeAt(l))&&(g=!0),l++}if(g){if(void 0===e.env.references)return!1;if(l=0?i=e.src.slice(_,l++):l=a+1):l=a+1,i||(i=e.src.slice(c,a)),!(p=e.env.references[n(i)]))return e.pos=d,!1;f=p.href,h=p.title}return r||(e.pos=c,e.posMax=a,e.push("link_open","a",1).attrs=t=[["href",f]],h&&t.push(["title",h]),e.md.inline.tokenize(e),e.push("link_close","a",-1)),e.pos=l,e.posMax=m,!0}},{"../common/utils":4}],46:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace;r.exports=function(e,r){var t,s,o=e.pos;if(10!==e.src.charCodeAt(o))return!1;for(t=e.pending.length-1,s=e.posMax,r||(t>=0&&32===e.pending.charCodeAt(t)?t>=1&&32===e.pending.charCodeAt(t-1)?(e.pending=e.pending.replace(/ +$/,""),e.push("hardbreak","br",0)):(e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0)):e.push("softbreak","br",0)),o++;o0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],o={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(s),this.tokens_meta.push(o),s},a.prototype.scanDelims=function(e,r){var t,n,a,c,l,u,p,h,f,d=e,m=!0,_=!0,g=this.posMax,k=this.src.charCodeAt(e);for(t=e>0?this.src.charCodeAt(e-1):32;d0&&n++,"text"===s[r].type&&r+1=0&&(t=this.attrs[r][1]),t},n.prototype.attrJoin=function(e,r){var t=this.attrIndex(e);t<0?this.attrPush([e,r]):this.attrs[t][1]=this.attrs[t][1]+" "+r},r.exports=n},{}],52:[function(e,r,t){r.exports={Aacute:"\xc1",aacute:"\xe1",Abreve:"\u0102",abreve:"\u0103",ac:"\u223e",acd:"\u223f",acE:"\u223e\u0333",Acirc:"\xc2",acirc:"\xe2",acute:"\xb4",Acy:"\u0410",acy:"\u0430",AElig:"\xc6",aelig:"\xe6",af:"\u2061",Afr:"\ud835\udd04",afr:"\ud835\udd1e",Agrave:"\xc0",agrave:"\xe0",alefsym:"\u2135",aleph:"\u2135",Alpha:"\u0391",alpha:"\u03b1",Amacr:"\u0100",amacr:"\u0101",amalg:"\u2a3f",amp:"&",AMP:"&",andand:"\u2a55",And:"\u2a53",and:"\u2227",andd:"\u2a5c",andslope:"\u2a58",andv:"\u2a5a",ang:"\u2220",ange:"\u29a4",angle:"\u2220",angmsdaa:"\u29a8",angmsdab:"\u29a9",angmsdac:"\u29aa",angmsdad:"\u29ab",angmsdae:"\u29ac",angmsdaf:"\u29ad",angmsdag:"\u29ae",angmsdah:"\u29af",angmsd:"\u2221",angrt:"\u221f",angrtvb:"\u22be",angrtvbd:"\u299d",angsph:"\u2222",angst:"\xc5",angzarr:"\u237c",Aogon:"\u0104",aogon:"\u0105",Aopf:"\ud835\udd38",aopf:"\ud835\udd52",apacir:"\u2a6f",ap:"\u2248",apE:"\u2a70",ape:"\u224a",apid:"\u224b",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224a",Aring:"\xc5",aring:"\xe5",Ascr:"\ud835\udc9c",ascr:"\ud835\udcb6",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224d",Atilde:"\xc3",atilde:"\xe3",Auml:"\xc4",auml:"\xe4",awconint:"\u2233",awint:"\u2a11",backcong:"\u224c",backepsilon:"\u03f6",backprime:"\u2035",backsim:"\u223d",backsimeq:"\u22cd",Backslash:"\u2216",Barv:"\u2ae7",barvee:"\u22bd",barwed:"\u2305",Barwed:"\u2306",barwedge:"\u2305",bbrk:"\u23b5",bbrktbrk:"\u23b6",bcong:"\u224c",Bcy:"\u0411",bcy:"\u0431",bdquo:"\u201e",becaus:"\u2235",because:"\u2235",Because:"\u2235",bemptyv:"\u29b0",bepsi:"\u03f6",bernou:"\u212c",Bernoullis:"\u212c",Beta:"\u0392",beta:"\u03b2",beth:"\u2136",between:"\u226c",Bfr:"\ud835\udd05",bfr:"\ud835\udd1f",bigcap:"\u22c2",bigcirc:"\u25ef",bigcup:"\u22c3",bigodot:"\u2a00",bigoplus:"\u2a01",bigotimes:"\u2a02",bigsqcup:"\u2a06",bigstar:"\u2605",bigtriangledown:"\u25bd",bigtriangleup:"\u25b3",biguplus:"\u2a04",bigvee:"\u22c1",bigwedge:"\u22c0",bkarow:"\u290d",blacklozenge:"\u29eb",blacksquare:"\u25aa",blacktriangle:"\u25b4",blacktriangledown:"\u25be",blacktriangleleft:"\u25c2",blacktriangleright:"\u25b8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20e5",bnequiv:"\u2261\u20e5",bNot:"\u2aed",bnot:"\u2310",Bopf:"\ud835\udd39",bopf:"\ud835\udd53",bot:"\u22a5",bottom:"\u22a5",bowtie:"\u22c8",boxbox:"\u29c9",boxdl:"\u2510",boxdL:"\u2555",boxDl:"\u2556",boxDL:"\u2557",boxdr:"\u250c",boxdR:"\u2552",boxDr:"\u2553",boxDR:"\u2554",boxh:"\u2500",boxH:"\u2550",boxhd:"\u252c",boxHd:"\u2564",boxhD:"\u2565",boxHD:"\u2566",boxhu:"\u2534",boxHu:"\u2567",boxhU:"\u2568",boxHU:"\u2569",boxminus:"\u229f",boxplus:"\u229e",boxtimes:"\u22a0",boxul:"\u2518",boxuL:"\u255b",boxUl:"\u255c",boxUL:"\u255d",boxur:"\u2514",boxuR:"\u2558",boxUr:"\u2559",boxUR:"\u255a",boxv:"\u2502",boxV:"\u2551",boxvh:"\u253c",boxvH:"\u256a",boxVh:"\u256b",boxVH:"\u256c",boxvl:"\u2524",boxvL:"\u2561",boxVl:"\u2562",boxVL:"\u2563",boxvr:"\u251c",boxvR:"\u255e",boxVr:"\u255f",boxVR:"\u2560",bprime:"\u2035",breve:"\u02d8",Breve:"\u02d8",brvbar:"\xa6",bscr:"\ud835\udcb7",Bscr:"\u212c",bsemi:"\u204f",bsim:"\u223d",bsime:"\u22cd",bsolb:"\u29c5",bsol:"\\",bsolhsub:"\u27c8",bull:"\u2022",bullet:"\u2022",bump:"\u224e",bumpE:"\u2aae",bumpe:"\u224f",Bumpeq:"\u224e",bumpeq:"\u224f",Cacute:"\u0106",cacute:"\u0107",capand:"\u2a44",capbrcup:"\u2a49",capcap:"\u2a4b",cap:"\u2229",Cap:"\u22d2",capcup:"\u2a47",capdot:"\u2a40",CapitalDifferentialD:"\u2145",caps:"\u2229\ufe00",caret:"\u2041",caron:"\u02c7",Cayleys:"\u212d",ccaps:"\u2a4d",Ccaron:"\u010c",ccaron:"\u010d",Ccedil:"\xc7",ccedil:"\xe7",Ccirc:"\u0108",ccirc:"\u0109",Cconint:"\u2230",ccups:"\u2a4c",ccupssm:"\u2a50",Cdot:"\u010a",cdot:"\u010b",cedil:"\xb8",Cedilla:"\xb8",cemptyv:"\u29b2",cent:"\xa2",centerdot:"\xb7",CenterDot:"\xb7",cfr:"\ud835\udd20",Cfr:"\u212d",CHcy:"\u0427",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",Chi:"\u03a7",chi:"\u03c7",circ:"\u02c6",circeq:"\u2257",circlearrowleft:"\u21ba",circlearrowright:"\u21bb",circledast:"\u229b",circledcirc:"\u229a",circleddash:"\u229d",CircleDot:"\u2299",circledR:"\xae",circledS:"\u24c8",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",cir:"\u25cb",cirE:"\u29c3",cire:"\u2257",cirfnint:"\u2a10",cirmid:"\u2aef",cirscir:"\u29c2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201d",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",colon:":",Colon:"\u2237",Colone:"\u2a74",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2a6d",Congruent:"\u2261",conint:"\u222e",Conint:"\u222f",ContourIntegral:"\u222e",copf:"\ud835\udd54",Copf:"\u2102",coprod:"\u2210",Coproduct:"\u2210",copy:"\xa9",COPY:"\xa9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21b5",cross:"\u2717",Cross:"\u2a2f",Cscr:"\ud835\udc9e",cscr:"\ud835\udcb8",csub:"\u2acf",csube:"\u2ad1",csup:"\u2ad0",csupe:"\u2ad2",ctdot:"\u22ef",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22de",cuesc:"\u22df",cularr:"\u21b6",cularrp:"\u293d",cupbrcap:"\u2a48",cupcap:"\u2a46",CupCap:"\u224d",cup:"\u222a",Cup:"\u22d3",cupcup:"\u2a4a",cupdot:"\u228d",cupor:"\u2a45",cups:"\u222a\ufe00",curarr:"\u21b7",curarrm:"\u293c",curlyeqprec:"\u22de",curlyeqsucc:"\u22df",curlyvee:"\u22ce",curlywedge:"\u22cf",curren:"\xa4",curvearrowleft:"\u21b6",curvearrowright:"\u21b7",cuvee:"\u22ce",cuwed:"\u22cf",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232d",dagger:"\u2020",Dagger:"\u2021",daleth:"\u2138",darr:"\u2193",Darr:"\u21a1",dArr:"\u21d3",dash:"\u2010",Dashv:"\u2ae4",dashv:"\u22a3",dbkarow:"\u290f",dblac:"\u02dd",Dcaron:"\u010e",dcaron:"\u010f",Dcy:"\u0414",dcy:"\u0434",ddagger:"\u2021",ddarr:"\u21ca",DD:"\u2145",dd:"\u2146",DDotrahd:"\u2911",ddotseq:"\u2a77",deg:"\xb0",Del:"\u2207",Delta:"\u0394",delta:"\u03b4",demptyv:"\u29b1",dfisht:"\u297f",Dfr:"\ud835\udd07",dfr:"\ud835\udd21",dHar:"\u2965",dharl:"\u21c3",dharr:"\u21c2",DiacriticalAcute:"\xb4",DiacriticalDot:"\u02d9",DiacriticalDoubleAcute:"\u02dd",DiacriticalGrave:"`",DiacriticalTilde:"\u02dc",diam:"\u22c4",diamond:"\u22c4",Diamond:"\u22c4",diamondsuit:"\u2666",diams:"\u2666",die:"\xa8",DifferentialD:"\u2146",digamma:"\u03dd",disin:"\u22f2",div:"\xf7",divide:"\xf7",divideontimes:"\u22c7",divonx:"\u22c7",DJcy:"\u0402",djcy:"\u0452",dlcorn:"\u231e",dlcrop:"\u230d",dollar:"$",Dopf:"\ud835\udd3b",dopf:"\ud835\udd55",Dot:"\xa8",dot:"\u02d9",DotDot:"\u20dc",doteq:"\u2250",doteqdot:"\u2251",DotEqual:"\u2250",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22a1",doublebarwedge:"\u2306",DoubleContourIntegral:"\u222f",DoubleDot:"\xa8",DoubleDownArrow:"\u21d3",DoubleLeftArrow:"\u21d0",DoubleLeftRightArrow:"\u21d4",DoubleLeftTee:"\u2ae4",DoubleLongLeftArrow:"\u27f8",DoubleLongLeftRightArrow:"\u27fa",DoubleLongRightArrow:"\u27f9",DoubleRightArrow:"\u21d2",DoubleRightTee:"\u22a8",DoubleUpArrow:"\u21d1",DoubleUpDownArrow:"\u21d5",DoubleVerticalBar:"\u2225",DownArrowBar:"\u2913",downarrow:"\u2193",DownArrow:"\u2193",Downarrow:"\u21d3",DownArrowUpArrow:"\u21f5",DownBreve:"\u0311",downdownarrows:"\u21ca",downharpoonleft:"\u21c3",downharpoonright:"\u21c2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295e",DownLeftVectorBar:"\u2956",DownLeftVector:"\u21bd",DownRightTeeVector:"\u295f",DownRightVectorBar:"\u2957",DownRightVector:"\u21c1",DownTeeArrow:"\u21a7",DownTee:"\u22a4",drbkarow:"\u2910",drcorn:"\u231f",drcrop:"\u230c",Dscr:"\ud835\udc9f",dscr:"\ud835\udcb9",DScy:"\u0405",dscy:"\u0455",dsol:"\u29f6",Dstrok:"\u0110",dstrok:"\u0111",dtdot:"\u22f1",dtri:"\u25bf",dtrif:"\u25be",duarr:"\u21f5",duhar:"\u296f",dwangle:"\u29a6",DZcy:"\u040f",dzcy:"\u045f",dzigrarr:"\u27ff",Eacute:"\xc9",eacute:"\xe9",easter:"\u2a6e",Ecaron:"\u011a",ecaron:"\u011b",Ecirc:"\xca",ecirc:"\xea",ecir:"\u2256",ecolon:"\u2255",Ecy:"\u042d",ecy:"\u044d",eDDot:"\u2a77",Edot:"\u0116",edot:"\u0117",eDot:"\u2251",ee:"\u2147",efDot:"\u2252",Efr:"\ud835\udd08",efr:"\ud835\udd22",eg:"\u2a9a",Egrave:"\xc8",egrave:"\xe8",egs:"\u2a96",egsdot:"\u2a98",el:"\u2a99",Element:"\u2208",elinters:"\u23e7",ell:"\u2113",els:"\u2a95",elsdot:"\u2a97",Emacr:"\u0112",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",EmptySmallSquare:"\u25fb",emptyv:"\u2205",EmptyVerySmallSquare:"\u25ab",emsp13:"\u2004",emsp14:"\u2005",emsp:"\u2003",ENG:"\u014a",eng:"\u014b",ensp:"\u2002",Eogon:"\u0118",eogon:"\u0119",Eopf:"\ud835\udd3c",eopf:"\ud835\udd56",epar:"\u22d5",eparsl:"\u29e3",eplus:"\u2a71",epsi:"\u03b5",Epsilon:"\u0395",epsilon:"\u03b5",epsiv:"\u03f5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2a96",eqslantless:"\u2a95",Equal:"\u2a75",equals:"=",EqualTilde:"\u2242",equest:"\u225f",Equilibrium:"\u21cc",equiv:"\u2261",equivDD:"\u2a78",eqvparsl:"\u29e5",erarr:"\u2971",erDot:"\u2253",escr:"\u212f",Escr:"\u2130",esdot:"\u2250",Esim:"\u2a73",esim:"\u2242",Eta:"\u0397",eta:"\u03b7",ETH:"\xd0",eth:"\xf0",Euml:"\xcb",euml:"\xeb",euro:"\u20ac",excl:"!",exist:"\u2203",Exists:"\u2203",expectation:"\u2130",exponentiale:"\u2147",ExponentialE:"\u2147",fallingdotseq:"\u2252",Fcy:"\u0424",fcy:"\u0444",female:"\u2640",ffilig:"\ufb03",fflig:"\ufb00",ffllig:"\ufb04",Ffr:"\ud835\udd09",ffr:"\ud835\udd23",filig:"\ufb01",FilledSmallSquare:"\u25fc",FilledVerySmallSquare:"\u25aa",fjlig:"fj",flat:"\u266d",fllig:"\ufb02",fltns:"\u25b1",fnof:"\u0192",Fopf:"\ud835\udd3d",fopf:"\ud835\udd57",forall:"\u2200",ForAll:"\u2200",fork:"\u22d4",forkv:"\u2ad9",Fouriertrf:"\u2131",fpartint:"\u2a0d",frac12:"\xbd",frac13:"\u2153",frac14:"\xbc",frac15:"\u2155",frac16:"\u2159",frac18:"\u215b",frac23:"\u2154",frac25:"\u2156",frac34:"\xbe",frac35:"\u2157",frac38:"\u215c",frac45:"\u2158",frac56:"\u215a",frac58:"\u215d",frac78:"\u215e",frasl:"\u2044",frown:"\u2322",fscr:"\ud835\udcbb",Fscr:"\u2131",gacute:"\u01f5",Gamma:"\u0393",gamma:"\u03b3",Gammad:"\u03dc",gammad:"\u03dd",gap:"\u2a86",Gbreve:"\u011e",gbreve:"\u011f",Gcedil:"\u0122",Gcirc:"\u011c",gcirc:"\u011d",Gcy:"\u0413",gcy:"\u0433",Gdot:"\u0120",gdot:"\u0121",ge:"\u2265",gE:"\u2267",gEl:"\u2a8c",gel:"\u22db",geq:"\u2265",geqq:"\u2267",geqslant:"\u2a7e",gescc:"\u2aa9",ges:"\u2a7e",gesdot:"\u2a80",gesdoto:"\u2a82",gesdotol:"\u2a84",gesl:"\u22db\ufe00",gesles:"\u2a94",Gfr:"\ud835\udd0a",gfr:"\ud835\udd24",gg:"\u226b",Gg:"\u22d9",ggg:"\u22d9",gimel:"\u2137",GJcy:"\u0403",gjcy:"\u0453",gla:"\u2aa5",gl:"\u2277",glE:"\u2a92",glj:"\u2aa4",gnap:"\u2a8a",gnapprox:"\u2a8a",gne:"\u2a88",gnE:"\u2269",gneq:"\u2a88",gneqq:"\u2269",gnsim:"\u22e7",Gopf:"\ud835\udd3e",gopf:"\ud835\udd58",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22db",GreaterFullEqual:"\u2267",GreaterGreater:"\u2aa2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2a7e",GreaterTilde:"\u2273",Gscr:"\ud835\udca2",gscr:"\u210a",gsim:"\u2273",gsime:"\u2a8e",gsiml:"\u2a90",gtcc:"\u2aa7",gtcir:"\u2a7a",gt:">",GT:">",Gt:"\u226b",gtdot:"\u22d7",gtlPar:"\u2995",gtquest:"\u2a7c",gtrapprox:"\u2a86",gtrarr:"\u2978",gtrdot:"\u22d7",gtreqless:"\u22db",gtreqqless:"\u2a8c",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\ufe00",gvnE:"\u2269\ufe00",Hacek:"\u02c7",hairsp:"\u200a",half:"\xbd",hamilt:"\u210b",HARDcy:"\u042a",hardcy:"\u044a",harrcir:"\u2948",harr:"\u2194",hArr:"\u21d4",harrw:"\u21ad",Hat:"^",hbar:"\u210f",Hcirc:"\u0124",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22b9",hfr:"\ud835\udd25",Hfr:"\u210c",HilbertSpace:"\u210b",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21ff",homtht:"\u223b",hookleftarrow:"\u21a9",hookrightarrow:"\u21aa",hopf:"\ud835\udd59",Hopf:"\u210d",horbar:"\u2015",HorizontalLine:"\u2500",hscr:"\ud835\udcbd",Hscr:"\u210b",hslash:"\u210f",Hstrok:"\u0126",hstrok:"\u0127",HumpDownHump:"\u224e",HumpEqual:"\u224f",hybull:"\u2043",hyphen:"\u2010",Iacute:"\xcd",iacute:"\xed",ic:"\u2063",Icirc:"\xce",icirc:"\xee",Icy:"\u0418",icy:"\u0438",Idot:"\u0130",IEcy:"\u0415",iecy:"\u0435",iexcl:"\xa1",iff:"\u21d4",ifr:"\ud835\udd26",Ifr:"\u2111",Igrave:"\xcc",igrave:"\xec",ii:"\u2148",iiiint:"\u2a0c",iiint:"\u222d",iinfin:"\u29dc",iiota:"\u2129",IJlig:"\u0132",ijlig:"\u0133",Imacr:"\u012a",imacr:"\u012b",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",Im:"\u2111",imof:"\u22b7",imped:"\u01b5",Implies:"\u21d2",incare:"\u2105",in:"\u2208",infin:"\u221e",infintie:"\u29dd",inodot:"\u0131",intcal:"\u22ba",int:"\u222b",Int:"\u222c",integers:"\u2124",Integral:"\u222b",intercal:"\u22ba",Intersection:"\u22c2",intlarhk:"\u2a17",intprod:"\u2a3c",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",IOcy:"\u0401",iocy:"\u0451",Iogon:"\u012e",iogon:"\u012f",Iopf:"\ud835\udd40",iopf:"\ud835\udd5a",Iota:"\u0399",iota:"\u03b9",iprod:"\u2a3c",iquest:"\xbf",iscr:"\ud835\udcbe",Iscr:"\u2110",isin:"\u2208",isindot:"\u22f5",isinE:"\u22f9",isins:"\u22f4",isinsv:"\u22f3",isinv:"\u2208",it:"\u2062",Itilde:"\u0128",itilde:"\u0129",Iukcy:"\u0406",iukcy:"\u0456",Iuml:"\xcf",iuml:"\xef",Jcirc:"\u0134",jcirc:"\u0135",Jcy:"\u0419",jcy:"\u0439",Jfr:"\ud835\udd0d",jfr:"\ud835\udd27",jmath:"\u0237",Jopf:"\ud835\udd41",jopf:"\ud835\udd5b",Jscr:"\ud835\udca5",jscr:"\ud835\udcbf",Jsercy:"\u0408",jsercy:"\u0458",Jukcy:"\u0404",jukcy:"\u0454",Kappa:"\u039a",kappa:"\u03ba",kappav:"\u03f0",Kcedil:"\u0136",kcedil:"\u0137",Kcy:"\u041a",kcy:"\u043a",Kfr:"\ud835\udd0e",kfr:"\ud835\udd28",kgreen:"\u0138",KHcy:"\u0425",khcy:"\u0445",KJcy:"\u040c",kjcy:"\u045c",Kopf:"\ud835\udd42",kopf:"\ud835\udd5c",Kscr:"\ud835\udca6",kscr:"\ud835\udcc0",lAarr:"\u21da",Lacute:"\u0139",lacute:"\u013a",laemptyv:"\u29b4",lagran:"\u2112",Lambda:"\u039b",lambda:"\u03bb",lang:"\u27e8",Lang:"\u27ea",langd:"\u2991",langle:"\u27e8",lap:"\u2a85",Laplacetrf:"\u2112",laquo:"\xab",larrb:"\u21e4",larrbfs:"\u291f",larr:"\u2190",Larr:"\u219e",lArr:"\u21d0",larrfs:"\u291d",larrhk:"\u21a9",larrlp:"\u21ab",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21a2",latail:"\u2919",lAtail:"\u291b",lat:"\u2aab",late:"\u2aad",lates:"\u2aad\ufe00",lbarr:"\u290c",lBarr:"\u290e",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298b",lbrksld:"\u298f",lbrkslu:"\u298d",Lcaron:"\u013d",lcaron:"\u013e",Lcedil:"\u013b",lcedil:"\u013c",lceil:"\u2308",lcub:"{",Lcy:"\u041b",lcy:"\u043b",ldca:"\u2936",ldquo:"\u201c",ldquor:"\u201e",ldrdhar:"\u2967",ldrushar:"\u294b",ldsh:"\u21b2",le:"\u2264",lE:"\u2266",LeftAngleBracket:"\u27e8",LeftArrowBar:"\u21e4",leftarrow:"\u2190",LeftArrow:"\u2190",Leftarrow:"\u21d0",LeftArrowRightArrow:"\u21c6",leftarrowtail:"\u21a2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27e6",LeftDownTeeVector:"\u2961",LeftDownVectorBar:"\u2959",LeftDownVector:"\u21c3",LeftFloor:"\u230a",leftharpoondown:"\u21bd",leftharpoonup:"\u21bc",leftleftarrows:"\u21c7",leftrightarrow:"\u2194",LeftRightArrow:"\u2194",Leftrightarrow:"\u21d4",leftrightarrows:"\u21c6",leftrightharpoons:"\u21cb",leftrightsquigarrow:"\u21ad",LeftRightVector:"\u294e",LeftTeeArrow:"\u21a4",LeftTee:"\u22a3",LeftTeeVector:"\u295a",leftthreetimes:"\u22cb",LeftTriangleBar:"\u29cf",LeftTriangle:"\u22b2",LeftTriangleEqual:"\u22b4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVectorBar:"\u2958",LeftUpVector:"\u21bf",LeftVectorBar:"\u2952",LeftVector:"\u21bc",lEg:"\u2a8b",leg:"\u22da",leq:"\u2264",leqq:"\u2266",leqslant:"\u2a7d",lescc:"\u2aa8",les:"\u2a7d",lesdot:"\u2a7f",lesdoto:"\u2a81",lesdotor:"\u2a83",lesg:"\u22da\ufe00",lesges:"\u2a93",lessapprox:"\u2a85",lessdot:"\u22d6",lesseqgtr:"\u22da",lesseqqgtr:"\u2a8b",LessEqualGreater:"\u22da",LessFullEqual:"\u2266",LessGreater:"\u2276",lessgtr:"\u2276",LessLess:"\u2aa1",lesssim:"\u2272",LessSlantEqual:"\u2a7d",LessTilde:"\u2272",lfisht:"\u297c",lfloor:"\u230a",Lfr:"\ud835\udd0f",lfr:"\ud835\udd29",lg:"\u2276",lgE:"\u2a91",lHar:"\u2962",lhard:"\u21bd",lharu:"\u21bc",lharul:"\u296a",lhblk:"\u2584",LJcy:"\u0409",ljcy:"\u0459",llarr:"\u21c7",ll:"\u226a",Ll:"\u22d8",llcorner:"\u231e",Lleftarrow:"\u21da",llhard:"\u296b",lltri:"\u25fa",Lmidot:"\u013f",lmidot:"\u0140",lmoustache:"\u23b0",lmoust:"\u23b0",lnap:"\u2a89",lnapprox:"\u2a89",lne:"\u2a87",lnE:"\u2268",lneq:"\u2a87",lneqq:"\u2268",lnsim:"\u22e6",loang:"\u27ec",loarr:"\u21fd",lobrk:"\u27e6",longleftarrow:"\u27f5",LongLeftArrow:"\u27f5",Longleftarrow:"\u27f8",longleftrightarrow:"\u27f7",LongLeftRightArrow:"\u27f7",Longleftrightarrow:"\u27fa",longmapsto:"\u27fc",longrightarrow:"\u27f6",LongRightArrow:"\u27f6",Longrightarrow:"\u27f9",looparrowleft:"\u21ab",looparrowright:"\u21ac",lopar:"\u2985",Lopf:"\ud835\udd43",lopf:"\ud835\udd5d",loplus:"\u2a2d",lotimes:"\u2a34",lowast:"\u2217",lowbar:"_",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",loz:"\u25ca",lozenge:"\u25ca",lozf:"\u29eb",lpar:"(",lparlt:"\u2993",lrarr:"\u21c6",lrcorner:"\u231f",lrhar:"\u21cb",lrhard:"\u296d",lrm:"\u200e",lrtri:"\u22bf",lsaquo:"\u2039",lscr:"\ud835\udcc1",Lscr:"\u2112",lsh:"\u21b0",Lsh:"\u21b0",lsim:"\u2272",lsime:"\u2a8d",lsimg:"\u2a8f",lsqb:"[",lsquo:"\u2018",lsquor:"\u201a",Lstrok:"\u0141",lstrok:"\u0142",ltcc:"\u2aa6",ltcir:"\u2a79",lt:"<",LT:"<",Lt:"\u226a",ltdot:"\u22d6",lthree:"\u22cb",ltimes:"\u22c9",ltlarr:"\u2976",ltquest:"\u2a7b",ltri:"\u25c3",ltrie:"\u22b4",ltrif:"\u25c2",ltrPar:"\u2996",lurdshar:"\u294a",luruhar:"\u2966",lvertneqq:"\u2268\ufe00",lvnE:"\u2268\ufe00",macr:"\xaf",male:"\u2642",malt:"\u2720",maltese:"\u2720",Map:"\u2905",map:"\u21a6",mapsto:"\u21a6",mapstodown:"\u21a7",mapstoleft:"\u21a4",mapstoup:"\u21a5",marker:"\u25ae",mcomma:"\u2a29",Mcy:"\u041c",mcy:"\u043c",mdash:"\u2014",mDDot:"\u223a",measuredangle:"\u2221",MediumSpace:"\u205f",Mellintrf:"\u2133",Mfr:"\ud835\udd10",mfr:"\ud835\udd2a",mho:"\u2127",micro:"\xb5",midast:"*",midcir:"\u2af0",mid:"\u2223",middot:"\xb7",minusb:"\u229f",minus:"\u2212",minusd:"\u2238",minusdu:"\u2a2a",MinusPlus:"\u2213",mlcp:"\u2adb",mldr:"\u2026",mnplus:"\u2213",models:"\u22a7",Mopf:"\ud835\udd44",mopf:"\ud835\udd5e",mp:"\u2213",mscr:"\ud835\udcc2",Mscr:"\u2133",mstpos:"\u223e",Mu:"\u039c",mu:"\u03bc",multimap:"\u22b8",mumap:"\u22b8",nabla:"\u2207",Nacute:"\u0143",nacute:"\u0144",nang:"\u2220\u20d2",nap:"\u2249",napE:"\u2a70\u0338",napid:"\u224b\u0338",napos:"\u0149",napprox:"\u2249",natural:"\u266e",naturals:"\u2115",natur:"\u266e",nbsp:"\xa0",nbump:"\u224e\u0338",nbumpe:"\u224f\u0338",ncap:"\u2a43",Ncaron:"\u0147",ncaron:"\u0148",Ncedil:"\u0145",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2a6d\u0338",ncup:"\u2a42",Ncy:"\u041d",ncy:"\u043d",ndash:"\u2013",nearhk:"\u2924",nearr:"\u2197",neArr:"\u21d7",nearrow:"\u2197",ne:"\u2260",nedot:"\u2250\u0338",NegativeMediumSpace:"\u200b",NegativeThickSpace:"\u200b",NegativeThinSpace:"\u200b",NegativeVeryThinSpace:"\u200b",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",NestedGreaterGreater:"\u226b",NestedLessLess:"\u226a",NewLine:"\n",nexist:"\u2204",nexists:"\u2204",Nfr:"\ud835\udd11",nfr:"\ud835\udd2b",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2a7e\u0338",nges:"\u2a7e\u0338",nGg:"\u22d9\u0338",ngsim:"\u2275",nGt:"\u226b\u20d2",ngt:"\u226f",ngtr:"\u226f",nGtv:"\u226b\u0338",nharr:"\u21ae",nhArr:"\u21ce",nhpar:"\u2af2",ni:"\u220b",nis:"\u22fc",nisd:"\u22fa",niv:"\u220b",NJcy:"\u040a",njcy:"\u045a",nlarr:"\u219a",nlArr:"\u21cd",nldr:"\u2025",nlE:"\u2266\u0338",nle:"\u2270",nleftarrow:"\u219a",nLeftarrow:"\u21cd",nleftrightarrow:"\u21ae",nLeftrightarrow:"\u21ce",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2a7d\u0338",nles:"\u2a7d\u0338",nless:"\u226e",nLl:"\u22d8\u0338",nlsim:"\u2274",nLt:"\u226a\u20d2",nlt:"\u226e",nltri:"\u22ea",nltrie:"\u22ec",nLtv:"\u226a\u0338",nmid:"\u2224",NoBreak:"\u2060",NonBreakingSpace:"\xa0",nopf:"\ud835\udd5f",Nopf:"\u2115",Not:"\u2aec",not:"\xac",NotCongruent:"\u2262",NotCupCap:"\u226d",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226f",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226b\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2a7e\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224e\u0338",NotHumpEqual:"\u224f\u0338",notin:"\u2209",notindot:"\u22f5\u0338",notinE:"\u22f9\u0338",notinva:"\u2209",notinvb:"\u22f7",notinvc:"\u22f6",NotLeftTriangleBar:"\u29cf\u0338",NotLeftTriangle:"\u22ea",NotLeftTriangleEqual:"\u22ec",NotLess:"\u226e",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226a\u0338",NotLessSlantEqual:"\u2a7d\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2aa2\u0338",NotNestedLessLess:"\u2aa1\u0338",notni:"\u220c",notniva:"\u220c",notnivb:"\u22fe",notnivc:"\u22fd",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2aaf\u0338",NotPrecedesSlantEqual:"\u22e0",NotReverseElement:"\u220c",NotRightTriangleBar:"\u29d0\u0338",NotRightTriangle:"\u22eb",NotRightTriangleEqual:"\u22ed",NotSquareSubset:"\u228f\u0338",NotSquareSubsetEqual:"\u22e2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22e3",NotSubset:"\u2282\u20d2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2ab0\u0338",NotSucceedsSlantEqual:"\u22e1",NotSucceedsTilde:"\u227f\u0338",NotSuperset:"\u2283\u20d2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",nparallel:"\u2226",npar:"\u2226",nparsl:"\u2afd\u20e5",npart:"\u2202\u0338",npolint:"\u2a14",npr:"\u2280",nprcue:"\u22e0",nprec:"\u2280",npreceq:"\u2aaf\u0338",npre:"\u2aaf\u0338",nrarrc:"\u2933\u0338",nrarr:"\u219b",nrArr:"\u21cf",nrarrw:"\u219d\u0338",nrightarrow:"\u219b",nRightarrow:"\u21cf",nrtri:"\u22eb",nrtrie:"\u22ed",nsc:"\u2281",nsccue:"\u22e1",nsce:"\u2ab0\u0338",Nscr:"\ud835\udca9",nscr:"\ud835\udcc3",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22e2",nsqsupe:"\u22e3",nsub:"\u2284",nsubE:"\u2ac5\u0338",nsube:"\u2288",nsubset:"\u2282\u20d2",nsubseteq:"\u2288",nsubseteqq:"\u2ac5\u0338",nsucc:"\u2281",nsucceq:"\u2ab0\u0338",nsup:"\u2285",nsupE:"\u2ac6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20d2",nsupseteq:"\u2289",nsupseteqq:"\u2ac6\u0338",ntgl:"\u2279",Ntilde:"\xd1",ntilde:"\xf1",ntlg:"\u2278",ntriangleleft:"\u22ea",ntrianglelefteq:"\u22ec",ntriangleright:"\u22eb",ntrianglerighteq:"\u22ed",Nu:"\u039d",nu:"\u03bd",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224d\u20d2",nvdash:"\u22ac",nvDash:"\u22ad",nVdash:"\u22ae",nVDash:"\u22af",nvge:"\u2265\u20d2",nvgt:">\u20d2",nvHarr:"\u2904",nvinfin:"\u29de",nvlArr:"\u2902",nvle:"\u2264\u20d2",nvlt:"<\u20d2",nvltrie:"\u22b4\u20d2",nvrArr:"\u2903",nvrtrie:"\u22b5\u20d2",nvsim:"\u223c\u20d2",nwarhk:"\u2923",nwarr:"\u2196",nwArr:"\u21d6",nwarrow:"\u2196",nwnear:"\u2927",Oacute:"\xd3",oacute:"\xf3",oast:"\u229b",Ocirc:"\xd4",ocirc:"\xf4",ocir:"\u229a",Ocy:"\u041e",ocy:"\u043e",odash:"\u229d",Odblac:"\u0150",odblac:"\u0151",odiv:"\u2a38",odot:"\u2299",odsold:"\u29bc",OElig:"\u0152",oelig:"\u0153",ofcir:"\u29bf",Ofr:"\ud835\udd12",ofr:"\ud835\udd2c",ogon:"\u02db",Ograve:"\xd2",ograve:"\xf2",ogt:"\u29c1",ohbar:"\u29b5",ohm:"\u03a9",oint:"\u222e",olarr:"\u21ba",olcir:"\u29be",olcross:"\u29bb",oline:"\u203e",olt:"\u29c0",Omacr:"\u014c",omacr:"\u014d",Omega:"\u03a9",omega:"\u03c9",Omicron:"\u039f",omicron:"\u03bf",omid:"\u29b6",ominus:"\u2296",Oopf:"\ud835\udd46",oopf:"\ud835\udd60",opar:"\u29b7",OpenCurlyDoubleQuote:"\u201c",OpenCurlyQuote:"\u2018",operp:"\u29b9",oplus:"\u2295",orarr:"\u21bb",Or:"\u2a54",or:"\u2228",ord:"\u2a5d",order:"\u2134",orderof:"\u2134",ordf:"\xaa",ordm:"\xba",origof:"\u22b6",oror:"\u2a56",orslope:"\u2a57",orv:"\u2a5b",oS:"\u24c8",Oscr:"\ud835\udcaa",oscr:"\u2134",Oslash:"\xd8",oslash:"\xf8",osol:"\u2298",Otilde:"\xd5",otilde:"\xf5",otimesas:"\u2a36",Otimes:"\u2a37",otimes:"\u2297",Ouml:"\xd6",ouml:"\xf6",ovbar:"\u233d",OverBar:"\u203e",OverBrace:"\u23de",OverBracket:"\u23b4",OverParenthesis:"\u23dc",para:"\xb6",parallel:"\u2225",par:"\u2225",parsim:"\u2af3",parsl:"\u2afd",part:"\u2202",PartialD:"\u2202",Pcy:"\u041f",pcy:"\u043f",percnt:"%",period:".",permil:"\u2030",perp:"\u22a5",pertenk:"\u2031",Pfr:"\ud835\udd13",pfr:"\ud835\udd2d",Phi:"\u03a6",phi:"\u03c6",phiv:"\u03d5",phmmat:"\u2133",phone:"\u260e",Pi:"\u03a0",pi:"\u03c0",pitchfork:"\u22d4",piv:"\u03d6",planck:"\u210f",planckh:"\u210e",plankv:"\u210f",plusacir:"\u2a23",plusb:"\u229e",pluscir:"\u2a22",plus:"+",plusdo:"\u2214",plusdu:"\u2a25",pluse:"\u2a72",PlusMinus:"\xb1",plusmn:"\xb1",plussim:"\u2a26",plustwo:"\u2a27",pm:"\xb1",Poincareplane:"\u210c",pointint:"\u2a15",popf:"\ud835\udd61",Popf:"\u2119",pound:"\xa3",prap:"\u2ab7",Pr:"\u2abb",pr:"\u227a",prcue:"\u227c",precapprox:"\u2ab7",prec:"\u227a",preccurlyeq:"\u227c",Precedes:"\u227a",PrecedesEqual:"\u2aaf",PrecedesSlantEqual:"\u227c",PrecedesTilde:"\u227e",preceq:"\u2aaf",precnapprox:"\u2ab9",precneqq:"\u2ab5",precnsim:"\u22e8",pre:"\u2aaf",prE:"\u2ab3",precsim:"\u227e",prime:"\u2032",Prime:"\u2033",primes:"\u2119",prnap:"\u2ab9",prnE:"\u2ab5",prnsim:"\u22e8",prod:"\u220f",Product:"\u220f",profalar:"\u232e",profline:"\u2312",profsurf:"\u2313",prop:"\u221d",Proportional:"\u221d",Proportion:"\u2237",propto:"\u221d",prsim:"\u227e",prurel:"\u22b0",Pscr:"\ud835\udcab",pscr:"\ud835\udcc5",Psi:"\u03a8",psi:"\u03c8",puncsp:"\u2008",Qfr:"\ud835\udd14",qfr:"\ud835\udd2e",qint:"\u2a0c",qopf:"\ud835\udd62",Qopf:"\u211a",qprime:"\u2057",Qscr:"\ud835\udcac",qscr:"\ud835\udcc6",quaternions:"\u210d",quatint:"\u2a16",quest:"?",questeq:"\u225f",quot:'"',QUOT:'"',rAarr:"\u21db",race:"\u223d\u0331",Racute:"\u0154",racute:"\u0155",radic:"\u221a",raemptyv:"\u29b3",rang:"\u27e9",Rang:"\u27eb",rangd:"\u2992",range:"\u29a5",rangle:"\u27e9",raquo:"\xbb",rarrap:"\u2975",rarrb:"\u21e5",rarrbfs:"\u2920",rarrc:"\u2933",rarr:"\u2192",Rarr:"\u21a0",rArr:"\u21d2",rarrfs:"\u291e",rarrhk:"\u21aa",rarrlp:"\u21ac",rarrpl:"\u2945",rarrsim:"\u2974",Rarrtl:"\u2916",rarrtl:"\u21a3",rarrw:"\u219d",ratail:"\u291a",rAtail:"\u291c",ratio:"\u2236",rationals:"\u211a",rbarr:"\u290d",rBarr:"\u290f",RBarr:"\u2910",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298c",rbrksld:"\u298e",rbrkslu:"\u2990",Rcaron:"\u0158",rcaron:"\u0159",Rcedil:"\u0156",rcedil:"\u0157",rceil:"\u2309",rcub:"}",Rcy:"\u0420",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201d",rdquor:"\u201d",rdsh:"\u21b3",real:"\u211c",realine:"\u211b",realpart:"\u211c",reals:"\u211d",Re:"\u211c",rect:"\u25ad",reg:"\xae",REG:"\xae",ReverseElement:"\u220b",ReverseEquilibrium:"\u21cb",ReverseUpEquilibrium:"\u296f",rfisht:"\u297d",rfloor:"\u230b",rfr:"\ud835\udd2f",Rfr:"\u211c",rHar:"\u2964",rhard:"\u21c1",rharu:"\u21c0",rharul:"\u296c",Rho:"\u03a1",rho:"\u03c1",rhov:"\u03f1",RightAngleBracket:"\u27e9",RightArrowBar:"\u21e5",rightarrow:"\u2192",RightArrow:"\u2192",Rightarrow:"\u21d2",RightArrowLeftArrow:"\u21c4",rightarrowtail:"\u21a3",RightCeiling:"\u2309",RightDoubleBracket:"\u27e7",RightDownTeeVector:"\u295d",RightDownVectorBar:"\u2955",RightDownVector:"\u21c2",RightFloor:"\u230b",rightharpoondown:"\u21c1",rightharpoonup:"\u21c0",rightleftarrows:"\u21c4",rightleftharpoons:"\u21cc",rightrightarrows:"\u21c9",rightsquigarrow:"\u219d",RightTeeArrow:"\u21a6",RightTee:"\u22a2",RightTeeVector:"\u295b",rightthreetimes:"\u22cc",RightTriangleBar:"\u29d0",RightTriangle:"\u22b3",RightTriangleEqual:"\u22b5",RightUpDownVector:"\u294f",RightUpTeeVector:"\u295c",RightUpVectorBar:"\u2954",RightUpVector:"\u21be",RightVectorBar:"\u2953",RightVector:"\u21c0",ring:"\u02da",risingdotseq:"\u2253",rlarr:"\u21c4",rlhar:"\u21cc",rlm:"\u200f",rmoustache:"\u23b1",rmoust:"\u23b1",rnmid:"\u2aee",roang:"\u27ed",roarr:"\u21fe",robrk:"\u27e7",ropar:"\u2986",ropf:"\ud835\udd63",Ropf:"\u211d",roplus:"\u2a2e",rotimes:"\u2a35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2a12",rrarr:"\u21c9",Rrightarrow:"\u21db",rsaquo:"\u203a",rscr:"\ud835\udcc7",Rscr:"\u211b",rsh:"\u21b1",Rsh:"\u21b1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22cc",rtimes:"\u22ca",rtri:"\u25b9",rtrie:"\u22b5",rtrif:"\u25b8",rtriltri:"\u29ce",RuleDelayed:"\u29f4",ruluhar:"\u2968",rx:"\u211e",Sacute:"\u015a",sacute:"\u015b",sbquo:"\u201a",scap:"\u2ab8",Scaron:"\u0160",scaron:"\u0161",Sc:"\u2abc",sc:"\u227b",sccue:"\u227d",sce:"\u2ab0",scE:"\u2ab4",Scedil:"\u015e",scedil:"\u015f",Scirc:"\u015c",scirc:"\u015d",scnap:"\u2aba",scnE:"\u2ab6",scnsim:"\u22e9",scpolint:"\u2a13",scsim:"\u227f",Scy:"\u0421",scy:"\u0441",sdotb:"\u22a1",sdot:"\u22c5",sdote:"\u2a66",searhk:"\u2925",searr:"\u2198",seArr:"\u21d8",searrow:"\u2198",sect:"\xa7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",Sfr:"\ud835\udd16",sfr:"\ud835\udd30",sfrown:"\u2322",sharp:"\u266f",SHCHcy:"\u0429",shchcy:"\u0449",SHcy:"\u0428",shcy:"\u0448",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",shortmid:"\u2223",shortparallel:"\u2225",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",shy:"\xad",Sigma:"\u03a3",sigma:"\u03c3",sigmaf:"\u03c2",sigmav:"\u03c2",sim:"\u223c",simdot:"\u2a6a",sime:"\u2243",simeq:"\u2243",simg:"\u2a9e",simgE:"\u2aa0",siml:"\u2a9d",simlE:"\u2a9f",simne:"\u2246",simplus:"\u2a24",simrarr:"\u2972",slarr:"\u2190",SmallCircle:"\u2218",smallsetminus:"\u2216",smashp:"\u2a33",smeparsl:"\u29e4",smid:"\u2223",smile:"\u2323",smt:"\u2aaa",smte:"\u2aac",smtes:"\u2aac\ufe00",SOFTcy:"\u042c",softcy:"\u044c",solbar:"\u233f",solb:"\u29c4",sol:"/",Sopf:"\ud835\udd4a",sopf:"\ud835\udd64",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\ufe00",sqcup:"\u2294",sqcups:"\u2294\ufe00",Sqrt:"\u221a",sqsub:"\u228f",sqsube:"\u2291",sqsubset:"\u228f",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",square:"\u25a1",Square:"\u25a1",SquareIntersection:"\u2293",SquareSubset:"\u228f",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25aa",squ:"\u25a1",squf:"\u25aa",srarr:"\u2192",Sscr:"\ud835\udcae",sscr:"\ud835\udcc8",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22c6",Star:"\u22c6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03f5",straightphi:"\u03d5",strns:"\xaf",sub:"\u2282",Sub:"\u22d0",subdot:"\u2abd",subE:"\u2ac5",sube:"\u2286",subedot:"\u2ac3",submult:"\u2ac1",subnE:"\u2acb",subne:"\u228a",subplus:"\u2abf",subrarr:"\u2979",subset:"\u2282",Subset:"\u22d0",subseteq:"\u2286",subseteqq:"\u2ac5",SubsetEqual:"\u2286",subsetneq:"\u228a",subsetneqq:"\u2acb",subsim:"\u2ac7",subsub:"\u2ad5",subsup:"\u2ad3",succapprox:"\u2ab8",succ:"\u227b",succcurlyeq:"\u227d",Succeeds:"\u227b",SucceedsEqual:"\u2ab0",SucceedsSlantEqual:"\u227d",SucceedsTilde:"\u227f",succeq:"\u2ab0",succnapprox:"\u2aba",succneqq:"\u2ab6",succnsim:"\u22e9",succsim:"\u227f",SuchThat:"\u220b",sum:"\u2211",Sum:"\u2211",sung:"\u266a",sup1:"\xb9",sup2:"\xb2",sup3:"\xb3",sup:"\u2283",Sup:"\u22d1",supdot:"\u2abe",supdsub:"\u2ad8",supE:"\u2ac6",supe:"\u2287",supedot:"\u2ac4",Superset:"\u2283",SupersetEqual:"\u2287",suphsol:"\u27c9",suphsub:"\u2ad7",suplarr:"\u297b",supmult:"\u2ac2",supnE:"\u2acc",supne:"\u228b",supplus:"\u2ac0",supset:"\u2283",Supset:"\u22d1",supseteq:"\u2287",supseteqq:"\u2ac6",supsetneq:"\u228b",supsetneqq:"\u2acc",supsim:"\u2ac8",supsub:"\u2ad4",supsup:"\u2ad6",swarhk:"\u2926",swarr:"\u2199",swArr:"\u21d9",swarrow:"\u2199",swnwar:"\u292a",szlig:"\xdf",Tab:"\t",target:"\u2316",Tau:"\u03a4",tau:"\u03c4",tbrk:"\u23b4",Tcaron:"\u0164",tcaron:"\u0165",Tcedil:"\u0162",tcedil:"\u0163",Tcy:"\u0422",tcy:"\u0442",tdot:"\u20db",telrec:"\u2315",Tfr:"\ud835\udd17",tfr:"\ud835\udd31",there4:"\u2234",therefore:"\u2234",Therefore:"\u2234",Theta:"\u0398",theta:"\u03b8",thetasym:"\u03d1",thetav:"\u03d1",thickapprox:"\u2248",thicksim:"\u223c",ThickSpace:"\u205f\u200a",ThinSpace:"\u2009",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223c",THORN:"\xde",thorn:"\xfe",tilde:"\u02dc",Tilde:"\u223c",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",timesbar:"\u2a31",timesb:"\u22a0",times:"\xd7",timesd:"\u2a30",tint:"\u222d",toea:"\u2928",topbot:"\u2336",topcir:"\u2af1",top:"\u22a4",Topf:"\ud835\udd4b",topf:"\ud835\udd65",topfork:"\u2ada",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",TRADE:"\u2122",triangle:"\u25b5",triangledown:"\u25bf",triangleleft:"\u25c3",trianglelefteq:"\u22b4",triangleq:"\u225c",triangleright:"\u25b9",trianglerighteq:"\u22b5",tridot:"\u25ec",trie:"\u225c",triminus:"\u2a3a",TripleDot:"\u20db",triplus:"\u2a39",trisb:"\u29cd",tritime:"\u2a3b",trpezium:"\u23e2",Tscr:"\ud835\udcaf",tscr:"\ud835\udcc9",TScy:"\u0426",tscy:"\u0446",TSHcy:"\u040b",tshcy:"\u045b",Tstrok:"\u0166",tstrok:"\u0167",twixt:"\u226c",twoheadleftarrow:"\u219e",twoheadrightarrow:"\u21a0",Uacute:"\xda",uacute:"\xfa",uarr:"\u2191",Uarr:"\u219f",uArr:"\u21d1",Uarrocir:"\u2949",Ubrcy:"\u040e",ubrcy:"\u045e",Ubreve:"\u016c",ubreve:"\u016d",Ucirc:"\xdb",ucirc:"\xfb",Ucy:"\u0423",ucy:"\u0443",udarr:"\u21c5",Udblac:"\u0170",udblac:"\u0171",udhar:"\u296e",ufisht:"\u297e",Ufr:"\ud835\udd18",ufr:"\ud835\udd32",Ugrave:"\xd9",ugrave:"\xf9",uHar:"\u2963",uharl:"\u21bf",uharr:"\u21be",uhblk:"\u2580",ulcorn:"\u231c",ulcorner:"\u231c",ulcrop:"\u230f",ultri:"\u25f8",Umacr:"\u016a",umacr:"\u016b",uml:"\xa8",UnderBar:"_",UnderBrace:"\u23df",UnderBracket:"\u23b5",UnderParenthesis:"\u23dd",Union:"\u22c3",UnionPlus:"\u228e",Uogon:"\u0172",uogon:"\u0173",Uopf:"\ud835\udd4c",uopf:"\ud835\udd66",UpArrowBar:"\u2912",uparrow:"\u2191",UpArrow:"\u2191",Uparrow:"\u21d1",UpArrowDownArrow:"\u21c5",updownarrow:"\u2195",UpDownArrow:"\u2195",Updownarrow:"\u21d5",UpEquilibrium:"\u296e",upharpoonleft:"\u21bf",upharpoonright:"\u21be",uplus:"\u228e",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",upsi:"\u03c5",Upsi:"\u03d2",upsih:"\u03d2",Upsilon:"\u03a5",upsilon:"\u03c5",UpTeeArrow:"\u21a5",UpTee:"\u22a5",upuparrows:"\u21c8",urcorn:"\u231d",urcorner:"\u231d",urcrop:"\u230e",Uring:"\u016e",uring:"\u016f",urtri:"\u25f9",Uscr:"\ud835\udcb0",uscr:"\ud835\udcca",utdot:"\u22f0",Utilde:"\u0168",utilde:"\u0169",utri:"\u25b5",utrif:"\u25b4",uuarr:"\u21c8",Uuml:"\xdc",uuml:"\xfc",uwangle:"\u29a7",vangrt:"\u299c",varepsilon:"\u03f5",varkappa:"\u03f0",varnothing:"\u2205",varphi:"\u03d5",varpi:"\u03d6",varpropto:"\u221d",varr:"\u2195",vArr:"\u21d5",varrho:"\u03f1",varsigma:"\u03c2",varsubsetneq:"\u228a\ufe00",varsubsetneqq:"\u2acb\ufe00",varsupsetneq:"\u228b\ufe00",varsupsetneqq:"\u2acc\ufe00",vartheta:"\u03d1",vartriangleleft:"\u22b2",vartriangleright:"\u22b3",vBar:"\u2ae8",Vbar:"\u2aeb",vBarv:"\u2ae9",Vcy:"\u0412",vcy:"\u0432",vdash:"\u22a2",vDash:"\u22a8",Vdash:"\u22a9",VDash:"\u22ab",Vdashl:"\u2ae6",veebar:"\u22bb",vee:"\u2228",Vee:"\u22c1",veeeq:"\u225a",vellip:"\u22ee",verbar:"|",Verbar:"\u2016",vert:"|",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200a",Vfr:"\ud835\udd19",vfr:"\ud835\udd33",vltri:"\u22b2",vnsub:"\u2282\u20d2",vnsup:"\u2283\u20d2",Vopf:"\ud835\udd4d",vopf:"\ud835\udd67",vprop:"\u221d",vrtri:"\u22b3",Vscr:"\ud835\udcb1",vscr:"\ud835\udccb",vsubnE:"\u2acb\ufe00",vsubne:"\u228a\ufe00",vsupnE:"\u2acc\ufe00",vsupne:"\u228b\ufe00",Vvdash:"\u22aa",vzigzag:"\u299a",Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2a5f",wedge:"\u2227",Wedge:"\u22c0",wedgeq:"\u2259",weierp:"\u2118",Wfr:"\ud835\udd1a",wfr:"\ud835\udd34",Wopf:"\ud835\udd4e",wopf:"\ud835\udd68",wp:"\u2118",wr:"\u2240",wreath:"\u2240",Wscr:"\ud835\udcb2",wscr:"\ud835\udccc",xcap:"\u22c2",xcirc:"\u25ef",xcup:"\u22c3",xdtri:"\u25bd",Xfr:"\ud835\udd1b",xfr:"\ud835\udd35",xharr:"\u27f7",xhArr:"\u27fa",Xi:"\u039e",xi:"\u03be",xlarr:"\u27f5",xlArr:"\u27f8",xmap:"\u27fc",xnis:"\u22fb",xodot:"\u2a00",Xopf:"\ud835\udd4f",xopf:"\ud835\udd69",xoplus:"\u2a01",xotime:"\u2a02",xrarr:"\u27f6",xrArr:"\u27f9",Xscr:"\ud835\udcb3",xscr:"\ud835\udccd",xsqcup:"\u2a06",xuplus:"\u2a04",xutri:"\u25b3",xvee:"\u22c1",xwedge:"\u22c0",Yacute:"\xdd",yacute:"\xfd",YAcy:"\u042f",yacy:"\u044f",Ycirc:"\u0176",ycirc:"\u0177",Ycy:"\u042b",ycy:"\u044b",yen:"\xa5",Yfr:"\ud835\udd1c",yfr:"\ud835\udd36",YIcy:"\u0407",yicy:"\u0457",Yopf:"\ud835\udd50",yopf:"\ud835\udd6a",Yscr:"\ud835\udcb4",yscr:"\ud835\udcce",YUcy:"\u042e",yucy:"\u044e",yuml:"\xff",Yuml:"\u0178",Zacute:"\u0179",zacute:"\u017a",Zcaron:"\u017d",zcaron:"\u017e",Zcy:"\u0417",zcy:"\u0437",Zdot:"\u017b",zdot:"\u017c",zeetrf:"\u2128",ZeroWidthSpace:"\u200b",Zeta:"\u0396",zeta:"\u03b6",zfr:"\ud835\udd37",Zfr:"\u2128",ZHcy:"\u0416",zhcy:"\u0436",zigrarr:"\u21dd",zopf:"\ud835\udd6b",Zopf:"\u2124",Zscr:"\ud835\udcb5",zscr:"\ud835\udccf",zwj:"\u200d",zwnj:"\u200c"}},{}],53:[function(e,r,t){"use strict";function n(e){return Array.prototype.slice.call(arguments,1).forEach((function(r){r&&Object.keys(r).forEach((function(t){e[t]=r[t]}))})),e}function s(e){return Object.prototype.toString.call(e)}function o(e){return"[object Function]"===s(e)}function i(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}var a={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};var c={"http:":{validate:function(e,r,t){var n=e.slice(r);return t.re.http||(t.re.http=new RegExp("^\\/\\/"+t.re.src_auth+t.re.src_host_port_strict+t.re.src_path,"i")),t.re.http.test(n)?n.match(t.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(e,r,t){var n=e.slice(r);return t.re.no_http||(t.re.no_http=new RegExp("^"+t.re.src_auth+"(?:localhost|(?:(?:"+t.re.src_domain+")\\.)+"+t.re.src_domain_root+")"+t.re.src_port+t.re.src_host_terminator+t.re.src_path,"i")),t.re.no_http.test(n)?r>=3&&":"===e[r-3]?0:r>=3&&"/"===e[r-3]?0:n.match(t.re.no_http)[0].length:0}},"mailto:":{validate:function(e,r,t){var n=e.slice(r);return t.re.mailto||(t.re.mailto=new RegExp("^"+t.re.src_email_name+"@"+t.re.src_host_strict,"i")),t.re.mailto.test(n)?n.match(t.re.mailto)[0].length:0}}},l="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",u="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");function p(r){var t=r.re=e("./lib/re")(r.__opts__),n=r.__tlds__.slice();function a(e){return e.replace("%TLDS%",t.src_tlds)}r.onCompile(),r.__tlds_replaced__||n.push(l),n.push(t.src_xn),t.src_tlds=n.join("|"),t.email_fuzzy=RegExp(a(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(a(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(a(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(a(t.tpl_host_fuzzy_test),"i");var c=[];function u(e,r){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+r)}r.__compiled__={},Object.keys(r.__schemas__).forEach((function(e){var t=r.__schemas__[e];if(null!==t){var n={validate:null,link:null};if(r.__compiled__[e]=n,"[object Object]"===s(t))return!function(e){return"[object RegExp]"===s(e)}(t.validate)?o(t.validate)?n.validate=t.validate:u(e,t):n.validate=function(e){return function(r,t){var n=r.slice(t);return e.test(n)?n.match(e)[0].length:0}}(t.validate),void(o(t.normalize)?n.normalize=t.normalize:t.normalize?u(e,t):n.normalize=function(e,r){r.normalize(e)});!function(e){return"[object String]"===s(e)}(t)?u(e,t):c.push(e)}})),c.forEach((function(e){r.__compiled__[r.__schemas__[e]]&&(r.__compiled__[e].validate=r.__compiled__[r.__schemas__[e]].validate,r.__compiled__[e].normalize=r.__compiled__[r.__schemas__[e]].normalize)})),r.__compiled__[""]={validate:null,normalize:function(e,r){r.normalize(e)}};var p=Object.keys(r.__compiled__).filter((function(e){return e.length>0&&r.__compiled__[e]})).map(i).join("|");r.re.schema_test=RegExp("(^|(?!_)(?:[><\uff5c]|"+t.src_ZPCc+"))("+p+")","i"),r.re.schema_search=RegExp("(^|(?!_)(?:[><\uff5c]|"+t.src_ZPCc+"))("+p+")","ig"),r.re.pretest=RegExp("("+r.re.schema_test.source+")|("+r.re.host_fuzzy_test.source+")|@","i"),function(e){e.__index__=-1,e.__text_cache__=""}(r)}function h(e,r){var t=e.__index__,n=e.__last_index__,s=e.__text_cache__.slice(t,n);this.schema=e.__schema__.toLowerCase(),this.index=t+r,this.lastIndex=n+r,this.raw=s,this.text=s,this.url=s}function f(e,r){var t=new h(e,r);return e.__compiled__[t.schema].normalize(t,e),t}function d(e,r){if(!(this instanceof d))return new d(e,r);var t;r||(t=e,Object.keys(t||{}).reduce((function(e,r){return e||a.hasOwnProperty(r)}),!1)&&(r=e,e={})),this.__opts__=n({},a,r),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=n({},c,e),this.__compiled__={},this.__tlds__=u,this.__tlds_replaced__=!1,this.re={},p(this)}d.prototype.add=function(e,r){return this.__schemas__[e]=r,p(this),this},d.prototype.set=function(e){return this.__opts__=n(this.__opts__,e),this},d.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var r,t,n,s,o,i,a,c;if(this.re.schema_test.test(e))for((a=this.re.schema_search).lastIndex=0;null!==(r=a.exec(e));)if(s=this.testSchemaAt(e,r[2],a.lastIndex)){this.__schema__=r[2],this.__index__=r.index+r[1].length,this.__last_index__=r.index+r[0].length+s;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(c=e.search(this.re.host_fuzzy_test))>=0&&(this.__index__<0||c=0&&null!==(n=e.match(this.re.email_fuzzy))&&(o=n.index+n[1].length,i=n.index+n[0].length,(this.__index__<0||othis.__last_index__)&&(this.__schema__="mailto:",this.__index__=o,this.__last_index__=i)),this.__index__>=0},d.prototype.pretest=function(e){return this.re.pretest.test(e)},d.prototype.testSchemaAt=function(e,r,t){return this.__compiled__[r.toLowerCase()]?this.__compiled__[r.toLowerCase()].validate(e,t,this):0},d.prototype.match=function(e){var r=0,t=[];this.__index__>=0&&this.__text_cache__===e&&(t.push(f(this,r)),r=this.__last_index__);for(var n=r?e.slice(r):e;this.test(n);)t.push(f(this,r)),n=n.slice(this.__last_index__),r+=this.__last_index__;return t.length?t:null},d.prototype.tlds=function(e,r){return e=Array.isArray(e)?e:[e],r?(this.__tlds__=this.__tlds__.concat(e).sort().filter((function(e,r,t){return e!==t[r-1]})).reverse(),p(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,p(this),this)},d.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},d.prototype.onCompile=function(){},r.exports=d},{"./lib/re":54}],54:[function(e,r,t){"use strict";r.exports=function(r){var t={};t.src_Any=e("uc.micro/properties/Any/regex").source,t.src_Cc=e("uc.micro/categories/Cc/regex").source,t.src_Z=e("uc.micro/categories/Z/regex").source,t.src_P=e("uc.micro/categories/P/regex").source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");return t.src_pseudo_letter="(?:(?![><\uff5c]|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|[><\uff5c]|"+t.src_ZPCc+")(?!-|_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|[><\uff5c]|[()[\\]{}.,\"'?!\\-]).|\\[(?:(?!"+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-]).|\\.{2,4}[a-zA-Z0-9%/]|\\.(?!"+t.src_ZCc+"|[.]).|"+(r&&r["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+"\\,(?!"+t.src_ZCc+").|\\!(?!"+t.src_ZCc+"|[!]).|\\?(?!"+t.src_ZCc+"|[?]).)+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy='(^|[><\uff5c]|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+t.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+t.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}},{"uc.micro/categories/Cc/regex":61,"uc.micro/categories/P/regex":63,"uc.micro/categories/Z/regex":64,"uc.micro/properties/Any/regex":66}],55:[function(e,r,t){"use strict";var n={};function s(e,r){var t;return"string"!=typeof r&&(r=s.defaultChars),t=function(e){var r,t,s=n[e];if(s)return s;for(s=n[e]=[],r=0;r<128;r++)t=String.fromCharCode(r),s.push(t);for(r=0;r=55296&&c<=57343?"\ufffd\ufffd\ufffd":String.fromCharCode(c),r+=6):240==(248&s)&&r+91114111?l+="\ufffd\ufffd\ufffd\ufffd":(c-=65536,l+=String.fromCharCode(55296+(c>>10),56320+(1023&c))),r+=9):l+="\ufffd";return l}))}s.defaultChars=";/?:@&=+$,#",s.componentChars="",r.exports=s},{}],56:[function(e,r,t){"use strict";var n={};function s(e,r,t){var o,i,a,c,l,u="";for("string"!=typeof r&&(t=r,r=s.defaultChars),void 0===t&&(t=!0),l=function(e){var r,t,s=n[e];if(s)return s;for(s=n[e]=[],r=0;r<128;r++)t=String.fromCharCode(r),/^[0-9a-z]$/i.test(t)?s.push(t):s.push("%"+("0"+r.toString(16).toUpperCase()).slice(-2));for(r=0;r=55296&&a<=57343){if(a>=55296&&a<=56319&&o+1=56320&&c<=57343){u+=encodeURIComponent(e[o]+e[o+1]),o++;continue}u+="%EF%BF%BD"}else u+=encodeURIComponent(e[o]);return u}s.defaultChars=";/?:@&=+$,-_.!~*'()#",s.componentChars="-_.!~*'()",r.exports=s},{}],57:[function(e,r,t){"use strict";r.exports=function(e){var r="";return r+=e.protocol||"",r+=e.slashes?"//":"",r+=e.auth?e.auth+"@":"",e.hostname&&-1!==e.hostname.indexOf(":")?r+="["+e.hostname+"]":r+=e.hostname||"",r+=e.port?":"+e.port:"",r+=e.pathname||"",r+=e.search||"",r+=e.hash||""}},{}],58:[function(e,r,t){"use strict";r.exports.encode=e("./encode"),r.exports.decode=e("./decode"),r.exports.format=e("./format"),r.exports.parse=e("./parse")},{"./decode":55,"./encode":56,"./format":57,"./parse":59}],59:[function(e,r,t){"use strict";function n(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var s=/^([a-z0-9.+-]+:)/i,o=/:[0-9]*$/,i=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,a=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(a),l=["%","/","?",";","#"].concat(c),u=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,h=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,f={javascript:!0,"javascript:":!0},d={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};n.prototype.parse=function(e,r){var t,n,o,a,c,m=e;if(m=m.trim(),!r&&1===e.split("#").length){var _=i.exec(m);if(_)return this.pathname=_[1],_[2]&&(this.search=_[2]),this}var g=s.exec(m);if(g&&(o=(g=g[0]).toLowerCase(),this.protocol=g,m=m.substr(g.length)),(r||g||m.match(/^\/\/[^@\/]+@[^@\/]+/))&&(!(c="//"===m.substr(0,2))||g&&f[g]||(m=m.substr(2),this.slashes=!0)),!f[g]&&(c||g&&!d[g])){var k,b,v=-1;for(t=0;t127?w+="x":w+=A[D];if(!w.match(p)){var q=x.slice(0,t),F=x.slice(t+1),S=A.match(h);S&&(q.push(S[1]),F.unshift(S[2])),F.length&&(m=F.join(".")+m),this.hostname=q.join(".");break}}}}this.hostname.length>255&&(this.hostname=""),C&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var L=m.indexOf("#");-1!==L&&(this.hash=m.substr(L),m=m.slice(0,L));var z=m.indexOf("?");return-1!==z&&(this.search=m.substr(z),m=m.slice(0,z)),m&&(this.pathname=m),d[o]&&this.hostname&&!this.pathname&&(this.pathname=""),this},n.prototype.parseHost=function(e){var r=o.exec(e);r&&(":"!==(r=r[0])&&(this.port=r.substr(1)),e=e.substr(0,e.length-r.length)),e&&(this.hostname=e)},r.exports=function(e,r){if(e&&e instanceof n)return e;var t=new n;return t.parse(e,r),t}},{}],60:[function(e,r,t){(function(e){!function(n){var s="object"==typeof t&&t&&!t.nodeType&&t,o="object"==typeof r&&r&&!r.nodeType&&r,i="object"==typeof e&&e;i.global!==i&&i.window!==i&&i.self!==i||(n=i);var a,c,l=2147483647,u=36,p=1,h=26,f=38,d=700,m=72,_=128,g="-",k=/^xn--/,b=/[^\x20-\x7E]/,v=/[\x2E\u3002\uFF0E\uFF61]/g,y={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},C=u-p,x=Math.floor,A=String.fromCharCode;function w(e){throw new RangeError(y[e])}function D(e,r){for(var t=e.length,n=[];t--;)n[t]=r(e[t]);return n}function E(e,r){var t=e.split("@"),n="";return t.length>1&&(n=t[0]+"@",e=t[1]),n+D((e=e.replace(v,".")).split("."),r).join(".")}function q(e){for(var r,t,n=[],s=0,o=e.length;s=55296&&r<=56319&&s65535&&(r+=A((e-=65536)>>>10&1023|55296),e=56320|1023&e),r+=A(e)})).join("")}function S(e,r){return e+22+75*(e<26)-((0!=r)<<5)}function L(e,r,t){var n=0;for(e=t?x(e/d):e>>1,e+=x(e/r);e>C*h>>1;n+=u)e=x(e/C);return x(n+(C+1)*e/(e+f))}function z(e){var r,t,n,s,o,i,a,c,f,d,k,b=[],v=e.length,y=0,C=_,A=m;for((t=e.lastIndexOf(g))<0&&(t=0),n=0;n=128&&w("not-basic"),b.push(e.charCodeAt(n));for(s=t>0?t+1:0;s=v&&w("invalid-input"),((c=(k=e.charCodeAt(s++))-48<10?k-22:k-65<26?k-65:k-97<26?k-97:u)>=u||c>x((l-y)/i))&&w("overflow"),y+=c*i,!(c<(f=a<=A?p:a>=A+h?h:a-A));a+=u)i>x(l/(d=u-f))&&w("overflow"),i*=d;A=L(y-o,r=b.length+1,0==o),x(y/r)>l-C&&w("overflow"),C+=x(y/r),y%=r,b.splice(y++,0,C)}return F(b)}function T(e){var r,t,n,s,o,i,a,c,f,d,k,b,v,y,C,D=[];for(b=(e=q(e)).length,r=_,t=0,o=m,i=0;i=r&&kx((l-t)/(v=n+1))&&w("overflow"),t+=(a-r)*v,r=a,i=0;il&&w("overflow"),k==r){for(c=t,f=u;!(c<(d=f<=o?p:f>=o+h?h:f-o));f+=u)C=c-d,y=u-d,D.push(A(S(d+C%y,0))),c=x(C/y);D.push(A(S(c,0))),o=L(t,v,n==s),t=0,++n}++t,++r}return D.join("")}if(a={version:"1.4.1",ucs2:{decode:q,encode:F},decode:z,encode:T,toASCII:function(e){return E(e,(function(e){return b.test(e)?"xn--"+T(e):e}))},toUnicode:function(e){return E(e,(function(e){return k.test(e)?z(e.slice(4).toLowerCase()):e}))}},s&&o)if(r.exports==s)o.exports=a;else for(c in a)a.hasOwnProperty(c)&&(s[c]=a[c]);else n.punycode=a}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],61:[function(e,r,t){r.exports=/[\0-\x1F\x7F-\x9F]/},{}],62:[function(e,r,t){r.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/},{}],63:[function(e,r,t){r.exports=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/},{}],64:[function(e,r,t){r.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/},{}],65:[function(e,r,t){"use strict";t.Any=e("./properties/Any/regex"),t.Cc=e("./categories/Cc/regex"),t.Cf=e("./categories/Cf/regex"),t.P=e("./categories/P/regex"),t.Z=e("./categories/Z/regex")},{"./categories/Cc/regex":61,"./categories/Cf/regex":62,"./categories/P/regex":63,"./categories/Z/regex":64,"./properties/Any/regex":66}],66:[function(e,r,t){r.exports=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/},{}],67:[function(e,r,t){"use strict";r.exports=e("./lib/")},{"./lib/":9}]},{},[67])(67)})); diff --git a/js/mdui.min.js b/js/mdui.min.js deleted file mode 100644 index 30949e3..0000000 --- a/js/mdui.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * mdui v0.4.3 (https://mdui.org) - * Copyright 2016-2019 zdhxiong - * Licensed under MIT - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.mdui=e()}(this,function(){"use strict";var a,d={};a=0,window.requestAnimationFrame||(window.requestAnimationFrame=window.webkitRequestAnimationFrame,window.cancelAnimationFrame=window.webkitCancelAnimationFrame),window.requestAnimationFrame||(window.requestAnimationFrame=function(t,e){var n=(new Date).getTime(),i=Math.max(0,16.7-(n-a)),o=window.setTimeout(function(){t(n+i)},i);return a=n+i,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(t){clearTimeout(t)});var n,g=function(){var c=function(t){for(var e=0;e"===n[n.length-1]){var i="div";0===n.indexOf(":~]/)?document.querySelectorAll(t):[document.getElementById(t.slice(1))],r=0;r"===t[t.length-1])e=v(t).get();else{var n=document.createElement("div");n.innerHTML=t,e=[].slice.call(n.childNodes)}return 1===a&&e.reverse(),this.each(function(n,i){x(e,function(t,e){o&&0').appendTo(document.body).reflow().css("z-index",t));var n=e.data("overlay-level")||0;return e.data("overlay-level",++n).addClass("mdui-overlay-show")},hideOverlay:function(t){var e=g(".mdui-overlay");if(e.length){var n=t?1:e.data("overlay-level");1i.lastScrollY?"down":"up",n=Math.abs(t-i.lastScrollY)>=i.options.tolerance[e];t>i.lastScrollY&&t>=i.options.offset&&n?i.unpin():(t"};function n(t){this.$table=g(t).eq(0),this.$table.length&&this.init()}n.prototype.init=function(){var t=this;t.$thRow=t.$table.find("thead tr"),t.$tdRows=t.$table.find("tbody tr"),t.$tdCheckboxs=g(),t.selectable=t.$table.hasClass("mdui-table-selectable"),t.selectedRow=0,t._updateThCheckbox(),t._updateTdCheckbox(),t._updateNumericCol()},n.prototype._updateThCheckboxStatus=function(){var t=this,e=t.$thCheckbox[0];e.checked=t.selectedRow===t.$tdRows.length,e.indeterminate=t.selectedRow&&t.selectedRow!==t.$tdRows.length},n.prototype._updateTdCheckbox=function(){var n=this;n.$tdRows.each(function(){var t=g(this);if(t.find(".mdui-table-cell-checkbox").remove(),n.selectable){var e=g(i("td")).prependTo(t).find('input[type="checkbox"]');t.hasClass("mdui-table-row-selected")&&(e[0].checked=!0,n.selectedRow++),n._updateThCheckboxStatus(),e.on("change",function(){e[0].checked?(t.addClass("mdui-table-row-selected"),n.selectedRow++):(t.removeClass("mdui-table-row-selected"),n.selectedRow--),n._updateThCheckboxStatus()}),n.$tdCheckboxs=n.$tdCheckboxs.add(e)}})},n.prototype._updateThCheckbox=function(){var t=this;t.$thRow.find(".mdui-table-cell-checkbox").remove(),t.selectable&&(t.$thCheckbox=g(i("th")).prependTo(t.$thRow).find('input[type="checkbox"]').on("change",function(){var n=t.$thCheckbox[0].checked;t.selectedRow=n?t.$tdRows.length:0,t.$tdCheckboxs.each(function(t,e){e.checked=n}),t.$tdRows.each(function(t,e){g(e)[n?"addClass":"removeClass"]("mdui-table-row-selected")})}))},n.prototype._updateNumericCol=function(){var n,i,o=this;o.$thRow.find("th").each(function(e,t){n=g(t),o.$tdRows.each(function(){i=g(this);var t=n.hasClass("mdui-table-col-numeric")?"addClass":"removeClass";i.find("td").eq(e)[t]("mdui-table-col-numeric")})})},d.mutation(".mdui-table",function(){var t=g(this);t.data("mdui.table")||t.data("mdui.table",new n(t))}),d.updateTables=function(){g(arguments.length?arguments[0]:".mdui-table").each(function(){var t=g(this),e=t.data("mdui.table");e?e.init():t.data("mdui.table",new n(t))})}}(),c={delay:200,show:function(t,e){if(2!==t.button){var n,i=(n="touches"in t&&t.touches.length?t.touches[0]:t).pageX,o=n.pageY,a=e.offset(),s=i-a.left,r=o-a.top,d=e.innerHeight(),c=e.innerWidth(),u=Math.max(Math.pow(Math.pow(d,2)+Math.pow(c,2),.5),48),l="translate3d("+(c/2-s)+"px, "+(d/2-r)+"px, 0) scale(1)";g('
    ').data("translate",l).prependTo(e).reflow().transform(l)}},hide:function(t,e){var n=g(e||this);n.children(".mdui-ripple-wave").each(function(){!function(t){if(!t.length||t.data("isRemoved"))return;t.data("isRemoved",!0);var e=setTimeout(function(){t.remove()},400),n=t.data("translate");t.addClass("mdui-ripple-wave-fill").transform(n.replace("scale(1)","scale(1.01)")).transitionEnd(function(){clearTimeout(e),t.addClass("mdui-ripple-wave-out").transform(n.replace("scale(1)","scale(1.01)")),e=setTimeout(function(){t.remove()},700),setTimeout(function(){t.transitionEnd(function(){clearTimeout(e),t.remove()})},0)})}(g(this))}),n.off("touchmove touchend touchcancel mousemove mouseup mouseleave",c.hide)}},f.on(r.start,function(e){if(r.isAllow(e)&&(r.register(e),e.target!==document)){var n,t=g(e.target);if((n=t.hasClass("mdui-ripple")?t:t.parents(".mdui-ripple").eq(0)).length){if(n[0].disabled||null!==n.attr("disabled"))return;if("touchstart"===e.type){var i=!1,o=setTimeout(function(){o=null,c.show(e,n)},c.delay),a=function(t){o&&(clearTimeout(o),o=null,c.show(e,n)),i||(i=!0,c.hide(t,n))};n.on("touchmove",function(t){o&&(clearTimeout(o),o=null),a(t)}).on("touchend touchcancel",a)}else c.show(e,n),n.on("touchmove touchend touchcancel mousemove mouseup mouseleave",c.hide)}}}).on(r.unlock,r.register),h=function(t,e){return!("object"!=typeof t||null===t||void 0===t[e]||!t[e])&&t[e]},f.on("input focus blur",".mdui-textfield-input",{useCapture:!0},function(t){var e=t.target,n=g(e),i=t.type,o=n.val(),a=h(t.detail,"reInit"),s=h(t.detail,"domLoadedEvent"),r=n.attr("type")||"";if(!(0<=["checkbox","button","submit","range","radio","image"].indexOf(r))){var d=n.parent(".mdui-textfield");if("focus"===i&&d.addClass("mdui-textfield-focus"),"blur"===i&&d.removeClass("mdui-textfield-focus"),"blur"!==i&&"input"!==i||d[o&&""!==o?"addClass":"removeClass"]("mdui-textfield-not-empty"),d[e.disabled?"addClass":"removeClass"]("mdui-textfield-disabled"),"input"!==i&&"blur"!==i||s||e.validity&&d[e.validity.valid?"removeClass":"addClass"]("mdui-textfield-invalid-html5"),"textarea"===t.target.nodeName.toLowerCase()){var c=n.val(),u=!1;""===c.replace(/[\r\n]/g,"")&&(n.val(" "+c),u=!0),n.height("");var l=n.height(),f=e.scrollHeight;l / '+p+"").appendTo(d),d.find(".mdui-textfield-counter-inputed").text(o.length.toString())),(d.find(".mdui-textfield-helper").length||d.find(".mdui-textfield-error").length||p)&&d.addClass("mdui-textfield-has-bottom")}}),f.on("click",".mdui-textfield-expandable .mdui-textfield-icon",function(){g(this).parents(".mdui-textfield").addClass("mdui-textfield-expanded").find(".mdui-textfield-input")[0].focus()}),f.on("click",".mdui-textfield-expanded .mdui-textfield-close",function(){g(this).parents(".mdui-textfield").removeClass("mdui-textfield-expanded").find(".mdui-textfield-input").val("")}),d.updateTextFields=function(){g(arguments.length?arguments[0]:".mdui-textfield").each(function(){g(this).find(".mdui-textfield-input").trigger("input",{reInit:!0})})},g(function(){d.mutation(".mdui-textfield",function(){g(this).find(".mdui-textfield-input").trigger("input",{domLoadedEvent:!0})})}),u=function(t){var e=t.data(),n=e.$track,i=e.$fill,o=e.$thumb,a=e.$input,s=e.min,r=e.max,d=e.disabled,c=e.discrete,u=e.$thumbText,l=a.val(),f=(l-s)/(r-s)*100;i.width(f+"%"),n.width(100-f+"%"),d&&(i.css("padding-right","6px"),n.css("padding-left","6px")),o.css("left",f+"%"),c&&u.text(l),t[0===parseFloat(f)?"addClass":"removeClass"]("mdui-slider-zero")},t=function(t){var e=g('
    '),n=g('
    '),i=g('
    '),o=t.find('input[type="range"]'),a=o[0].disabled;t[a?"addClass":"removeClass"]("mdui-slider-disabled"),t.find(".mdui-slider-track").remove(),t.find(".mdui-slider-fill").remove(),t.find(".mdui-slider-thumb").remove(),t.append(e).append(n).append(i);var s,r=t.hasClass("mdui-slider-discrete");r&&(s=g(""),i.empty().append(s)),t.data({$track:e,$fill:n,$thumb:i,$input:o,min:o.attr("min"),max:o.attr("max"),disabled:a,discrete:r,$thumbText:s}),u(t)},e='.mdui-slider input[type="range"]',f.on("input change",e,function(){var t=g(this).parent();u(t)}).on(r.start,e,function(t){r.isAllow(t)&&(r.register(t),this.disabled||g(this).parent().addClass("mdui-slider-focus"))}).on(r.end,e,function(t){r.isAllow(t)&&(this.disabled||g(this).parent().removeClass("mdui-slider-focus"))}).on(r.unlock,e,r.register),d.updateSliders=function(){g(arguments.length?arguments[0]:".mdui-slider").each(function(){t(g(this))})},g(function(){d.mutation(".mdui-slider",function(){t(g(this))})}),d.Fab=function(){var o={trigger:"hover"};function t(t,e){var n=this;if(n.$fab=g(t).eq(0),n.$fab.length){var i=n.$fab.data("mdui.fab");if(i)return i;n.options=g.extend({},o,e||{}),n.state="closed",n.$btn=n.$fab.find(".mdui-fab"),n.$dial=n.$fab.find(".mdui-fab-dial"),n.$dialBtns=n.$dial.find(".mdui-fab"),"hover"===n.options.trigger&&(n.$btn.on("touchstart mouseenter",function(){n.open()}),n.$fab.on("mouseleave",function(){n.close()})),"click"===n.options.trigger&&n.$btn.on(r.start,function(){n.open()}),f.on(r.start,function(t){g(t.target).parents(".mdui-fab-wrapper").length||n.close()})}}return t.prototype.open=function(){var n=this;"opening"!==n.state&&"opened"!==n.state&&(n.$dialBtns.each(function(t,e){e.style["transition-delay"]=e.style["-webkit-transition-delay"]=15*(n.$dialBtns.length-t)+"ms"}),n.$dial.css("height","auto").addClass("mdui-fab-dial-show"),n.$btn.find(".mdui-fab-opened").length&&n.$btn.addClass("mdui-fab-opened"),n.state="opening",p("open","fab",n,n.$fab),n.$dialBtns.eq(0).transitionEnd(function(){n.$btn.hasClass("mdui-fab-opened")&&(n.state="opened",p("opened","fab",n,n.$fab))}))},t.prototype.close=function(){var t=this;"closing"!==t.state&&"closed"!==t.state&&(t.$dialBtns.each(function(t,e){e.style["transition-delay"]=e.style["-webkit-transition-delay"]=15*t+"ms"}),t.$dial.removeClass("mdui-fab-dial-show"),t.$btn.removeClass("mdui-fab-opened"),t.state="closing",p("close","fab",t,t.$fab),t.$dialBtns.eq(-1).transitionEnd(function(){t.$btn.hasClass("mdui-fab-opened")||(t.state="closed",p("closed","fab",t,t.$fab),t.$dial.css("height",0))}))},t.prototype.toggle=function(){var t=this;"opening"===t.state||"opened"===t.state?t.close():"closing"!==t.state&&"closed"!==t.state||t.open()},t.prototype.getState=function(){return this.state},t.prototype.show=function(){this.$fab.removeClass("mdui-fab-hide")},t.prototype.hide=function(){this.$fab.addClass("mdui-fab-hide")},t}(),g(function(){f.on("touchstart mousedown mouseover","[mdui-fab]",function(t){var e=g(this),n=e.data("mdui.fab");if(!n){var i=s(e.attr("mdui-fab"));n=new d.Fab(e,i),e.data("mdui.fab",n)}})}),d.Select=function(){var a={position:"auto",gutter:16};function t(t,e){var n=this,i=n.$selectNative=g(t).eq(0);if(i.length){var o=i.data("mdui.select");if(o)return o;i.hide(),n.options=g.extend({},a,e||{}),n.uniqueID=g.guid(),n.state="closed",n.handleUpdate(),f.on("click touchstart",function(t){var e=g(t.target);"opening"!==n.state&&"opened"!==n.state||e.is(n.$select)||g.contains(n.$select[0],e[0])||n.close()})}}t.prototype.handleUpdate=function(){var i=this;"opening"!==i.state&&"opened"!==i.state||i.close();var n=i.$selectNative;i.value=n.val(),i.text="",i.$items=g(),n.find("option").each(function(t,e){var n={value:e.value,text:e.textContent,disabled:e.disabled,selected:i.value===e.value,index:t};i.value===n.value&&(i.text=n.text,i.selectedIndex=t),i.$items=i.$items.add(g('
    "+n.text+"
    ").data(n))}),i.$selected=g(''+i.text+""),i.$select=g('
    ').show().append(i.$selected),i.$menu=g('
    ').appendTo(i.$select).append(i.$items),g("#"+i.uniqueID).remove(),n.after(i.$select),i.size=parseInt(i.$selectNative.attr("size")),(!i.size||i.size<0)&&(i.size=i.$items.length,8').appendTo(n.$tab),n.activeIndex=!1;var o=location.hash;o&&n.$tabs.each(function(t,e){if(g(e).attr("href")===o)return n.activeIndex=t,!1}),!1===n.activeIndex&&n.$tabs.each(function(t,e){if(g(e).hasClass("mdui-tab-active"))return n.activeIndex=t,!1}),n.$tabs.length&&!1===n.activeIndex&&(n.activeIndex=0),n._setActive(),T.on("resize",g.throttle(function(){n._setIndicatorPosition()},100)),n.$tabs.each(function(t,e){n._bindTabEvent(e)})}}return t.prototype._bindTabEvent=function(e){var n=this,i=g(e),t=function(t){s(i)?t.preventDefault():(n.activeIndex=n.$tabs.index(e),n._setActive())};i.on("click",t),"hover"===n.options.trigger&&i.on("mouseenter",t),i.on("click",function(t){0===i.attr("href").indexOf("#")&&t.preventDefault()})},t.prototype._setActive=function(){var o=this;o.$tabs.each(function(t,e){var n=g(e),i=n.attr("href");t!==o.activeIndex||s(n)?(n.removeClass("mdui-tab-active"),g(i).hide()):(n.hasClass("mdui-tab-active")||(p("change","tab",o,o.$tab,{index:o.activeIndex,id:i.substr(1)}),p("show","tab",o,n),n.addClass("mdui-tab-active")),g(i).show(),o._setIndicatorPosition())})},t.prototype._setIndicatorPosition=function(){var t,e,n=this;!1!==n.activeIndex?(t=n.$tabs.eq(n.activeIndex),s(t)||(e=t.offset(),n.$indicator.css({left:e.left+n.$tab[0].scrollLeft-n.$tab[0].getBoundingClientRect().left+"px",width:t.width()+"px"}))):n.$indicator.css({left:0,width:0})},t.prototype.next=function(){var t=this;!1!==t.activeIndex&&(t.$tabs.length>t.activeIndex+1?t.activeIndex++:t.options.loop&&(t.activeIndex=0),t._setActive())},t.prototype.prev=function(){var t=this;!1!==t.activeIndex&&(0',g.each(n.buttons,function(t,e){o+=''+e.text+""}),o+="");var t='
    '+(n.title?'
    '+n.title+"
    ":"")+(n.content?'
    '+n.content+"
    ":"")+o+"
    ",a=new d.Dialog(t,{history:n.history,overlay:n.overlay,modal:n.modal,closeOnEsc:n.closeOnEsc,destroyOnClosed:n.destroyOnClosed});return n.buttons.length&&a.$dialog.find(".mdui-dialog-actions .mdui-btn").each(function(t,e){g(e).on("click",function(){"function"==typeof n.buttons[t].onClick&&n.buttons[t].onClick(a),n.buttons[t].close&&a.close()})}),"function"==typeof n.onOpen&&a.$dialog.on("open.mdui.dialog",function(){n.onOpen(a)}).on("opened.mdui.dialog",function(){n.onOpened(a)}).on("close.mdui.dialog",function(){n.onClose(a)}).on("closed.mdui.dialog",function(){n.onClosed(a)}),a.open(),a},d.alert=function(t,e,n,i){"function"==typeof e&&(e="",n=arguments[1],i=arguments[2]),void 0===n&&(n=function(){}),void 0===i&&(i={});return i=g.extend({},{confirmText:"ok",history:!0,modal:!1,closeOnEsc:!0},i),d.dialog({title:e,content:t,buttons:[{text:i.confirmText,bold:!1,close:!0,onClick:n}],cssClass:"mdui-dialog-alert",history:i.history,modal:i.modal,closeOnEsc:i.closeOnEsc})},d.confirm=function(t,e,n,i,o){"function"==typeof e&&(e="",n=arguments[1],i=arguments[2],o=arguments[3]),void 0===n&&(n=function(){}),void 0===i&&(i=function(){}),void 0===o&&(o={});return o=g.extend({},{confirmText:"ok",cancelText:"cancel",history:!0,modal:!1,closeOnEsc:!0},o),d.dialog({title:e,content:t,buttons:[{text:o.cancelText,bold:!1,close:!0,onClick:i},{text:o.confirmText,bold:!1,close:!0,onClick:n}],cssClass:"mdui-dialog-confirm",history:o.history,modal:o.modal,closeOnEsc:o.closeOnEsc})},d.prompt=function(t,e,i,n,o){"function"==typeof e&&(e="",i=arguments[1],n=arguments[2],o=arguments[3]),void 0===i&&(i=function(){}),void 0===n&&(n=function(){}),void 0===o&&(o={});var a='
    '+(t?'":"")+("text"===(o=g.extend({},{confirmText:"ok",cancelText:"cancel",history:!0,modal:!1,closeOnEsc:!0,type:"text",maxlength:"",defaultValue:"",confirmOnEnter:!1},o)).type?'":"")+("textarea"===o.type?'":"")+"
    ",s=n;"function"==typeof n&&(s=function(t){var e=t.$dialog.find(".mdui-textfield-input").val();n(e,t)});var r=i;return"function"==typeof i&&(r=function(t){var e=t.$dialog.find(".mdui-textfield-input").val();i(e,t)}),d.dialog({title:e,content:a,buttons:[{text:o.cancelText,bold:!1,close:!0,onClick:s},{text:o.confirmText,bold:!1,close:!0,onClick:r}],cssClass:"mdui-dialog-prompt",history:o.history,modal:o.modal,closeOnEsc:o.closeOnEsc,onOpen:function(n){var t=n.$dialog.find(".mdui-textfield-input");d.updateTextFields(t),t[0].focus(),"text"===o.type&&!0===o.confirmOnEnter&&t.on("keydown",function(t){if(13===t.keyCode){var e=n.$dialog.find(".mdui-textfield-input").val();i(e,n),n.close()}}),"textarea"===o.type&&t.on("input",function(){n.handleUpdate()}),o.maxlength&&n.handleUpdate()}})},d.Tooltip=function(){var o={position:"auto",delay:0,content:""};function i(t){var e,n,i,o=t.$target[0].getBoundingClientRect(),a=1024'+n.options.content+"").appendTo(document.body),n.$target.on("touchstart mouseenter",function(t){this.disabled||r.isAllow(t)&&(r.register(t),n.open())}).on("touchend mouseleave",function(t){this.disabled||r.isAllow(t)&&n.close()}).on(r.unlock,function(t){this.disabled||r.register(t)})}}var e=function(t){t.$tooltip.hasClass("mdui-tooltip-open")?(t.state="opened",p("opened","tooltip",t,t.$target)):(t.state="closed",p("closed","tooltip",t,t.$target))};return t.prototype._doOpen=function(){var t=this;t.state="opening",p("open","tooltip",t,t.$target),t.$tooltip.addClass("mdui-tooltip-open").transitionEnd(function(){e(t)})},t.prototype.open=function(t){var e=this;if("opening"!==e.state&&"opened"!==e.state){var n=g.extend({},e.options);g.extend(e.options,s(e.$target.attr("mdui-tooltip"))),t&&g.extend(e.options,t),n.content!==e.options.content&&e.$tooltip.html(e.options.content),i(e),e.options.delay?e.timeoutId=setTimeout(function(){e._doOpen()},e.options.delay):(e.timeoutId=!1,e._doOpen())}},t.prototype.close=function(){var t=this;t.timeoutId&&(clearTimeout(t.timeoutId),t.timeoutId=!1),"closing"!==t.state&&"closed"!==t.state&&(t.state="closing",p("close","tooltip",t,t.$target),t.$tooltip.removeClass("mdui-tooltip-open").transitionEnd(function(){e(t)}))},t.prototype.toggle=function(){var t=this;"opening"===t.state||"opened"===t.state?t.close():"closing"!==t.state&&"closed"!==t.state||t.open()},t.prototype.getState=function(){return this.state},t}(),g(function(){f.on("touchstart mouseover","[mdui-tooltip]",function(){var t=g(this),e=t.data("mdui.tooltip");if(!e){var n=s(t.attr("mdui-tooltip"));e=new d.Tooltip(t,n),t.data("mdui.tooltip",e)}})}),function(){var n,i="__md_snackbar",a={timeout:4e3,buttonText:"",buttonColor:"",position:"bottom",closeOnButtonClick:!0,closeOnOutsideClick:!0,onClick:function(){},onButtonClick:function(){},onOpen:function(){},onOpened:function(){},onClose:function(){},onClosed:function(){}},o=function(t){var e=g(t.target);e.hasClass("mdui-snackbar")||e.parents(".mdui-snackbar").length||n.close()};function s(t,e){var n=this;if(n.message=t,n.options=g.extend({},a,e||{}),n.message){n.state="closed",n.timeoutId=!1;var i="",o="";0===n.options.buttonColor.indexOf("#")||0===n.options.buttonColor.indexOf("rgb")?i='style="color:'+n.options.buttonColor+'"':""!==n.options.buttonColor&&(o="mdui-text-color-"+n.options.buttonColor),n.$snackbar=g('
    '+n.message+"
    "+(n.options.buttonText?'"+n.options.buttonText+"":"")+"
    ").appendTo(document.body),n._setPosition("close"),n.$snackbar.reflow().addClass("mdui-snackbar-"+n.options.position)}}s.prototype._setPosition=function(t){var e,n,i=this.$snackbar[0].clientHeight,o=this.options.position;e="bottom"===o||"top"===o?"-50%":"0","open"===t?n="0":("bottom"===o&&(n=i),"top"===o&&(n=-i),"left-top"!==o&&"right-top"!==o||(n=-i-24),"left-bottom"!==o&&"right-bottom"!==o||(n=i+24)),this.$snackbar.transform("translate("+e+","+n+"px)")},s.prototype.open=function(){var e=this;e.message&&"opening"!==e.state&&"opened"!==e.state&&(n?l.queue(i,function(){e.open()}):((n=e).state="opening",e.options.onOpen(),e._setPosition("open"),e.$snackbar.transitionEnd(function(){"opening"===e.state&&(e.state="opened",e.options.onOpened(),e.options.buttonText&&e.$snackbar.find(".mdui-snackbar-action").on("click",function(){e.options.onButtonClick(),e.options.closeOnButtonClick&&e.close()}),e.$snackbar.on("click",function(t){g(t.target).hasClass("mdui-snackbar-action")||e.options.onClick()}),e.options.closeOnOutsideClick&&f.on(r.start,o),e.options.timeout&&(e.timeoutId=setTimeout(function(){e.close()},e.options.timeout)))})))},s.prototype.close=function(){var t=this;t.message&&"closing"!==t.state&&"closed"!==t.state&&(t.timeoutId&&clearTimeout(t.timeoutId),t.options.closeOnOutsideClick&&f.off(r.start,o),t.state="closing",t.options.onClose(),t._setPosition("close"),t.$snackbar.transitionEnd(function(){"closing"===t.state&&(n=null,t.state="closed",t.options.onClosed(),t.$snackbar.remove(),l.dequeue(i))}))},d.snackbar=function(t,e){"string"!=typeof t&&(t=(e=t).message);var n=new s(t,e);return n.open(),n}}(),f.on("click",".mdui-bottom-nav>a",function(){var n,i=g(this),o=i.parent();o.children("a").each(function(t,e){(n=i.is(e))&&p("change","bottomNav",null,o,{index:t}),g(e)[n?"addClass":"removeClass"]("mdui-bottom-nav-active")})}),d.mutation(".mdui-bottom-nav-scroll-hide",function(){var t=g(this),e=new d.Headroom(t,{pinnedClass:"mdui-headroom-pinned-down",unpinnedClass:"mdui-headroom-unpinned-down"});t.data("mdui.headroom",e)}),o=function(){var t=!!arguments.length&&arguments[0];return'
    '},m=function(t){var e,n=g(t);e=n.hasClass("mdui-spinner-colorful")?o("1")+o("2")+o("3")+o("4"):o(),n.html(e)},g(function(){d.mutation(".mdui-spinner",function(){m(this)})}),d.updateSpinners=function(){g(arguments.length?arguments[0]:".mdui-spinner").each(function(){m(this)})},d.Panel=function(t,e){return new v(t,e,"panel")},g(function(){d.mutation("[mdui-panel]",function(){var t=g(this),e=t.data("mdui.panel");if(!e){var n=s(t.attr("mdui-panel"));e=new d.Panel(t,n),t.data("mdui.panel",e)}})}),d.Menu=function(){var a={position:"auto",align:"auto",gutter:16,fixed:!1,covered:"auto",subMenuTrigger:"hover",subMenuDelay:200},s=function(t){var e,n,i,o,a,s,r=T.height(),d=T.width(),c=t.options.gutter,u=t.isCovered,l=t.options.fixed,f=t.$menu.width(),p=t.$menu.height(),h=t.$anchor,m=h[0].getBoundingClientRect(),v=m.top,g=m.left,b=m.height,x=m.width,y=r-v-b,w=d-g-x,$=h[0].offsetTop,C=h[0].offsetLeft;if(i="auto"===t.options.position?p+c