diff --git a/hassio/api/panel/201359fd5a526afe13ef.worker.js b/hassio/api/panel/201359fd5a526afe13ef.worker.js new file mode 100644 index 000000000..8aeffd96b --- /dev/null +++ b/hassio/api/panel/201359fd5a526afe13ef.worker.js @@ -0,0 +1,2 @@ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/api/hassio/app/",n(n.s=8)}([function(e,t,n){var r=n(4),i=n(10);for(var o in(t=e.exports=function(e,t){return new i(t).process(e)}).FilterCSS=i,r)t[o]=r[o];"undefined"!=typeof window&&(window.filterCSS=e.exports)},function(e,t){e.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n/g,p=/"/g,h=/"/g,g=/&#([a-zA-Z0-9]*);?/gim,f=/:?/gim,d=/&newline;?/gim,m=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,b=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,y=/u\s*r\s*l\s*\(.*/gi;function x(e){return e.replace(p,""")}function k(e){return e.replace(h,'"')}function v(e){return e.replace(g,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function w(e){return e.replace(f,":").replace(d," ")}function _(e){for(var t="",n=0,r=e.length;n/g;t.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]},t.getDefaultWhiteList=s,t.onTag=function(e,t,n){},t.onIgnoreTag=function(e,t,n){},t.onTagAttr=function(e,t,n){},t.onIgnoreTagAttr=function(e,t,n){},t.safeAttrValue=function(e,t,n,r){if(n=S(n),"href"===t||"src"===t){if("#"===(n=o.trim(n)))return"#";if("http://"!==n.substr(0,7)&&"https://"!==n.substr(0,8)&&"mailto:"!==n.substr(0,7)&&"tel:"!==n.substr(0,4)&&"#"!==n[0]&&"/"!==n[0])return""}else if("background"===t){if(m.lastIndex=0,m.test(n))return""}else if("style"===t){if(b.lastIndex=0,b.test(n))return"";if(y.lastIndex=0,y.test(n)&&(m.lastIndex=0,m.test(n)))return"";!1!==r&&(n=(r=r||a).process(n))}return n=A(n)},t.escapeHtml=l,t.escapeQuote=x,t.unescapeQuote=k,t.escapeHtmlEntities=v,t.escapeDangerHtml5Entities=w,t.clearNonPrintableCharacter=_,t.friendlyAttrValue=S,t.escapeAttrValue=A,t.onIgnoreTagStripAll=function(){return""},t.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var n=!Array.isArray(e),r=[],i=!1;return{onIgnoreTag:function(s,a,l){if(function(t){return!!n||-1!==o.indexOf(e,t)}(s)){if(l.isClosing){var c="[/removed]",u=l.position+c.length;return r.push([!1!==i?i:l.position,u]),i=!1,c}return i||(i=l.position),"[removed]"}return t(s,a,l)},remove:function(e){var t="",n=0;return o.forEach(r,function(r){t+=e.slice(n,r[0]),n=r[1]}),t+=e.slice(n)}}},t.stripCommentTag=function(e){return e.replace($,"")},t.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return!(127===t||t<=31&&10!==t&&13!==t)})).join("")},t.cssFilter=a,t.getDefaultCSSWhiteList=i},function(e,t){function n(){var e={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1};return e}var r=/javascript\s*\:/gim;t.whiteList=n(),t.getDefaultWhiteList=n,t.onAttr=function(e,t,n){},t.onIgnoreAttr=function(e,t,n){},t.safeAttrValue=function(e,t){return r.test(t)?"":t}},function(e,t){e.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function c(e){return function(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}(e)?e.substr(1,e.length-2):e}t.parseTag=function(e,t,n){var r="",s=0,a=!1,l=!1,c=0,u=e.length,p="",h="";for(c=0;c"===g){r+=n(e.slice(s,a)),p=i(h=e.slice(a,c+1)),r+=t(a,r.length,p,h,o(h)),s=c+1,a=!1;continue}if(('"'===g||"'"===g)&&"="===e.charAt(c-1)){l=g;continue}}else if(g===l){l=!1;continue}}return s ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|\\n*|\\n*|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,table:k,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/,text:/^[^\n]+/};function a(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||A.defaults,this.rules=s.normal,this.options.pedantic?this.rules=s.pedantic:this.options.gfm&&(this.options.tables?this.rules=s.tables:this.rules=s.gfm)}s._label=/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,s._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,s.def=m(s.def).replace("label",s._label).replace("title",s._title).getRegex(),s.bullet=/(?:[*+-]|\d{1,9}\.)/,s.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,s.item=m(s.item,"gm").replace(/bull/g,s.bullet).getRegex(),s.list=m(s.list).replace(/bull/g,s.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+s.def.source+")").getRegex(),s._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",s._comment=//,s.html=m(s.html,"i").replace("comment",s._comment).replace("tag",s._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),s.paragraph=m(s.paragraph).replace("hr",s.hr).replace("heading",s.heading).replace("lheading",s.lheading).replace("tag",s._tag).getRegex(),s.blockquote=m(s.blockquote).replace("paragraph",s.paragraph).getRegex(),s.normal=v({},s),s.gfm=v({},s.normal,{fences:/^ {0,3}(`{3,}|~{3,})([^`\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),s.gfm.paragraph=m(s.paragraph).replace("(?!","(?!"+s.gfm.fences.source.replace("\\1","\\2")+"|"+s.list.source.replace("\\1","\\3")+"|").getRegex(),s.tables=v({},s.gfm,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),s.pedantic=v({},s.normal,{html:m("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",s._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/}),a.rules=s,a.lex=function(e,t){return new a(t).lex(e)},a.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},a.prototype.token=function(e,t){var n,r,i,o,a,l,c,u,p,h,g,f,d,m,b,y;for(e=e.replace(/^ +$/gm,"");e;)if((i=this.rules.newline.exec(e))&&(e=e.substring(i[0].length),i[0].length>1&&this.tokens.push({type:"space"})),i=this.rules.code.exec(e))e=e.substring(i[0].length),i=i[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?i:_(i,"\n")});else if(i=this.rules.fences.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"code",lang:i[2]?i[2].trim():i[2],text:i[3]||""});else if(i=this.rules.heading.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"heading",depth:i[1].length,text:i[2]});else if((i=this.rules.nptable.exec(e))&&(l={type:"table",header:w(i[1].replace(/^ *| *\| *$/g,"")),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3]?i[3].replace(/\n$/,"").split("\n"):[]}).header.length===l.align.length){for(e=e.substring(i[0].length),g=0;g ?/gm,""),this.token(i,t),this.tokens.push({type:"blockquote_end"});else if(i=this.rules.list.exec(e)){for(e=e.substring(i[0].length),c={type:"list_start",ordered:m=(o=i[2]).length>1,start:m?+o:"",loose:!1},this.tokens.push(c),u=[],n=!1,d=(i=i[0].match(this.rules.item)).length,g=0;g1?1===a.length:a.length>1||this.options.smartLists&&a!==o)&&(e=i.slice(g+1).join("\n")+e,g=d-1)),r=n||/\n\n(?!\s*$)/.test(l),g!==d-1&&(n="\n"===l.charAt(l.length-1),r||(r=n)),r&&(c.loose=!0),y=void 0,(b=/^\[[ xX]\] /.test(l))&&(y=" "!==l[1],l=l.replace(/^\[[ xX]\] +/,"")),p={type:"list_item_start",task:b,checked:y,loose:r},u.push(p),this.tokens.push(p),this.token(l,!1),this.tokens.push({type:"list_item_end"});if(c.loose)for(d=u.length,g=0;g?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:k,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(href(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*"<\[])\*(?!\*)|^_([^\s][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s"<\[][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:k,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\?@\\[^_{|}~",l.em=m(l.em).replace(/punctuation/g,l._punctuation).getRegex(),l._escapes=/\\([!"#$%&'()*+,\-.\/:;<=>?@\[\]\\^_`{|}~])/g,l._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,l._email=/[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])?)+(?![-_])/,l.autolink=m(l.autolink).replace("scheme",l._scheme).replace("email",l._email).getRegex(),l._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,l.tag=m(l.tag).replace("comment",s._comment).replace("attribute",l._attribute).getRegex(),l._label=/(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|`(?!`)|[^\[\]\\`])*?/,l._href=/\s*(<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*)/,l._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,l.link=m(l.link).replace("label",l._label).replace("href",l._href).replace("title",l._title).getRegex(),l.reflink=m(l.reflink).replace("label",l._label).getRegex(),l.normal=v({},l),l.pedantic=v({},l.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:m(/^!?\[(label)\]\((.*?)\)/).replace("label",l._label).getRegex(),reflink:m(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",l._label).getRegex()}),l.gfm=v({},l.normal,{escape:m(l.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\/i.test(o[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(o[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(o[0])&&(this.inRawBlock=!1),e=e.substring(o[0].length),a+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):f(o[0]):o[0];else if(o=this.rules.link.exec(e)){var l=S(o[2],"()");if(l>-1){var u=o[0].length-(o[2].length-l)-(o[3]||"").length;o[2]=o[2].substring(0,l),o[0]=o[0].substring(0,u).trim(),o[3]=""}e=e.substring(o[0].length),this.inLink=!0,r=o[2],this.options.pedantic?(t=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(r))?(r=t[1],i=t[3]):i="":i=o[3]?o[3].slice(1,-1):"",r=r.trim().replace(/^<([\s\S]*)>$/,"$1"),a+=this.outputLink(o,{href:c.escapes(r),title:c.escapes(i)}),this.inLink=!1}else if((o=this.rules.reflink.exec(e))||(o=this.rules.nolink.exec(e))){if(e=e.substring(o[0].length),t=(o[2]||o[1]).replace(/\s+/g," "),!(t=this.links[t.toLowerCase()])||!t.href){a+=o[0].charAt(0),e=o[0].substring(1)+e;continue}this.inLink=!0,a+=this.outputLink(o,t),this.inLink=!1}else if(o=this.rules.strong.exec(e))e=e.substring(o[0].length),a+=this.renderer.strong(this.output(o[4]||o[3]||o[2]||o[1]));else if(o=this.rules.em.exec(e))e=e.substring(o[0].length),a+=this.renderer.em(this.output(o[6]||o[5]||o[4]||o[3]||o[2]||o[1]));else if(o=this.rules.code.exec(e))e=e.substring(o[0].length),a+=this.renderer.codespan(f(o[2].trim(),!0));else if(o=this.rules.br.exec(e))e=e.substring(o[0].length),a+=this.renderer.br();else if(o=this.rules.del.exec(e))e=e.substring(o[0].length),a+=this.renderer.del(this.output(o[1]));else if(o=this.rules.autolink.exec(e))e=e.substring(o[0].length),r="@"===o[2]?"mailto:"+(n=f(this.mangle(o[1]))):n=f(o[1]),a+=this.renderer.link(r,null,n);else if(this.inLink||!(o=this.rules.url.exec(e))){if(o=this.rules.text.exec(e))e=e.substring(o[0].length),this.inRawBlock?a+=this.renderer.text(o[0]):a+=this.renderer.text(f(this.smartypants(o[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else{if("@"===o[2])r="mailto:"+(n=f(o[0]));else{do{s=o[0],o[0]=this.rules._backpedal.exec(o[0])[0]}while(s!==o[0]);n=f(o[0]),r="www."===o[1]?"http://"+n:n}e=e.substring(o[0].length),a+=this.renderer.link(r,null,n)}return a},c.escapes=function(e){return e?e.replace(c.rules._escapes,"$1"):e},c.prototype.outputLink=function(e,t){var n=t.href,r=t.title?f(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,f(e[1]))},c.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},c.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,i=0;i.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},u.prototype.code=function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,r);null!=i&&i!==e&&(n=!0,e=i)}return r?'
'+(n?e:f(e,!0))+"
\n":"
"+(n?e:f(e,!0))+"
"},u.prototype.blockquote=function(e){return"
\n"+e+"
\n"},u.prototype.html=function(e){return e},u.prototype.heading=function(e,t,n,r){return this.options.headerIds?"'+e+"\n":""+e+"\n"},u.prototype.hr=function(){return this.options.xhtml?"
\n":"
\n"},u.prototype.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"},u.prototype.listitem=function(e){return"
  • "+e+"
  • \n"},u.prototype.checkbox=function(e){return" "},u.prototype.paragraph=function(e){return"

    "+e+"

    \n"},u.prototype.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},u.prototype.tablerow=function(e){return"\n"+e+"\n"},u.prototype.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"\n"},u.prototype.strong=function(e){return""+e+""},u.prototype.em=function(e){return""+e+""},u.prototype.codespan=function(e){return""+e+""},u.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},u.prototype.del=function(e){return""+e+""},u.prototype.link=function(e,t,n){if(null===(e=b(this.options.sanitize,this.options.baseUrl,e)))return n;var r='"},u.prototype.image=function(e,t,n){if(null===(e=b(this.options.sanitize,this.options.baseUrl,e)))return n;var r=''+n+'":">"},u.prototype.text=function(e){return e},p.prototype.strong=p.prototype.em=p.prototype.codespan=p.prototype.del=p.prototype.text=function(e){return e},p.prototype.link=p.prototype.image=function(e,t,n){return""+n},p.prototype.br=function(){return""},h.parse=function(e,t){return new h(t).parse(e)},h.prototype.parse=function(e){this.inline=new c(e.links,this.options),this.inlineText=new c(e.links,v({},this.options,{renderer:new p})),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},h.prototype.next=function(){return this.token=this.tokens.pop()},h.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},h.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},h.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,d(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,i="",o="";for(n="",e=0;e?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t)){var n=t;do{this.seen[n]++,t=n+"-"+this.seen[n]}while(this.seen.hasOwnProperty(t))}return this.seen[t]=0,t},f.escapeTest=/[&<>"']/,f.escapeReplace=/[&<>"']/g,f.replacements={"&":"&","<":"<",">":">",'"':""","'":"'"},f.escapeTestNoEncode=/[<>"']|&(?!#?\w+;)/,f.escapeReplaceNoEncode=/[<>"']|&(?!#?\w+;)/g;var y={},x=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function k(){}function v(e){for(var t,n,r=1;r=0&&"\\"===n[i];)r=!r;return r?"|":" |"}).split(/ \|/),r=0;if(n.length>t)n.splice(t);else for(;n.lengthAn error occurred:

    "+f(c.message+"",!0)+"
    ";throw c}}k.exec=k,A.options=A.setOptions=function(e){return v(A.defaults,e),A},A.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new u,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tables:!0,xhtml:!1}},A.defaults=A.getDefaults(),A.Parser=h,A.parser=h.parse,A.Renderer=u,A.TextRenderer=p,A.Lexer=a,A.lexer=a.lex,A.InlineLexer=c,A.inlineLexer=c.output,A.Slugger=g,A.parse=A,"object"===o(t)?e.exports=A:void 0===(i=function(){return A}.call(t,n,t,e))||(e.exports=i)}(this||"undefined"!=typeof window&&window)}).call(this,n(9))},function(e,t,n){"use strict";n.r(t),n.d(t,"renderMarkdown",function(){return c});var r,i,o=n(7),s=n.n(o),a=n(2),l=n.n(a),c=function(e,t){var n,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r||(r=Object.assign({},l.a.whiteList,{"ha-icon":["icon"]})),o.allowSvg?(i||(i=Object.assign({},r,{svg:["xmlns","height","width"],path:["transform","stroke","d"]})),n=i):n=r,l()(s()(e,t),{whiteList:n})};addEventListener("message",function(e){var n,r=e.data,i=r.type,o=r.method,s=r.id,a=r.params;"RPC"===i&&o&&((n=t[o])?Promise.resolve().then(function(){return n.apply(t,a)}):Promise.reject("No such method")).then(function(e){postMessage({type:"RPC",id:s,result:e})}).catch(function(e){var t={message:e};e.stack&&(t.message=e.message,t.stack=e.stack,t.name=e.name),postMessage({type:"RPC",id:s,error:t})})}),postMessage({type:"RPC",method:"ready"})},function(e,t){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;r=function(){return this}();try{r=r||new Function("return this")()}catch(i){"object"===("undefined"==typeof window?"undefined":n(window))&&(r=window)}e.exports=r},function(e,t,n){var r=n(4),i=n(11);n(5);function o(e){return null==e}function s(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).whiteList=e.whiteList||r.whiteList,e.onAttr=e.onAttr||r.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||r.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||r.safeAttrValue,this.options=e}s.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,n=t.whiteList,r=t.onAttr,s=t.onIgnoreAttr,a=t.safeAttrValue;return i(e,function(e,t,i,l,c){var u=n[i],p=!1;if(!0===u?p=u:"function"==typeof u?p=u(l):u instanceof RegExp&&(p=u.test(l)),!0!==p&&(p=!1),l=a(i,l)){var h,g={position:t,sourcePosition:e,source:c,isWhite:p};return p?o(h=r(i,l,g))?i+":"+l:h:o(h=s(i,l,g))?void 0:h}})},e.exports=s},function(e,t,n){var r=n(5);e.exports=function(e,t){";"!==(e=r.trimRight(e))[e.length-1]&&(e+=";");var n=e.length,i=!1,o=0,s=0,a="";function l(){if(!i){var n=r.trim(e.slice(o,s)),l=n.indexOf(":");if(-1!==l){var c=r.trim(n.slice(0,l)),u=r.trim(n.slice(l+1));if(c){var p=t(o,a.length,c,u,n);p&&(a+=p+"; ")}}}o=s+1}for(;s";var y=function(e){var t=l.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var n="/"===(e=l.trim(e.slice(t+1,-1)))[e.length-1];return n&&(e=l.trim(e.slice(0,-1))),{html:e,closing:n}}(s),x=n[i],k=a(y.html,function(e,t){var n,r=-1!==l.indexOf(x,e);return c(n=u(i,e,t,r))?r?(t=h(i,e,t,f))?e+'="'+t+'"':e:c(n=p(i,e,t,r))?void 0:n:n});s="<"+i;return k&&(s+=" "+k),y.closing&&(s+=" /"),s+=">"}return c(m=o(i,s,b))?g(s):m},g);return d&&(m=d.remove(m)),m},e.exports=u}]); +//# sourceMappingURL=201359fd5a526afe13ef.worker.js.map \ No newline at end of file diff --git a/hassio/api/panel/201359fd5a526afe13ef.worker.js.gz b/hassio/api/panel/201359fd5a526afe13ef.worker.js.gz new file mode 100644 index 000000000..32fff920d Binary files /dev/null and b/hassio/api/panel/201359fd5a526afe13ef.worker.js.gz differ diff --git a/hassio/api/panel/201359fd5a526afe13ef.worker.js.map b/hassio/api/panel/201359fd5a526afe13ef.worker.js.map new file mode 100644 index 000000000..eab9393f0 --- /dev/null +++ b/hassio/api/panel/201359fd5a526afe13ef.worker.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/cssfilter/lib/index.js","webpack:///./node_modules/xss/lib/util.js","webpack:///./node_modules/xss/lib/index.js","webpack:///./node_modules/xss/lib/default.js","webpack:///./node_modules/cssfilter/lib/default.js","webpack:///./node_modules/cssfilter/lib/util.js","webpack:///./node_modules/xss/lib/parser.js","webpack:///./node_modules/marked/lib/marked.js","webpack:///./src/resources/markdown_worker.ts","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/cssfilter/lib/css.js","webpack:///./node_modules/cssfilter/lib/parser.js","webpack:///./node_modules/xss/lib/xss.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","DEFAULT","require","FilterCSS","html","options","process","window","filterCSS","indexOf","arr","item","j","Array","length","forEach","fn","scope","trim","str","String","replace","spaceIndex","match","exec","index","parser","FilterXSS","filterXSS","self","DedicatedWorkerGlobalScope","getDefaultCSSWhiteList","getDefaultWhiteList","_","a","abbr","address","area","article","aside","audio","b","bdi","bdo","big","blockquote","br","caption","center","cite","code","col","colgroup","dd","del","details","div","dl","dt","em","font","footer","h1","h2","h3","h4","h5","h6","header","hr","img","ins","li","mark","nav","ol","pre","section","small","span","sub","sup","strong","table","tbody","td","tfoot","th","thead","tr","tt","u","ul","video","defaultCSSFilter","escapeHtml","REGEXP_LT","REGEXP_GT","REGEXP_QUOTE","REGEXP_QUOTE_2","REGEXP_ATTR_VALUE_1","REGEXP_ATTR_VALUE_COLON","REGEXP_ATTR_VALUE_NEWLINE","REGEXP_DEFAULT_ON_TAG_ATTR_4","REGEXP_DEFAULT_ON_TAG_ATTR_7","REGEXP_DEFAULT_ON_TAG_ATTR_8","escapeQuote","unescapeQuote","escapeHtmlEntities","fromCharCode","parseInt","substr","escapeDangerHtml5Entities","clearNonPrintableCharacter","str2","len","charCodeAt","charAt","friendlyAttrValue","escapeAttrValue","STRIP_COMMENT_TAG_REGEXP","whiteList","onTag","tag","onIgnoreTag","onTagAttr","onIgnoreTagAttr","safeAttrValue","cssFilter","lastIndex","test","onIgnoreTagStripAll","StripTagBody","tags","next","isRemoveAllTag","isArray","removeList","posStart","isRemoveTag","isClosing","ret","end","position","push","remove","rethtml","lastPos","pos","slice","stripCommentTag","stripBlankChar","chars","split","filter","char","join","REGEXP_URL_JAVASCRIPT","onAttr","onIgnoreAttr","trimRight","getTagName","tagName","toLowerCase","REGEXP_ILLEGAL_ATTR_NAME","findNextEqual","findBeforeEqual","stripQuoteWrap","text","isQuoteWrapString","parseTag","tagStart","quoteStart","currentPos","currentTagName","currentHtml","parseAttr","retAttrs","tmpName","addAttr","root","block","newline","fences","noop","heading","nptable","list","def","lheading","paragraph","Lexer","this","tokens","links","marked","defaults","rules","normal","pedantic","gfm","tables","_label","_title","edit","getRegex","bullet","source","_tag","_comment","merge","lex","src","token","top","loose","cap","bull","listStart","listItems","space","isordered","istask","ischecked","substring","type","rtrim","lang","depth","splitCells","align","cells","ordered","start","RegExp","smartLists","undefined","task","checked","sanitize","sanitizer","href","title","Error","inline","escape","autolink","url","link","reflink","nolink","InlineLexer","renderer","Renderer","breaks","TextRenderer","Parser","slugger","Slugger","seen","encode","escapeTest","escapeReplace","ch","replacements","escapeTestNoEncode","escapeReplaceNoEncode","unescape","regex","opt","val","cleanUrl","base","prot","decodeURIComponent","e","originIndependentUrl","baseUrls","resolveUrl","encodeURI","_punctuation","_escapes","_scheme","_email","_attribute","_href","_extended_email","_backpedal","output","prevCapZero","out","inLink","inRawBlock","lastParenIndex","findClosingBracket","linkLen","outputLink","escapes","codespan","mangle","smartypants","image","Math","random","toString","infostring","escaped","highlight","langPrefix","quote","level","raw","headerIds","headerPrefix","slug","xhtml","body","listitem","checkbox","tablerow","content","tablecell","flags","baseUrl","parse","inlineText","reverse","tok","pop","peek","parseText","row","cell","errMsg","silent","console","log","originalSlug","&","<",">","\"","'","obj","target","arguments","tableRow","count","offset","curr","splice","invert","suffLen","currChar","callback","pending","done","err","message","setOptions","getDefaults","lexer","inlineLexer","_typeof","define","__WEBPACK_AMD_DEFINE_RESULT__","__webpack_exports__","renderMarkdown","whiteListNormal","whiteListSvg","marked__WEBPACK_IMPORTED_MODULE_0__","marked__WEBPACK_IMPORTED_MODULE_0___default","xss__WEBPACK_IMPORTED_MODULE_1__","xss__WEBPACK_IMPORTED_MODULE_1___default","markedOptions","hassOptions","assign","ha-icon","allowSvg","svg","path","addEventListener","f","ref","data","method","id","params","Promise","resolve","then","apply","reject","result","postMessage","catch","error","stack","g","Function","parseStyle","isNull","shallowCopyObject","css","sourcePosition","check","isWhite","opts","cssLength","isParenthesisOpen","retCSS","addNewAttr","stripIgnoreTag","allowCommentTag","stripIgnoreTagBody","retHtml","info","attrs","closing","getAttrs","whiteAttrList","attrsHtml","isWhiteAttr"],"mappings":"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","file":"201359fd5a526afe13ef.worker.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/api/hassio/app/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar DEFAULT = require('./default');\nvar FilterCSS = require('./css');\n\n\n/**\n * XSS过滤\n *\n * @param {String} css 要过滤的CSS代码\n * @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr\n * @return {String}\n */\nfunction filterCSS (html, options) {\n var xss = new FilterCSS(options);\n return xss.process(html);\n}\n\n\n// 输出\nexports = module.exports = filterCSS;\nexports.FilterCSS = FilterCSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\n\n// 在浏览器端使用\nif (typeof window !== 'undefined') {\n window.filterCSS = module.exports;\n}\n","module.exports = {\n indexOf: function(arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function(arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function(str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, \"\");\n },\n spaceIndex: function(str) {\n var reg = /\\s|\\n|\\t/;\n var match = reg.exec(str);\n return match ? match.index : -1;\n }\n};\n","/**\n * xss\n *\n * @author Zongmin Lei\n */\n\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar FilterXSS = require(\"./xss\");\n\n/**\n * filter xss function\n *\n * @param {String} html\n * @param {Object} options { whiteList, onTag, onTagAttr, onIgnoreTag, onIgnoreTagAttr, safeAttrValue, escapeHtml }\n * @return {String}\n */\nfunction filterXSS(html, options) {\n var xss = new FilterXSS(options);\n return xss.process(html);\n}\n\nexports = module.exports = filterXSS;\nexports.filterXSS = filterXSS;\nexports.FilterXSS = FilterXSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\nfor (var i in parser) exports[i] = parser[i];\n\n// using `xss` on the browser, output `filterXSS` to the globals\nif (typeof window !== \"undefined\") {\n window.filterXSS = module.exports;\n}\n\n// using `xss` on the WebWorker, output `filterXSS` to the globals\nfunction isWorkerEnv() {\n return typeof self !== 'undefined' && typeof DedicatedWorkerGlobalScope !== 'undefined' && self instanceof DedicatedWorkerGlobalScope;\n}\nif (isWorkerEnv()) {\n self.filterXSS = module.exports;\n}\n","/**\n * default settings\n *\n * @author Zongmin Lei\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar getDefaultCSSWhiteList = require(\"cssfilter\").getDefaultWhiteList;\nvar _ = require(\"./util\");\n\nfunction getDefaultWhiteList() {\n return {\n a: [\"target\", \"href\", \"title\"],\n abbr: [\"title\"],\n address: [],\n area: [\"shape\", \"coords\", \"href\", \"alt\"],\n article: [],\n aside: [],\n audio: [\"autoplay\", \"controls\", \"loop\", \"preload\", \"src\"],\n b: [],\n bdi: [\"dir\"],\n bdo: [\"dir\"],\n big: [],\n blockquote: [\"cite\"],\n br: [],\n caption: [],\n center: [],\n cite: [],\n code: [],\n col: [\"align\", \"valign\", \"span\", \"width\"],\n colgroup: [\"align\", \"valign\", \"span\", \"width\"],\n dd: [],\n del: [\"datetime\"],\n details: [\"open\"],\n div: [],\n dl: [],\n dt: [],\n em: [],\n font: [\"color\", \"size\", \"face\"],\n footer: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n header: [],\n hr: [],\n i: [],\n img: [\"src\", \"alt\", \"title\", \"width\", \"height\"],\n ins: [\"datetime\"],\n li: [],\n mark: [],\n nav: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n section: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n table: [\"width\", \"border\", \"align\", \"valign\"],\n tbody: [\"align\", \"valign\"],\n td: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n tfoot: [\"align\", \"valign\"],\n th: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n thead: [\"align\", \"valign\"],\n tr: [\"rowspan\", \"align\", \"valign\"],\n tt: [],\n u: [],\n ul: [],\n video: [\"autoplay\", \"controls\", \"loop\", \"preload\", \"src\", \"height\", \"width\"]\n };\n}\n\nvar defaultCSSFilter = new FilterCSS();\n\n/**\n * default onTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onIgnoreTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default onIgnoreTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onIgnoreTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default escapeHtml function\n *\n * @param {String} html\n */\nfunction escapeHtml(html) {\n return html.replace(REGEXP_LT, \"<\").replace(REGEXP_GT, \">\");\n}\n\n/**\n * default safeAttrValue function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @param {Object} cssFilter\n * @return {String}\n */\nfunction safeAttrValue(tag, name, value, cssFilter) {\n // unescape attribute value firstly\n value = friendlyAttrValue(value);\n\n if (name === \"href\" || name === \"src\") {\n // filter `href` and `src` attribute\n // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#`\n value = _.trim(value);\n if (value === \"#\") return \"#\";\n if (\n !(\n value.substr(0, 7) === \"http://\" ||\n value.substr(0, 8) === \"https://\" ||\n value.substr(0, 7) === \"mailto:\" ||\n value.substr(0, 4) === \"tel:\" ||\n value[0] === \"#\" ||\n value[0] === \"/\"\n )\n ) {\n return \"\";\n }\n } else if (name === \"background\") {\n // filter `background` attribute (maybe no use)\n // `javascript:`\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n } else if (name === \"style\") {\n // `expression()`\n REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) {\n return \"\";\n }\n // `url()`\n REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n }\n if (cssFilter !== false) {\n cssFilter = cssFilter || defaultCSSFilter;\n value = cssFilter.process(value);\n }\n }\n\n // escape `<>\"` before returns\n value = escapeAttrValue(value);\n return value;\n}\n\n// RegExp list\nvar REGEXP_LT = //g;\nvar REGEXP_QUOTE = /\"/g;\nvar REGEXP_QUOTE_2 = /"/g;\nvar REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;\nvar REGEXP_ATTR_VALUE_COLON = /:?/gim;\nvar REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\\/\\*|\\*\\//gm;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_4 = /((j\\s*a\\s*v\\s*a|v\\s*b|l\\s*i\\s*v\\s*e)\\s*s\\s*c\\s*r\\s*i\\s*p\\s*t\\s*|m\\s*o\\s*c\\s*h\\s*a)\\:/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:\\s*image\\//gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_7 = /e\\s*x\\s*p\\s*r\\s*e\\s*s\\s*s\\s*i\\s*o\\s*n\\s*\\(.*/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\\s*r\\s*l\\s*\\(.*/gi;\n\n/**\n * escape doube quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction escapeQuote(str) {\n return str.replace(REGEXP_QUOTE, \""\");\n}\n\n/**\n * unescape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction unescapeQuote(str) {\n return str.replace(REGEXP_QUOTE_2, '\"');\n}\n\n/**\n * escape html entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeHtmlEntities(str) {\n return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) {\n return code[0] === \"x\" || code[0] === \"X\"\n ? String.fromCharCode(parseInt(code.substr(1), 16))\n : String.fromCharCode(parseInt(code, 10));\n });\n}\n\n/**\n * escape html5 new danger entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeDangerHtml5Entities(str) {\n return str\n .replace(REGEXP_ATTR_VALUE_COLON, \":\")\n .replace(REGEXP_ATTR_VALUE_NEWLINE, \" \");\n}\n\n/**\n * clear nonprintable characters\n *\n * @param {String} str\n * @return {String}\n */\nfunction clearNonPrintableCharacter(str) {\n var str2 = \"\";\n for (var i = 0, len = str.length; i < len; i++) {\n str2 += str.charCodeAt(i) < 32 ? \" \" : str.charAt(i);\n }\n return _.trim(str2);\n}\n\n/**\n * get friendly attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction friendlyAttrValue(str) {\n str = unescapeQuote(str);\n str = escapeHtmlEntities(str);\n str = escapeDangerHtml5Entities(str);\n str = clearNonPrintableCharacter(str);\n return str;\n}\n\n/**\n * unescape attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeAttrValue(str) {\n str = escapeQuote(str);\n str = escapeHtml(str);\n return str;\n}\n\n/**\n * `onIgnoreTag` function for removing all the tags that are not in whitelist\n */\nfunction onIgnoreTagStripAll() {\n return \"\";\n}\n\n/**\n * remove tag body\n * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional)\n *\n * @param {array} tags\n * @param {function} next\n */\nfunction StripTagBody(tags, next) {\n if (typeof next !== \"function\") {\n next = function() {};\n }\n\n var isRemoveAllTag = !Array.isArray(tags);\n function isRemoveTag(tag) {\n if (isRemoveAllTag) return true;\n return _.indexOf(tags, tag) !== -1;\n }\n\n var removeList = [];\n var posStart = false;\n\n return {\n onIgnoreTag: function(tag, html, options) {\n if (isRemoveTag(tag)) {\n if (options.isClosing) {\n var ret = \"[/removed]\";\n var end = options.position + ret.length;\n removeList.push([\n posStart !== false ? posStart : options.position,\n end\n ]);\n posStart = false;\n return ret;\n } else {\n if (!posStart) {\n posStart = options.position;\n }\n return \"[removed]\";\n }\n } else {\n return next(tag, html, options);\n }\n },\n remove: function(html) {\n var rethtml = \"\";\n var lastPos = 0;\n _.forEach(removeList, function(pos) {\n rethtml += html.slice(lastPos, pos[0]);\n lastPos = pos[1];\n });\n rethtml += html.slice(lastPos);\n return rethtml;\n }\n };\n}\n\n/**\n * remove html comments\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripCommentTag(html) {\n return html.replace(STRIP_COMMENT_TAG_REGEXP, \"\");\n}\nvar STRIP_COMMENT_TAG_REGEXP = //g;\n\n/**\n * remove invisible characters\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripBlankChar(html) {\n var chars = html.split(\"\");\n chars = chars.filter(function(char) {\n var c = char.charCodeAt(0);\n if (c === 127) return false;\n if (c <= 31) {\n if (c === 10 || c === 13) return true;\n return false;\n }\n return true;\n });\n return chars.join(\"\");\n}\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onTag = onTag;\nexports.onIgnoreTag = onIgnoreTag;\nexports.onTagAttr = onTagAttr;\nexports.onIgnoreTagAttr = onIgnoreTagAttr;\nexports.safeAttrValue = safeAttrValue;\nexports.escapeHtml = escapeHtml;\nexports.escapeQuote = escapeQuote;\nexports.unescapeQuote = unescapeQuote;\nexports.escapeHtmlEntities = escapeHtmlEntities;\nexports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;\nexports.clearNonPrintableCharacter = clearNonPrintableCharacter;\nexports.friendlyAttrValue = friendlyAttrValue;\nexports.escapeAttrValue = escapeAttrValue;\nexports.onIgnoreTagStripAll = onIgnoreTagStripAll;\nexports.StripTagBody = StripTagBody;\nexports.stripCommentTag = stripCommentTag;\nexports.stripBlankChar = stripBlankChar;\nexports.cssFilter = defaultCSSFilter;\nexports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;\n","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nfunction getDefaultWhiteList () {\n // 白名单值说明:\n // true: 允许该属性\n // Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许\n // RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许\n // 除上面列出的值外均表示不允许\n var whiteList = {};\n\n whiteList['align-content'] = false; // default: auto\n whiteList['align-items'] = false; // default: auto\n whiteList['align-self'] = false; // default: auto\n whiteList['alignment-adjust'] = false; // default: auto\n whiteList['alignment-baseline'] = false; // default: baseline\n whiteList['all'] = false; // default: depending on individual properties\n whiteList['anchor-point'] = false; // default: none\n whiteList['animation'] = false; // default: depending on individual properties\n whiteList['animation-delay'] = false; // default: 0\n whiteList['animation-direction'] = false; // default: normal\n whiteList['animation-duration'] = false; // default: 0\n whiteList['animation-fill-mode'] = false; // default: none\n whiteList['animation-iteration-count'] = false; // default: 1\n whiteList['animation-name'] = false; // default: none\n whiteList['animation-play-state'] = false; // default: running\n whiteList['animation-timing-function'] = false; // default: ease\n whiteList['azimuth'] = false; // default: center\n whiteList['backface-visibility'] = false; // default: visible\n whiteList['background'] = true; // default: depending on individual properties\n whiteList['background-attachment'] = true; // default: scroll\n whiteList['background-clip'] = true; // default: border-box\n whiteList['background-color'] = true; // default: transparent\n whiteList['background-image'] = true; // default: none\n whiteList['background-origin'] = true; // default: padding-box\n whiteList['background-position'] = true; // default: 0% 0%\n whiteList['background-repeat'] = true; // default: repeat\n whiteList['background-size'] = true; // default: auto\n whiteList['baseline-shift'] = false; // default: baseline\n whiteList['binding'] = false; // default: none\n whiteList['bleed'] = false; // default: 6pt\n whiteList['bookmark-label'] = false; // default: content()\n whiteList['bookmark-level'] = false; // default: none\n whiteList['bookmark-state'] = false; // default: open\n whiteList['border'] = true; // default: depending on individual properties\n whiteList['border-bottom'] = true; // default: depending on individual properties\n whiteList['border-bottom-color'] = true; // default: current color\n whiteList['border-bottom-left-radius'] = true; // default: 0\n whiteList['border-bottom-right-radius'] = true; // default: 0\n whiteList['border-bottom-style'] = true; // default: none\n whiteList['border-bottom-width'] = true; // default: medium\n whiteList['border-collapse'] = true; // default: separate\n whiteList['border-color'] = true; // default: depending on individual properties\n whiteList['border-image'] = true; // default: none\n whiteList['border-image-outset'] = true; // default: 0\n whiteList['border-image-repeat'] = true; // default: stretch\n whiteList['border-image-slice'] = true; // default: 100%\n whiteList['border-image-source'] = true; // default: none\n whiteList['border-image-width'] = true; // default: 1\n whiteList['border-left'] = true; // default: depending on individual properties\n whiteList['border-left-color'] = true; // default: current color\n whiteList['border-left-style'] = true; // default: none\n whiteList['border-left-width'] = true; // default: medium\n whiteList['border-radius'] = true; // default: 0\n whiteList['border-right'] = true; // default: depending on individual properties\n whiteList['border-right-color'] = true; // default: current color\n whiteList['border-right-style'] = true; // default: none\n whiteList['border-right-width'] = true; // default: medium\n whiteList['border-spacing'] = true; // default: 0\n whiteList['border-style'] = true; // default: depending on individual properties\n whiteList['border-top'] = true; // default: depending on individual properties\n whiteList['border-top-color'] = true; // default: current color\n whiteList['border-top-left-radius'] = true; // default: 0\n whiteList['border-top-right-radius'] = true; // default: 0\n whiteList['border-top-style'] = true; // default: none\n whiteList['border-top-width'] = true; // default: medium\n whiteList['border-width'] = true; // default: depending on individual properties\n whiteList['bottom'] = false; // default: auto\n whiteList['box-decoration-break'] = true; // default: slice\n whiteList['box-shadow'] = true; // default: none\n whiteList['box-sizing'] = true; // default: content-box\n whiteList['box-snap'] = true; // default: none\n whiteList['box-suppress'] = true; // default: show\n whiteList['break-after'] = true; // default: auto\n whiteList['break-before'] = true; // default: auto\n whiteList['break-inside'] = true; // default: auto\n whiteList['caption-side'] = false; // default: top\n whiteList['chains'] = false; // default: none\n whiteList['clear'] = true; // default: none\n whiteList['clip'] = false; // default: auto\n whiteList['clip-path'] = false; // default: none\n whiteList['clip-rule'] = false; // default: nonzero\n whiteList['color'] = true; // default: implementation dependent\n whiteList['color-interpolation-filters'] = true; // default: auto\n whiteList['column-count'] = false; // default: auto\n whiteList['column-fill'] = false; // default: balance\n whiteList['column-gap'] = false; // default: normal\n whiteList['column-rule'] = false; // default: depending on individual properties\n whiteList['column-rule-color'] = false; // default: current color\n whiteList['column-rule-style'] = false; // default: medium\n whiteList['column-rule-width'] = false; // default: medium\n whiteList['column-span'] = false; // default: none\n whiteList['column-width'] = false; // default: auto\n whiteList['columns'] = false; // default: depending on individual properties\n whiteList['contain'] = false; // default: none\n whiteList['content'] = false; // default: normal\n whiteList['counter-increment'] = false; // default: none\n whiteList['counter-reset'] = false; // default: none\n whiteList['counter-set'] = false; // default: none\n whiteList['crop'] = false; // default: auto\n whiteList['cue'] = false; // default: depending on individual properties\n whiteList['cue-after'] = false; // default: none\n whiteList['cue-before'] = false; // default: none\n whiteList['cursor'] = false; // default: auto\n whiteList['direction'] = false; // default: ltr\n whiteList['display'] = true; // default: depending on individual properties\n whiteList['display-inside'] = true; // default: auto\n whiteList['display-list'] = true; // default: none\n whiteList['display-outside'] = true; // default: inline-level\n whiteList['dominant-baseline'] = false; // default: auto\n whiteList['elevation'] = false; // default: level\n whiteList['empty-cells'] = false; // default: show\n whiteList['filter'] = false; // default: none\n whiteList['flex'] = false; // default: depending on individual properties\n whiteList['flex-basis'] = false; // default: auto\n whiteList['flex-direction'] = false; // default: row\n whiteList['flex-flow'] = false; // default: depending on individual properties\n whiteList['flex-grow'] = false; // default: 0\n whiteList['flex-shrink'] = false; // default: 1\n whiteList['flex-wrap'] = false; // default: nowrap\n whiteList['float'] = false; // default: none\n whiteList['float-offset'] = false; // default: 0 0\n whiteList['flood-color'] = false; // default: black\n whiteList['flood-opacity'] = false; // default: 1\n whiteList['flow-from'] = false; // default: none\n whiteList['flow-into'] = false; // default: none\n whiteList['font'] = true; // default: depending on individual properties\n whiteList['font-family'] = true; // default: implementation dependent\n whiteList['font-feature-settings'] = true; // default: normal\n whiteList['font-kerning'] = true; // default: auto\n whiteList['font-language-override'] = true; // default: normal\n whiteList['font-size'] = true; // default: medium\n whiteList['font-size-adjust'] = true; // default: none\n whiteList['font-stretch'] = true; // default: normal\n whiteList['font-style'] = true; // default: normal\n whiteList['font-synthesis'] = true; // default: weight style\n whiteList['font-variant'] = true; // default: normal\n whiteList['font-variant-alternates'] = true; // default: normal\n whiteList['font-variant-caps'] = true; // default: normal\n whiteList['font-variant-east-asian'] = true; // default: normal\n whiteList['font-variant-ligatures'] = true; // default: normal\n whiteList['font-variant-numeric'] = true; // default: normal\n whiteList['font-variant-position'] = true; // default: normal\n whiteList['font-weight'] = true; // default: normal\n whiteList['grid'] = false; // default: depending on individual properties\n whiteList['grid-area'] = false; // default: depending on individual properties\n whiteList['grid-auto-columns'] = false; // default: auto\n whiteList['grid-auto-flow'] = false; // default: none\n whiteList['grid-auto-rows'] = false; // default: auto\n whiteList['grid-column'] = false; // default: depending on individual properties\n whiteList['grid-column-end'] = false; // default: auto\n whiteList['grid-column-start'] = false; // default: auto\n whiteList['grid-row'] = false; // default: depending on individual properties\n whiteList['grid-row-end'] = false; // default: auto\n whiteList['grid-row-start'] = false; // default: auto\n whiteList['grid-template'] = false; // default: depending on individual properties\n whiteList['grid-template-areas'] = false; // default: none\n whiteList['grid-template-columns'] = false; // default: none\n whiteList['grid-template-rows'] = false; // default: none\n whiteList['hanging-punctuation'] = false; // default: none\n whiteList['height'] = true; // default: auto\n whiteList['hyphens'] = false; // default: manual\n whiteList['icon'] = false; // default: auto\n whiteList['image-orientation'] = false; // default: auto\n whiteList['image-resolution'] = false; // default: normal\n whiteList['ime-mode'] = false; // default: auto\n whiteList['initial-letters'] = false; // default: normal\n whiteList['inline-box-align'] = false; // default: last\n whiteList['justify-content'] = false; // default: auto\n whiteList['justify-items'] = false; // default: auto\n whiteList['justify-self'] = false; // default: auto\n whiteList['left'] = false; // default: auto\n whiteList['letter-spacing'] = true; // default: normal\n whiteList['lighting-color'] = true; // default: white\n whiteList['line-box-contain'] = false; // default: block inline replaced\n whiteList['line-break'] = false; // default: auto\n whiteList['line-grid'] = false; // default: match-parent\n whiteList['line-height'] = false; // default: normal\n whiteList['line-snap'] = false; // default: none\n whiteList['line-stacking'] = false; // default: depending on individual properties\n whiteList['line-stacking-ruby'] = false; // default: exclude-ruby\n whiteList['line-stacking-shift'] = false; // default: consider-shifts\n whiteList['line-stacking-strategy'] = false; // default: inline-line-height\n whiteList['list-style'] = true; // default: depending on individual properties\n whiteList['list-style-image'] = true; // default: none\n whiteList['list-style-position'] = true; // default: outside\n whiteList['list-style-type'] = true; // default: disc\n whiteList['margin'] = true; // default: depending on individual properties\n whiteList['margin-bottom'] = true; // default: 0\n whiteList['margin-left'] = true; // default: 0\n whiteList['margin-right'] = true; // default: 0\n whiteList['margin-top'] = true; // default: 0\n whiteList['marker-offset'] = false; // default: auto\n whiteList['marker-side'] = false; // default: list-item\n whiteList['marks'] = false; // default: none\n whiteList['mask'] = false; // default: border-box\n whiteList['mask-box'] = false; // default: see individual properties\n whiteList['mask-box-outset'] = false; // default: 0\n whiteList['mask-box-repeat'] = false; // default: stretch\n whiteList['mask-box-slice'] = false; // default: 0 fill\n whiteList['mask-box-source'] = false; // default: none\n whiteList['mask-box-width'] = false; // default: auto\n whiteList['mask-clip'] = false; // default: border-box\n whiteList['mask-image'] = false; // default: none\n whiteList['mask-origin'] = false; // default: border-box\n whiteList['mask-position'] = false; // default: center\n whiteList['mask-repeat'] = false; // default: no-repeat\n whiteList['mask-size'] = false; // default: border-box\n whiteList['mask-source-type'] = false; // default: auto\n whiteList['mask-type'] = false; // default: luminance\n whiteList['max-height'] = true; // default: none\n whiteList['max-lines'] = false; // default: none\n whiteList['max-width'] = true; // default: none\n whiteList['min-height'] = true; // default: 0\n whiteList['min-width'] = true; // default: 0\n whiteList['move-to'] = false; // default: normal\n whiteList['nav-down'] = false; // default: auto\n whiteList['nav-index'] = false; // default: auto\n whiteList['nav-left'] = false; // default: auto\n whiteList['nav-right'] = false; // default: auto\n whiteList['nav-up'] = false; // default: auto\n whiteList['object-fit'] = false; // default: fill\n whiteList['object-position'] = false; // default: 50% 50%\n whiteList['opacity'] = false; // default: 1\n whiteList['order'] = false; // default: 0\n whiteList['orphans'] = false; // default: 2\n whiteList['outline'] = false; // default: depending on individual properties\n whiteList['outline-color'] = false; // default: invert\n whiteList['outline-offset'] = false; // default: 0\n whiteList['outline-style'] = false; // default: none\n whiteList['outline-width'] = false; // default: medium\n whiteList['overflow'] = false; // default: depending on individual properties\n whiteList['overflow-wrap'] = false; // default: normal\n whiteList['overflow-x'] = false; // default: visible\n whiteList['overflow-y'] = false; // default: visible\n whiteList['padding'] = true; // default: depending on individual properties\n whiteList['padding-bottom'] = true; // default: 0\n whiteList['padding-left'] = true; // default: 0\n whiteList['padding-right'] = true; // default: 0\n whiteList['padding-top'] = true; // default: 0\n whiteList['page'] = false; // default: auto\n whiteList['page-break-after'] = false; // default: auto\n whiteList['page-break-before'] = false; // default: auto\n whiteList['page-break-inside'] = false; // default: auto\n whiteList['page-policy'] = false; // default: start\n whiteList['pause'] = false; // default: implementation dependent\n whiteList['pause-after'] = false; // default: implementation dependent\n whiteList['pause-before'] = false; // default: implementation dependent\n whiteList['perspective'] = false; // default: none\n whiteList['perspective-origin'] = false; // default: 50% 50%\n whiteList['pitch'] = false; // default: medium\n whiteList['pitch-range'] = false; // default: 50\n whiteList['play-during'] = false; // default: auto\n whiteList['position'] = false; // default: static\n whiteList['presentation-level'] = false; // default: 0\n whiteList['quotes'] = false; // default: text\n whiteList['region-fragment'] = false; // default: auto\n whiteList['resize'] = false; // default: none\n whiteList['rest'] = false; // default: depending on individual properties\n whiteList['rest-after'] = false; // default: none\n whiteList['rest-before'] = false; // default: none\n whiteList['richness'] = false; // default: 50\n whiteList['right'] = false; // default: auto\n whiteList['rotation'] = false; // default: 0\n whiteList['rotation-point'] = false; // default: 50% 50%\n whiteList['ruby-align'] = false; // default: auto\n whiteList['ruby-merge'] = false; // default: separate\n whiteList['ruby-position'] = false; // default: before\n whiteList['shape-image-threshold'] = false; // default: 0.0\n whiteList['shape-outside'] = false; // default: none\n whiteList['shape-margin'] = false; // default: 0\n whiteList['size'] = false; // default: auto\n whiteList['speak'] = false; // default: auto\n whiteList['speak-as'] = false; // default: normal\n whiteList['speak-header'] = false; // default: once\n whiteList['speak-numeral'] = false; // default: continuous\n whiteList['speak-punctuation'] = false; // default: none\n whiteList['speech-rate'] = false; // default: medium\n whiteList['stress'] = false; // default: 50\n whiteList['string-set'] = false; // default: none\n whiteList['tab-size'] = false; // default: 8\n whiteList['table-layout'] = false; // default: auto\n whiteList['text-align'] = true; // default: start\n whiteList['text-align-last'] = true; // default: auto\n whiteList['text-combine-upright'] = true; // default: none\n whiteList['text-decoration'] = true; // default: none\n whiteList['text-decoration-color'] = true; // default: currentColor\n whiteList['text-decoration-line'] = true; // default: none\n whiteList['text-decoration-skip'] = true; // default: objects\n whiteList['text-decoration-style'] = true; // default: solid\n whiteList['text-emphasis'] = true; // default: depending on individual properties\n whiteList['text-emphasis-color'] = true; // default: currentColor\n whiteList['text-emphasis-position'] = true; // default: over right\n whiteList['text-emphasis-style'] = true; // default: none\n whiteList['text-height'] = true; // default: auto\n whiteList['text-indent'] = true; // default: 0\n whiteList['text-justify'] = true; // default: auto\n whiteList['text-orientation'] = true; // default: mixed\n whiteList['text-overflow'] = true; // default: clip\n whiteList['text-shadow'] = true; // default: none\n whiteList['text-space-collapse'] = true; // default: collapse\n whiteList['text-transform'] = true; // default: none\n whiteList['text-underline-position'] = true; // default: auto\n whiteList['text-wrap'] = true; // default: normal\n whiteList['top'] = false; // default: auto\n whiteList['transform'] = false; // default: none\n whiteList['transform-origin'] = false; // default: 50% 50% 0\n whiteList['transform-style'] = false; // default: flat\n whiteList['transition'] = false; // default: depending on individual properties\n whiteList['transition-delay'] = false; // default: 0s\n whiteList['transition-duration'] = false; // default: 0s\n whiteList['transition-property'] = false; // default: all\n whiteList['transition-timing-function'] = false; // default: ease\n whiteList['unicode-bidi'] = false; // default: normal\n whiteList['vertical-align'] = false; // default: baseline\n whiteList['visibility'] = false; // default: visible\n whiteList['voice-balance'] = false; // default: center\n whiteList['voice-duration'] = false; // default: auto\n whiteList['voice-family'] = false; // default: implementation dependent\n whiteList['voice-pitch'] = false; // default: medium\n whiteList['voice-range'] = false; // default: medium\n whiteList['voice-rate'] = false; // default: normal\n whiteList['voice-stress'] = false; // default: normal\n whiteList['voice-volume'] = false; // default: medium\n whiteList['volume'] = false; // default: medium\n whiteList['white-space'] = false; // default: normal\n whiteList['widows'] = false; // default: 2\n whiteList['width'] = true; // default: auto\n whiteList['will-change'] = false; // default: auto\n whiteList['word-break'] = true; // default: normal\n whiteList['word-spacing'] = true; // default: normal\n whiteList['word-wrap'] = true; // default: normal\n whiteList['wrap-flow'] = false; // default: auto\n whiteList['wrap-through'] = false; // default: wrap\n whiteList['writing-mode'] = false; // default: horizontal-tb\n whiteList['z-index'] = false; // default: auto\n\n return whiteList;\n}\n\n\n/**\n * 匹配到白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onAttr (name, value, options) {\n // do nothing\n}\n\n/**\n * 匹配到不在白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreAttr (name, value, options) {\n // do nothing\n}\n\nvar REGEXP_URL_JAVASCRIPT = /javascript\\s*\\:/img;\n\n/**\n * 过滤属性值\n *\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction safeAttrValue(name, value) {\n if (REGEXP_URL_JAVASCRIPT.test(value)) return '';\n return value;\n}\n\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onAttr = onAttr;\nexports.onIgnoreAttr = onIgnoreAttr;\nexports.safeAttrValue = safeAttrValue;\n","module.exports = {\n indexOf: function (arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function (arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function (str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, '');\n },\n trimRight: function (str) {\n if (String.prototype.trimRight) {\n return str.trimRight();\n }\n return str.replace(/(\\s*$)/g, '');\n }\n};\n","/**\n * Simple HTML Parser\n *\n * @author Zongmin Lei\n */\n\nvar _ = require(\"./util\");\n\n/**\n * get tag name\n *\n * @param {String} html e.g. '
    '\n * @return {String}\n */\nfunction getTagName(html) {\n var i = _.spaceIndex(html);\n if (i === -1) {\n var tagName = html.slice(1, -1);\n } else {\n var tagName = html.slice(1, i + 1);\n }\n tagName = _.trim(tagName).toLowerCase();\n if (tagName.slice(0, 1) === \"/\") tagName = tagName.slice(1);\n if (tagName.slice(-1) === \"/\") tagName = tagName.slice(0, -1);\n return tagName;\n}\n\n/**\n * is close tag?\n *\n * @param {String} html 如:''\n * @return {Boolean}\n */\nfunction isClosing(html) {\n return html.slice(0, 2) === \"\") {\n rethtml += escapeHtml(html.slice(lastPos, tagStart));\n currentHtml = html.slice(tagStart, currentPos + 1);\n currentTagName = getTagName(currentHtml);\n rethtml += onTag(\n tagStart,\n rethtml.length,\n currentTagName,\n currentHtml,\n isClosing(currentHtml)\n );\n lastPos = currentPos + 1;\n tagStart = false;\n continue;\n }\n if ((c === '\"' || c === \"'\") && html.charAt(currentPos - 1) === \"=\") {\n quoteStart = c;\n continue;\n }\n } else {\n if (c === quoteStart) {\n quoteStart = false;\n continue;\n }\n }\n }\n }\n if (lastPos < html.length) {\n rethtml += escapeHtml(html.substr(lastPos));\n }\n\n return rethtml;\n}\n\nvar REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9_:\\.\\-]/gim;\n\n/**\n * parse input attributes and returns processed attributes\n *\n * @param {String} html e.g. `href=\"#\" target=\"_blank\"`\n * @param {Function} onAttr e.g. `function (name, value)`\n * @return {String}\n */\nfunction parseAttr(html, onAttr) {\n \"user strict\";\n\n var lastPos = 0;\n var retAttrs = [];\n var tmpName = false;\n var len = html.length;\n\n function addAttr(name, value) {\n name = _.trim(name);\n name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, \"\").toLowerCase();\n if (name.length < 1) return;\n var ret = onAttr(name, value || \"\");\n if (ret) retAttrs.push(ret);\n }\n\n // 逐个分析字符\n for (var i = 0; i < len; i++) {\n var c = html.charAt(i);\n var v, j;\n if (tmpName === false && c === \"=\") {\n tmpName = html.slice(lastPos, i);\n lastPos = i + 1;\n continue;\n }\n if (tmpName !== false) {\n if (\n i === lastPos &&\n (c === '\"' || c === \"'\") &&\n html.charAt(i - 1) === \"=\"\n ) {\n j = html.indexOf(c, i + 1);\n if (j === -1) {\n break;\n } else {\n v = _.trim(html.slice(lastPos + 1, j));\n addAttr(tmpName, v);\n tmpName = false;\n i = j;\n lastPos = i + 1;\n continue;\n }\n }\n }\n if (/\\s|\\n|\\t/.test(c)) {\n html = html.replace(/\\s|\\n|\\t/g, \" \");\n if (tmpName === false) {\n j = findNextEqual(html, i);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n addAttr(v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n i = j - 1;\n continue;\n }\n } else {\n j = findBeforeEqual(html, i - 1);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n v = stripQuoteWrap(v);\n addAttr(tmpName, v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n continue;\n }\n }\n }\n }\n\n if (lastPos < html.length) {\n if (tmpName === false) {\n addAttr(html.slice(lastPos));\n } else {\n addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos))));\n }\n }\n\n return _.trim(retAttrs.join(\" \"));\n}\n\nfunction findNextEqual(str, i) {\n for (; i < str.length; i++) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction findBeforeEqual(str, i) {\n for (; i > 0; i--) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction isQuoteWrapString(text) {\n if (\n (text[0] === '\"' && text[text.length - 1] === '\"') ||\n (text[0] === \"'\" && text[text.length - 1] === \"'\")\n ) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction stripQuoteWrap(text) {\n if (isQuoteWrapString(text)) {\n return text.substr(1, text.length - 2);\n } else {\n return text;\n }\n}\n\nexports.parseTag = parseTag;\nexports.parseAttr = parseAttr;\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n;(function(root) {\n'use strict';\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/,\n nptable: noop,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?\\\\?>\\\\n*' // (3)\n + '|\\\\n*' // (4)\n + '|\\\\n*' // (5)\n + '|)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n table: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading| {0,3}>|<\\/?(?:tag)(?: +|\\n|\\/?>)|<(?:script|pre|style|!--))[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}\\.)/;\nblock.item = /^( *)(bull) ?[^\\n]*(?:\\n(?!\\1bull ?)[^\\n]*)*/;\nblock.item = edit(block.item, 'gm')\n .replace(/bull/g, block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = //;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block.paragraph)\n .replace('hr', block.hr)\n .replace('heading', block.heading)\n .replace('lheading', block.lheading)\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ {0,3}(`{3,}|~{3,})([^`\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = edit(block.paragraph)\n .replace('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n .getRegex();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:.*[^>\\n ].*(?:\\n|$))*)\\n*|$)/,\n table: /^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n((?: *[^>\\n ].*(?:\\n|$))*)\\n*|$)/\n});\n\n/**\n * Pedantic grammar\n */\n\nblock.pedantic = merge({}, block.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.pedantic) {\n this.rules = block.pedantic;\n } else if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top) {\n src = src.replace(/^ +$/gm, '');\n var next,\n loose,\n cap,\n bull,\n b,\n item,\n listStart,\n listItems,\n t,\n space,\n i,\n tag,\n l,\n isordered,\n istask,\n ischecked;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? rtrim(cap, '\\n')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (cap = this.rules.nptable.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n isordered = bull.length > 1;\n\n listStart = {\n type: 'list_start',\n ordered: isordered,\n start: isordered ? +bull : '',\n loose: false\n };\n\n this.tokens.push(listStart);\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n listItems = [];\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) */, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull.length > 1 ? b.length === 1\n : (b.length > 1 || (this.options.smartLists && b !== bull))) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n listStart.loose = true;\n }\n\n // Check for task list items\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n\n t = {\n type: 'list_item_start',\n task: istask,\n checked: ischecked,\n loose: loose\n };\n\n listItems.push(t);\n this.tokens.push(t);\n\n // Recurse.\n this.token(item, false);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n if (listStart.loose) {\n l = listItems.length;\n i = 0;\n for (; i < l; i++) {\n listItems[i].loose = true;\n }\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if (top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n if (!this.tokens.links[tag]) {\n this.tokens.links[tag] = {\n href: cap[2],\n title: cap[3]\n };\n }\n continue;\n }\n\n // table (gfm)\n if (cap = this.rules.table.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(\n item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''),\n item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noop,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(href(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n strong: /^__([^\\s_])__(?!_)|^\\*\\*([^\\s*])\\*\\*(?!\\*)|^__([^\\s][\\s\\S]*?[^\\s])__(?!_)|^\\*\\*([^\\s][\\s\\S]*?[^\\s])\\*\\*(?!\\*)/,\n em: /^_([^\\s_])_(?!_)|^\\*([^\\s*\"<\\[])\\*(?!\\*)|^_([^\\s][\\s\\S]*?[^\\s_])_(?!_|[^\\spunctuation])|^_([^\\s_][\\s\\S]*?[^\\s])_(?!_|[^\\spunctuation])|^\\*([^\\s\"<\\[][\\s\\S]*?[^\\s*])\\*(?!\\*)|^\\*([^\\s*\"<\\[][\\s\\S]*?[^\\s])\\*(?!\\*)/,\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noop,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\?@\\\\[^_{|}~';\ninline.em = edit(inline.em).replace(/punctuation/g, inline._punctuation).getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[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])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', block._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]?|`[^`]*`|`(?!`)|[^\\[\\]\\\\`])*?/;\ninline._href = /\\s*(<(?:\\\\[<>]?|[^\\s<>\\\\])*>|[^\\s\\x00-\\x1f]*)/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~+(?=\\S)([\\s\\S]*?\\S)~+/,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\/i.test(cap[0])) {\n this.inLink = false;\n }\n if (!this.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = true;\n } else if (this.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = false;\n }\n\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0];\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n var lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n var linkLen = cap[0].length - (cap[2].length - lastParenIndex) - (cap[3] || '').length;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n src = src.substring(cap[0].length);\n this.inLink = true;\n href = cap[2];\n if (this.options.pedantic) {\n link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n } else {\n title = '';\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n out += this.outputLink(cap, {\n href: InlineLexer.escapes(href),\n title: InlineLexer.escapes(title)\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2].trim(), true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = escape(this.mangle(cap[1]));\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n src = src.substring(cap[0].length);\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n if (this.inRawBlock) {\n out += this.renderer.text(cap[0]);\n } else {\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n }\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\nInlineLexer.escapes = function(text) {\n return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = link.href,\n title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = '',\n l = text.length,\n i = 0,\n ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || marked.defaults;\n}\n\nRenderer.prototype.code = function(code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return ''\n + text\n + '\\n';\n }\n // ignore IDs\n return '' + text + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.checkbox = function(checked) {\n return ' ';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n if (body) body = '' + body + '';\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' align=\"' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\n\nfunction TextRenderer() {}\n\n// no need for block level renderers\n\nTextRenderer.prototype.strong =\nTextRenderer.prototype.em =\nTextRenderer.prototype.codespan =\nTextRenderer.prototype.del =\nTextRenderer.prototype.text = function (text) {\n return text;\n};\n\nTextRenderer.prototype.link =\nTextRenderer.prototype.image = function(href, title, text) {\n return '' + text;\n};\n\nTextRenderer.prototype.br = function() {\n return '';\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.slugger = new Slugger();\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options) {\n var parser = new Parser(options);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options);\n // use an InlineLexer with a TextRenderer to extract pure text\n this.inlineText = new InlineLexer(\n src.links,\n merge({}, this.options, {renderer: new TextRenderer()})\n );\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n unescape(this.inlineText.output(this.token.text)),\n this.slugger);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = '',\n body = '',\n i,\n row,\n cell,\n j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n body = '';\n var ordered = this.token.ordered,\n start = this.token.start;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered, start);\n }\n case 'list_item_start': {\n body = '';\n var loose = this.token.loose;\n var checked = this.token.checked;\n var task = this.token.task;\n\n if (this.token.task) {\n body += this.renderer.checkbox(checked);\n }\n\n while (this.next().type !== 'list_item_end') {\n body += !loose && this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n return this.renderer.listitem(body, task, checked);\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n return this.renderer.html(this.token.text);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n default: {\n var errMsg = 'Token with \"' + this.token.type + '\" type was not found.';\n if (this.options.silent) {\n console.log(errMsg);\n } else {\n throw new Error(errMsg);\n }\n }\n }\n};\n\n/**\n * Slugger generates header id\n */\n\nfunction Slugger () {\n this.seen = {};\n}\n\n/**\n * Convert string to unique id\n */\n\nSlugger.prototype.slug = function (value) {\n var slug = value\n .toLowerCase()\n .trim()\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n\n if (this.seen.hasOwnProperty(slug)) {\n var originalSlug = slug;\n do {\n this.seen[originalSlug]++;\n slug = originalSlug + '-' + this.seen[originalSlug];\n } while (this.seen.hasOwnProperty(slug));\n }\n this.seen[slug] = 0;\n\n return slug;\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n if (encode) {\n if (escape.escapeTest.test(html)) {\n return html.replace(escape.escapeReplace, function (ch) { return escape.replacements[ch]; });\n }\n } else {\n if (escape.escapeTestNoEncode.test(html)) {\n return html.replace(escape.escapeReplaceNoEncode, function (ch) { return escape.replacements[ch]; });\n }\n }\n\n return html;\n}\n\nescape.escapeTest = /[&<>\"']/;\nescape.escapeReplace = /[&<>\"']/g;\nescape.replacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\nescape.escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nescape.escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n return {\n replace: function(name, val) {\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return this;\n },\n getRegex: function() {\n return new RegExp(regex, opt);\n }\n };\n}\n\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (/^[^:]+:\\/*[^/]*$/.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n\n if (href.slice(0, 2) === '//') {\n return base.replace(/:[\\s\\S]*/, ':') + href;\n } else if (href.charAt(0) === '/') {\n return base.replace(/(:\\/*[^/]*)[\\s\\S]*/, '$1') + href;\n } else {\n return base + href;\n }\n}\nvar baseUrls = {};\nvar originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/),\n i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\nfunction rtrim(str, c, invert) {\n if (str.length === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n var suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < str.length) {\n var currChar = str.charAt(str.length - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, str.length - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n var level = 0;\n for (var i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight,\n tokens,\n pending,\n i = 0;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occurred:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.getDefaults = function () {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: new Renderer(),\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tables: true,\n xhtml: false\n };\n};\n\nmarked.defaults = marked.getDefaults();\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.Slugger = Slugger;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n root.marked = marked;\n}\n})(this || (typeof window !== 'undefined' ? window : global));\n","import marked from \"marked\"; // @ts-ignore\n\nimport filterXSS from \"xss\";\nvar whiteListNormal;\nvar whiteListSvg;\nexport var renderMarkdown = function renderMarkdown(content, markedOptions) {\n var hassOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!whiteListNormal) {\n whiteListNormal = Object.assign({}, filterXSS.whiteList, {\n \"ha-icon\": [\"icon\"]\n });\n }\n\n var whiteList;\n\n if (hassOptions.allowSvg) {\n if (!whiteListSvg) {\n whiteListSvg = Object.assign({}, whiteListNormal, {\n svg: [\"xmlns\", \"height\", \"width\"],\n path: [\"transform\", \"stroke\", \"d\"]\n });\n }\n\n whiteList = whiteListSvg;\n } else {\n whiteList = whiteListNormal;\n }\n\n return filterXSS(marked(content, markedOptions), {\n whiteList: whiteList\n });\n};\naddEventListener('message', function (e) {var ref = e.data;var type = ref.type;var method = ref.method;var id = ref.id;var params = ref.params;var f,p;if (type === 'RPC' && method) {if (f = __webpack_exports__[method]) {p = Promise.resolve().then(function () { return f.apply(__webpack_exports__, params); });} else {p = Promise.reject('No such method');}p.then(function (result) {postMessage({type: 'RPC',id: id,result: result});}).catch(function (e) {var error = {message: e};if (e.stack) {error.message = e.message;error.stack = e.stack;error.name = e.name;}postMessage({type: 'RPC',id: id,error: error});});}});postMessage({type: 'RPC',method: 'ready'});","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar DEFAULT = require('./default');\nvar parseStyle = require('./parser');\nvar _ = require('./util');\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject (obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n * - {Object} whiteList\n * - {Function} onAttr\n * - {Function} onIgnoreAttr\n * - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n options = shallowCopyObject(options || {});\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onAttr = options.onAttr || DEFAULT.onAttr;\n options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n // 兼容各种奇葩输入\n css = css || '';\n css = css.toString();\n if (!css) return '';\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onAttr = options.onAttr;\n var onIgnoreAttr = options.onIgnoreAttr;\n var safeAttrValue = options.safeAttrValue;\n\n var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n var check = whiteList[name];\n var isWhite = false;\n if (check === true) isWhite = check;\n else if (typeof check === 'function') isWhite = check(value);\n else if (check instanceof RegExp) isWhite = check.test(value);\n if (isWhite !== true) isWhite = false;\n\n // 如果过滤后 value 为空则直接忽略\n value = safeAttrValue(name, value);\n if (!value) return;\n\n var opts = {\n position: position,\n sourcePosition: sourcePosition,\n source: source,\n isWhite: isWhite\n };\n\n if (isWhite) {\n\n var ret = onAttr(name, value, opts);\n if (isNull(ret)) {\n return name + ':' + value;\n } else {\n return ret;\n }\n\n } else {\n\n var ret = onIgnoreAttr(name, value, opts);\n if (!isNull(ret)) {\n return ret;\n }\n\n }\n });\n\n return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar _ = require('./util');\n\n\n/**\n * 解析style\n *\n * @param {String} css\n * @param {Function} onAttr 处理属性的函数\n * 参数格式: function (sourcePosition, position, name, value, source)\n * @return {String}\n */\nfunction parseStyle (css, onAttr) {\n css = _.trimRight(css);\n if (css[css.length - 1] !== ';') css += ';';\n var cssLength = css.length;\n var isParenthesisOpen = false;\n var lastPos = 0;\n var i = 0;\n var retCSS = '';\n\n function addNewAttr () {\n // 如果没有正常的闭合圆括号,则直接忽略当前属性\n if (!isParenthesisOpen) {\n var source = _.trim(css.slice(lastPos, i));\n var j = source.indexOf(':');\n if (j !== -1) {\n var name = _.trim(source.slice(0, j));\n var value = _.trim(source.slice(j + 1));\n // 必须有属性名称\n if (name) {\n var ret = onAttr(lastPos, retCSS.length, name, value, source);\n if (ret) retCSS += ret + '; ';\n }\n }\n }\n lastPos = i + 1;\n }\n\n for (; i < cssLength; i++) {\n var c = css[i];\n if (c === '/' && css[i + 1] === '*') {\n // 备注开始\n var j = css.indexOf('*/', i + 2);\n // 如果没有正常的备注结束,则后面的部分全部跳过\n if (j === -1) break;\n // 直接将当前位置调到备注结尾,并且初始化状态\n i = j + 1;\n lastPos = i + 1;\n isParenthesisOpen = false;\n } else if (c === '(') {\n isParenthesisOpen = true;\n } else if (c === ')') {\n isParenthesisOpen = false;\n } else if (c === ';') {\n if (isParenthesisOpen) {\n // 在圆括号里面,忽略\n } else {\n addNewAttr();\n }\n } else if (c === '\\n') {\n addNewAttr();\n }\n }\n\n return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n","/**\n * filter xss\n *\n * @author Zongmin Lei\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar parseTag = parser.parseTag;\nvar parseAttr = parser.parseAttr;\nvar _ = require(\"./util\");\n\n/**\n * returns `true` if the input value is `undefined` or `null`\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull(obj) {\n return obj === undefined || obj === null;\n}\n\n/**\n * get attributes for a tag\n *\n * @param {String} html\n * @return {Object}\n * - {String} html\n * - {Boolean} closing\n */\nfunction getAttrs(html) {\n var i = _.spaceIndex(html);\n if (i === -1) {\n return {\n html: \"\",\n closing: html[html.length - 2] === \"/\"\n };\n }\n html = _.trim(html.slice(i + 1, -1));\n var isClosing = html[html.length - 1] === \"/\";\n if (isClosing) html = _.trim(html.slice(0, -1));\n return {\n html: html,\n closing: isClosing\n };\n}\n\n/**\n * shallow copy\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject(obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * FilterXSS class\n *\n * @param {Object} options\n * whiteList, onTag, onTagAttr, onIgnoreTag,\n * onIgnoreTagAttr, safeAttrValue, escapeHtml\n * stripIgnoreTagBody, allowCommentTag, stripBlankChar\n * css{whiteList, onAttr, onIgnoreAttr} `css=false` means don't use `cssfilter`\n */\nfunction FilterXSS(options) {\n options = shallowCopyObject(options || {});\n\n if (options.stripIgnoreTag) {\n if (options.onIgnoreTag) {\n console.error(\n 'Notes: cannot use these two options \"stripIgnoreTag\" and \"onIgnoreTag\" at the same time'\n );\n }\n options.onIgnoreTag = DEFAULT.onIgnoreTagStripAll;\n }\n\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onTag = options.onTag || DEFAULT.onTag;\n options.onTagAttr = options.onTagAttr || DEFAULT.onTagAttr;\n options.onIgnoreTag = options.onIgnoreTag || DEFAULT.onIgnoreTag;\n options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT.onIgnoreTagAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n options.escapeHtml = options.escapeHtml || DEFAULT.escapeHtml;\n this.options = options;\n\n if (options.css === false) {\n this.cssFilter = false;\n } else {\n options.css = options.css || {};\n this.cssFilter = new FilterCSS(options.css);\n }\n}\n\n/**\n * start process and returns result\n *\n * @param {String} html\n * @return {String}\n */\nFilterXSS.prototype.process = function(html) {\n // compatible with the input\n html = html || \"\";\n html = html.toString();\n if (!html) return \"\";\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onTag = options.onTag;\n var onIgnoreTag = options.onIgnoreTag;\n var onTagAttr = options.onTagAttr;\n var onIgnoreTagAttr = options.onIgnoreTagAttr;\n var safeAttrValue = options.safeAttrValue;\n var escapeHtml = options.escapeHtml;\n var cssFilter = me.cssFilter;\n\n // remove invisible characters\n if (options.stripBlankChar) {\n html = DEFAULT.stripBlankChar(html);\n }\n\n // remove html comments\n if (!options.allowCommentTag) {\n html = DEFAULT.stripCommentTag(html);\n }\n\n // if enable stripIgnoreTagBody\n var stripIgnoreTagBody = false;\n if (options.stripIgnoreTagBody) {\n var stripIgnoreTagBody = DEFAULT.StripTagBody(\n options.stripIgnoreTagBody,\n onIgnoreTag\n );\n onIgnoreTag = stripIgnoreTagBody.onIgnoreTag;\n }\n\n var retHtml = parseTag(\n html,\n function(sourcePosition, position, tag, html, isClosing) {\n var info = {\n sourcePosition: sourcePosition,\n position: position,\n isClosing: isClosing,\n isWhite: whiteList.hasOwnProperty(tag)\n };\n\n // call `onTag()`\n var ret = onTag(tag, html, info);\n if (!isNull(ret)) return ret;\n\n if (info.isWhite) {\n if (info.isClosing) {\n return \"\";\n }\n\n var attrs = getAttrs(html);\n var whiteAttrList = whiteList[tag];\n var attrsHtml = parseAttr(attrs.html, function(name, value) {\n // call `onTagAttr()`\n var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1;\n var ret = onTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n\n if (isWhiteAttr) {\n // call `safeAttrValue()`\n value = safeAttrValue(tag, name, value, cssFilter);\n if (value) {\n return name + '=\"' + value + '\"';\n } else {\n return name;\n }\n } else {\n // call `onIgnoreTagAttr()`\n var ret = onIgnoreTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n return;\n }\n });\n\n // build new tag html\n var html = \"<\" + tag;\n if (attrsHtml) html += \" \" + attrsHtml;\n if (attrs.closing) html += \" /\";\n html += \">\";\n return html;\n } else {\n // call `onIgnoreTag()`\n var ret = onIgnoreTag(tag, html, info);\n if (!isNull(ret)) return ret;\n return escapeHtml(html);\n }\n },\n escapeHtml\n );\n\n // if enable stripIgnoreTagBody\n if (stripIgnoreTagBody) {\n retHtml = stripIgnoreTagBody.remove(retHtml);\n }\n\n return retHtml;\n};\n\nmodule.exports = FilterXSS;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/hassio/api/panel/chunk.04bcaa18b59728e10be9.js b/hassio/api/panel/chunk.04bcaa18b59728e10be9.js deleted file mode 100644 index f9494f74b..000000000 --- a/hassio/api/panel/chunk.04bcaa18b59728e10be9.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{136:function(C,H,V){"use strict";V.r(H);var L=document.createElement("template");L.setAttribute("style","display: none;"),L.innerHTML='',document.head.appendChild(L.content)}}]); -//# sourceMappingURL=chunk.04bcaa18b59728e10be9.js.map \ No newline at end of file diff --git a/hassio/api/panel/chunk.04bcaa18b59728e10be9.js.gz b/hassio/api/panel/chunk.04bcaa18b59728e10be9.js.gz deleted file mode 100644 index 1a13c167a..000000000 Binary files a/hassio/api/panel/chunk.04bcaa18b59728e10be9.js.gz and /dev/null differ diff --git a/hassio/api/panel/chunk.04bcaa18b59728e10be9.js.map b/hassio/api/panel/chunk.04bcaa18b59728e10be9.js.map deleted file mode 100644 index 2aa6ffb35..000000000 --- a/hassio/api/panel/chunk.04bcaa18b59728e10be9.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///../build/mdi.html","webpack:///../src/resources/mdi-icons.js"],"names":["documentContainer","document","createElement","setAttribute","innerHTML","head","appendChild","content"],"mappings":"kGAAe,ICETA,EAAoBC,SAASC,cAAc,YACjDF,EAAkBG,aAAa,QAAS,kBACxCH,EAAkBI,UDJH,ooizCCKfH,SAASI,KAAKC,YAAYN,EAAkBO","file":"chunk.04bcaa18b59728e10be9.js","sourcesContent":["export default \"\";","import iconSetContent from \"../../build/mdi.html\";\n\nconst documentContainer = document.createElement(\"template\");\ndocumentContainer.setAttribute(\"style\", \"display: none;\");\ndocumentContainer.innerHTML = iconSetContent;\ndocument.head.appendChild(documentContainer.content);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/hassio/api/panel/chunk.12902324b918e12549ba.js b/hassio/api/panel/chunk.12902324b918e12549ba.js new file mode 100644 index 000000000..c51691e24 --- /dev/null +++ b/hassio/api/panel/chunk.12902324b918e12549ba.js @@ -0,0 +1,3 @@ +/*! For license information please see chunk.12902324b918e12549ba.js.LICENSE */ +(self.webpackJsonp=self.webpackJsonp||[]).push([[10],[,,,,function(e,t,n){"use strict";var i=n(13),o=n(27),r=n(19),a=133;function s(e,t){for(var n=e.element.content,i=e.parts,o=document.createTreeWalker(n,a,null,!1),r=c(i),s=i[r],l=-1,d=0,u=[],p=null;o.nextNode();){l++;var h=o.currentNode;for(h.previousSibling===p&&(p=null),t.has(h)&&(u.push(h),null===p&&(p=h)),null!==p&&d++;void 0!==s&&s.index===l;)s.index=null!==p?-1:s.index-d,s=i[r=c(i,r)]}u.forEach(function(e){return e.parentNode.removeChild(e)})}var l=function(e){for(var t=11===e.nodeType?0:1,n=document.createTreeWalker(e,a,null,!1);n.nextNode();)t++;return t},c=function(e){for(var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1)+1;t2&&void 0!==arguments[2]?arguments[2]:null,i=e.element.content,o=e.parts;if(null!=n)for(var r=document.createTreeWalker(i,a,null,!1),s=c(o),d=0,u=-1;r.nextNode();)for(u++,r.currentNode===n&&(d=l(t),n.parentNode.insertBefore(t,n));-1!==s&&o[s].index===u;){if(d>0){for(;-1!==s;)o[s].index+=d,s=c(o,s);return}s=c(o,s)}else i.appendChild(t)}(n,d,b.firstChild):b.insertBefore(d,b.firstChild),window.ShadyCSS.prepareTemplateStyles(i,e);var v=b.querySelector("style");if(window.ShadyCSS.nativeShadow&&null!==v)t.insertBefore(v.cloneNode(!0),t.firstChild);else if(n){b.insertBefore(d,b.firstChild);var g=new Set;g.add(d),s(n,g)}}else window.ShadyCSS.prepareTemplateStyles(i,e)};function _(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t1&&void 0!==arguments[1]?arguments[1]:I;if(this._ensureClassProperties(),this._classProperties.set(e,t),!t.noAccessor&&!this.prototype.hasOwnProperty(e)){var n="symbol"===w(e)?Symbol():"__".concat(e);Object.defineProperty(this.prototype,e,{get:function(){return this[n]},set:function(t){var i=this[e];this[n]=t,this._requestUpdate(e,i)},configurable:!0,enumerable:!0})}}},{key:"finalize",value:function(){var e=Object.getPrototypeOf(this);if(e.hasOwnProperty("finalized")||e.finalize(),this.finalized=!0,this._ensureClassProperties(),this._attributeToPropertyMap=new Map,this.hasOwnProperty(JSCompiler_renameProperty("properties",this))){var t=this.properties,n=[].concat(_(Object.getOwnPropertyNames(t)),_("function"==typeof Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t):[])),i=!0,o=!1,r=void 0;try{for(var a,s=n[Symbol.iterator]();!(i=(a=s.next()).done);i=!0){var l=a.value;this.createProperty(l,t[l])}}catch(c){o=!0,r=c}finally{try{i||null==s.return||s.return()}finally{if(o)throw r}}}}},{key:"_attributeNameForProperty",value:function(e,t){var n=t.attribute;return!1===n?void 0:"string"==typeof n?n:"string"==typeof e?e.toLowerCase():void 0}},{key:"_valueHasChanged",value:function(e,t){return(arguments.length>2&&void 0!==arguments[2]?arguments[2]:T)(e,t)}},{key:"_propertyValueFromAttribute",value:function(e,t){var n=t.type,i=t.converter||E,o="function"==typeof i?i:i.fromAttribute;return o?o(e,n):e}},{key:"_propertyValueToAttribute",value:function(e,t){if(void 0!==t.reflect){var n=t.type,i=t.converter;return(i&&i.toAttribute||E.toAttribute)(e,n)}}},{key:"observedAttributes",get:function(){var e=this;this.finalize();var t=[];return this._classProperties.forEach(function(n,i){var o=e._attributeNameForProperty(i,n);void 0!==o&&(e._attributeToPropertyMap.set(o,i),t.push(o))}),t}}],(i=[{key:"initialize",value:function(){this._saveInstanceProperties(),this._requestUpdate()}},{key:"_saveInstanceProperties",value:function(){var e=this;this.constructor._classProperties.forEach(function(t,n){if(e.hasOwnProperty(n)){var i=e[n];delete e[n],e._instanceProperties||(e._instanceProperties=new Map),e._instanceProperties.set(n,i)}})}},{key:"_applyInstanceProperties",value:function(){var e=this;this._instanceProperties.forEach(function(t,n){return e[n]=t}),this._instanceProperties=void 0}},{key:"connectedCallback",value:function(){this._updateState=32|this._updateState,this._hasConnectedResolver&&(this._hasConnectedResolver(),this._hasConnectedResolver=void 0)}},{key:"disconnectedCallback",value:function(){}},{key:"attributeChangedCallback",value:function(e,t,n){t!==n&&this._attributeToProperty(e,n)}},{key:"_propertyToAttribute",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:I,i=this.constructor,o=i._attributeNameForProperty(e,n);if(void 0!==o){var r=i._propertyValueToAttribute(t,n);if(void 0===r)return;this._updateState=8|this._updateState,null==r?this.removeAttribute(o):this.setAttribute(o,r),this._updateState=-9&this._updateState}}},{key:"_attributeToProperty",value:function(e,t){if(!(8&this._updateState)){var n=this.constructor,i=n._attributeToPropertyMap.get(e);if(void 0!==i){var o=n._classProperties.get(i)||I;this._updateState=16|this._updateState,this[i]=n._propertyValueFromAttribute(t,o),this._updateState=-17&this._updateState}}}},{key:"_requestUpdate",value:function(e,t){var n=!0;if(void 0!==e){var i=this.constructor,o=i._classProperties.get(e)||I;i._valueHasChanged(this[e],t,o.hasChanged)?(this._changedProperties.has(e)||this._changedProperties.set(e,t),!0!==o.reflect||16&this._updateState||(void 0===this._reflectingProperties&&(this._reflectingProperties=new Map),this._reflectingProperties.set(e,o))):n=!1}!this._hasRequestedUpdate&&n&&this._enqueueUpdate()}},{key:"requestUpdate",value:function(e,t){return this._requestUpdate(e,t),this.updateComplete}},{key:"_enqueueUpdate",value:function(){var e,t,n,i,o=this;return regeneratorRuntime.async(function(r){for(;;)switch(r.prev=r.next){case 0:return this._updateState=4|this._updateState,n=this._updatePromise,this._updatePromise=new Promise(function(n,i){e=n,t=i}),r.prev=3,r.next=6,regeneratorRuntime.awrap(n);case 6:r.next=10;break;case 8:r.prev=8,r.t0=r.catch(3);case 10:if(this._hasConnected){r.next=13;break}return r.next=13,regeneratorRuntime.awrap(new Promise(function(e){return o._hasConnectedResolver=e}));case 13:if(r.prev=13,null==(i=this.performUpdate())){r.next=18;break}return r.next=18,regeneratorRuntime.awrap(i);case 18:r.next=23;break;case 20:r.prev=20,r.t1=r.catch(13),t(r.t1);case 23:e(!this._hasRequestedUpdate);case 24:case"end":return r.stop()}},null,this,[[3,8],[13,20]])}},{key:"performUpdate",value:function(){this._instanceProperties&&this._applyInstanceProperties();var e=!1,t=this._changedProperties;try{(e=this.shouldUpdate(t))&&this.update(t)}catch(n){throw e=!1,n}finally{this._markUpdated()}e&&(1&this._updateState||(this._updateState=1|this._updateState,this.firstUpdated(t)),this.updated(t))}},{key:"_markUpdated",value:function(){this._changedProperties=new Map,this._updateState=-5&this._updateState}},{key:"_getUpdateComplete",value:function(){return this._updatePromise}},{key:"shouldUpdate",value:function(e){return!0}},{key:"update",value:function(e){var t=this;void 0!==this._reflectingProperties&&this._reflectingProperties.size>0&&(this._reflectingProperties.forEach(function(e,n){return t._propertyToAttribute(n,t[n],e)}),this._reflectingProperties=void 0)}},{key:"updated",value:function(e){}},{key:"firstUpdated",value:function(e){}},{key:"_hasConnected",get:function(){return 32&this._updateState}},{key:"_hasRequestedUpdate",get:function(){return 4&this._updateState}},{key:"hasUpdated",get:function(){return 1&this._updateState}},{key:"updateComplete",get:function(){return this._getUpdateComplete()}}])&&x(n.prototype,i),o&&x(n,o),t}();j.finalized=!0;var R=function(e){return function(t){return"function"==typeof t?function(e,t){return window.customElements.define(e,t),t}(e,t):function(e,t){return{kind:t.kind,elements:t.elements,finisher:function(t){window.customElements.define(e,t)}}}(e,t)}},B=function(e,t){return"method"!==t.kind||!t.descriptor||"value"in t.descriptor?{kind:"field",key:Symbol(),placement:"own",descriptor:{},initializer:function(){"function"==typeof t.initializer&&(this[t.key]=t.initializer.call(this))},finisher:function(n){n.createProperty(t.key,e)}}:Object.assign({},t,{finisher:function(n){n.createProperty(t.key,e)}})},P=function(e,t,n){t.constructor.createProperty(n,e)};function N(e){return function(t,n){return void 0!==n?P(e,t,n):B(e,t)}}function L(e){return function(t,n){var i={get:function(){return this.renderRoot.querySelector(e)},enumerable:!0,configurable:!0};return void 0!==n?F(i,t,n):M(i,t)}}var F=function(e,t,n){Object.defineProperty(t,n,e)},M=function(e,t){return{kind:"method",placement:"prototype",key:t.key,descriptor:e}};function D(e,t){for(var n=0;n1?t-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:[],i=0,o=t.length;i\n \n\n\n \n']);return o=function(){return e},e}var r=Object(i.a)(o());r.setAttribute("style","display: none;"),document.head.appendChild(r.content);var a=document.createElement("style");a.textContent="[hidden] { display: none !important; }",document.head.appendChild(a)},function(e,t,n){"use strict";n(3),n(88);var i=n(5);function o(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n\n \n'],['\n\n \n']);return o=function(){return e},e}var r=Object(i.a)(o());r.setAttribute("style","display: none;"),document.head.appendChild(r.content)},,function(e,t,n){"use strict";var i=n(18);function o(e,t){for(var n=0;n1?t-1:0),i=1;i\n
    \n ','\n ',"\n ","\n \n "]);return l=function(){return e},e}function c(){var e=d(['',""]);return c=function(){return e},e}function d(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function u(e,t){for(var n=0;n\n :host {\n display: inline-block;\n overflow: hidden;\n position: relative;\n }\n\n #baseURIAnchor {\n display: none;\n }\n\n #sizedImgDiv {\n position: absolute;\n top: 0px;\n right: 0px;\n bottom: 0px;\n left: 0px;\n\n display: none;\n }\n\n #img {\n display: block;\n width: var(--iron-image-width, auto);\n height: var(--iron-image-height, auto);\n }\n\n :host([sizing]) #sizedImgDiv {\n display: block;\n }\n\n :host([sizing]) #img {\n display: none;\n }\n\n #placeholder {\n position: absolute;\n top: 0px;\n right: 0px;\n bottom: 0px;\n left: 0px;\n\n background-color: inherit;\n opacity: 1;\n\n @apply --iron-image-placeholder;\n }\n\n #placeholder.faded-out {\n transition: opacity 0.5s linear;\n opacity: 0;\n }\n \n\n
    \n \n \n
    \n']);return a=function(){return e},e}Object(i.a)({_template:Object(o.a)(a()),is:"iron-image",properties:{src:{type:String,value:""},alt:{type:String,value:null},crossorigin:{type:String,value:null},preventLoad:{type:Boolean,value:!1},sizing:{type:String,value:null,reflectToAttribute:!0},position:{type:String,value:"center"},preload:{type:Boolean,value:!1},placeholder:{type:String,value:null,observer:"_placeholderChanged"},fade:{type:Boolean,value:!1},loaded:{notify:!0,readOnly:!0,type:Boolean,value:!1},loading:{notify:!0,readOnly:!0,type:Boolean,value:!1},error:{notify:!0,readOnly:!0,type:Boolean,value:!1},width:{observer:"_widthChanged",type:Number,value:null},height:{observer:"_heightChanged",type:Number,value:null}},observers:["_transformChanged(sizing, position)","_loadStateObserver(src, preventLoad)"],created:function(){this._resolvedSrc=""},_imgOnLoad:function(){this.$.img.src===this._resolveSrc(this.src)&&(this._setLoading(!1),this._setLoaded(!0),this._setError(!1))},_imgOnError:function(){this.$.img.src===this._resolveSrc(this.src)&&(this.$.img.removeAttribute("src"),this.$.sizedImgDiv.style.backgroundImage="",this._setLoading(!1),this._setLoaded(!1),this._setError(!0))},_computePlaceholderHidden:function(){return!this.preload||!this.fade&&!this.loading&&this.loaded},_computePlaceholderClassName:function(){return this.preload&&this.fade&&!this.loading&&this.loaded?"faded-out":""},_computeImgDivHidden:function(){return!this.sizing},_computeImgDivARIAHidden:function(){return""===this.alt?"true":void 0},_computeImgDivARIALabel:function(){return null!==this.alt?this.alt:""===this.src?"":this._resolveSrc(this.src).replace(/[?|#].*/g,"").split("/").pop()},_computeImgHidden:function(){return!!this.sizing},_widthChanged:function(){this.style.width=isNaN(this.width)?this.width:this.width+"px"},_heightChanged:function(){this.style.height=isNaN(this.height)?this.height:this.height+"px"},_loadStateObserver:function(e,t){var n=this._resolveSrc(e);n!==this._resolvedSrc&&(this._resolvedSrc="",this.$.img.removeAttribute("src"),this.$.sizedImgDiv.style.backgroundImage="",""===e||t?(this._setLoading(!1),this._setLoaded(!1),this._setError(!1)):(this._resolvedSrc=n,this.$.img.src=this._resolvedSrc,this.$.sizedImgDiv.style.backgroundImage='url("'+this._resolvedSrc+'")',this._setLoading(!0),this._setLoaded(!1),this._setError(!1)))},_placeholderChanged:function(){this.$.placeholder.style.backgroundImage=this.placeholder?'url("'+this.placeholder+'")':""},_transformChanged:function(){var e=this.$.sizedImgDiv.style,t=this.$.placeholder.style;e.backgroundSize=t.backgroundSize=this.sizing,e.backgroundPosition=t.backgroundPosition=this.sizing?this.position:"",e.backgroundRepeat=t.backgroundRepeat=this.sizing?"no-repeat":""},_resolveSrc:function(e){var t=Object(r.c)(e,this.$.baseURIAnchor.href);return t.length>=2&&"/"===t[0]&&"/"!==t[1]&&(t=(location.origin||location.protocol+"//"+location.host)+t),t}});n(39);function s(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n\n \n']);return s=function(){return e},e}var l=Object(o.a)(s());l.setAttribute("style","display: none;"),document.head.appendChild(l.content);n(11);function c(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n\n
    \n \n
    [[heading]]
    \n
    \n\n \n'],['\n \n\n
    \n \n
    [[heading]]
    \n
    \n\n \n']);return c=function(){return e},e}Object(i.a)({_template:Object(o.a)(c()),is:"paper-card",properties:{heading:{type:String,value:"",observer:"_headingChanged"},image:{type:String,value:""},alt:{type:String},preloadImage:{type:Boolean,value:!1},fadeImage:{type:Boolean,value:!1},placeholderImage:{type:String,value:null},elevation:{type:Number,value:1,reflectToAttribute:!0},animatedShadow:{type:Boolean,value:!1},animated:{type:Boolean,reflectToAttribute:!0,readOnly:!0,computed:"_computeAnimated(animatedShadow)"}},_isHidden:function(e){return e?"false":"true"},_headingChanged:function(e){var t=this.getAttribute("heading"),n=this.getAttribute("aria-label");"string"==typeof n&&n!==t||this.setAttribute("aria-label",e)},_computeHeadingClass:function(e){return e?" over-image":""},_computeAnimated:function(e){return e}})},function(e,t,n){"use strict";n.d(t,"a",function(){return _}),n.d(t,"b",function(){return w}),n.d(t,"e",function(){return x}),n.d(t,"c",function(){return k}),n.d(t,"f",function(){return S}),n.d(t,"g",function(){return C}),n.d(t,"d",function(){return E});var i=n(49),o=n(27),r=n(50),a=n(51),s=n(36),l=n(19);function c(e,t){return!t||"object"!==m(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function d(e,t,n){return(d="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var i=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=u(e)););return e}(e,t);if(i){var o=Object.getOwnPropertyDescriptor(i,t);return o.get?o.get.call(n):o.value}})(e,t,n||e)}function u(e){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&h(e,t)}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function b(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:this.startNode;Object(o.b)(this.startNode.parentNode,e.nextSibling,this.endNode)}}]),e}(),k=function(){function e(t,n,i){if(f(this,e),this.value=void 0,this.__pendingValue=void 0,2!==i.length||""!==i[0]||""!==i[1])throw new Error("Boolean attributes can only contain a single expression");this.element=t,this.name=n,this.strings=i}return v(e,[{key:"setValue",value:function(e){this.__pendingValue=e}},{key:"commit",value:function(){for(;Object(i.b)(this.__pendingValue);){var e=this.__pendingValue;this.__pendingValue=r.a,e(this)}if(this.__pendingValue!==r.a){var t=!!this.__pendingValue;this.value!==t&&(t?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name),this.value=t),this.__pendingValue=r.a}}}]),e}(),S=function(e){function t(e,n,i){var o;return f(this,t),(o=c(this,u(t).call(this,e,n,i))).single=2===i.length&&""===i[0]&&""===i[1],o}return p(t,_),v(t,[{key:"_createPart",value:function(){return new C(this)}},{key:"_getValue",value:function(){return this.single?this.parts[0].value:d(u(t.prototype),"_getValue",this).call(this)}},{key:"commit",value:function(){this.dirty&&(this.dirty=!1,this.element[this.name]=this._getValue())}}]),t}(),C=function(e){function t(){return f(this,t),c(this,u(t).apply(this,arguments))}return p(t,w),t}(),O=!1;try{var A={get capture(){return O=!0,!1}};window.addEventListener("test",A,A),window.removeEventListener("test",A,A)}catch(I){}var E=function(){function e(t,n,i){var o=this;f(this,e),this.value=void 0,this.__pendingValue=void 0,this.element=t,this.eventName=n,this.eventContext=i,this.__boundHandleEvent=function(e){return o.handleEvent(e)}}return v(e,[{key:"setValue",value:function(e){this.__pendingValue=e}},{key:"commit",value:function(){for(;Object(i.b)(this.__pendingValue);){var e=this.__pendingValue;this.__pendingValue=r.a,e(this)}if(this.__pendingValue!==r.a){var t=this.__pendingValue,n=this.value,o=null==t||null!=n&&(t.capture!==n.capture||t.once!==n.once||t.passive!==n.passive),a=null!=t&&(null==n||o);o&&this.element.removeEventListener(this.eventName,this.__boundHandleEvent,this.__options),a&&(this.__options=T(t),this.element.addEventListener(this.eventName,this.__boundHandleEvent,this.__options)),this.value=t,this.__pendingValue=r.a}}},{key:"handleEvent",value:function(e){"function"==typeof this.value?this.value.call(this.eventContext||this.element,e):this.value.handleEvent(e)}}]),e}(),T=function(e){return e&&(O?{capture:e.capture,passive:e.passive,once:e.once}:e.capture)}},function(e,t,n){"use strict";n.d(t,"f",function(){return i}),n.d(t,"g",function(){return o}),n.d(t,"b",function(){return a}),n.d(t,"a",function(){return s}),n.d(t,"d",function(){return c}),n.d(t,"c",function(){return d}),n.d(t,"e",function(){return u});var i="{{lit-".concat(String(Math.random()).slice(2),"}}"),o="\x3c!--".concat(i,"--\x3e"),r=new RegExp("".concat(i,"|").concat(o)),a="$lit$",s=function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.parts=[],this.element=n;for(var o=[],s=[],c=document.createTreeWalker(n.content,133,null,!1),p=0,h=-1,f=0,b=t.strings,v=t.values.length;f0;){var x=b[f],k=u.exec(x)[2],S=k.toLowerCase()+a,C=m.getAttribute(S);m.removeAttribute(S);var O=C.split(r);this.parts.push({type:"attribute",index:h,name:k,strings:O}),f+=O.length-1}}"TEMPLATE"===m.tagName&&(s.push(m),c.currentNode=m.content)}else if(3===m.nodeType){var A=m.data;if(A.indexOf(i)>=0){for(var E=m.parentNode,T=A.split(r),I=T.length-1,z=0;z=0&&e.slice(n)===t},c=function(e){return-1!==e.index},d=function(){return document.createComment("")},u=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=\/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/},function(e,t,n){"use strict";n(10),n(64);var i=n(6),o=n(7),r=n(5),a=n(3);function s(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(["\n \n"]);return s=function(){return e},e}Object(i.a)({_template:Object(r.a)(s()),is:"iron-icon",properties:{icon:{type:String},theme:{type:String},src:{type:String},_meta:{value:a.a.create("iron-meta",{type:"iconset"})}},observers:["_updateIcon(_meta, isAttached)","_updateIcon(theme, isAttached)","_srcChanged(src, isAttached)","_iconChanged(icon, isAttached)"],_DEFAULT_ICONSET:"icons",_iconChanged:function(e){var t=(e||"").split(":");this._iconName=t.pop(),this._iconsetName=t.pop()||this._DEFAULT_ICONSET,this._updateIcon()},_srcChanged:function(e){this._updateIcon()},_usesIconset:function(){return this.icon||!this.src},_updateIcon:function(){this._usesIconset()?(this._img&&this._img.parentNode&&Object(o.a)(this.root).removeChild(this._img),""===this._iconName?this._iconset&&this._iconset.removeIcon(this):this._iconsetName&&this._meta&&(this._iconset=this._meta.byKey(this._iconsetName),this._iconset?(this._iconset.applyIcon(this,this._iconName,this.theme),this.unlisten(window,"iron-iconset-added","_updateIcon")):this.listen(window,"iron-iconset-added","_updateIcon"))):(this._iconset&&this._iconset.removeIcon(this),this._img||(this._img=document.createElement("img"),this._img.style.width="100%",this._img.style.height="100%",this._img.draggable=!1),this._img.src=this.src,Object(o.a)(this.root).appendChild(this._img))}})},,function(e,t,n){"use strict";n(3),n(20),n(11);var i=n(65),o=n(6),r=n(5);function a(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n\n \n '],['\n \n\n \n ']);return a=function(){return e},e}Object(o.a)({is:"paper-icon-button",_template:Object(r.a)(a()),hostAttributes:{role:"button",tabindex:"0"},behaviors:[i.a],registered:function(){this._template.setAttribute("strip-whitespace","")},properties:{src:{type:String},icon:{type:String},alt:{type:String,observer:"_altChanged"}},_altChanged:function(e,t){var n=this.getAttribute("aria-label");n&&t!=n||this.setAttribute("aria-label",e)}})},function(e,t,n){"use strict";n.d(t,"a",function(){return i});n(3),n(7);var i={properties:{focused:{type:Boolean,value:!1,notify:!0,readOnly:!0,reflectToAttribute:!0},disabled:{type:Boolean,value:!1,notify:!0,observer:"_disabledChanged",reflectToAttribute:!0},_oldTabIndex:{type:String},_boundFocusBlurHandler:{type:Function,value:function(){return this._focusBlurHandler.bind(this)}}},observers:["_changedControlState(focused, disabled)"],ready:function(){this.addEventListener("focus",this._boundFocusBlurHandler,!0),this.addEventListener("blur",this._boundFocusBlurHandler,!0)},_focusBlurHandler:function(e){this._setFocused("focus"===e.type)},_disabledChanged:function(e,t){this.setAttribute("aria-disabled",e?"true":"false"),this.style.pointerEvents=e?"none":"",e?(this._oldTabIndex=this.getAttribute("tabindex"),this._setFocused(!1),this.tabIndex=-1,this.blur()):void 0!==this._oldTabIndex&&(null===this._oldTabIndex?this.removeAttribute("tabindex"):this.setAttribute("tabindex",this._oldTabIndex))},_changedControlState:function(){this._controlStateChanged&&this._controlStateChanged()}}},function(e,t,n){"use strict";n.d(t,"a",function(){return b});n(3);var i={"U+0008":"backspace","U+0009":"tab","U+001B":"esc","U+0020":"space","U+007F":"del"},o={8:"backspace",9:"tab",13:"enter",27:"esc",33:"pageup",34:"pagedown",35:"end",36:"home",32:"space",37:"left",38:"up",39:"right",40:"down",46:"del",106:"*"},r={shift:"shiftKey",ctrl:"ctrlKey",alt:"altKey",meta:"metaKey"},a=/[a-z0-9*]/,s=/U\+/,l=/^arrow/,c=/^space(bar)?/,d=/^escape$/;function u(e,t){var n="";if(e){var i=e.toLowerCase();" "===i||c.test(i)?n="space":d.test(i)?n="esc":1==i.length?t&&!a.test(i)||(n=i):n=l.test(i)?i.replace("arrow",""):"multiply"==i?"*":i}return n}function p(e,t){return e.key?u(e.key,t):e.detail&&e.detail.key?u(e.detail.key,t):(n=e.keyIdentifier,r="",n&&(n in i?r=i[n]:s.test(n)?(n=parseInt(n.replace("U+","0x"),16),r=String.fromCharCode(n).toLowerCase()):r=n.toLowerCase()),r||function(e){var t="";return Number(e)&&(t=e>=65&&e<=90?String.fromCharCode(32+e):e>=112&&e<=123?"f"+(e-112+1):e>=48&&e<=57?String(e-48):e>=96&&e<=105?String(e-96):o[e]),t}(e.keyCode)||"");var n,r}function h(e,t){return p(t,e.hasModifiers)===e.key&&(!e.hasModifiers||!!t.shiftKey==!!e.shiftKey&&!!t.ctrlKey==!!e.ctrlKey&&!!t.altKey==!!e.altKey&&!!t.metaKey==!!e.metaKey)}function f(e){return e.trim().split(" ").map(function(e){return function(e){return 1===e.length?{combo:e,key:e,event:"keydown"}:e.split("+").reduce(function(e,t){var n=t.split(":"),i=n[0],o=n[1];return i in r?(e[r[i]]=!0,e.hasModifiers=!0):(e.key=i,e.event=o||"keydown"),e},{combo:e.split(":").shift()})}(e)})}var b={properties:{keyEventTarget:{type:Object,value:function(){return this}},stopKeyboardEventPropagation:{type:Boolean,value:!1},_boundKeyHandlers:{type:Array,value:function(){return[]}},_imperativeKeyBindings:{type:Object,value:function(){return{}}}},observers:["_resetKeyEventListeners(keyEventTarget, _boundKeyHandlers)"],keyBindings:{},registered:function(){this._prepKeyBindings()},attached:function(){this._listenKeyEventListeners()},detached:function(){this._unlistenKeyEventListeners()},addOwnKeyBinding:function(e,t){this._imperativeKeyBindings[e]=t,this._prepKeyBindings(),this._resetKeyEventListeners()},removeOwnKeyBindings:function(){this._imperativeKeyBindings={},this._prepKeyBindings(),this._resetKeyEventListeners()},keyboardEventMatchesKeys:function(e,t){for(var n=f(t),i=0;i2&&void 0!==arguments[2]?arguments[2]:null,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;t!==n;){var o=t.nextSibling;e.insertBefore(t,i),t=o}},r=function(e,t){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;t!==n;){var i=t.nextSibling;e.removeChild(t),t=i}}},,function(e,t,n){"use strict";n(3),n(40);var i=n(5);function o(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(["\n \n"]);return o=function(){return e},e}var r=Object(i.a)(o());r.setAttribute("style","display: none;"),document.head.appendChild(r.content)},,,function(e,t,n){"use strict";function i(e){return(i="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)}n.d(t,"c",function(){return r}),n.d(t,"a",function(){return a}),n.d(t,"b",function(){return s});var o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function r(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var a=function(){return(a=Object.assign||function(e){for(var t,n=1,i=arguments.length;n=0;l--)(r=e[l])&&(s=(a<3?r(s):a>3?r(t,n,s):r(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s}},,,,function(e,t,n){"use strict";n.d(t,"b",function(){return f}),n.d(t,"a",function(){return b});var i=n(27),o=n(19);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)}function a(e,t){return!t||"object"!==r(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function s(e,t,n){return(s="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var i=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=l(e)););return e}(e,t);if(i){var o=Object.getOwnPropertyDescriptor(i,t);return o.get?o.get.call(n):o.value}})(e,t,n||e)}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function c(e,t){return(c=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var n=0;n-1||n)&&-1===r.indexOf("--\x3e",a+1);var s=o.e.exec(r);t+=null===s?r+(n?h:o.g):r.substr(0,s.index)+s[1]+s[2]+o.b+s[3]+o.f}return t+=this.strings[e]}},{key:"getTemplateElement",value:function(){var e=document.createElement("template");return e.innerHTML=this.getHTML(),e}}]),e}(),b=function(e){function t(){return d(this,t),a(this,l(t).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&c(e,t)}(t,f),p(t,[{key:"getHTML",value:function(){return"".concat(s(l(t.prototype),"getHTML",this).call(this),"")}},{key:"getTemplateElement",value:function(){var e=s(l(t.prototype),"getTemplateElement",this).call(this),n=e.content,o=n.firstChild;return n.removeChild(o),Object(i.c)(n,o.firstChild),e}}]),t}()},function(e,t,n){"use strict";n.d(t,"b",function(){return o}),n.d(t,"a",function(){return r});var i=n(19);function o(e){var t=r.get(e.type);void 0===t&&(t={stringsArray:new WeakMap,keyString:new Map},r.set(e.type,t));var n=t.stringsArray.get(e.strings);if(void 0!==n)return n;var o=e.strings.join(i.f);return void 0===(n=t.keyString.get(o))&&(n=new i.a(e,e.getTemplateElement()),t.keyString.set(o,n)),t.stringsArray.set(e.strings,n),n}var r=new Map},function(e,t,n){"use strict";n.d(t,"b",function(){return r}),n.d(t,"a",function(){return a});n(3),n(23);var i=n(24),o=n(7),r={properties:{pressed:{type:Boolean,readOnly:!0,value:!1,reflectToAttribute:!0,observer:"_pressedChanged"},toggles:{type:Boolean,value:!1,reflectToAttribute:!0},active:{type:Boolean,value:!1,notify:!0,reflectToAttribute:!0},pointerDown:{type:Boolean,readOnly:!0,value:!1},receivedFocusFromKeyboard:{type:Boolean,readOnly:!0},ariaActiveAttribute:{type:String,value:"aria-pressed",observer:"_ariaActiveAttributeChanged"}},listeners:{down:"_downHandler",up:"_upHandler",tap:"_tapHandler"},observers:["_focusChanged(focused)","_activeChanged(active, ariaActiveAttribute)"],keyBindings:{"enter:keydown":"_asyncClick","space:keydown":"_spaceKeyDownHandler","space:keyup":"_spaceKeyUpHandler"},_mouseEventRe:/^mouse/,_tapHandler:function(){this.toggles?this._userActivate(!this.active):this.active=!1},_focusChanged:function(e){this._detectKeyboardFocus(e),e||this._setPressed(!1)},_detectKeyboardFocus:function(e){this._setReceivedFocusFromKeyboard(!this.pointerDown&&e)},_userActivate:function(e){this.active!==e&&(this.active=e,this.fire("change"))},_downHandler:function(e){this._setPointerDown(!0),this._setPressed(!0),this._setReceivedFocusFromKeyboard(!1)},_upHandler:function(){this._setPointerDown(!1),this._setPressed(!1)},_spaceKeyDownHandler:function(e){var t=e.detail.keyboardEvent,n=Object(o.a)(t).localTarget;this.isLightDescendant(n)||(t.preventDefault(),t.stopImmediatePropagation(),this._setPressed(!0))},_spaceKeyUpHandler:function(e){var t=e.detail.keyboardEvent,n=Object(o.a)(t).localTarget;this.isLightDescendant(n)||(this.pressed&&this._asyncClick(),this._setPressed(!1))},_asyncClick:function(){this.async(function(){this.click()},1)},_pressedChanged:function(e){this._changedButtonState()},_ariaActiveAttributeChanged:function(e,t){t&&t!=e&&this.hasAttribute(t)&&this.removeAttribute(t)},_activeChanged:function(e,t){this.toggles?this.setAttribute(this.ariaActiveAttribute,e?"true":"false"):this.removeAttribute(this.ariaActiveAttribute),this._changedButtonState()},_controlStateChanged:function(){this.disabled?this._setPressed(!1):this._changedButtonState()},_changedButtonState:function(){this._buttonStateChanged&&this._buttonStateChanged()}},a=[i.a,r]},function(e,t,n){"use strict";n(3);var i=n(5);function o(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n\n \n']);return o=function(){return e},e}var r=Object(i.a)(o());r.setAttribute("style","display: none;"),document.head.appendChild(r.content)},,function(e,t,n){"use strict";n(3),n(10);var i=n(6),o=n(5);function r(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(["\n \n\n \n"]);return r=function(){return e},e}Object(i.a)({_template:Object(o.a)(r()),is:"app-toolbar"})},,,function(e,t,n){"use strict";n(3);var i=n(6),o=n(5);function r(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n
    [[_text]]
    \n']);return r=function(){return e},e}var a=Object(i.a)({_template:Object(o.a)(r()),is:"iron-a11y-announcer",properties:{mode:{type:String,value:"polite"},_text:{type:String,value:""}},created:function(){a.instance||(a.instance=this),document.body.addEventListener("iron-announce",this._onIronAnnounce.bind(this))},announce:function(e){this._text="",this.async(function(){this._text=e},100)},_onIronAnnounce:function(e){e.detail&&e.detail.text&&this.announce(e.detail.text)}});a.instance=null,a.requestAvailability=function(){a.instance||(a.instance=document.createElement("iron-a11y-announcer")),document.body.appendChild(a.instance)};var s=n(55),l=n(7);function c(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n \n']);return c=function(){return e},e}Object(i.a)({_template:Object(o.a)(c()),is:"iron-input",behaviors:[s.a],properties:{bindValue:{type:String,value:""},value:{type:String,computed:"_computeValue(bindValue)"},allowedPattern:{type:String},autoValidate:{type:Boolean,value:!1},_inputElement:Object},observers:["_bindValueChanged(bindValue, _inputElement)"],listeners:{input:"_onInput",keypress:"_onKeypress"},created:function(){a.requestAvailability(),this._previousValidInput="",this._patternAlreadyChecked=!1},attached:function(){this._observer=Object(l.a)(this).observeNodes(function(e){this._initSlottedInput()}.bind(this))},detached:function(){this._observer&&(Object(l.a)(this).unobserveNodes(this._observer),this._observer=null)},get inputElement(){return this._inputElement},_initSlottedInput:function(){this._inputElement=this.getEffectiveChildren()[0],this.inputElement&&this.inputElement.value&&(this.bindValue=this.inputElement.value),this.fire("iron-input-ready")},get _patternRegExp(){var e;if(this.allowedPattern)e=new RegExp(this.allowedPattern);else switch(this.inputElement.type){case"number":e=/[0-9.,e-]/}return e},_bindValueChanged:function(e,t){t&&(void 0===e?t.value=null:e!==t.value&&(this.inputElement.value=e),this.autoValidate&&this.validate(),this.fire("bind-value-changed",{value:e}))},_onInput:function(){this.allowedPattern&&!this._patternAlreadyChecked&&(this._checkPatternValidity()||(this._announceInvalidCharacter("Invalid string of characters not entered."),this.inputElement.value=this._previousValidInput));this.bindValue=this._previousValidInput=this.inputElement.value,this._patternAlreadyChecked=!1},_isPrintable:function(e){var t=8==e.keyCode||9==e.keyCode||13==e.keyCode||27==e.keyCode,n=19==e.keyCode||20==e.keyCode||45==e.keyCode||46==e.keyCode||144==e.keyCode||145==e.keyCode||e.keyCode>32&&e.keyCode<41||e.keyCode>111&&e.keyCode<124;return!(t||0==e.charCode&&n)},_onKeypress:function(e){if(this.allowedPattern||"number"===this.inputElement.type){var t=this._patternRegExp;if(t&&!(e.metaKey||e.ctrlKey||e.altKey)){this._patternAlreadyChecked=!0;var n=String.fromCharCode(e.charCode);this._isPrintable(e)&&!t.test(n)&&(e.preventDefault(),this._announceInvalidCharacter("Invalid character "+n+" not entered."))}}},_checkPatternValidity:function(){var e=this._patternRegExp;if(!e)return!0;for(var t=0;t\n :host {\n display: inline-block;\n float: right;\n\n @apply --paper-font-caption;\n @apply --paper-input-char-counter;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n :host(:dir(rtl)) {\n float: left;\n }\n \n\n [[_charCounterStr]]\n"]);return u=function(){return e},e}Object(i.a)({_template:Object(o.a)(u()),is:"paper-input-char-counter",behaviors:[d],properties:{_charCounterStr:{type:String,value:"0"}},update:function(e){if(e.inputElement){e.value=e.value||"";var t=e.value.toString().length.toString();e.inputElement.hasAttribute("maxlength")&&(t+="/"+e.inputElement.getAttribute("maxlength")),this._charCounterStr=t}}});n(10),n(11);var p=n(47);function h(){var e=b(['\n \n\n \n\n
    \n \n\n
    \n \n \n
    \n\n \n
    \n\n
    \n
    \n
    \n
    \n\n
    \n \n
    \n']);return h=function(){return e},e}function f(){var e=b(['\n\n \n\n']);return f=function(){return e},e}function b(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var v=Object(o.a)(f());function m(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n\n \x3c!--\n If the paper-input-error element is directly referenced by an\n `aria-describedby` attribute, such as when used as a paper-input add-on,\n then applying `visibility: hidden;` to the paper-input-error element itself\n does not hide the error.\n\n For more information, see:\n https://www.w3.org/TR/accname-1.1/#mapping_additional_nd_description\n --\x3e\n
    \n \n
    \n'],['\n \n\n \x3c!--\n If the paper-input-error element is directly referenced by an\n \\`aria-describedby\\` attribute, such as when used as a paper-input add-on,\n then applying \\`visibility: hidden;\\` to the paper-input-error element itself\n does not hide the error.\n\n For more information, see:\n https://www.w3.org/TR/accname-1.1/#mapping_additional_nd_description\n --\x3e\n
    \n \n
    \n']);return m=function(){return e},e}v.setAttribute("style","display: none;"),document.head.appendChild(v.content),Object(i.a)({_template:Object(o.a)(h()),is:"paper-input-container",properties:{noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},attrForValue:{type:String,value:"bind-value"},autoValidate:{type:Boolean,value:!1},invalid:{observer:"_invalidChanged",type:Boolean,value:!1},focused:{readOnly:!0,type:Boolean,value:!1,notify:!0},_addons:{type:Array},_inputHasContent:{type:Boolean,value:!1},_inputSelector:{type:String,value:"input,iron-input,textarea,.paper-input-input"},_boundOnFocus:{type:Function,value:function(){return this._onFocus.bind(this)}},_boundOnBlur:{type:Function,value:function(){return this._onBlur.bind(this)}},_boundOnInput:{type:Function,value:function(){return this._onInput.bind(this)}},_boundValueChanged:{type:Function,value:function(){return this._onValueChanged.bind(this)}}},listeners:{"addon-attached":"_onAddonAttached","iron-input-validate":"_onIronInputValidate"},get _valueChangedEvent(){return this.attrForValue+"-changed"},get _propertyForValue(){return Object(p.b)(this.attrForValue)},get _inputElement(){return Object(l.a)(this).querySelector(this._inputSelector)},get _inputElementValue(){return this._inputElement[this._propertyForValue]||this._inputElement.value},ready:function(){this.__isFirstValueUpdate=!0,this._addons||(this._addons=[]),this.addEventListener("focus",this._boundOnFocus,!0),this.addEventListener("blur",this._boundOnBlur,!0)},attached:function(){this.attrForValue?this._inputElement.addEventListener(this._valueChangedEvent,this._boundValueChanged):this.addEventListener("input",this._onInput),this._inputElementValue&&""!=this._inputElementValue?this._handleValueAndAutoValidate(this._inputElement):this._handleValue(this._inputElement)},_onAddonAttached:function(e){this._addons||(this._addons=[]);var t=e.target;-1===this._addons.indexOf(t)&&(this._addons.push(t),this.isAttached&&this._handleValue(this._inputElement))},_onFocus:function(){this._setFocused(!0)},_onBlur:function(){this._setFocused(!1),this._handleValueAndAutoValidate(this._inputElement)},_onInput:function(e){this._handleValueAndAutoValidate(e.target)},_onValueChanged:function(e){var t=e.target;this.__isFirstValueUpdate&&(this.__isFirstValueUpdate=!1,void 0===t.value||""===t.value)||this._handleValueAndAutoValidate(e.target)},_handleValue:function(e){var t=this._inputElementValue;t||0===t||"number"===e.type&&!e.checkValidity()?this._inputHasContent=!0:this._inputHasContent=!1,this.updateAddons({inputElement:e,value:t,invalid:this.invalid})},_handleValueAndAutoValidate:function(e){var t;this.autoValidate&&e&&(t=e.validate?e.validate(this._inputElementValue):e.checkValidity(),this.invalid=!t);this._handleValue(e)},_onIronInputValidate:function(e){this.invalid=this._inputElement.invalid},_invalidChanged:function(){this._addons&&this.updateAddons({invalid:this.invalid})},updateAddons:function(e){for(var t,n=0;t=this._addons[n];n++)t.update(e)},_computeInputContentClass:function(e,t,n,i,o){var r="input-content";if(e)o&&(r+=" label-is-hidden"),i&&(r+=" is-invalid");else{var a=this.querySelector("label");t||o?(r+=" label-is-floating",this.$.labelAndInputContainer.style.position="static",i?r+=" is-invalid":n&&(r+=" label-is-highlighted")):(a&&(this.$.labelAndInputContainer.style.position="relative"),i&&(r+=" is-invalid"))}return n&&(r+=" focused"),r},_computeUnderlineClass:function(e,t){var n="underline";return t?n+=" is-invalid":e&&(n+=" is-highlighted"),n},_computeAddOnContentClass:function(e,t){var n="add-on-content";return t?n+=" is-invalid":e&&(n+=" is-highlighted"),n}}),Object(i.a)({_template:Object(o.a)(m()),is:"paper-input-error",behaviors:[d],properties:{invalid:{readOnly:!0,reflectToAttribute:!0,type:Boolean}},update:function(e){this._setInvalid(e.invalid)}});var y=n(70),g=(n(61),n(24)),_=n(23),w=n(31),x={NextLabelID:1,NextAddonID:1,NextInputID:1},k={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},allowedPattern:{type:String},type:{type:String},list:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},validator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{type:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_ariaLabelledBy:{type:String,value:""},_inputId:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:0},get inputElement(){return this.$||(this.$={}),this.$.input||(this._generateInputId(),this.$.input=this.$$("#"+this._inputId)),this.$.input},get _focusableElement(){return this.inputElement},created:function(){this._typesThatHaveText=["date","datetime","datetime-local","month","time","week","file"]},attached:function(){this._updateAriaLabelledBy(),!w.a&&this.inputElement&&-1!==this._typesThatHaveText.indexOf(this.inputElement.type)&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t){return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=Object(l.a)(e).rootTarget;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,t.id);else{var n="paper-input-add-on-"+x.NextAddonID++;t.id=n,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,n)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler:function(e){_.a._focusBlurHandler.call(this,e),this.focused&&!this._shiftTabPressed&&this._focusableElement&&this._focusableElement.focus()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),this._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&this.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElement.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputElement.selectionEnd=t}catch(n){this.value=e}},_computeAlwaysFloatLabel:function(e,t){return t||e},_updateAriaLabelledBy:function(){var e,t=Object(l.a)(this.root).querySelector("label");t?(t.id?e=t.id:(e="paper-input-label-"+x.NextLabelID++,t.id=e),this._ariaLabelledBy=e):this._ariaLabelledBy=""},_generateInputId:function(){this._inputId&&""!==this._inputId||(this._inputId="input-"+x.NextInputID++)},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElement;e instanceof HTMLElement&&e!==document.body&&e!==document.documentElement||this._focusableElement.focus()}}},S=[_.a,g.a,k];function C(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n\n \n\n \n\n \n\n \x3c!-- Need to bind maxlength so that the paper-input-char-counter works correctly --\x3e\n \n \n \n\n \n\n \n\n \n\n \n ']);return C=function(){return e},e}Object(i.a)({is:"paper-input",_template:Object(o.a)(C()),behaviors:[S,y.a],properties:{value:{type:String}},get _focusableElement(){return this.inputElement._inputElement},listeners:{"iron-input-ready":"_onIronInputReady"},_onIronInputReady:function(){this.$.nativeInput||(this.$.nativeInput=this.$$("input")),this.inputElement&&-1!==this._typesThatHaveText.indexOf(this.$.nativeInput.type)&&(this.alwaysFloatLabel=!0),this.inputElement.bindValue&&this.$.container._handleValueAndAutoValidate(this.inputElement)}})},,,,,function(e,t,n){"use strict";n.d(t,"a",function(){return o}),n.d(t,"b",function(){return r});var i=new WeakMap,o=function(e){return function(){var t=e.apply(void 0,arguments);return i.set(t,!0),t}},r=function(e){return"function"==typeof e&&i.has(e)}},function(e,t,n){"use strict";n.d(t,"a",function(){return i}),n.d(t,"b",function(){return o});var i={},o={}},function(e,t,n){"use strict";n.d(t,"a",function(){return s});var i=n(27),o=n(19);function r(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t1)throw new Error("The `classMap` directive must be used in the `class` attribute and must be the only part in the attribute.");var n=t.committer,r=n.element;o.has(t)||(r.className=n.strings.join(" "));var a=r.classList,s=o.get(t);for(var l in s)l in e||a.remove(l);for(var c in e){var d=e[c];if(!s||d!==s[c])a[d?"add":"remove"](c)}o.set(t,e)}})},,function(e,t,n){"use strict";n.d(t,"a",function(){return r});n(3);var i=n(64),o=null,r={properties:{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,value:!1,observer:"_invalidChanged"}},registered:function(){o=new i.a({type:"validator"})},_invalidChanged:function(){this.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-invalid")},get _validator(){return o&&o.byKey(this.validator)},hasValidator:function(){return null!=this._validator},validate:function(e){return void 0===e&&void 0!==this.value?this.invalid=!this._getValidity(this.value):this.invalid=!this._getValidity(e),!this.invalid},_getValidity:function(e){return!this.hasValidator()||this._validator.validate(e)}}},,,,,,,,,,function(e,t,n){"use strict";n.d(t,"b",function(){return a}),n.d(t,"a",function(){return s});n(3);var i=n(38),o=n(23),r=n(66),a={observers:["_focusedChanged(receivedFocusFromKeyboard)"],_focusedChanged:function(e){e&&this.ensureRipple(),this.hasRipple()&&(this._ripple.holdDown=e)},_createRipple:function(){var e=r.a._createRipple();return e.id="ink",e.setAttribute("center",""),e.classList.add("circle"),e}},s=[i.a,o.a,r.a,a]},function(e,t,n){"use strict";n.d(t,"a",function(){return r});n(3),n(89);var i=n(38),o=n(7),r={properties:{noink:{type:Boolean,observer:"_noinkChanged"},_rippleContainer:{type:Object}},_buttonStateChanged:function(){this.focused&&this.ensureRipple()},_downHandler:function(e){i.b._downHandler.call(this,e),this.pressed&&this.ensureRipple(e)},ensureRipple:function(e){if(!this.hasRipple()){this._ripple=this._createRipple(),this._ripple.noink=this.noink;var t=this._rippleContainer||this.root;if(t&&Object(o.a)(t).appendChild(this._ripple),e){var n=Object(o.a)(this._rippleContainer||this),i=Object(o.a)(e).rootTarget;n.deepContains(i)&&this._ripple.uiDownAction(e)}}},getRipple:function(){return this.ensureRipple(),this._ripple},hasRipple:function(){return Boolean(this._ripple)},_createRipple:function(){return document.createElement("paper-ripple")},_noinkChanged:function(e){this.hasRipple()&&(this._ripple.noink=e)}}},function(e,t,n){"use strict";n(3),n(40),n(94);var i=n(6),o=n(5),r=n(95);function a(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n']);return a=function(){return e},e}var s=Object(o.a)(a());s.setAttribute("strip-whitespace",""),Object(i.a)({_template:s,is:"paper-spinner-lite",behaviors:[r.a]})},function(e,t,n){"use strict";var i=function(e,t){return e.length===t.length&&e.every(function(e,n){return i=e,o=t[n],i===o;var i,o})};t.a=function(e,t){var n;void 0===t&&(t=i);var o,r=[],a=!1;return function(){for(var i=arguments.length,s=new Array(i),l=0;l-1&&(this._interestedResizables.splice(t,1),this._unsubscribeIronResize(e))},_subscribeIronResize:function(e){e.addEventListener("iron-resize",this._boundOnDescendantIronResize)},_unsubscribeIronResize:function(e){e.removeEventListener("iron-resize",this._boundOnDescendantIronResize)},resizerShouldNotify:function(e){return!0},_onDescendantIronResize:function(e){this._notifyingDescendant?e.stopPropagation():o.f||this._fireResize()},_fireResize:function(){this.fire("iron-resize",null,{node:this,bubbles:!1})},_onIronRequestResizeNotifications:function(e){var t=Object(i.a)(e).rootTarget;t!==this&&(t.assignParentResizable(this),this._notifyDescendant(t),e.stopPropagation())},_parentResizableChanged:function(e){e&&window.removeEventListener("resize",this._boundNotifyResize)},_notifyDescendant:function(e){this.isAttached&&(this._notifyingDescendant=!0,e.notifyResize(),this._notifyingDescendant=!1)},_requestResizeNotifications:function(){if(this.isAttached)if("loading"===document.readyState){var e=this._requestResizeNotifications.bind(this);document.addEventListener("readystatechange",function t(){document.removeEventListener("readystatechange",t),e()})}else this._findParent(),this._parentResizable?this._parentResizable._interestedResizables.forEach(function(e){e!==this&&e._findParent()},this):(r.forEach(function(e){e!==this&&e._findParent()},this),window.addEventListener("resize",this._boundNotifyResize),this.notifyResize())},_findParent:function(){this.assignParentResizable(null),this.fire("iron-request-resize-notifications",null,{node:this,bubbles:!0,cancelable:!0}),this._parentResizable?r.delete(this):r.add(this)}}},function(e,t,n){"use strict";n.d(t,"a",function(){return i});n(3);var i={properties:{name:{type:String},value:{notify:!0,type:String},required:{type:Boolean,value:!1}},attached:function(){},detached:function(){}}},function(e,t,n){"use strict";n.d(t,"a",function(){return a});n(3);var i=n(7),o=Element.prototype,r=o.matches||o.matchesSelector||o.mozMatchesSelector||o.msMatchesSelector||o.oMatchesSelector||o.webkitMatchesSelector,a={getTabbableNodes:function(e){var t=[];return this._collectTabbableNodes(e,t)?this._sortByTabIndex(t):t},isFocusable:function(e){return r.call(e,"input, select, textarea, button, object")?r.call(e,":not([disabled])"):r.call(e,"a[href], area[href], iframe, [tabindex], [contentEditable]")},isTabbable:function(e){return this.isFocusable(e)&&r.call(e,':not([tabindex="-1"])')&&this._isVisible(e)},_normalizedTabIndex:function(e){if(this.isFocusable(e)){var t=e.getAttribute("tabindex")||0;return Number(t)}return-1},_collectTabbableNodes:function(e,t){if(e.nodeType!==Node.ELEMENT_NODE||!this._isVisible(e))return!1;var n,o=e,r=this._normalizedTabIndex(o),a=r>0;r>=0&&t.push(o),n="content"===o.localName||"slot"===o.localName?Object(i.a)(o).getDistributedNodes():Object(i.a)(o.root||o).children;for(var s=0;s0&&t.length>0;)this._hasLowerTabOrder(e[0],t[0])?n.push(t.shift()):n.push(e.shift());return n.concat(e,t)},_hasLowerTabOrder:function(e,t){var n=Math.max(e.tabIndex,0),i=Math.max(t.tabIndex,0);return 0===n||0===i?i>n:n>i}}},,,,,function(e,t,n){"use strict";n(3);var i=n(7),o={properties:{sizingTarget:{type:Object,value:function(){return this}},fitInto:{type:Object,value:window},noOverlap:{type:Boolean},positionTarget:{type:Element},horizontalAlign:{type:String},verticalAlign:{type:String},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},autoFitOnAttach:{type:Boolean,value:!1},_fitInfo:{type:Object}},get _fitWidth(){return this.fitInto===window?this.fitInto.innerWidth:this.fitInto.getBoundingClientRect().width},get _fitHeight(){return this.fitInto===window?this.fitInto.innerHeight:this.fitInto.getBoundingClientRect().height},get _fitLeft(){return this.fitInto===window?0:this.fitInto.getBoundingClientRect().left},get _fitTop(){return this.fitInto===window?0:this.fitInto.getBoundingClientRect().top},get _defaultPositionTarget(){var e=Object(i.a)(this).parentNode;return e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&(e=e.host),e},get _localeHorizontalAlign(){if(this._isRTL){if("right"===this.horizontalAlign)return"left";if("left"===this.horizontalAlign)return"right"}return this.horizontalAlign},get __shouldPosition(){return(this.horizontalAlign||this.verticalAlign)&&this.positionTarget},attached:function(){void 0===this._isRTL&&(this._isRTL="rtl"==window.getComputedStyle(this).direction),this.positionTarget=this.positionTarget||this._defaultPositionTarget,this.autoFitOnAttach&&("none"===window.getComputedStyle(this).display?setTimeout(function(){this.fit()}.bind(this)):(window.ShadyDOM&&ShadyDOM.flush(),this.fit()))},detached:function(){this.__deferredFit&&(clearTimeout(this.__deferredFit),this.__deferredFit=null)},fit:function(){this.position(),this.constrain(),this.center()},_discoverInfo:function(){if(!this._fitInfo){var e=window.getComputedStyle(this),t=window.getComputedStyle(this.sizingTarget);this._fitInfo={inlineStyle:{top:this.style.top||"",left:this.style.left||"",position:this.style.position||""},sizerInlineStyle:{maxWidth:this.sizingTarget.style.maxWidth||"",maxHeight:this.sizingTarget.style.maxHeight||"",boxSizing:this.sizingTarget.style.boxSizing||""},positionedBy:{vertically:"auto"!==e.top?"top":"auto"!==e.bottom?"bottom":null,horizontally:"auto"!==e.left?"left":"auto"!==e.right?"right":null},sizedBy:{height:"none"!==t.maxHeight,width:"none"!==t.maxWidth,minWidth:parseInt(t.minWidth,10)||0,minHeight:parseInt(t.minHeight,10)||0},margin:{top:parseInt(e.marginTop,10)||0,right:parseInt(e.marginRight,10)||0,bottom:parseInt(e.marginBottom,10)||0,left:parseInt(e.marginLeft,10)||0}}}},resetFit:function(){var e=this._fitInfo||{};for(var t in e.sizerInlineStyle)this.sizingTarget.style[t]=e.sizerInlineStyle[t];for(var t in e.inlineStyle)this.style[t]=e.inlineStyle[t];this._fitInfo=null},refit:function(){var e=this.sizingTarget.scrollLeft,t=this.sizingTarget.scrollTop;this.resetFit(),this.fit(),this.sizingTarget.scrollLeft=e,this.sizingTarget.scrollTop=t},position:function(){if(this.__shouldPosition){this._discoverInfo(),this.style.position="fixed",this.sizingTarget.style.boxSizing="border-box",this.style.left="0px",this.style.top="0px";var e=this.getBoundingClientRect(),t=this.__getNormalizedRect(this.positionTarget),n=this.__getNormalizedRect(this.fitInto),i=this._fitInfo.margin,o={width:e.width+i.left+i.right,height:e.height+i.top+i.bottom},r=this.__getPosition(this._localeHorizontalAlign,this.verticalAlign,o,e,t,n),a=r.left+i.left,s=r.top+i.top,l=Math.min(n.right-i.right,a+e.width),c=Math.min(n.bottom-i.bottom,s+e.height);a=Math.max(n.left+i.left,Math.min(a,l-this._fitInfo.sizedBy.minWidth)),s=Math.max(n.top+i.top,Math.min(s,c-this._fitInfo.sizedBy.minHeight)),this.sizingTarget.style.maxWidth=Math.max(l-a,this._fitInfo.sizedBy.minWidth)+"px",this.sizingTarget.style.maxHeight=Math.max(c-s,this._fitInfo.sizedBy.minHeight)+"px",this.style.left=a-e.left+"px",this.style.top=s-e.top+"px"}},constrain:function(){if(!this.__shouldPosition){this._discoverInfo();var e=this._fitInfo;e.positionedBy.vertically||(this.style.position="fixed",this.style.top="0px"),e.positionedBy.horizontally||(this.style.position="fixed",this.style.left="0px"),this.sizingTarget.style.boxSizing="border-box";var t=this.getBoundingClientRect();e.sizedBy.height||this.__sizeDimension(t,e.positionedBy.vertically,"top","bottom","Height"),e.sizedBy.width||this.__sizeDimension(t,e.positionedBy.horizontally,"left","right","Width")}},_sizeDimension:function(e,t,n,i,o){this.__sizeDimension(e,t,n,i,o)},__sizeDimension:function(e,t,n,i,o){var r=this._fitInfo,a=this.__getNormalizedRect(this.fitInto),s="Width"===o?a.width:a.height,l=t===i,c=l?s-e[i]:e[n],d=r.margin[l?n:i],u="offset"+o,p=this[u]-this.sizingTarget[u];this.sizingTarget.style["max"+o]=s-d-c-p+"px"},center:function(){if(!this.__shouldPosition){this._discoverInfo();var e=this._fitInfo.positionedBy;if(!e.vertically||!e.horizontally){this.style.position="fixed",e.vertically||(this.style.top="0px"),e.horizontally||(this.style.left="0px");var t=this.getBoundingClientRect(),n=this.__getNormalizedRect(this.fitInto);if(!e.vertically){var i=n.top-t.top+(n.height-t.height)/2;this.style.top=i+"px"}if(!e.horizontally){var o=n.left-t.left+(n.width-t.width)/2;this.style.left=o+"px"}}}},__getNormalizedRect:function(e){return e===document.documentElement||e===window?{top:0,left:0,width:window.innerWidth,height:window.innerHeight,right:window.innerWidth,bottom:window.innerHeight}:e.getBoundingClientRect()},__getOffscreenArea:function(e,t,n){var i=Math.min(0,e.top)+Math.min(0,n.bottom-(e.top+t.height)),o=Math.min(0,e.left)+Math.min(0,n.right-(e.left+t.width));return Math.abs(i)*t.width+Math.abs(o)*t.height},__getPosition:function(e,t,n,i,o,r){var a,s=[{verticalAlign:"top",horizontalAlign:"left",top:o.top+this.verticalOffset,left:o.left+this.horizontalOffset},{verticalAlign:"top",horizontalAlign:"right",top:o.top+this.verticalOffset,left:o.right-n.width-this.horizontalOffset},{verticalAlign:"bottom",horizontalAlign:"left",top:o.bottom-n.height-this.verticalOffset,left:o.left+this.horizontalOffset},{verticalAlign:"bottom",horizontalAlign:"right",top:o.bottom-n.height-this.verticalOffset,left:o.right-n.width-this.horizontalOffset}];if(this.noOverlap){for(var l=0,c=s.length;l\n :host {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: var(--iron-overlay-backdrop-background-color, #000);\n opacity: 0;\n transition: opacity 0.2s;\n pointer-events: none;\n @apply --iron-overlay-backdrop;\n }\n\n :host(.opened) {\n opacity: var(--iron-overlay-backdrop-opacity, 0.6);\n pointer-events: auto;\n @apply --iron-overlay-backdrop-opened;\n }\n \n\n \n"]);return d=function(){return e},e}Object(l.a)({_template:Object(c.a)(d()),is:"iron-overlay-backdrop",properties:{opened:{reflectToAttribute:!0,type:Boolean,value:!1,observer:"_openedChanged"}},listeners:{transitionend:"_onTransitionend"},created:function(){this.__openedRaf=null},attached:function(){this.opened&&this._openedChanged(this.opened)},prepare:function(){this.opened&&!this.parentNode&&Object(i.a)(document.body).appendChild(this)},open:function(){this.opened=!0},close:function(){this.opened=!1},complete:function(){this.opened||this.parentNode!==document.body||Object(i.a)(this.parentNode).removeChild(this)},_onTransitionend:function(e){e&&e.target===this&&this.complete()},_openedChanged:function(e){if(e)this.prepare();else{var t=window.getComputedStyle(this);"0s"!==t.transitionDuration&&0!=t.opacity||this.complete()}this.isAttached&&(this.__openedRaf&&(window.cancelAnimationFrame(this.__openedRaf),this.__openedRaf=null),this.scrollTop=this.scrollTop,this.__openedRaf=window.requestAnimationFrame(function(){this.__openedRaf=null,this.toggleClass("opened",this.opened)}.bind(this)))}});var u=n(24),p=n(48),h=function(){this._overlays=[],this._minimumZ=101,this._backdropElement=null,p.a(document.documentElement,"tap",function(){}),document.addEventListener("tap",this._onCaptureClick.bind(this),!0),document.addEventListener("focus",this._onCaptureFocus.bind(this),!0),document.addEventListener("keydown",this._onCaptureKeyDown.bind(this),!0)};h.prototype={constructor:h,get backdropElement(){return this._backdropElement||(this._backdropElement=document.createElement("iron-overlay-backdrop")),this._backdropElement},get deepActiveElement(){var e=document.activeElement;for(e&&e instanceof Element!=!1||(e=document.body);e.root&&Object(i.a)(e.root).activeElement;)e=Object(i.a)(e.root).activeElement;return e},_bringOverlayAtIndexToFront:function(e){var t=this._overlays[e];if(t){var n=this._overlays.length-1,i=this._overlays[n];if(i&&this._shouldBeBehindOverlay(t,i)&&n--,!(e>=n)){var o=Math.max(this.currentOverlayZ(),this._minimumZ);for(this._getZ(t)<=o&&this._applyOverlayZ(t,o);e=0)return this._bringOverlayAtIndexToFront(t),void this.trackBackdrop();var n=this._overlays.length,i=this._overlays[n-1],o=Math.max(this._getZ(i),this._minimumZ),r=this._getZ(e);if(i&&this._shouldBeBehindOverlay(e,i)){this._applyOverlayZ(i,o),n--;var a=this._overlays[n-1];o=Math.max(this._getZ(a),this._minimumZ)}r<=o&&this._applyOverlayZ(e,o),this._overlays.splice(n,0,e),this.trackBackdrop()},removeOverlay:function(e){var t=this._overlays.indexOf(e);-1!==t&&(this._overlays.splice(t,1),this.trackBackdrop())},currentOverlay:function(){var e=this._overlays.length-1;return this._overlays[e]},currentOverlayZ:function(){return this._getZ(this.currentOverlay())},ensureMinimumZ:function(e){this._minimumZ=Math.max(this._minimumZ,e)},focusOverlay:function(){var e=this.currentOverlay();e&&e._applyFocus()},trackBackdrop:function(){var e=this._overlayWithBackdrop();(e||this._backdropElement)&&(this.backdropElement.style.zIndex=this._getZ(e)-1,this.backdropElement.opened=!!e,this.backdropElement.prepare())},getBackdrops:function(){for(var e=[],t=0;t=0;e--)if(this._overlays[e].withBackdrop)return this._overlays[e]},_getZ:function(e){var t=this._minimumZ;if(e){var n=Number(e.style.zIndex||window.getComputedStyle(e).zIndex);n==n&&(t=n)}return t},_setZ:function(e,t){e.style.zIndex=t},_applyOverlayZ:function(e,t){this._setZ(e,t+2)},_overlayInPath:function(e){e=e||[];for(var t=0;t=0||(0===k.length&&function(){f=f||function(e){e.cancelable&&function(e){var t=Object(i.a)(e).rootTarget;"touchmove"!==e.type&&y!==t&&(y=t,g=function(e){for(var t=[],n=e.indexOf(b),i=0;i<=n;i++)if(e[i].nodeType===Node.ELEMENT_NODE){var o=e[i],r=o.style;"scroll"!==r.overflow&&"auto"!==r.overflow&&(r=window.getComputedStyle(o)),"scroll"!==r.overflow&&"auto"!==r.overflow||t.push(o)}return t}(Object(i.a)(e).path));if(!g.length)return!0;if("touchstart"===e.type)return!1;var n=function(e){var t={deltaX:e.deltaX,deltaY:e.deltaY};if("deltaX"in e);else if("wheelDeltaX"in e&&"wheelDeltaY"in e)t.deltaX=-e.wheelDeltaX,t.deltaY=-e.wheelDeltaY;else if("wheelDelta"in e)t.deltaX=0,t.deltaY=-e.wheelDelta;else if("axis"in e)t.deltaX=1===e.axis?e.detail:0,t.deltaY=2===e.axis?e.detail:0;else if(e.targetTouches){var n=e.targetTouches[0];t.deltaX=m.pageX-n.pageX,t.deltaY=m.pageY-n.pageY}return t}(e);return!function(e,t,n){if(!t&&!n)return;for(var i=Math.abs(n)>=Math.abs(t),o=0;o0:r.scrollTop0:r.scrollLeft=0))switch(this.scrollAction){case"lock":this.__restoreScrollPosition();break;case"refit":this.__deraf("refit",this.refit);break;case"cancel":this.cancel(e)}},__saveScrollPosition:function(){document.scrollingElement?(this.__scrollTop=document.scrollingElement.scrollTop,this.__scrollLeft=document.scrollingElement.scrollLeft):(this.__scrollTop=Math.max(document.documentElement.scrollTop,document.body.scrollTop),this.__scrollLeft=Math.max(document.documentElement.scrollLeft,document.body.scrollLeft))},__restoreScrollPosition:function(){document.scrollingElement?(document.scrollingElement.scrollTop=this.__scrollTop,document.scrollingElement.scrollLeft=this.__scrollLeft):(document.documentElement.scrollTop=document.body.scrollTop=this.__scrollTop,document.documentElement.scrollLeft=document.body.scrollLeft=this.__scrollLeft)}},C=[o,r.a,S]},,,function(e,t,n){"use strict";n(3);var i=n(24),o=n(81),r={properties:{multi:{type:Boolean,value:!1,observer:"multiChanged"},selectedValues:{type:Array,notify:!0,value:function(){return[]}},selectedItems:{type:Array,readOnly:!0,notify:!0,value:function(){return[]}}},observers:["_updateSelected(selectedValues.splices)"],select:function(e){this.multi?this._toggleSelected(e):this.selected=e},multiChanged:function(e){this._selection.multi=e,this._updateSelected()},get _shouldUpdateSelection(){return null!=this.selected||null!=this.selectedValues&&this.selectedValues.length},_updateAttrForSelected:function(){this.multi?this.selectedItems&&this.selectedItems.length>0&&(this.selectedValues=this.selectedItems.map(function(e){return this._indexToValue(this.indexOf(e))},this).filter(function(e){return null!=e},this)):o.a._updateAttrForSelected.apply(this)},_updateSelected:function(){this.multi?this._selectMulti(this.selectedValues):this._selectSelected(this.selected)},_selectMulti:function(e){e=e||[];var t=(this._valuesToItems(e)||[]).filter(function(e){return null!=e});this._selection.clear(t);for(var n=0;n=0}},{key:"setItemSelected",value:function(e,t){if(null!=e&&t!==this.isSelected(e)){if(t)this.selection.push(e);else{var n=this.selection.indexOf(e);n>=0&&this.selection.splice(n,1)}this.selectCallback&&this.selectCallback(e,t)}}},{key:"select",value:function(e){this.multi?this.toggle(e):this.get()!==e&&(this.setItemSelected(this.get(),!1),this.setItemSelected(e,!0))}},{key:"toggle",value:function(e){this.setItemSelected(e,!this.isSelected(e))}}])&&r(t.prototype,n),i&&r(t,i),e}();n.d(t,"a",function(){return s});var s={properties:{attrForSelected:{type:String,value:null},selected:{type:String,notify:!0},selectedItem:{type:Object,readOnly:!0,notify:!0},activateEvent:{type:String,value:"tap",observer:"_activateEventChanged"},selectable:String,selectedClass:{type:String,value:"iron-selected"},selectedAttribute:{type:String,value:null},fallbackSelection:{type:String,value:null},items:{type:Array,readOnly:!0,notify:!0,value:function(){return[]}},_excludedLocalNames:{type:Object,value:function(){return{template:1,"dom-bind":1,"dom-if":1,"dom-repeat":1}}}},observers:["_updateAttrForSelected(attrForSelected)","_updateSelected(selected)","_checkFallback(fallbackSelection)"],created:function(){this._bindFilterItem=this._filterItem.bind(this),this._selection=new a(this._applySelection.bind(this))},attached:function(){this._observer=this._observeItems(this),this._addListener(this.activateEvent)},detached:function(){this._observer&&Object(i.a)(this).unobserveNodes(this._observer),this._removeListener(this.activateEvent)},indexOf:function(e){return this.items?this.items.indexOf(e):-1},select:function(e){this.selected=e},selectPrevious:function(){var e=this.items.length,t=e-1;void 0!==this.selected&&(t=(Number(this._valueToIndex(this.selected))-1+e)%e),this.selected=this._indexToValue(t)},selectNext:function(){var e=0;void 0!==this.selected&&(e=(Number(this._valueToIndex(this.selected))+1)%this.items.length),this.selected=this._indexToValue(e)},selectIndex:function(e){this.select(this._indexToValue(e))},forceSynchronousItemUpdate:function(){this._observer&&"function"==typeof this._observer.flush?this._observer.flush():this._updateItems()},get _shouldUpdateSelection(){return null!=this.selected},_checkFallback:function(){this._updateSelected()},_addListener:function(e){this.listen(this,e,"_activateHandler")},_removeListener:function(e){this.unlisten(this,e,"_activateHandler")},_activateEventChanged:function(e,t){this._removeListener(t),this._addListener(e)},_updateItems:function(){var e=Object(i.a)(this).queryDistributedElements(this.selectable||"*");e=Array.prototype.filter.call(e,this._bindFilterItem),this._setItems(e)},_updateAttrForSelected:function(){this.selectedItem&&(this.selected=this._valueForItem(this.selectedItem))},_updateSelected:function(){this._selectSelected(this.selected)},_selectSelected:function(e){if(this.items){var t=this._valueToItem(this.selected);t?this._selection.select(t):this._selection.clear(),this.fallbackSelection&&this.items.length&&void 0===this._selection.get()&&(this.selected=this.fallbackSelection)}},_filterItem:function(e){return!this._excludedLocalNames[e.localName]},_valueToItem:function(e){return null==e?null:this.items[this._valueToIndex(e)]},_valueToIndex:function(e){if(!this.attrForSelected)return Number(e);for(var t,n=0;t=this.items[n];n++)if(this._valueForItem(t)==e)return n},_indexToValue:function(e){if(!this.attrForSelected)return e;var t=this.items[e];return t?this._valueForItem(t):void 0},_valueForItem:function(e){if(!e)return null;if(!this.attrForSelected){var t=this.indexOf(e);return-1===t?null:t}var n=e[Object(o.b)(this.attrForSelected)];return null!=n?n:e.getAttribute(this.attrForSelected)},_applySelection:function(e,t){this.selectedClass&&this.toggleClass(this.selectedClass,t,e),this.selectedAttribute&&this.toggleAttribute(this.selectedAttribute,t,e),this._selectionChange(),this.fire("iron-"+(t?"select":"deselect"),{item:e})},_selectionChange:function(){this._setSelectedItem(this._selection.get())},_observeItems:function(e){return Object(i.a)(e).observeNodes(function(e){this._updateItems(),this._updateSelected(),this.fire("iron-items-changed",e,{bubbles:!1,cancelable:!1})})},_activateHandler:function(e){for(var t=e.target,n=this.items;t&&t!=this;){var i=n.indexOf(t);if(i>=0){var o=this._indexToValue(i);return void this._itemActivate(o,t)}t=t.parentNode}},_itemActivate:function(e,t){this.fire("iron-activate",{selected:e,item:t},{cancelable:!0}).defaultPrevented||this.select(e)}}},function(e,t,n){"use strict";n(3);var i={properties:{animationConfig:{type:Object},entryAnimation:{observer:"_entryAnimationChanged",type:String},exitAnimation:{observer:"_exitAnimationChanged",type:String}},_entryAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.animationConfig.entry=[{name:this.entryAnimation,node:this}]},_exitAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.animationConfig.exit=[{name:this.exitAnimation,node:this}]},_copyProperties:function(e,t){for(var n in t)e[n]=t[n]},_cloneConfig:function(e){var t={isClone:!0};return this._copyProperties(t,e),t},_getAnimationConfigRecursive:function(e,t,n){var i;if(this.animationConfig)if(this.animationConfig.value&&"function"==typeof this.animationConfig.value)this._warn(this._logf("playAnimation","Please put 'animationConfig' inside of your components 'properties' object instead of outside of it."));else if(i=e?this.animationConfig[e]:this.animationConfig,Array.isArray(i)||(i=[i]),i)for(var o,r=0;o=i[r];r++)if(o.animatable)o.animatable._getAnimationConfigRecursive(o.type||e,t,n);else if(o.id){var a=t[o.id];a?(a.isClone||(t[o.id]=this._cloneConfig(a),a=t[o.id]),this._copyProperties(a,o)):t[o.id]=o}else n.push(o)},getAnimationConfig:function(e){var t={},n=[];for(var i in this._getAnimationConfigRecursive(e,t,n),t)n.push(t[i]);return n}};n.d(t,"a",function(){return o});var o=[i,{_configureAnimations:function(e){var t=[],n=[];if(e.length>0)for(var i,o=0;i=e[o];o++){var r=document.createElement(i.name);if(r.isNeonAnimation){var a;r.configure||(r.configure=function(e){return null}),a=r.configure(i),n.push({result:a,config:i,neonAnimation:r})}else console.warn(this.is+":",i.name,"not found!")}for(var s=0;s\n :host {\n display: block;\n position: absolute;\n border-radius: inherit;\n overflow: hidden;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n\n /* See PolymerElements/paper-behaviors/issues/34. On non-Chrome browsers,\n * creating a node (with a position:absolute) in the middle of an event\n * handler "interrupts" that event handler (which happens when the\n * ripple is created on demand) */\n pointer-events: none;\n }\n\n :host([animating]) {\n /* This resolves a rendering issue in Chrome (as of 40) where the\n ripple is not properly clipped by its parent (which may have\n rounded corners). See: http://jsbin.com/temexa/4\n\n Note: We only apply this style conditionally. Otherwise, the browser\n will create a new compositing layer for every ripple element on the\n page, and that would be bad. */\n -webkit-transform: translate(0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n #background,\n #waves,\n .wave-container,\n .wave {\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n #background,\n .wave {\n opacity: 0;\n }\n\n #waves,\n .wave {\n overflow: hidden;\n }\n\n .wave-container,\n .wave {\n border-radius: 50%;\n }\n\n :host(.circle) #background,\n :host(.circle) #waves {\n border-radius: 50%;\n }\n\n :host(.circle) .wave-container {\n overflow: hidden;\n }\n \n\n
    \n
    \n']);return s=function(){return e},e}var l={distance:function(e,t,n,i){var o=e-n,r=t-i;return Math.sqrt(o*o+r*r)},now:window.performance&&window.performance.now?window.performance.now.bind(window.performance):Date.now};function c(e){this.element=e,this.width=this.boundingRect.width,this.height=this.boundingRect.height,this.size=Math.max(this.width,this.height)}function d(e){this.element=e,this.color=window.getComputedStyle(e).color,this.wave=document.createElement("div"),this.waveContainer=document.createElement("div"),this.wave.style.backgroundColor=this.color,this.wave.classList.add("wave"),this.waveContainer.classList.add("wave-container"),Object(r.a)(this.waveContainer).appendChild(this.wave),this.resetInteractionState()}c.prototype={get boundingRect(){return this.element.getBoundingClientRect()},furthestCornerDistanceFrom:function(e,t){var n=l.distance(e,t,0,0),i=l.distance(e,t,this.width,0),o=l.distance(e,t,0,this.height),r=l.distance(e,t,this.width,this.height);return Math.max(n,i,o,r)}},d.MAX_RADIUS=300,d.prototype={get recenters(){return this.element.recenters},get center(){return this.element.center},get mouseDownElapsed(){var e;return this.mouseDownStart?(e=l.now()-this.mouseDownStart,this.mouseUpStart&&(e-=this.mouseUpElapsed),e):0},get mouseUpElapsed(){return this.mouseUpStart?l.now()-this.mouseUpStart:0},get mouseDownElapsedSeconds(){return this.mouseDownElapsed/1e3},get mouseUpElapsedSeconds(){return this.mouseUpElapsed/1e3},get mouseInteractionSeconds(){return this.mouseDownElapsedSeconds+this.mouseUpElapsedSeconds},get initialOpacity(){return this.element.initialOpacity},get opacityDecayVelocity(){return this.element.opacityDecayVelocity},get radius(){var e=this.containerMetrics.width*this.containerMetrics.width,t=this.containerMetrics.height*this.containerMetrics.height,n=1.1*Math.min(Math.sqrt(e+t),d.MAX_RADIUS)+5,i=1.1-n/d.MAX_RADIUS*.2,o=this.mouseInteractionSeconds/i,r=n*(1-Math.pow(80,-o));return Math.abs(r)},get opacity(){return this.mouseUpStart?Math.max(0,this.initialOpacity-this.mouseUpElapsedSeconds*this.opacityDecayVelocity):this.initialOpacity},get outerOpacity(){var e=.3*this.mouseUpElapsedSeconds,t=this.opacity;return Math.max(0,Math.min(e,t))},get isOpacityFullyDecayed(){return this.opacity<.01&&this.radius>=Math.min(this.maxRadius,d.MAX_RADIUS)},get isRestingAtMaxRadius(){return this.opacity>=this.initialOpacity&&this.radius>=Math.min(this.maxRadius,d.MAX_RADIUS)},get isAnimationComplete(){return this.mouseUpStart?this.isOpacityFullyDecayed:this.isRestingAtMaxRadius},get translationFraction(){return Math.min(1,this.radius/this.containerMetrics.size*2/Math.sqrt(2))},get xNow(){return this.xEnd?this.xStart+this.translationFraction*(this.xEnd-this.xStart):this.xStart},get yNow(){return this.yEnd?this.yStart+this.translationFraction*(this.yEnd-this.yStart):this.yStart},get isMouseDown(){return this.mouseDownStart&&!this.mouseUpStart},resetInteractionState:function(){this.maxRadius=0,this.mouseDownStart=0,this.mouseUpStart=0,this.xStart=0,this.yStart=0,this.xEnd=0,this.yEnd=0,this.slideDistance=0,this.containerMetrics=new c(this.element)},draw:function(){var e,t,n;this.wave.style.opacity=this.opacity,e=this.radius/(this.containerMetrics.size/2),t=this.xNow-this.containerMetrics.width/2,n=this.yNow-this.containerMetrics.height/2,this.waveContainer.style.webkitTransform="translate("+t+"px, "+n+"px)",this.waveContainer.style.transform="translate3d("+t+"px, "+n+"px, 0)",this.wave.style.webkitTransform="scale("+e+","+e+")",this.wave.style.transform="scale3d("+e+","+e+",1)"},downAction:function(e){var t=this.containerMetrics.width/2,n=this.containerMetrics.height/2;this.resetInteractionState(),this.mouseDownStart=l.now(),this.center?(this.xStart=t,this.yStart=n,this.slideDistance=l.distance(this.xStart,this.yStart,this.xEnd,this.yEnd)):(this.xStart=e?e.detail.x-this.containerMetrics.boundingRect.left:this.containerMetrics.width/2,this.yStart=e?e.detail.y-this.containerMetrics.boundingRect.top:this.containerMetrics.height/2),this.recenters&&(this.xEnd=t,this.yEnd=n,this.slideDistance=l.distance(this.xStart,this.yStart,this.xEnd,this.yEnd)),this.maxRadius=this.containerMetrics.furthestCornerDistanceFrom(this.xStart,this.yStart),this.waveContainer.style.top=(this.containerMetrics.height-this.containerMetrics.size)/2+"px",this.waveContainer.style.left=(this.containerMetrics.width-this.containerMetrics.size)/2+"px",this.waveContainer.style.width=this.containerMetrics.size+"px",this.waveContainer.style.height=this.containerMetrics.size+"px"},upAction:function(e){this.isMouseDown&&(this.mouseUpStart=l.now())},remove:function(){Object(r.a)(this.waveContainer.parentNode).removeChild(this.waveContainer)}},Object(o.a)({_template:Object(a.a)(s()),is:"paper-ripple",behaviors:[i.a],properties:{initialOpacity:{type:Number,value:.25},opacityDecayVelocity:{type:Number,value:.8},recenters:{type:Boolean,value:!1},center:{type:Boolean,value:!1},ripples:{type:Array,value:function(){return[]}},animating:{type:Boolean,readOnly:!0,reflectToAttribute:!0,value:!1},holdDown:{type:Boolean,value:!1,observer:"_holdDownChanged"},noink:{type:Boolean,value:!1},_animating:{type:Boolean},_boundAnimate:{type:Function,value:function(){return this.animate.bind(this)}}},get target(){return this.keyEventTarget},keyBindings:{"enter:keydown":"_onEnterKeydown","space:keydown":"_onSpaceKeydown","space:keyup":"_onSpaceKeyup"},attached:function(){11==this.parentNode.nodeType?this.keyEventTarget=Object(r.a)(this).getOwnerRoot().host:this.keyEventTarget=this.parentNode;var e=this.keyEventTarget;this.listen(e,"up","uiUpAction"),this.listen(e,"down","uiDownAction")},detached:function(){this.unlisten(this.keyEventTarget,"up","uiUpAction"),this.unlisten(this.keyEventTarget,"down","uiDownAction"),this.keyEventTarget=null},get shouldKeepAnimating(){for(var e=0;e0||(this.addRipple().downAction(e),this._animating||(this._animating=!0,this.animate()))},uiUpAction:function(e){this.noink||this.upAction(e)},upAction:function(e){this.holdDown||(this.ripples.forEach(function(t){t.upAction(e)}),this._animating=!0,this.animate())},onAnimationComplete:function(){this._animating=!1,this.$.background.style.backgroundColor=null,this.fire("transitionend")},addRipple:function(){var e=new d(this);return Object(r.a)(this.$.waves).appendChild(e.waveContainer),this.$.background.style.backgroundColor=e.color,this.ripples.push(e),this._setAnimating(!0),e},removeRipple:function(e){var t=this.ripples.indexOf(e);t<0||(this.ripples.splice(t,1),e.remove(),this.ripples.length||this._setAnimating(!1))},animate:function(){if(this._animating){var e,t;for(e=0;e\n \n",document.head.appendChild(i.content)},function(e,t,n){"use strict";n.d(t,"a",function(){return i});n(3);var i={properties:{active:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"__activeChanged"},alt:{type:String,value:"loading",observer:"__altChanged"},__coolingDown:{type:Boolean,value:!1}},__computeContainerClasses:function(e,t){return[e||t?"active":"",t?"cooldown":""].join(" ")},__activeChanged:function(e,t){this.__setAriaHidden(!e),this.__coolingDown=!e&&t},__altChanged:function(e){"loading"===e?this.alt=this.getAttribute("aria-label")||e:(this.__setAriaHidden(""===e),this.setAttribute("aria-label",e))},__setAriaHidden:function(e){e?this.setAttribute("aria-hidden","true"):this.removeAttribute("aria-hidden")},__reset:function(){this.active=!1,this.__coolingDown=!1}}},function(e,t,n){"use strict";n(3),n(10);var i=n(6),o=n(7),r=n(5),a=n(97);function s(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n\n
    \n \n\n
    \n \n
    \n
    \n'],['\n \n\n
    \n \n\n
    \n \n
    \n
    \n']);return s=function(){return e},e}Object(i.a)({_template:Object(r.a)(s()),is:"app-header-layout",behaviors:[a.a],properties:{hasScrollingRegion:{type:Boolean,value:!1,reflectToAttribute:!0}},observers:["resetLayout(isAttached, hasScrollingRegion)"],get header(){return Object(o.a)(this.$.headerSlot).getDistributedNodes()[0]},_updateLayoutStates:function(){var e=this.header;if(this.isAttached&&e){this.$.wrapper.classList.remove("initializing"),e.scrollTarget=this.hasScrollingRegion?this.$.contentContainer:this.ownerDocument.documentElement;var t=e.offsetHeight;this.hasScrollingRegion?(e.style.left="",e.style.right=""):requestAnimationFrame(function(){var t=this.getBoundingClientRect(),n=document.documentElement.clientWidth-t.right;e.style.left=t.left+"px",e.style.right=n+"px"}.bind(this));var n=this.$.contentContainer.style;e.fixed&&!e.condenses&&this.hasScrollingRegion?(n.marginTop=t+"px",n.paddingTop=""):(n.paddingTop=t+"px",n.marginTop="")}}})},function(e,t,n){"use strict";n.d(t,"a",function(){return l});n(3);var i=n(69),o=n(7),r=n(26),a=n(28),s=n(30),l=[i.a,{listeners:{"app-reset-layout":"_appResetLayoutHandler","iron-resize":"resetLayout"},attached:function(){this.fire("app-reset-layout")},_appResetLayoutHandler:function(e){Object(o.a)(e).path[0]!==this&&(this.resetLayout(),e.stopPropagation())},_updateLayoutStates:function(){console.error("unimplemented")},resetLayout:function(){var e=this._updateLayoutStates.bind(this);this._layoutDebouncer=a.a.debounce(this._layoutDebouncer,r.a,e),Object(s.a)(this._layoutDebouncer),this._notifyDescendantResize()},_notifyLayoutChanged:function(){var e=this;requestAnimationFrame(function(){e.fire("app-reset-layout")})},_notifyDescendantResize:function(){this.isAttached&&this._interestedResizables.forEach(function(e){this.resizerShouldNotify(e)&&this._notifyDescendant(e)},this)}}]},function(e,t,n){"use strict";n(3),n(10);var i=n(38),o=n(23),r=n(66),a=n(6),s=n(7),l=n(5);function c(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n\n
    \n \n
    \n']);return c=function(){return e},e}Object(a.a)({_template:Object(l.a)(c()),is:"paper-tab",behaviors:[o.a,i.a,r.a],properties:{link:{type:Boolean,value:!1,reflectToAttribute:!0}},hostAttributes:{role:"tab"},listeners:{down:"_updateNoink",tap:"_onTap"},attached:function(){this._updateNoink()},get _parentNoink(){var e=Object(s.a)(this).parentNode;return!!e&&!!e.noink},_updateNoink:function(){this.noink=!!this.noink||!!this._parentNoink},_onTap:function(e){if(this.link){var t=this.queryEffectiveChildren("a");if(!t)return;if(e.target===t)return;t.click()}}})},function(e,t,n){"use strict";n.d(t,"b",function(){return o}),n.d(t,"a",function(){return r});n(3);var i=n(79),o={hostAttributes:{role:"menubar"},keyBindings:{left:"_onLeftKey",right:"_onRightKey"},_onUpKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},_onDownKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},get _isRTL(){return"rtl"===window.getComputedStyle(this).direction},_onLeftKey:function(e){this._isRTL?this._focusNext():this._focusPrevious(),e.detail.keyboardEvent.preventDefault()},_onRightKey:function(e){this._isRTL?this._focusPrevious():this._focusNext(),e.detail.keyboardEvent.preventDefault()},_onKeydown:function(e){this.keyboardEventMatchesKeys(e,"up down left right esc")||this._focusWithKeyboardEvent(e)}},r=[i.a,o]},function(e,t,n){"use strict";n(3),n(11),n(10);var i=n(112),o=n(6),r=n(5),a=n(62);function s(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n\n\n
    \n
    \n
    \n
    \n\n
    '],['\n\n\n
    \n
    \n
    \n
    \n\n
    ']);return s=function(){return e},e}var l=Object(r.a)(s());l.setAttribute("strip-whitespace",""),Object(o.a)({_template:l,is:"paper-radio-button",behaviors:[i.a],hostAttributes:{role:"radio","aria-checked":!1,tabindex:0},properties:{ariaActiveAttribute:{type:String,value:"aria-checked"}},ready:function(){this._rippleContainer=this.$.radioContainer},attached:function(){Object(a.a)(this,function(){if("-1px"===this.getComputedStyleValue("--calculated-paper-radio-button-ink-size").trim()){var e=parseFloat(this.getComputedStyleValue("--calculated-paper-radio-button-size").trim()),t=Math.floor(3*e);t%2!=e%2&&t++,this.updateStyles({"--paper-radio-button-ink-size":t+"px"})}})}})},,,,,,,function(e,t,n){"use strict";var i;function o(e,t){if(void 0===e&&(e=window),void 0===t&&(t=!1),void 0===i||t){var n=!1;try{e.document.addEventListener("test",function(){},{get passive(){return n=!0}})}catch(o){}i=n}return!!i&&{passive:!0}}function r(e,t){return(e.matches||e.webkitMatchesSelector||e.msMatchesSelector).call(e,t)}var a,s=n(32),l=n(90),c={BG_FOCUSED:"mdc-ripple-upgraded--background-focused",FG_ACTIVATION:"mdc-ripple-upgraded--foreground-activation",FG_DEACTIVATION:"mdc-ripple-upgraded--foreground-deactivation",ROOT:"mdc-ripple-upgraded",UNBOUNDED:"mdc-ripple-upgraded--unbounded"},d={VAR_FG_SCALE:"--mdc-ripple-fg-scale",VAR_FG_SIZE:"--mdc-ripple-fg-size",VAR_FG_TRANSLATE_END:"--mdc-ripple-fg-translate-end",VAR_FG_TRANSLATE_START:"--mdc-ripple-fg-translate-start",VAR_LEFT:"--mdc-ripple-left",VAR_TOP:"--mdc-ripple-top"},u={DEACTIVATION_TIMEOUT_MS:225,FG_DEACTIVATION_MS:150,INITIAL_ORIGIN_SCALE:.6,PADDING:10,TAP_DELAY_MS:300};var p=["touchstart","pointerdown","mousedown","keydown"],h=["touchend","pointerup","mouseup","contextmenu"],f=[],b=function(e){function t(n){var i=e.call(this,s.a({},t.defaultAdapter,n))||this;return i.activationAnimationHasEnded_=!1,i.activationTimer_=0,i.fgDeactivationRemovalTimer_=0,i.fgScale_="0",i.frame_={width:0,height:0},i.initialSize_=0,i.layoutFrame_=0,i.maxRadius_=0,i.unboundedCoords_={left:0,top:0},i.activationState_=i.defaultActivationState_(),i.activationTimerCallback_=function(){i.activationAnimationHasEnded_=!0,i.runDeactivationUXLogicIfReady_()},i.activateHandler_=function(e){return i.activate_(e)},i.deactivateHandler_=function(){return i.deactivate_()},i.focusHandler_=function(){return i.handleFocus()},i.blurHandler_=function(){return i.handleBlur()},i.resizeHandler_=function(){return i.layout()},i}return s.c(t,e),Object.defineProperty(t,"cssClasses",{get:function(){return c},enumerable:!0,configurable:!0}),Object.defineProperty(t,"strings",{get:function(){return d},enumerable:!0,configurable:!0}),Object.defineProperty(t,"numbers",{get:function(){return u},enumerable:!0,configurable:!0}),Object.defineProperty(t,"defaultAdapter",{get:function(){return{addClass:function(){},browserSupportsCssVars:function(){return!0},computeBoundingRect:function(){return{top:0,right:0,bottom:0,left:0,width:0,height:0}},containsEventTarget:function(){return!0},deregisterDocumentInteractionHandler:function(){},deregisterInteractionHandler:function(){},deregisterResizeHandler:function(){},getWindowPageOffset:function(){return{x:0,y:0}},isSurfaceActive:function(){return!0},isSurfaceDisabled:function(){return!0},isUnbounded:function(){return!0},registerDocumentInteractionHandler:function(){},registerInteractionHandler:function(){},registerResizeHandler:function(){},removeClass:function(){},updateCssVariable:function(){}}},enumerable:!0,configurable:!0}),t.prototype.init=function(){var e=this,n=this.supportsPressRipple_();if(this.registerRootHandlers_(n),n){var i=t.cssClasses,o=i.ROOT,r=i.UNBOUNDED;requestAnimationFrame(function(){e.adapter_.addClass(o),e.adapter_.isUnbounded()&&(e.adapter_.addClass(r),e.layoutInternal_())})}},t.prototype.destroy=function(){var e=this;if(this.supportsPressRipple_()){this.activationTimer_&&(clearTimeout(this.activationTimer_),this.activationTimer_=0,this.adapter_.removeClass(t.cssClasses.FG_ACTIVATION)),this.fgDeactivationRemovalTimer_&&(clearTimeout(this.fgDeactivationRemovalTimer_),this.fgDeactivationRemovalTimer_=0,this.adapter_.removeClass(t.cssClasses.FG_DEACTIVATION));var n=t.cssClasses,i=n.ROOT,o=n.UNBOUNDED;requestAnimationFrame(function(){e.adapter_.removeClass(i),e.adapter_.removeClass(o),e.removeCssVars_()})}this.deregisterRootHandlers_(),this.deregisterDeactivationHandlers_()},t.prototype.activate=function(e){this.activate_(e)},t.prototype.deactivate=function(){this.deactivate_()},t.prototype.layout=function(){var e=this;this.layoutFrame_&&cancelAnimationFrame(this.layoutFrame_),this.layoutFrame_=requestAnimationFrame(function(){e.layoutInternal_(),e.layoutFrame_=0})},t.prototype.setUnbounded=function(e){var n=t.cssClasses.UNBOUNDED;e?this.adapter_.addClass(n):this.adapter_.removeClass(n)},t.prototype.handleFocus=function(){var e=this;requestAnimationFrame(function(){return e.adapter_.addClass(t.cssClasses.BG_FOCUSED)})},t.prototype.handleBlur=function(){var e=this;requestAnimationFrame(function(){return e.adapter_.removeClass(t.cssClasses.BG_FOCUSED)})},t.prototype.supportsPressRipple_=function(){return this.adapter_.browserSupportsCssVars()},t.prototype.defaultActivationState_=function(){return{activationEvent:void 0,hasDeactivationUXRun:!1,isActivated:!1,isProgrammatic:!1,wasActivatedByPointer:!1,wasElementMadeActive:!1}},t.prototype.registerRootHandlers_=function(e){var t=this;e&&(p.forEach(function(e){t.adapter_.registerInteractionHandler(e,t.activateHandler_)}),this.adapter_.isUnbounded()&&this.adapter_.registerResizeHandler(this.resizeHandler_)),this.adapter_.registerInteractionHandler("focus",this.focusHandler_),this.adapter_.registerInteractionHandler("blur",this.blurHandler_)},t.prototype.registerDeactivationHandlers_=function(e){var t=this;"keydown"===e.type?this.adapter_.registerInteractionHandler("keyup",this.deactivateHandler_):h.forEach(function(e){t.adapter_.registerDocumentInteractionHandler(e,t.deactivateHandler_)})},t.prototype.deregisterRootHandlers_=function(){var e=this;p.forEach(function(t){e.adapter_.deregisterInteractionHandler(t,e.activateHandler_)}),this.adapter_.deregisterInteractionHandler("focus",this.focusHandler_),this.adapter_.deregisterInteractionHandler("blur",this.blurHandler_),this.adapter_.isUnbounded()&&this.adapter_.deregisterResizeHandler(this.resizeHandler_)},t.prototype.deregisterDeactivationHandlers_=function(){var e=this;this.adapter_.deregisterInteractionHandler("keyup",this.deactivateHandler_),h.forEach(function(t){e.adapter_.deregisterDocumentInteractionHandler(t,e.deactivateHandler_)})},t.prototype.removeCssVars_=function(){var e=this,n=t.strings;Object.keys(n).forEach(function(t){0===t.indexOf("VAR_")&&e.adapter_.updateCssVariable(n[t],null)})},t.prototype.activate_=function(e){var t=this;if(!this.adapter_.isSurfaceDisabled()){var n=this.activationState_;if(!n.isActivated){var i=this.previousActivationEvent_;if(!(i&&void 0!==e&&i.type!==e.type))n.isActivated=!0,n.isProgrammatic=void 0===e,n.activationEvent=e,n.wasActivatedByPointer=!n.isProgrammatic&&(void 0!==e&&("mousedown"===e.type||"touchstart"===e.type||"pointerdown"===e.type)),void 0!==e&&f.length>0&&f.some(function(e){return t.adapter_.containsEventTarget(e)})?this.resetActivationState_():(void 0!==e&&(f.push(e.target),this.registerDeactivationHandlers_(e)),n.wasElementMadeActive=this.checkElementMadeActive_(e),n.wasElementMadeActive&&this.animateActivation_(),requestAnimationFrame(function(){f=[],n.wasElementMadeActive||void 0===e||" "!==e.key&&32!==e.keyCode||(n.wasElementMadeActive=t.checkElementMadeActive_(e),n.wasElementMadeActive&&t.animateActivation_()),n.wasElementMadeActive||(t.activationState_=t.defaultActivationState_())}))}}},t.prototype.checkElementMadeActive_=function(e){return void 0===e||"keydown"!==e.type||this.adapter_.isSurfaceActive()},t.prototype.animateActivation_=function(){var e=this,n=t.strings,i=n.VAR_FG_TRANSLATE_START,o=n.VAR_FG_TRANSLATE_END,r=t.cssClasses,a=r.FG_DEACTIVATION,s=r.FG_ACTIVATION,l=t.numbers.DEACTIVATION_TIMEOUT_MS;this.layoutInternal_();var c="",d="";if(!this.adapter_.isUnbounded()){var u=this.getFgTranslationCoordinates_(),p=u.startPoint,h=u.endPoint;c=p.x+"px, "+p.y+"px",d=h.x+"px, "+h.y+"px"}this.adapter_.updateCssVariable(i,c),this.adapter_.updateCssVariable(o,d),clearTimeout(this.activationTimer_),clearTimeout(this.fgDeactivationRemovalTimer_),this.rmBoundedActivationClasses_(),this.adapter_.removeClass(a),this.adapter_.computeBoundingRect(),this.adapter_.addClass(s),this.activationTimer_=setTimeout(function(){return e.activationTimerCallback_()},l)},t.prototype.getFgTranslationCoordinates_=function(){var e,t=this.activationState_,n=t.activationEvent;return{startPoint:e={x:(e=t.wasActivatedByPointer?function(e,t,n){if(!e)return{x:0,y:0};var i,o,r=t.x,a=t.y,s=r+n.left,l=a+n.top;if("touchstart"===e.type){var c=e;i=c.changedTouches[0].pageX-s,o=c.changedTouches[0].pageY-l}else{var d=e;i=d.pageX-s,o=d.pageY-l}return{x:i,y:o}}(n,this.adapter_.getWindowPageOffset(),this.adapter_.computeBoundingRect()):{x:this.frame_.width/2,y:this.frame_.height/2}).x-this.initialSize_/2,y:e.y-this.initialSize_/2},endPoint:{x:this.frame_.width/2-this.initialSize_/2,y:this.frame_.height/2-this.initialSize_/2}}},t.prototype.runDeactivationUXLogicIfReady_=function(){var e=this,n=t.cssClasses.FG_DEACTIVATION,i=this.activationState_,o=i.hasDeactivationUXRun,r=i.isActivated;(o||!r)&&this.activationAnimationHasEnded_&&(this.rmBoundedActivationClasses_(),this.adapter_.addClass(n),this.fgDeactivationRemovalTimer_=setTimeout(function(){e.adapter_.removeClass(n)},u.FG_DEACTIVATION_MS))},t.prototype.rmBoundedActivationClasses_=function(){var e=t.cssClasses.FG_ACTIVATION;this.adapter_.removeClass(e),this.activationAnimationHasEnded_=!1,this.adapter_.computeBoundingRect()},t.prototype.resetActivationState_=function(){var e=this;this.previousActivationEvent_=this.activationState_.activationEvent,this.activationState_=this.defaultActivationState_(),setTimeout(function(){return e.previousActivationEvent_=void 0},t.numbers.TAP_DELAY_MS)},t.prototype.deactivate_=function(){var e=this,t=this.activationState_;if(t.isActivated){var n=s.a({},t);t.isProgrammatic?(requestAnimationFrame(function(){return e.animateDeactivation_(n)}),this.resetActivationState_()):(this.deregisterDeactivationHandlers_(),requestAnimationFrame(function(){e.activationState_.hasDeactivationUXRun=!0,e.animateDeactivation_(n),e.resetActivationState_()}))}},t.prototype.animateDeactivation_=function(e){var t=e.wasActivatedByPointer,n=e.wasElementMadeActive;(t||n)&&this.runDeactivationUXLogicIfReady_()},t.prototype.layoutInternal_=function(){var e=this;this.frame_=this.adapter_.computeBoundingRect();var n=Math.max(this.frame_.height,this.frame_.width);this.maxRadius_=this.adapter_.isUnbounded()?n:Math.sqrt(Math.pow(e.frame_.width,2)+Math.pow(e.frame_.height,2))+t.numbers.PADDING,this.initialSize_=Math.floor(n*t.numbers.INITIAL_ORIGIN_SCALE),this.fgScale_=""+this.maxRadius_/this.initialSize_,this.updateLayoutCssVars_()},t.prototype.updateLayoutCssVars_=function(){var e=t.strings,n=e.VAR_FG_SIZE,i=e.VAR_LEFT,o=e.VAR_TOP,r=e.VAR_FG_SCALE;this.adapter_.updateCssVariable(n,this.initialSize_+"px"),this.adapter_.updateCssVariable(r,this.fgScale_),this.adapter_.isUnbounded()&&(this.unboundedCoords_={left:Math.round(this.frame_.width/2-this.initialSize_/2),top:Math.round(this.frame_.height/2-this.initialSize_/2)},this.adapter_.updateCssVariable(i,this.unboundedCoords_.left+"px"),this.adapter_.updateCssVariable(o,this.unboundedCoords_.top+"px"))},t}(l.a),v=n(13),m=n(4);function y(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(["@keyframes mdc-ripple-fg-radius-in{from{animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1)}to{transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}}@keyframes mdc-ripple-fg-opacity-in{from{animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-out{from{animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}"]);return y=function(){return e},e}var g=Object(m.c)(y());n.d(t,"a",function(){return C});var _=function(e,t){void 0===t&&(t=!1);var n=e.CSS,i=a;if("boolean"==typeof a&&!t)return a;if(!n||"function"!=typeof n.supports)return!1;var o=n.supports("--css-vars","yes"),r=n.supports("(--css-vars: yes)")&&n.supports("color","#00000000");return i=!(!o&&!r||function(e){var t=e.document,n=t.createElement("div");n.className="mdc-ripple-surface--test-edge-var-bug",t.head.appendChild(n);var i=e.getComputedStyle(n),o=null!==i&&"solid"===i.borderTopStyle;return n.parentNode&&n.parentNode.removeChild(n),o}(e)),t||(a=i),i}(window),w=navigator.userAgent.match(/Safari/),x=!1,k=function(e){w&&!x&&function(){x=!0;var e=new v.b({templateFactory:v.k});e.appendInto(document.head),e.setValue(g),e.commit()}();var t=e.surfaceNode,n=e.interactionNode||t;n.getRootNode()!==t.getRootNode()&&""===n.style.position&&(n.style.position="relative");var i=new b({browserSupportsCssVars:function(){return _},isUnbounded:function(){return void 0===e.unbounded||e.unbounded},isSurfaceActive:function(){return r(n,":active")},isSurfaceDisabled:function(){return Boolean(e.disabled)},addClass:function(e){return t.classList.add(e)},removeClass:function(e){return t.classList.remove(e)},containsEventTarget:function(e){return n.contains(e)},registerInteractionHandler:function(e,t){return n.addEventListener(e,t,o())},deregisterInteractionHandler:function(e,t){return n.removeEventListener(e,t,o())},registerDocumentInteractionHandler:function(e,t){return document.documentElement.addEventListener(e,t,o())},deregisterDocumentInteractionHandler:function(e,t){return document.documentElement.removeEventListener(e,t,o())},registerResizeHandler:function(e){return window.addEventListener("resize",e)},deregisterResizeHandler:function(e){return window.removeEventListener("resize",e)},updateCssVariable:function(e,n){return t.style.setProperty(e,n)},computeBoundingRect:function(){return t.getBoundingClientRect()},getWindowPageOffset:function(){return{x:window.pageXOffset,y:window.pageYOffset}}});return i.init(),i},S=new WeakMap,C=Object(v.f)(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(t){var n=t.committer.element,i=e.interactionNode||n,o=t.value,r=S.get(o);void 0!==r&&r!==i&&(o.destroy(),o=v.h),o===v.h?(o=k(Object.assign({},e,{surfaceNode:n})),S.set(o,i),t.setValue(o)):(void 0!==e.unbounded&&o.setUnbounded(e.unbounded),void 0!==e.disabled&&o.setUnbounded(e.disabled)),!0===e.active?o.activate():!1===e.active&&o.deactivate()}})},function(e,t,n){"use strict";n(3);var i=n(24),o=n(23),r=n(76),a=n(82),s=n(6),l=n(7),c=n(5);function d(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n\n
    \n \n
    \n']);return d=function(){return e},e}Object(s.a)({_template:Object(c.a)(d()),is:"iron-dropdown",behaviors:[o.a,i.a,r.a,a.a],properties:{horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},openAnimationConfig:{type:Object},closeAnimationConfig:{type:Object},focusTarget:{type:Object},noAnimations:{type:Boolean,value:!1},allowOutsideScroll:{type:Boolean,value:!1,observer:"_allowOutsideScrollChanged"}},listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},observers:["_updateOverlayPosition(positionTarget, verticalAlign, horizontalAlign, verticalOffset, horizontalOffset)"],get containedElement(){for(var e=Object(l.a)(this.$.content).getDistributedNodes(),t=0,n=e.length;t\n :host {\n display: inline-block;\n position: relative;\n padding: 8px;\n outline: none;\n\n @apply --paper-menu-button;\n }\n\n :host([disabled]) {\n cursor: auto;\n color: var(--disabled-text-color);\n\n @apply --paper-menu-button-disabled;\n }\n\n iron-dropdown {\n @apply --paper-menu-button-dropdown;\n }\n\n .dropdown-content {\n @apply --shadow-elevation-2dp;\n\n position: relative;\n border-radius: 2px;\n background-color: var(--paper-menu-button-dropdown-background, var(--primary-background-color));\n\n @apply --paper-menu-button-content;\n }\n\n :host([vertical-align="top"]) .dropdown-content {\n margin-bottom: 20px;\n margin-top: -10px;\n top: 10px;\n }\n\n :host([vertical-align="bottom"]) .dropdown-content {\n bottom: 10px;\n margin-bottom: -10px;\n margin-top: 20px;\n }\n\n #trigger {\n cursor: pointer;\n }\n \n\n
    \n \n
    \n\n \n \n \n']);return p=function(){return e},e}Object(s.a)({is:"paper-menu-grow-height-animation",behaviors:[u],configure:function(e){var t=e.node,n=t.getBoundingClientRect().height;return this._effect=new KeyframeEffect(t,[{height:n/2+"px"},{height:n+"px"}],this.timingFromConfig(e)),this._effect}}),Object(s.a)({is:"paper-menu-grow-width-animation",behaviors:[u],configure:function(e){var t=e.node,n=t.getBoundingClientRect().width;return this._effect=new KeyframeEffect(t,[{width:n/2+"px"},{width:n+"px"}],this.timingFromConfig(e)),this._effect}}),Object(s.a)({is:"paper-menu-shrink-width-animation",behaviors:[u],configure:function(e){var t=e.node,n=t.getBoundingClientRect().width;return this._effect=new KeyframeEffect(t,[{width:n+"px"},{width:n-n/20+"px"}],this.timingFromConfig(e)),this._effect}}),Object(s.a)({is:"paper-menu-shrink-height-animation",behaviors:[u],configure:function(e){var t=e.node,n=t.getBoundingClientRect().height;return this.setPrefixedProperty(t,"transformOrigin","0 0"),this._effect=new KeyframeEffect(t,[{height:n+"px",transform:"translateY(0)"},{height:n/2+"px",transform:"translateY(-20px)"}],this.timingFromConfig(e)),this._effect}});var h={ANIMATION_CUBIC_BEZIER:"cubic-bezier(.3,.95,.5,1)",MAX_ANIMATION_TIME_MS:400},f=Object(s.a)({_template:Object(c.a)(p()),is:"paper-menu-button",behaviors:[i.a,o.a],properties:{opened:{type:Boolean,value:!1,notify:!0,observer:"_openedChanged"},horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},noOverlap:{type:Boolean},noAnimations:{type:Boolean,value:!1},ignoreSelect:{type:Boolean,value:!1},closeOnActivate:{type:Boolean,value:!1},openAnimationConfig:{type:Object,value:function(){return[{name:"fade-in-animation",timing:{delay:100,duration:200}},{name:"paper-menu-grow-width-animation",timing:{delay:100,duration:150,easing:h.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-grow-height-animation",timing:{delay:100,duration:275,easing:h.ANIMATION_CUBIC_BEZIER}}]}},closeAnimationConfig:{type:Object,value:function(){return[{name:"fade-out-animation",timing:{duration:150}},{name:"paper-menu-shrink-width-animation",timing:{delay:100,duration:50,easing:h.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-shrink-height-animation",timing:{duration:200,easing:"ease-in"}}]}},allowOutsideScroll:{type:Boolean,value:!1},restoreFocusOnClose:{type:Boolean,value:!0},_dropdownContent:{type:Object}},hostAttributes:{role:"group","aria-haspopup":"true"},listeners:{"iron-activate":"_onIronActivate","iron-select":"_onIronSelect"},get contentElement(){for(var e=Object(l.a)(this.$.content).getDistributedNodes(),t=0,n=e.length;t-1&&e.preventDefault()}});Object.keys(h).forEach(function(e){f[e]=h[e]})},function(e,t,n){"use strict";n(3),n(10);var i=n(6),o=n(7),r=n(5),a=n(97);function s(e){return(s="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 l={properties:{scrollTarget:{type:HTMLElement,value:function(){return this._defaultScrollTarget}}},observers:["_scrollTargetChanged(scrollTarget, isAttached)"],_shouldHaveListener:!0,_scrollTargetChanged:function(e,t){if(this._oldScrollTarget&&(this._toggleScrollListener(!1,this._oldScrollTarget),this._oldScrollTarget=null),t)if("document"===e)this.scrollTarget=this._doc;else if("string"==typeof e){var n=this.domHost;this.scrollTarget=n&&n.$?n.$[e]:Object(o.a)(this.ownerDocument).querySelector("#"+e)}else this._isValidScrollTarget()&&(this._oldScrollTarget=e,this._toggleScrollListener(this._shouldHaveListener,e))},_scrollHandler:function(){},get _defaultScrollTarget(){return this._doc},get _doc(){return this.ownerDocument.documentElement},get _scrollTop(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.pageYOffset:this.scrollTarget.scrollTop:0},get _scrollLeft(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.pageXOffset:this.scrollTarget.scrollLeft:0},set _scrollTop(e){this.scrollTarget===this._doc?window.scrollTo(window.pageXOffset,e):this._isValidScrollTarget()&&(this.scrollTarget.scrollTop=e)},set _scrollLeft(e){this.scrollTarget===this._doc?window.scrollTo(e,window.pageYOffset):this._isValidScrollTarget()&&(this.scrollTarget.scrollLeft=e)},scroll:function(e,t){var n;"object"===s(e)?(n=e.left,t=e.top):n=e,n=n||0,t=t||0,this.scrollTarget===this._doc?window.scrollTo(n,t):this._isValidScrollTarget()&&(this.scrollTarget.scrollLeft=n,this.scrollTarget.scrollTop=t)},get _scrollTargetWidth(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.innerWidth:this.scrollTarget.offsetWidth:0},get _scrollTargetHeight(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.innerHeight:this.scrollTarget.offsetHeight:0},_isValidScrollTarget:function(){return this.scrollTarget instanceof HTMLElement},_toggleScrollListener:function(e,t){var n=t===this._doc?window:t;e?this._boundScrollHandler||(this._boundScrollHandler=this._scrollHandler.bind(this),n.addEventListener("scroll",this._boundScrollHandler)):this._boundScrollHandler&&(n.removeEventListener("scroll",this._boundScrollHandler),this._boundScrollHandler=null)},toggleScrollListener:function(e){this._shouldHaveListener=e,this._toggleScrollListener(e,this.scrollTarget)}},c={},d=[l,{properties:{effects:{type:String},effectsConfig:{type:Object,value:function(){return{}}},disabled:{type:Boolean,reflectToAttribute:!0,value:!1},threshold:{type:Number,value:0},thresholdTriggered:{type:Boolean,notify:!0,readOnly:!0,reflectToAttribute:!0}},observers:["_effectsChanged(effects, effectsConfig, isAttached)"],_updateScrollState:function(e){},isOnScreen:function(){return!1},isContentBelow:function(){return!1},_effectsRunFn:null,_effects:null,get _clampedScrollTop(){return Math.max(0,this._scrollTop)},attached:function(){this._scrollStateChanged()},detached:function(){this._tearDownEffects()},createEffect:function(e,t){var n=c[e];if(!n)throw new ReferenceError(this._getUndefinedMsg(e));var i=this._boundEffect(n,t||{});return i.setUp(),i},_effectsChanged:function(e,t,n){this._tearDownEffects(),e&&n&&(e.split(" ").forEach(function(e){var n;""!==e&&((n=c[e])?this._effects.push(this._boundEffect(n,t[e])):console.warn(this._getUndefinedMsg(e)))},this),this._setUpEffect())},_layoutIfDirty:function(){return this.offsetWidth},_boundEffect:function(e,t){t=t||{};var n=parseFloat(t.startsAt||0),i=parseFloat(t.endsAt||1),o=i-n,r=function(){},a=0===n&&1===i?e.run:function(t,i){e.run.call(this,Math.max(0,(t-n)/o),i)};return{setUp:e.setUp?e.setUp.bind(this,t):r,run:e.run?a.bind(this):r,tearDown:e.tearDown?e.tearDown.bind(this):r}},_setUpEffect:function(){this.isAttached&&this._effects&&(this._effectsRunFn=[],this._effects.forEach(function(e){!1!==e.setUp()&&this._effectsRunFn.push(e.run)},this))},_tearDownEffects:function(){this._effects&&this._effects.forEach(function(e){e.tearDown()}),this._effectsRunFn=[],this._effects=[]},_runEffects:function(e,t){this._effectsRunFn&&this._effectsRunFn.forEach(function(n){n(e,t)})},_scrollHandler:function(){this._scrollStateChanged()},_scrollStateChanged:function(){if(!this.disabled){var e=this._clampedScrollTop;this._updateScrollState(e),this.threshold>0&&this._setThresholdTriggered(e>=this.threshold)}},_getDOMRef:function(e){console.warn("_getDOMRef","`"+e+"` is undefined")},_getUndefinedMsg:function(e){return"Scroll effect `"+e+"` is undefined. Did you forget to import app-layout/app-scroll-effects/effects/"+e+".html ?"}}];function u(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n
    \n \n
    \n']);return u=function(){return e},e}Object(i.a)({_template:Object(r.a)(u()),is:"app-header",behaviors:[d,a.a],properties:{condenses:{type:Boolean,value:!1},fixed:{type:Boolean,value:!1},reveals:{type:Boolean,value:!1},shadow:{type:Boolean,reflectToAttribute:!0,value:!1}},observers:["_configChanged(isAttached, condenses, fixed)"],_height:0,_dHeight:0,_stickyElTop:0,_stickyElRef:null,_top:0,_progress:0,_wasScrollingDown:!1,_initScrollTop:0,_initTimestamp:0,_lastTimestamp:0,_lastScrollTop:0,get _maxHeaderTop(){return this.fixed?this._dHeight:this._height+5},get _stickyEl(){if(this._stickyElRef)return this._stickyElRef;for(var e,t=Object(o.a)(this.$.slot).getDistributedNodes(),n=0;e=t[n];n++)if(e.nodeType===Node.ELEMENT_NODE){if(e.hasAttribute("sticky")){this._stickyElRef=e;break}this._stickyElRef||(this._stickyElRef=e)}return this._stickyElRef},_configChanged:function(){this.resetLayout(),this._notifyLayoutChanged()},_updateLayoutStates:function(){if(0!==this.offsetWidth||0!==this.offsetHeight){var e=this._clampedScrollTop,t=0===this._height||0===e,n=this.disabled;this._height=this.offsetHeight,this._stickyElRef=null,this.disabled=!0,t||this._updateScrollState(0,!0),this._mayMove()?this._dHeight=this._stickyEl?this._height-this._stickyEl.offsetHeight:0:this._dHeight=0,this._stickyElTop=this._stickyEl?this._stickyEl.offsetTop:0,this._setUpEffect(),t?this._updateScrollState(e,!0):(this._updateScrollState(this._lastScrollTop,!0),this._layoutIfDirty()),this.disabled=n}},_updateScrollState:function(e,t){if(0!==this._height){var n=0,i=0,o=this._top,r=(this._lastScrollTop,this._maxHeaderTop),a=e-this._lastScrollTop,s=Math.abs(a),l=e>this._lastScrollTop,c=performance.now();if(this._mayMove()&&(i=this._clamp(this.reveals?o+a:e,0,r)),e>=this._dHeight&&(i=this.condenses&&!this.fixed?Math.max(this._dHeight,i):i,this.style.transitionDuration="0ms"),this.reveals&&!this.disabled&&s<100&&((c-this._initTimestamp>300||this._wasScrollingDown!==l)&&(this._initScrollTop=e,this._initTimestamp=c),e>=r))if(Math.abs(this._initScrollTop-e)>30||s>10){l&&e>=r?i=r:!l&&e>=this._dHeight&&(i=this.condenses&&!this.fixed?this._dHeight:0);var d=a/(c-this._lastTimestamp);this.style.transitionDuration=this._clamp((i-o)/d,0,300)+"ms"}else i=this._top;n=0===this._dHeight?e>0?1:0:i/this._dHeight,t||(this._lastScrollTop=e,this._top=i,this._wasScrollingDown=l,this._lastTimestamp=c),(t||n!==this._progress||o!==i||0===e)&&(this._progress=n,this._runEffects(n,i),this._transformHeader(i))}},_mayMove:function(){return this.condenses||!this.fixed},willCondense:function(){return this._dHeight>0&&this.condenses},isOnScreen:function(){return 0!==this._height&&this._top0:this._clampedScrollTop-this._maxHeaderTop>=0},_transformHeader:function(e){this.translate3d(0,-e+"px",0),this._stickyEl&&this.translate3d(0,this.condenses&&e>=this._stickyElTop?Math.min(e,this._dHeight)-this._stickyElTop+"px":0,0,this._stickyEl)},_clamp:function(e,t,n){return Math.min(n,Math.max(t,e))},_ensureBgContainers:function(){this._bgContainer||(this._bgContainer=document.createElement("div"),this._bgContainer.id="background",this._bgRear=document.createElement("div"),this._bgRear.id="backgroundRearLayer",this._bgContainer.appendChild(this._bgRear),this._bgFront=document.createElement("div"),this._bgFront.id="backgroundFrontLayer",this._bgContainer.appendChild(this._bgFront),Object(o.a)(this.root).insertBefore(this._bgContainer,this.$.contentContainer))},_getDOMRef:function(e){switch(e){case"backgroundFrontLayer":return this._ensureBgContainers(),this._bgFront;case"backgroundRearLayer":return this._ensureBgContainers(),this._bgRear;case"background":return this._ensureBgContainers(),this._bgContainer;case"mainTitle":return Object(o.a)(this).querySelector("[main-title]");case"condensedTitle":return Object(o.a)(this).querySelector("[condensed-title]")}return null},getScrollState:function(){return{progress:this._progress,top:this._top}}})},,,function(e,t,n){"use strict";n(3);var i=n(70),o=n(55),r={properties:{checked:{type:Boolean,value:!1,reflectToAttribute:!0,notify:!0,observer:"_checkedChanged"},toggles:{type:Boolean,value:!0,reflectToAttribute:!0},value:{type:String,value:"on",observer:"_valueChanged"}},observers:["_requiredChanged(required)"],created:function(){this._hasIronCheckedElementBehavior=!0},_getValidity:function(e){return this.disabled||!this.required||this.checked},_requiredChanged:function(){this.required?this.setAttribute("aria-required","true"):this.removeAttribute("aria-required")},_checkedChanged:function(){this.active=this.checked,this.fire("iron-change")},_valueChanged:function(){void 0!==this.value&&null!==this.value||(this.value="on")}},a=[i.a,o.a,r],s=n(65),l=n(66);n.d(t,"a",function(){return d});var c={_checkedChanged:function(){r._checkedChanged.call(this),this.hasRipple()&&(this.checked?this._ripple.setAttribute("checked",""):this._ripple.removeAttribute("checked"))},_buttonStateChanged:function(){l.a._buttonStateChanged.call(this),this.disabled||this.isAttached&&(this.checked=this.active)}},d=[s.a,a,c]},function(e,t,n){"use strict";n(10),n(88),n(11),n(39),n(29)},function(e,t,n){"use strict";function i(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}n.d(t,"a",function(){return u}),"undefined"!=typeof Symbol&&(Symbol.iterator||(Symbol.iterator=Symbol("Symbol.iterator"))),"undefined"!=typeof Symbol&&(Symbol.asyncIterator||(Symbol.asyncIterator=Symbol("Symbol.asyncIterator")));function o(e){return{type:"unsubscribe_events",subscription:e}}var r=function(e,t){this.options=t,this.commandId=1,this.commands=new Map,this.eventListeners=new Map,this.closeRequested=!1,this.setSocket(e)};r.prototype.setSocket=function(e){var t=this,n=this.socket;if(this.socket=e,e.addEventListener("message",function(e){return t._handleMessage(e)}),e.addEventListener("close",function(e){return t._handleClose(e)}),n){var i=this.commands;this.commandId=1,this.commands=new Map,i.forEach(function(e){"subscribe"in e&&e.subscribe().then(function(t){e.unsubscribe=t,e.resolve()})}),this.fireEvent("ready")}},r.prototype.addEventListener=function(e,t){var n=this.eventListeners.get(e);n||this.eventListeners.set(e,n=[]),n.push(t)},r.prototype.removeEventListener=function(e,t){var n=this.eventListeners.get(e);if(n){var i=n.indexOf(t);-1!==i&&n.splice(i,1)}},r.prototype.fireEvent=function(e,t){var n=this;(this.eventListeners.get(e)||[]).forEach(function(e){return e(n,t)})},r.prototype.close=function(){this.closeRequested=!0,this.socket.close()},r.prototype.subscribeEvents=function(e,t){try{return this.subscribeMessage(e,function(e){var t={type:"subscribe_events"};return e&&(t.event_type=e),t}(t))}catch(e){return Promise.reject(e)}},r.prototype.ping=function(){return this.sendMessagePromise({type:"ping"})},r.prototype.sendMessage=function(e,t){t||(t=this._genCmdId()),e.id=t,this.socket.send(JSON.stringify(e))},r.prototype.sendMessagePromise=function(e){var t=this;return new Promise(function(n,i){var o=t._genCmdId();t.commands.set(o,{resolve:n,reject:i}),t.sendMessage(e,o)})},r.prototype.subscribeMessage=function(e,t){try{var n,i=this,r=i._genCmdId();return Promise.resolve(new Promise(function(a,s){n={resolve:a,reject:s,callback:e,subscribe:function(){return i.subscribeMessage(e,t)},unsubscribe:function(){try{return Promise.resolve(i.sendMessagePromise(o(r))).then(function(){i.commands.delete(r)})}catch(e){return Promise.reject(e)}}},i.commands.set(r,n);try{i.sendMessage(t,r)}catch(e){}})).then(function(){return function(){return n.unsubscribe()}})}catch(e){return Promise.reject(e)}},r.prototype._handleMessage=function(e){var t=JSON.parse(e.data),n=this.commands.get(t.id);switch(t.type){case"event":n?n.callback(t.event):(console.warn("Received event for unknown subscription "+t.id+". Unsubscribing."),this.sendMessagePromise(o(t.id)));break;case"result":n&&(t.success?(n.resolve(t.result),"subscribe"in n||this.commands.delete(t.id)):(n.reject(t.error),this.commands.delete(t.id)));break;case"pong":n?(n.resolve(),this.commands.delete(t.id)):console.warn("Received unknown pong response "+t.id)}},r.prototype._handleClose=function(e){var t=this;if(this.commands.forEach(function(e){"subscribe"in e||e.reject({type:"result",success:!1,error:{code:3,message:"Connection lost"}})}),!this.closeRequested){this.fireEvent("disconnected");var n=Object.assign({},this.options,{setupRetry:0});!function e(o){var r=t;setTimeout(function(){try{var t=i(function(){return Promise.resolve(n.createSocket(n)).then(function(e){r.setSocket(e)})},function(t){2===t?r.fireEvent("reconnect-error",t):e(o+1)});return Promise.resolve(t&&t.then?t.then(function(){}):void 0)}catch(i){return Promise.reject(i)}},1e3*Math.min(o,5))}(0)}},r.prototype._genCmdId=function(){return++this.commandId};var a=function(e,t,n){try{var i="undefined"!=typeof location&&location;if(i&&"https:"===i.protocol){var o=document.createElement("a");if(o.href=e,"http:"===o.protocol&&"localhost"!==o.hostname)throw 5}var r=new FormData;return null!==t&&r.append("client_id",t),Object.keys(n).forEach(function(e){r.append(e,n[e])}),Promise.resolve(fetch(e+"/auth/token",{method:"POST",credentials:"same-origin",body:r})).then(function(n){if(!n.ok)throw 400===n.status||403===n.status?2:new Error("Unable to fetch tokens");return Promise.resolve(n.json()).then(function(n){return n.hassUrl=e,n.clientId=t,n.expires=s(n.expires_in),n})})}catch(e){return Promise.reject(e)}},s=function(e){return 1e3*e+Date.now()};var l=function(e,t){this.data=e,this._saveTokens=t},c={wsUrl:{configurable:!0},accessToken:{configurable:!0},expired:{configurable:!0}};c.wsUrl.get=function(){return"ws"+this.data.hassUrl.substr(4)+"/api/websocket"},c.accessToken.get=function(){return this.data.access_token},c.expired.get=function(){return Date.now()>this.data.expires},l.prototype.refreshAccessToken=function(){try{var e=this;return Promise.resolve(a(e.data.hassUrl,e.data.clientId,{grant_type:"refresh_token",refresh_token:e.data.refresh_token})).then(function(t){t.refresh_token=e.data.refresh_token,e.data=t,e._saveTokens&&e._saveTokens(t)})}catch(e){return Promise.reject(e)}},l.prototype.revoke=function(){try{var e=this,t=new FormData;return t.append("action","revoke"),t.append("token",e.data.refresh_token),Promise.resolve(fetch(e.data.hassUrl+"/auth/token",{method:"POST",credentials:"same-origin",body:t})).then(function(){e._saveTokens&&e._saveTokens(null)})}catch(e){return Promise.reject(e)}},Object.defineProperties(l.prototype,c);var d=function(e,t,n,i){if(e[t])return e[t];var o,r=0,a=function(e){var t=[];function n(n,i){e=i?n:Object.assign({},e,n);for(var o=t,r=0;r\n\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n']);return a=function(){return e},e}var s=Object(o.a)(a());s.setAttribute("strip-whitespace",""),Object(i.a)({_template:s,is:"paper-spinner",behaviors:[r.a]})},function(e,t,n){"use strict";n(3),n(11);var i=n(112),o=n(65),r=n(6),a=n(5),s=n(62);function l(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n\n
    \n
    \n
    \n
    \n
    \n\n
    '],['\n\n
    \n
    \n
    \n
    \n
    \n\n
    ']);return l=function(){return e},e}var c=Object(a.a)(l());c.setAttribute("strip-whitespace",""),Object(r.a)({_template:c,is:"paper-checkbox",behaviors:[i.a],hostAttributes:{role:"checkbox","aria-checked":!1,tabindex:0},properties:{ariaActiveAttribute:{type:String,value:"aria-checked"}},attached:function(){Object(s.a)(this,function(){if("-1px"===this.getComputedStyleValue("--calculated-paper-checkbox-ink-size").trim()){var e=this.getComputedStyleValue("--calculated-paper-checkbox-size").trim(),t="px",n=e.match(/[A-Za-z]+$/);null!==n&&(t=n[0]);var i=parseFloat(e),o=8/3*i;"px"===t&&(o=Math.floor(o))%2!=i%2&&o++,this.updateStyles({"--paper-checkbox-ink-size":o+t})}})},_computeCheckboxClass:function(e,t){var n="";return e&&(n+="checked "),t&&(n+="invalid"),n},_computeCheckmarkClass:function(e){return e?"":"hidden"},_createRipple:function(){return this._rippleContainer=this.$.checkboxContainer,o.b._createRipple.call(this)}})},function(e,t,n){"use strict";n(3),n(24),n(100);var i=n(99),o=n(81),r=n(6),a=n(5);function s(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(["\n \n\n \n"]);return s=function(){return e},e}Object(r.a)({_template:Object(a.a)(s()),is:"paper-radio-group",behaviors:[i.a],hostAttributes:{role:"radiogroup"},properties:{attrForSelected:{type:String,value:"name"},selectedAttribute:{type:String,value:"checked"},selectable:{type:String,value:"paper-radio-button"},allowEmptySelection:{type:Boolean,value:!1}},select:function(e){var t=this._valueToItem(e);if(!t||!t.hasAttribute("disabled")){if(this.selected){var n=this._valueToItem(this.selected);if(this.selected==e){if(!this.allowEmptySelection)return void(n&&(n.checked=!0));e=""}n&&(n.checked=!1)}o.a.select.apply(this,[e]),this.fire("paper-radio-group-changed")}},_activateFocusedItem:function(){this._itemActivate(this._valueForItem(this.focusedItem),this.focusedItem)},_onUpKey:function(e){this._focusPrevious(),e.preventDefault(),this._activateFocusedItem()},_onDownKey:function(e){this._focusNext(),e.preventDefault(),this._activateFocusedItem()},_onLeftKey:function(e){i.b._onLeftKey.apply(this,arguments),this._activateFocusedItem()},_onRightKey:function(e){i.b._onRightKey.apply(this,arguments),this._activateFocusedItem()}})},function(e,t,n){(function(e){var n,i,o,r;function a(e){return(a="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)}r=function(){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==a(e)&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t){e.exports=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){function i(e){return(i="function"==typeof Symbol&&"symbol"==a(Symbol.iterator)?function(e){return a(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":a(e)})(e)}function o(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{limit:!1};this._log('---------\nSearch pattern: "'.concat(e,'"'));var n=this._prepareSearchers(e),i=n.tokenSearchers,o=n.fullSearcher,r=this._search(i,o),a=r.weights,s=r.results;return this._computeScore(a,s),this.options.shouldSort&&this._sort(s),t.limit&&"number"==typeof t.limit&&(s=s.slice(0,t.limit)),this._format(s)}},{key:"_prepareSearchers",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=[];if(this.options.tokenize)for(var n=e.split(this.options.tokenSeparator),i=0,o=n.length;i0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,n=this.list,i={},o=[];if("string"==typeof n[0]){for(var r=0,a=n.length;r1)throw new Error("Key weight has to be > 0 and <= 1");h=h.name}else s[h]={weight:1};this._analyze({key:h,value:this.options.getFn(d,h),record:d,index:l},{resultMap:i,results:o,tokenSearchers:e,fullSearcher:t})}return{weights:s,results:o}}},{key:"_analyze",value:function(e,t){var n=e.key,i=e.arrayIndex,o=void 0===i?-1:i,r=e.value,a=e.record,s=e.index,c=t.tokenSearchers,d=void 0===c?[]:c,u=t.fullSearcher,p=void 0===u?[]:u,h=t.resultMap,f=void 0===h?{}:h,b=t.results,v=void 0===b?[]:b;if(null!=r){var m=!1,y=-1,g=0;if("string"==typeof r){this._log("\nKey: ".concat(""===n?"-":n));var _=p.search(r);if(this._log('Full text: "'.concat(r,'", score: ').concat(_.score)),this.options.tokenize){for(var w=r.split(this.options.tokenSeparator),x=[],k=0;k-1&&(j=(j+y)/2),this._log("Score average:",j);var R=!this.options.tokenize||!this.options.matchAllTokens||g>=d.length;if(this._log("\nCheck Matches: ".concat(R)),(m||_.isMatch)&&R){var B=f[s];B?B.output.push({key:n,arrayIndex:o,value:r,score:j,matchedIndices:_.matchedIndices}):(f[s]={item:a,output:[{key:n,arrayIndex:o,value:r,score:j,matchedIndices:_.matchedIndices}]},v.push(f[s]))}}else if(l(r))for(var P=0,N=r.length;P-1&&(a.arrayIndex=r.arrayIndex),t.matches.push(a)}}}),this.options.includeScore&&o.push(function(e,t){t.score=e.score});for(var r=0,a=e.length;rn)return o(e,this.pattern,i);var a=this.options,s=a.location,l=a.distance,c=a.threshold,d=a.findAllMatches,u=a.minMatchCharLength;return r(e,this.pattern,this.patternAlphabet,{location:s,distance:l,threshold:c,findAllMatches:d,minMatchCharLength:u})}}])&&i(t.prototype,n),e}();e.exports=s},function(e,t){var n=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;e.exports=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,o=new RegExp(t.replace(n,"\\$&").replace(i,"|")),r=e.match(o),a=!!r,s=[];if(a)for(var l=0,c=r.length;l=j;P-=1){var N=P-1,L=n[e.charAt(N)];if(L&&(w[N]=1),B[P]=(B[P+1]<<1|1)&L,0!==T&&(B[P]|=(C[P+1]|C[P])<<1|1|C[P+1]),B[P]&E&&(O=i(t,{errors:T,currentLocation:N,expectedLocation:v,distance:c}))<=y){if(y=O,(g=N)<=v)break;j=Math.max(1,2*v-g)}}if(i(t,{errors:T+1,currentLocation:v,expectedLocation:v,distance:c})>y)break;C=B}return{isMatch:g>=0,score:0===O?.001:O,matchedIndices:o(w,b)}}},function(e,t){e.exports=function(e,t){var n=t.errors,i=void 0===n?0:n,o=t.currentLocation,r=void 0===o?0:o,a=t.expectedLocation,s=void 0===a?0:a,l=t.distance,c=void 0===l?100:l,d=i/e.length,u=Math.abs(s-r);return c?d+u/c:u?1:d}},function(e,t){e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=[],i=-1,o=-1,r=0,a=e.length;r=t&&n.push([i,o]),i=-1)}return e[r-1]&&r-i>=t&&n.push([i,r-1]),n}},function(e,t){e.exports=function(e){for(var t={},n=e.length,i=0;i\n\n\n\n\n']);return o=function(){return e},e}var r=Object(i.a)(o());document.head.appendChild(r.content);n(98);var a=n(79),s=n(99),l=n(69),c=n(6),d=n(7);function u(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n\n \n\n
    \n
    \n
    \n \n
    \n
    \n\n \n'],['\n \n\n \n\n
    \n
    \n
    \n \n
    \n
    \n\n \n']);return u=function(){return e},e}Object(c.a)({_template:Object(i.a)(u()),is:"paper-tabs",behaviors:[l.a,s.a],properties:{noink:{type:Boolean,value:!1,observer:"_noinkChanged"},noBar:{type:Boolean,value:!1},noSlide:{type:Boolean,value:!1},scrollable:{type:Boolean,value:!1},fitContainer:{type:Boolean,value:!1},disableDrag:{type:Boolean,value:!1},hideScrollButtons:{type:Boolean,value:!1},alignBottom:{type:Boolean,value:!1},selectable:{type:String,value:"paper-tab"},autoselect:{type:Boolean,value:!1},autoselectDelay:{type:Number,value:0},_step:{type:Number,value:10},_holdDelay:{type:Number,value:1},_leftHidden:{type:Boolean,value:!1},_rightHidden:{type:Boolean,value:!1},_previousTab:{type:Object}},hostAttributes:{role:"tablist"},listeners:{"iron-resize":"_onTabSizingChanged","iron-items-changed":"_onTabSizingChanged","iron-select":"_onIronSelect","iron-deselect":"_onIronDeselect"},keyBindings:{"left:keyup right:keyup":"_onArrowKeyup"},created:function(){this._holdJob=null,this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,this._bindDelayedActivationHandler=this._delayedActivationHandler.bind(this),this.addEventListener("blur",this._onBlurCapture.bind(this),!0)},ready:function(){this.setScrollDirection("y",this.$.tabsContainer)},detached:function(){this._cancelPendingActivation()},_noinkChanged:function(e){Object(d.a)(this).querySelectorAll("paper-tab").forEach(e?this._setNoinkAttribute:this._removeNoinkAttribute)},_setNoinkAttribute:function(e){e.setAttribute("noink","")},_removeNoinkAttribute:function(e){e.removeAttribute("noink")},_computeScrollButtonClass:function(e,t,n){return!t||n?"hidden":e?"not-visible":""},_computeTabsContentClass:function(e,t){return e?"scrollable"+(t?" fit-container":""):" fit-container"},_computeSelectionBarClass:function(e,t){return e?"hidden":t?"align-bottom":""},_onTabSizingChanged:function(){this.debounce("_onTabSizingChanged",function(){this._scroll(),this._tabChanged(this.selectedItem)},10)},_onIronSelect:function(e){this._tabChanged(e.detail.item,this._previousTab),this._previousTab=e.detail.item,this.cancelDebouncer("tab-changed")},_onIronDeselect:function(e){this.debounce("tab-changed",function(){this._tabChanged(null,this._previousTab),this._previousTab=null},1)},_activateHandler:function(){this._cancelPendingActivation(),a.b._activateHandler.apply(this,arguments)},_scheduleActivation:function(e,t){this._pendingActivationItem=e,this._pendingActivationTimeout=this.async(this._bindDelayedActivationHandler,t)},_delayedActivationHandler:function(){var e=this._pendingActivationItem;this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,e.fire(this.activateEvent,null,{bubbles:!0,cancelable:!0})},_cancelPendingActivation:function(){void 0!==this._pendingActivationTimeout&&(this.cancelAsync(this._pendingActivationTimeout),this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0)},_onArrowKeyup:function(e){this.autoselect&&this._scheduleActivation(this.focusedItem,this.autoselectDelay)},_onBlurCapture:function(e){e.target===this._pendingActivationItem&&this._cancelPendingActivation()},get _tabContainerScrollSize(){return Math.max(0,this.$.tabsContainer.scrollWidth-this.$.tabsContainer.offsetWidth)},_scroll:function(e,t){if(this.scrollable){var n=t&&-t.ddx||0;this._affectScroll(n)}},_down:function(e){this.async(function(){this._defaultFocusAsync&&(this.cancelAsync(this._defaultFocusAsync),this._defaultFocusAsync=null)},1)},_affectScroll:function(e){this.$.tabsContainer.scrollLeft+=e;var t=this.$.tabsContainer.scrollLeft;this._leftHidden=0===t,this._rightHidden=t===this._tabContainerScrollSize},_onLeftScrollButtonDown:function(){this._scrollToLeft(),this._holdJob=setInterval(this._scrollToLeft.bind(this),this._holdDelay)},_onRightScrollButtonDown:function(){this._scrollToRight(),this._holdJob=setInterval(this._scrollToRight.bind(this),this._holdDelay)},_onScrollButtonUp:function(){clearInterval(this._holdJob),this._holdJob=null},_scrollToLeft:function(){this._affectScroll(-this._step)},_scrollToRight:function(){this._affectScroll(this._step)},_tabChanged:function(e,t){if(!e)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contract"),void this._positionBar(0,0);var n=this.$.tabsContent.getBoundingClientRect(),i=n.width,o=e.getBoundingClientRect(),r=o.left-n.left;if(this._pos={width:this._calcPercent(o.width,i),left:this._calcPercent(r,i)},this.noSlide||null==t)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contract"),void this._positionBar(this._pos.width,this._pos.left);var a=t.getBoundingClientRect(),s=this.items.indexOf(t),l=this.items.indexOf(e);this.$.selectionBar.classList.add("expand");var c=s0&&(this.$.tabsContainer.scrollLeft+=n)},_calcPercent:function(e,t){return 100*e/t},_positionBar:function(e,t){e=e||0,t=t||0,this._width=e,this._left=t,this.transform("translateX("+t+"%) scaleX("+e/100+")",this.$.selectionBar)},_onBarTransitionEnd:function(e){var t=this.$.selectionBar.classList;t.contains("expand")?(t.remove("expand"),t.add("contract"),this._positionBar(this._pos.width,this._pos.left)):t.contains("contract")&&t.remove("contract")}})}]]); +//# sourceMappingURL=chunk.12902324b918e12549ba.js.map \ No newline at end of file diff --git a/hassio/api/panel/chunk.6685a7f98b13655ab808.js.LICENSE b/hassio/api/panel/chunk.12902324b918e12549ba.js.LICENSE similarity index 88% rename from hassio/api/panel/chunk.6685a7f98b13655ab808.js.LICENSE rename to hassio/api/panel/chunk.12902324b918e12549ba.js.LICENSE index 7cbcedb69..873451899 100644 --- a/hassio/api/panel/chunk.6685a7f98b13655ab808.js.LICENSE +++ b/hassio/api/panel/chunk.12902324b918e12549ba.js.LICENSE @@ -51,6 +51,27 @@ See the License for the specific language governing permissions and limitations under the License. */ +/** +@license +Copyright (c) 2016 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt +The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt +Code distributed by Google as part of the polymer project is also +subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt +*/ + +/** +@license +Copyright (c) 2017 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at +http://polymer.github.io/LICENSE.txt The complete set of authors may be found at +http://polymer.github.io/AUTHORS.txt The complete set of contributors may be +found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as +part of the polymer project is also subject to an additional IP rights grant +found at http://polymer.github.io/PATENTS.txt +*/ + /*! ***************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use @@ -66,6 +87,31 @@ See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ +/** + * @license + * Copyright (c) 2018 The Polymer Project Authors. All rights reserved. + * This code may only be used under the BSD style license found at + * http://polymer.github.io/LICENSE.txt + * The complete set of authors may be found at + * http://polymer.github.io/AUTHORS.txt + * The complete set of contributors may be found at + * http://polymer.github.io/CONTRIBUTORS.txt + * Code distributed by Google as part of the polymer project is also + * subject to an additional IP rights grant found at + * http://polymer.github.io/PATENTS.txt + */ + +/** +@license +Copyright (c) 2014 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at +http://polymer.github.io/LICENSE.txt The complete set of authors may be found at +http://polymer.github.io/AUTHORS.txt The complete set of contributors may be +found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as +part of the polymer project is also subject to an additional IP rights grant +found at http://polymer.github.io/PATENTS.txt +*/ + /** * @license * Copyright 2016 Google Inc. @@ -89,6 +135,39 @@ and limitations under the License. * THE SOFTWARE. */ +/** +@license +Copyright (c) 2015 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt +The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt +Code distributed by Google as part of the polymer project is also +subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt +*/ + +/** + * @license + * Copyright 2019 Google Inc. + * + * 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. + */ + /** * @license * Copyright 2018 Google Inc. @@ -112,62 +191,6 @@ and limitations under the License. * THE SOFTWARE. */ -/** -@license -Copyright (c) 2016 The Polymer Project Authors. All rights reserved. -This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt -The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt -The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt -Code distributed by Google as part of the polymer project is also -subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt -*/ - -/** -@license -Copyright (c) 2017 The Polymer Project Authors. All rights reserved. -This code may only be used under the BSD style license found at -http://polymer.github.io/LICENSE.txt The complete set of authors may be found at -http://polymer.github.io/AUTHORS.txt The complete set of contributors may be -found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as -part of the polymer project is also subject to an additional IP rights grant -found at http://polymer.github.io/PATENTS.txt -*/ - -/** - * @license - * Copyright (c) 2018 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at - * http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at - * http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at - * http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at - * http://polymer.github.io/PATENTS.txt - */ - -/** -@license -Copyright (c) 2014 The Polymer Project Authors. All rights reserved. -This code may only be used under the BSD style license found at -http://polymer.github.io/LICENSE.txt The complete set of authors may be found at -http://polymer.github.io/AUTHORS.txt The complete set of contributors may be -found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as -part of the polymer project is also subject to an additional IP rights grant -found at http://polymer.github.io/PATENTS.txt -*/ - -/** -@license -Copyright (c) 2015 The Polymer Project Authors. All rights reserved. -This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt -The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt -The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt -Code distributed by Google as part of the polymer project is also -subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt -*/ - /** @license Copyright (c) 2016 The Polymer Project Authors. All rights reserved. diff --git a/hassio/api/panel/chunk.12902324b918e12549ba.js.gz b/hassio/api/panel/chunk.12902324b918e12549ba.js.gz new file mode 100644 index 000000000..a658962ee Binary files /dev/null and b/hassio/api/panel/chunk.12902324b918e12549ba.js.gz differ diff --git a/hassio/api/panel/chunk.12902324b918e12549ba.js.map b/hassio/api/panel/chunk.12902324b918e12549ba.js.map new file mode 100644 index 000000000..b7acfcba3 --- /dev/null +++ b/hassio/api/panel/chunk.12902324b918e12549ba.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///../src/lib/modify-template.ts","webpack:///../src/lib/shady-render.ts","webpack:///../src/lib/updating-element.ts","webpack:///../src/lib/decorators.ts","webpack:///../src/lib/css-tag.ts","webpack:///src/lit-element.ts","webpack:///./node_modules/@polymer/iron-flex-layout/iron-flex-layout.js","webpack:///./node_modules/@polymer/paper-styles/default-theme.js","webpack:///../src/lib/default-template-processor.ts","webpack:///src/lit-html.ts","webpack:///src/mwc-button-base.ts","webpack:///src/mwc-button-css.ts","webpack:///src/mwc-button.ts","webpack:///./node_modules/@polymer/iron-image/iron-image.js","webpack:///./node_modules/@polymer/paper-styles/element-styles/paper-material-styles.js","webpack:///./node_modules/@polymer/paper-card/paper-card.js","webpack:///../src/lib/parts.ts","webpack:///../src/lib/template.ts","webpack:///./node_modules/@polymer/iron-icon/iron-icon.js","webpack:///./node_modules/@polymer/paper-icon-button/paper-icon-button.js","webpack:///./node_modules/@polymer/iron-behaviors/iron-control-state.js","webpack:///./node_modules/@polymer/iron-a11y-keys-behavior/iron-a11y-keys-behavior.js","webpack:///../src/lib/dom.ts","webpack:///./node_modules/@polymer/paper-styles/typography.js","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///../src/lib/template-result.ts","webpack:///../src/lib/template-factory.ts","webpack:///./node_modules/@polymer/iron-behaviors/iron-button-state.js","webpack:///./node_modules/@polymer/paper-styles/shadow.js","webpack:///./node_modules/@polymer/app-layout/app-toolbar/app-toolbar.js","webpack:///./node_modules/@polymer/iron-a11y-announcer/iron-a11y-announcer.js","webpack:///./node_modules/@polymer/iron-input/iron-input.js","webpack:///./node_modules/@polymer/paper-input/paper-input-addon-behavior.js","webpack:///./node_modules/@polymer/paper-input/paper-input-char-counter.js","webpack:///./node_modules/@polymer/paper-input/paper-input-container.js","webpack:///./node_modules/@polymer/paper-input/paper-input-error.js","webpack:///./node_modules/@polymer/paper-input/paper-input-behavior.js","webpack:///./node_modules/@polymer/paper-input/paper-input.js","webpack:///../src/lib/directive.ts","webpack:///../src/lib/part.ts","webpack:///../src/lib/template-instance.ts","webpack:///../src/lib/render.ts","webpack:///../src/directives/class-map.ts","webpack:///./node_modules/@polymer/iron-validatable-behavior/iron-validatable-behavior.js","webpack:///./node_modules/@polymer/paper-behaviors/paper-inky-focus-behavior.js","webpack:///./node_modules/@polymer/paper-behaviors/paper-ripple-behavior.js","webpack:///./node_modules/@polymer/paper-spinner/paper-spinner-lite.js","webpack:///./node_modules/memoize-one/dist/memoize-one.esm.js","webpack:///./node_modules/@polymer/iron-resizable-behavior/iron-resizable-behavior.js","webpack:///./node_modules/@polymer/iron-form-element-behavior/iron-form-element-behavior.js","webpack:///./node_modules/@polymer/iron-overlay-behavior/iron-focusables-helper.js","webpack:///./node_modules/@polymer/iron-fit-behavior/iron-fit-behavior.js","webpack:///./node_modules/@polymer/iron-overlay-behavior/iron-overlay-backdrop.js","webpack:///./node_modules/@polymer/iron-overlay-behavior/iron-overlay-manager.js","webpack:///./node_modules/@polymer/iron-overlay-behavior/iron-scroll-manager.js","webpack:///./node_modules/@polymer/iron-overlay-behavior/iron-overlay-behavior.js","webpack:///./node_modules/@polymer/iron-selector/iron-multi-selectable.js","webpack:///./node_modules/@polymer/iron-menu-behavior/iron-menu-behavior.js","webpack:///./node_modules/@polymer/iron-selector/iron-selection.js","webpack:///./node_modules/@polymer/iron-selector/iron-selectable.js","webpack:///./node_modules/@polymer/neon-animation/neon-animatable-behavior.js","webpack:///./node_modules/@polymer/neon-animation/neon-animation-runner-behavior.js","webpack:///./node_modules/@polymer/paper-ripple/paper-ripple.js","webpack:///foundation.ts","webpack:///./node_modules/@polymer/paper-spinner/paper-spinner-styles.js","webpack:///./node_modules/@polymer/paper-spinner/paper-spinner-behavior.js","webpack:///./node_modules/@polymer/app-layout/app-header-layout/app-header-layout.js","webpack:///./node_modules/@polymer/app-layout/app-layout-behavior/app-layout-behavior.js","webpack:///./node_modules/@polymer/paper-tabs/paper-tab.js","webpack:///./node_modules/@polymer/iron-menu-behavior/iron-menubar-behavior.js","webpack:///./node_modules/@polymer/paper-radio-button/paper-radio-button.js","webpack:///events.ts","webpack:///ponyfill.ts","webpack:///util.ts","webpack:///constants.ts","webpack:///src/mwc-ripple-global-css.ts","webpack:///src/ripple-directive.ts","webpack:///./node_modules/@polymer/iron-dropdown/iron-dropdown.js","webpack:///./node_modules/@polymer/neon-animation/neon-animation-behavior.js","webpack:///./node_modules/@polymer/neon-animation/animations/fade-in-animation.js","webpack:///./node_modules/@polymer/neon-animation/animations/fade-out-animation.js","webpack:///./node_modules/@polymer/paper-menu-button/paper-menu-button-animations.js","webpack:///./node_modules/@polymer/paper-menu-button/paper-menu-button.js","webpack:///./node_modules/@polymer/iron-scroll-target-behavior/iron-scroll-target-behavior.js","webpack:///./node_modules/@polymer/app-layout/helpers/helpers.js","webpack:///./node_modules/@polymer/app-layout/app-scroll-effects/app-scroll-effects-behavior.js","webpack:///./node_modules/@polymer/app-layout/app-header/app-header.js","webpack:///./node_modules/@polymer/iron-checked-element-behavior/iron-checked-element-behavior.js","webpack:///./node_modules/@polymer/paper-behaviors/paper-checked-element-behavior.js","webpack:///./node_modules/@polymer/paper-styles/paper-styles.js","webpack:///../node_modules/babel-plugin-transform-async-to-promises/helpers.js","webpack:///../lib/errors.ts","webpack:///../lib/messages.ts","webpack:///../lib/socket.ts","webpack:///../lib/connection.ts","webpack:///../lib/auth.ts","webpack:///../lib/store.ts","webpack:///../lib/collection.ts","webpack:///./node_modules/@polymer/paper-spinner/paper-spinner.js","webpack:///./node_modules/@polymer/paper-checkbox/paper-checkbox.js","webpack:///./node_modules/@polymer/paper-radio-group/paper-radio-group.js","webpack:///./node_modules/fuse.js/dist/fuse.js","webpack:///(webpack)/buildin/module.js","webpack:///../src/directives/repeat.ts","webpack:///./node_modules/@polymer/paper-tabs/paper-tabs-icons.js","webpack:///./node_modules/@polymer/paper-tabs/paper-tabs.js"],"names":["walkerNodeFilter","removeNodesFromTemplate","template","nodesToRemove","content","element","parts","walker","document","createTreeWalker","partIndex","modify_template_nextActiveIndexInTemplateParts","part","nodeIndex","removeCount","nodesToRemoveInTemplate","currentRemovingNode","nextNode","node","currentNode","previousSibling","has","push","undefined","index","forEach","n","parentNode","removeChild","countNodes","count","nodeType","i","arguments","length","Object","lib_template","getTemplateCacheKey","type","scopeName","concat","compatibleShadyCSSVersion","window","ShadyCSS","prepareTemplateDom","console","warn","shady_render_shadyTemplateFactory","result","cacheKey","templateCache","template_factory","get","stringsArray","WeakMap","keyString","Map","set","strings","key","join","getTemplateElement","TEMPLATE_TYPES","shadyRenderSet","Set","shady_render_prepareTemplateStyles","renderedDOM","add","templateElement","createElement","styles","querySelectorAll","condensedStyle","_style","textContent","templates","Array","from","s","shady_render_removeStylesFromLitTemplates","refNode","insertCount","walkerIndex","insertBefore","appendChild","insertNodeIntoTemplate","firstChild","prepareTemplateStyles","style","querySelector","nativeShadow","cloneNode","removes","JSCompiler_renameProperty","prop","_obj","defaultConverter","toAttribute","value","Boolean","JSON","stringify","fromAttribute","Number","parse","notEqual","old","defaultPropertyDeclaration","attribute","String","converter","reflect","hasChanged","microtaskPromise","Promise","resolve","UpdatingElement","_HTMLElement","_this","_classCallCheck","this","_possibleConstructorReturn","_getPrototypeOf","call","_updateState","_instanceProperties","_updatePromise","_hasConnectedResolver","_changedProperties","_reflectingProperties","initialize","_inherits","_wrapNativeSuper","HTMLElement","_this6","hasOwnProperty","_classProperties","superProperties","getPrototypeOf","v","k","name","options","_ensureClassProperties","noAccessor","prototype","updating_element_typeof","Symbol","defineProperty","oldValue","_requestUpdate","configurable","enumerable","superCtor","finalize","_attributeToPropertyMap","props","properties","propKeys","_toConsumableArray","getOwnPropertyNames","getOwnPropertySymbols","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","iterator","next","done","p","createProperty","err","toLowerCase","_this7","attributes","attr","_attributeNameForProperty","_saveInstanceProperties","_this2","constructor","_v","_this3","_attributeToProperty","ctor","attrValue","_propertyValueToAttribute","removeAttribute","setAttribute","propName","_propertyValueFromAttribute","shouldRequestUpdate","_valueHasChanged","_hasRequestedUpdate","_enqueueUpdate","updateComplete","reject","previousUpdatePromise","_this4","regeneratorRuntime","async","_context","prev","res","rej","awrap","t0","_hasConnected","performUpdate","t1","stop","_applyInstanceProperties","shouldUpdate","changedProperties","update","e","_markUpdated","firstUpdated","updated","_this5","size","_propertyToAttribute","_getUpdateComplete","customElement","tagName","classOrDescriptor","clazz","customElements","define","legacyCustomElement","descriptor","kind","elements","finisher","standardCustomElement","standardProperty","placement","initializer","assign","legacyProperty","proto","property","protoOrDescriptor","query","selector","renderRoot","legacyQuery","standardQuery","supportsAdoptingStyleSheets","Document","CSSStyleSheet","constructionToken","CSSResult","cssText","safeToken","css_tag_classCallCheck","Error","_styleSheet","replaceSync","css","_len","values","_key","reduce","acc","idx","textFromCSSResult","flattenStyles","flat","Infinity","arrayFlat","isArray","lit_element_LitElement","_UpdatingElement","LitElement","lit_element_classCallCheck","lit_element_possibleConstructorReturn","lit_element_getPrototypeOf","apply","lit_element_inherits","_get","_styles","_getUniqueStyles","userStyles","reduceRight","unshift","createRenderRoot","ShadowRoot","adoptStyles","attachShadow","mode","adoptedStyleSheets","map","styleSheet","_needsShimAdoptedStyleSheets","ScopingShim","prepareAdoptedCssText","localName","hasUpdated","styleElement","templateResult","render","lit_html","eventContext","container","_typeof","hasRendered","lib_render","needsScoping","host","firstScopeRender","renderContainer","createDocumentFragment","templateFactory","template_instance","dom","html","_templateObject","head","defaultTemplateProcessor","DefaultTemplateProcessor","prefix","slice","__webpack_require__","d","__webpack_exports__","lit_html_html","directive","template_result","mwc_button_base_ButtonBase","_LitElement","ButtonBase","raised","unelevated","outlined","dense","disabled","trailingIcon","icon","label","lit_element","delegatesFocus","buttonElement","_ripple","ripple","handleFocus","focus","_ripple2","handleBlur","blur","classes","mdc-button--raised","mdc-button--unelevated","mdc-button--outlined","mdc-button--dense","mdcButtonIcon","buttonRipple","ripple_directive","unbounded","_templateObject2","class_map","tslib_es6","mwc_button_css_templateObject","Button","_ButtonBase","mwc_button_classCallCheck","mwc_button_possibleConstructorReturn","mwc_button_getPrototypeOf","mwc_button_inherits","Polymer","_template","is","src","alt","crossorigin","preventLoad","sizing","reflectToAttribute","position","preload","placeholder","observer","fade","loaded","notify","readOnly","loading","error","width","height","observers","created","_resolvedSrc","_imgOnLoad","$","img","_resolveSrc","_setLoading","_setLoaded","_setError","_imgOnError","sizedImgDiv","backgroundImage","_computePlaceholderHidden","_computePlaceholderClassName","_computeImgDivHidden","_computeImgDivARIAHidden","_computeImgDivARIALabel","replace","split","pop","_computeImgHidden","_widthChanged","isNaN","_heightChanged","_loadStateObserver","newResolvedSrc","_placeholderChanged","_transformChanged","sizedImgDivStyle","placeholderStyle","backgroundSize","backgroundPosition","backgroundRepeat","testSrc","resolved","resolveUrl","baseURIAnchor","href","location","origin","protocol","paper_material_styles_templateObject","paper_card_templateObject","heading","image","preloadImage","fadeImage","placeholderImage","elevation","animatedShadow","animated","computed","_isHidden","_headingChanged","currentHeading","getAttribute","currentLabel","_computeHeadingClass","_computeAnimated","isPrimitive","isIterable","AttributeCommitter","dirty","_createPart","_createClass","AttributePart","l","text","t","_getValue","committer","_part_js__WEBPACK_IMPORTED_MODULE_2__","_directive_js__WEBPACK_IMPORTED_MODULE_0__","commit","NodePart","__pendingValue","startNode","_template_js__WEBPACK_IMPORTED_MODULE_5__","endNode","ref","nextSibling","__insert","__commitText","_template_result_js__WEBPACK_IMPORTED_MODULE_4__","__commitTemplateResult","Node","__commitNode","__commitIterable","clear","valueAsString","data","createTextNode","_template_instance_js__WEBPACK_IMPORTED_MODULE_3__","instance","processor","fragment","_clone","itemPart","itemParts","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","item","appendIntoPart","insertAfterPart","setValue","_dom_js__WEBPACK_IMPORTED_MODULE_1__","BooleanAttributePart","PropertyCommitter","_AttributeCommitter","single","PropertyPart","_AttributePart","eventOptionsSupported","capture","addEventListener","removeEventListener","_e","EventPart","eventName","__boundHandleEvent","handleEvent","newListener","oldListener","shouldRemoveListener","once","passive","shouldAddListener","__options","getOptions","event","o","marker","Math","random","nodeMarker","markerRegex","RegExp","boundAttributeSuffix","Template","stack","lastPartIndex","hasAttributes","_length","endsWith","stringForPart","lastAttributeNameRegex","exec","attributeLookupName","attributeValue","statics","indexOf","parent","_strings","lastIndex","_i","insert","createMarker","match","_parent","_i2","_i3","_nodesToRemove","str","suffix","isTemplatePartActive","createComment","theme","_meta","Base","create","_DEFAULT_ICONSET","_iconChanged","_iconName","_iconsetName","_updateIcon","_srcChanged","_usesIconset","_img","root","_iconset","removeIcon","byKey","applyIcon","unlisten","listen","draggable","hostAttributes","role","tabindex","behaviors","PaperInkyFocusBehavior","registered","_altChanged","newValue","IronControlState","focused","_oldTabIndex","_boundFocusBlurHandler","Function","_focusBlurHandler","bind","ready","_setFocused","_disabledChanged","pointerEvents","tabIndex","_changedControlState","_controlStateChanged","IronA11yKeysBehavior","KEY_IDENTIFIER","U+0008","U+0009","U+001B","U+0020","U+007F","KEY_CODE","8","9","13","27","33","34","35","36","32","37","38","39","40","46","106","MODIFIER_KEYS","shift","ctrl","meta","KEY_CHAR","IDENT_CHAR","ARROW_KEY","SPACE_KEY","ESC_KEY","transformKey","noSpecialChars","validKey","lKey","test","normalizedKeyForEvent","keyEvent","detail","keyIdent","keyIdentifier","parseInt","fromCharCode","keyCode","transformKeyCode","keyComboMatchesEvent","keyCombo","hasModifiers","shiftKey","ctrlKey","altKey","metaKey","parseEventString","eventString","trim","keyComboString","combo","parsedKeyCombo","keyComboPart","eventParts","keyName","parseKeyComboString","keyEventTarget","stopKeyboardEventPropagation","_boundKeyHandlers","_imperativeKeyBindings","keyBindings","_prepKeyBindings","attached","_listenKeyEventListeners","detached","_unlistenKeyEventListeners","addOwnKeyBinding","handlerName","_resetKeyEventListeners","removeOwnKeyBindings","keyboardEventMatchesKeys","keyCombos","_collectKeyBindings","behavior","_keyBindings","_addKeyBinding","sort","kb1","kb2","b1","isAttached","keys","boundKeyHandler","_onKeyBindingEvent","keyHandlerTuple","stopPropagation","defaultPrevented","_triggerKeyHandler","keyboardEvent","CustomEvent","cancelable","preventDefault","isCEPolyfill","reparentNodes","removeNodes","polyfillWrapFlushCallback","start","end","before","extendStatics","b","setPrototypeOf","__proto__","__extends","__","__assign","__decorate","decorators","target","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","commentMarker","_template_js__WEBPACK_IMPORTED_MODULE_1__","TemplateResult","isCommentBinding","commentOpen","lastIndexOf","attributeMatch","substr","innerHTML","getHTML","SVGTemplateResult","_TemplateResult","svgElement","_dom_js__WEBPACK_IMPORTED_MODULE_0__","templateCaches","_template_js__WEBPACK_IMPORTED_MODULE_0__","IronButtonStateImpl","IronButtonState","_polymer_iron_a11y_keys_behavior_iron_a11y_keys_behavior_js__WEBPACK_IMPORTED_MODULE_2__","_polymer_polymer_lib_legacy_polymer_dom_js__WEBPACK_IMPORTED_MODULE_3__","pressed","toggles","active","pointerDown","receivedFocusFromKeyboard","ariaActiveAttribute","listeners","down","up","tap","enter:keydown","space:keydown","space:keyup","_mouseEventRe","_tapHandler","_userActivate","_focusChanged","_detectKeyboardFocus","_setPressed","_setReceivedFocusFromKeyboard","fire","_downHandler","_setPointerDown","_upHandler","_spaceKeyDownHandler","localTarget","isLightDescendant","stopImmediatePropagation","_spaceKeyUpHandler","_asyncClick","click","_pressedChanged","_changedButtonState","_ariaActiveAttributeChanged","hasAttribute","_activeChanged","_buttonStateChanged","IronA11yAnnouncer","_text","body","_onIronAnnounce","announce","requestAvailability","iron_input_templateObject","IronValidatableBehavior","bindValue","allowedPattern","autoValidate","_inputElement","input","keypress","_previousValidInput","_patternAlreadyChecked","_observer","observeNodes","info","_initSlottedInput","unobserveNodes","inputElement","getEffectiveChildren","_patternRegExp","pattern","_bindValueChanged","validate","_onInput","_checkPatternValidity","_announceInvalidCharacter","_isPrintable","anyNonPrintable","mozNonPrintable","charCode","_onKeypress","regexp","thisChar","invalid","valid","checkValidity","required","hasValidator","message","_computeValue","PaperInputAddonBehavior","state","paper_input_char_counter_templateObject","_charCounterStr","counter","toString","paper_input_container_templateObject","noLabelFloat","alwaysFloatLabel","attrForValue","_addons","_inputHasContent","_inputSelector","_boundOnFocus","_onFocus","_boundOnBlur","_onBlur","_boundOnInput","_boundValueChanged","_onValueChanged","addon-attached","iron-input-validate","_valueChangedEvent","_propertyForValue","dashToCamelCase","_inputElementValue","__isFirstValueUpdate","_handleValueAndAutoValidate","_handleValue","_onAddonAttached","updateAddons","_onIronInputValidate","_invalidChanged","addon","_computeInputContentClass","cls","labelAndInputContainer","_computeUnderlineClass","_computeAddOnContentClass","paper_input_error_templateObject","_setInvalid","PaperInputHelper","PaperInputBehaviorImpl","list","errorMessage","charCounter","validator","autocomplete","autofocus","inputmode","minlength","maxlength","min","max","step","readonly","autocapitalize","autocorrect","autosave","results","accept","multiple","_ariaDescribedBy","_ariaLabelledBy","_inputId","shift+tab:keydown","_generateInputId","$$","_focusableElement","_typesThatHaveText","_updateAriaLabelledBy","PolymerElement","_appendStringWithSpace","more","rootTarget","id","NextAddonID","_shiftTabPressed","_onShiftTabDown","oldTabIndex","_handleAutoValidate","updateValueAndPreserveCaret","selectionStart","selectionEnd","_computeAlwaysFloatLabel","labelledBy","NextLabelID","NextInputID","_onChange","shadowRoot","sourceEvent","bubbles","_autofocusChanged","activeElement","documentElement","PaperInputBehavior","paper_input_templateObject","IronFormElementBehavior","iron-input-ready","_onIronInputReady","nativeInput","isDirective","directives","f","noChange","nothing","TemplateInstance","__parts","_part","importNode","nodeName","_part2","handleTextExpression","insertAfterNode","_this$__parts","handleAttributeExpressions","adoptNode","upgrade","_parts_js__WEBPACK_IMPORTED_MODULE_1__","_template_factory_js__WEBPACK_IMPORTED_MODULE_2__","appendInto","classMap","_lit_html_js__WEBPACK_IMPORTED_MODULE_0__","classMapCache","classInfo","className","classList","oldInfo","remove","_name","_polymer_iron_meta_iron_meta_js__WEBPACK_IMPORTED_MODULE_1__","IronValidatableBehaviorMeta","IronMeta","_validator","_getValidity","PaperInkyFocusBehaviorImpl","_polymer_iron_behaviors_iron_button_state_js__WEBPACK_IMPORTED_MODULE_1__","_polymer_iron_behaviors_iron_control_state_js__WEBPACK_IMPORTED_MODULE_2__","_paper_ripple_behavior_js__WEBPACK_IMPORTED_MODULE_3__","_focusedChanged","ensureRipple","hasRipple","holdDown","_createRipple","PaperRippleBehavior","_polymer_iron_behaviors_iron_button_state_js__WEBPACK_IMPORTED_MODULE_2__","noink","_rippleContainer","optTriggeringEvent","rippleContainer","domContainer","deepContains","uiDownAction","getRipple","_noinkChanged","PaperSpinnerBehavior","simpleIsEqual","newArgs","lastArgs","every","newArg","resultFn","isEqual","lastThis","lastResult","calledOnce","IronResizableBehavior","_polymer_polymer_lib_legacy_polymer_dom_js__WEBPACK_IMPORTED_MODULE_1__","_polymer_polymer_lib_utils_settings_js__WEBPACK_IMPORTED_MODULE_2__","ORPHANS","_parentResizable","_notifyingDescendant","iron-request-resize-notifications","_interestedResizables","_boundNotifyResize","notifyResize","_boundOnDescendantIronResize","_onDescendantIronResize","_requestResizeNotifications","stopResizeNotificationsFor","resizable","resizerShouldNotify","_notifyDescendant","_fireResize","assignParentResizable","parentResizable","_subscribeIronResize","splice","_unsubscribeIronResize","useShadow","_onIronRequestResizeNotifications","_parentResizableChanged","descendant","readyState","readystatechanged","_findParent","orphan","IronFocusablesHelper","Element","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","getTabbableNodes","_collectTabbableNodes","_sortByTabIndex","isFocusable","isTabbable","_isVisible","_normalizedTabIndex","ELEMENT_NODE","children","needsSort","getDistributedNodes","visibility","display","getComputedStyle","tabbables","len","pivot","ceil","left","right","_mergeSortByTabIndex","_hasLowerTabOrder","a","ati","bti","IronFitBehavior","sizingTarget","fitInto","noOverlap","positionTarget","horizontalAlign","verticalAlign","dynamicAlign","horizontalOffset","verticalOffset","autoFitOnAttach","_fitInfo","_fitWidth","innerWidth","getBoundingClientRect","_fitHeight","innerHeight","_fitLeft","_fitTop","top","_defaultPositionTarget","DOCUMENT_FRAGMENT_NODE","_localeHorizontalAlign","_isRTL","__shouldPosition","direction","setTimeout","fit","ShadyDOM","flush","__deferredFit","clearTimeout","constrain","center","_discoverInfo","sizer","inlineStyle","sizerInlineStyle","maxWidth","maxHeight","boxSizing","positionedBy","vertically","bottom","horizontally","sizedBy","minWidth","minHeight","margin","marginTop","marginRight","marginBottom","marginLeft","resetFit","refit","scrollLeft","scrollTop","rect","positionRect","__getNormalizedRect","fitRect","__getPosition","__sizeDimension","_sizeDimension","extent","flip","offset","offsetExtent","sizingOffset","__getOffscreenArea","verticalCrop","horizontalCrop","abs","hAlign","vAlign","sizeNoMargins","positions","copy","candidate","vAlignOk","hAlignOk","alignOk","offscreenArea","diff","opened","transitionend","__openedRaf","_openedChanged","prepare","open","close","complete","_onTransitionend","cs","transitionDuration","opacity","cancelAnimationFrame","requestAnimationFrame","toggleClass","IronOverlayManagerClass","_overlays","_minimumZ","_backdropElement","gestures","_onCaptureClick","_onCaptureFocus","_onCaptureKeyDown","backdropElement","deepActiveElement","_bringOverlayAtIndexToFront","overlay","lastI","currentOverlay","_shouldBeBehindOverlay","minimumZ","currentOverlayZ","_getZ","_applyOverlayZ","addOrRemoveOverlay","addOverlay","removeOverlay","trackBackdrop","insertionIndex","newZ","previousOverlay","ensureMinimumZ","focusOverlay","current","_applyFocus","_overlayWithBackdrop","zIndex","getBackdrops","backdrops","withBackdrop","backdropZ","z","z1","_setZ","aboveZ","_overlayInPath","path","_manager","allowClickThrough","_onCaptureEsc","_onCaptureTab","overlay1","overlay2","alwaysOnTop","_boundScrollHandler","currentLockingElement","IronOverlayManager","lastTouchPosition","pageX","pageY","lastRootTarget","lastScrollableNodes","scrollEvents","pushScrollLock","_lockingElements","nodes","scrollables","lockingIndex","overflow","_getScrollableNodes","deltaX","deltaY","wheelDeltaX","wheelDeltaY","wheelDelta","axis","targetTouches","touch","_getScrollInfo","verticalScroll","scrollHeight","clientHeight","scrollWidth","clientWidth","_getScrollingNode","_shouldPreventScrolling","_lockScrollInteractions","removeScrollLock","_unlockScrollInteractions","IronOverlayBehaviorImpl","IronOverlayBehavior","canceled","noAutoFocus","noCancelOnEscKey","noCancelOnOutsideClick","closingReason","restoreFocusOnClose","scrollAction","_focusedChild","iron-resize","_focusNode","_focusableNodes","__isAnimating","__shouldRemoveTabIndex","__firstFocusableNode","__lastFocusableNode","__rafs","__restoreFocusNode","__scrollTop","__scrollLeft","__onCaptureScroll","__rootNodes","_ensureSetup","_onNodesChange","cb","_finishRenderOpened","_finishRenderClosed","toggle","_setCanceled","cancel","invalidateTabbables","_overlaySetup","outline","__deraf","__openedChanged","_canceledChanged","_withBackdropChanged","_prepareRenderOpened","_preparePositioning","_finishPositioning","_renderOpened","_renderClosed","transition","webkitTransition","transform","webkitTransform","__ensureFirstLastFocusables","nodeToCheck","nodeToSet","shouldWrap","focusedNode","_onIronResize","focusableNodes","jobname","callback","rafs","__updateScrollObservers","__isValidScrollAction","__saveScrollPosition","__addScrollListeners","__removeScrollListeners","assignedSlot","el","__restoreScrollPosition","scrollingElement","IronMultiSelectableBehaviorImpl","multi","selectedValues","selectedItems","select","_toggleSelected","selected","multiChanged","_selection","_updateSelected","_shouldUpdateSelection","_updateAttrForSelected","selectedItem","_indexToValue","filter","unfilteredValue","IronSelectableBehavior","_selectMulti","_selectSelected","_valuesToItems","setItemSelected","fallbackSelection","_valueToItem","_selectionChange","_setSelectedItems","_setSelectedItem","IronMultiSelectableBehavior","IronMenuBehaviorImpl","IronMenuBehavior","focusedItem","attrForItemTitle","_MODIFIER_KEYS","_SEARCH_RESET_TIMEOUT_MS","_previousTabIndex","keydown","iron-items-changed","esc","_resetTabindices","_defaultFocusAsync","cancelAsync","_setFocusedItem","firstSelectedItem","items","isSelected","_updateMultiselectable","_focusWithKeyboardEvent","cancelDebouncer","searchText","_searchText","searchLength","toLocaleLowerCase","title","debounce","_clearSearchText","_focusPrevious","curFocusIndex","owner","getOwnerRoot","_focusNext","_applySelection","_focusedItemChanged","_onIronItemsChanged","addedNodes","_onUpKey","_onDownKey","_onEscKey","_onKeydown","_activateHandler","IronSelection","selectCallback","selection","excludes","attrForSelected","activateEvent","selectable","selectedClass","selectedAttribute","_excludedLocalNames","dom-bind","dom-if","dom-repeat","_bindFilterItem","_filterItem","_observeItems","_addListener","_removeListener","selectPrevious","_valueToIndex","selectNext","selectIndex","forceSynchronousItemUpdate","_updateItems","_checkFallback","_activateEventChanged","queryDistributedElements","_setItems","_valueForItem","propValue","toggleAttribute","mutation","_itemActivate","NeonAnimatableBehavior","animationConfig","entryAnimation","exitAnimation","_entryAnimationChanged","_exitAnimationChanged","_copyProperties","config1","config2","_cloneConfig","config","clone","isClone","_getAnimationConfigRecursive","allConfigs","thisConfig","_warn","_logf","animatable","cachedConfig","getAnimationConfig","NeonAnimationRunnerBehavior","_configureAnimations","configs","resultsToPlay","neonAnimation","isNeonAnimation","configure","timeline","play","animation","_shouldComplete","activeEntries","finished","playState","_complete","playAnimation","cookie","_active","onfinish","cancelAnimation","entries","j","Utility","distance","x1","y1","x2","y2","xDelta","yDelta","sqrt","now","performance","Date","ElementMetrics","boundingRect","Ripple","color","wave","waveContainer","backgroundColor","resetInteractionState","furthestCornerDistanceFrom","x","y","topLeft","topRight","bottomLeft","bottomRight","MAX_RADIUS","recenters","mouseDownElapsed","elapsed","mouseDownStart","mouseUpStart","mouseUpElapsed","mouseDownElapsedSeconds","mouseUpElapsedSeconds","mouseInteractionSeconds","initialOpacity","opacityDecayVelocity","radius","width2","containerMetrics","height2","waveRadius","duration","timeNow","pow","outerOpacity","waveOpacity","isOpacityFullyDecayed","maxRadius","isRestingAtMaxRadius","isAnimationComplete","translationFraction","xNow","xEnd","xStart","yNow","yEnd","yStart","isMouseDown","slideDistance","draw","scale","dx","dy","downAction","xCenter","yCenter","upAction","ripples","animating","_animating","_boundAnimate","animate","shouldKeepAnimating","simulatedRipple","addRipple","uiUpAction","onAnimationComplete","background","waves","_setAnimating","removeRipple","rippleIndex","animateRipple","_onEnterKeydown","_onSpaceKeydown","_onSpaceKeyup","_holdDownChanged","newVal","oldVal","MDCFoundation","adapter","adapter_","init","destroy","$_documentContainer","__coolingDown","__computeContainerClasses","coolingDown","__activeChanged","__setAriaHidden","__altChanged","hidden","__reset","AppLayoutBehavior","hasScrollingRegion","header","headerSlot","_updateLayoutStates","wrapper","scrollTarget","contentContainer","ownerDocument","headerHeight","offsetHeight","rightOffset","containerStyle","fixed","condenses","paddingTop","_polymer_iron_resizable_behavior_iron_resizable_behavior_js__WEBPACK_IMPORTED_MODULE_1__","_polymer_polymer_lib_legacy_polymer_dom_js__WEBPACK_IMPORTED_MODULE_2__","_polymer_polymer_lib_utils_async_js__WEBPACK_IMPORTED_MODULE_3__","_polymer_polymer_lib_utils_debounce_js__WEBPACK_IMPORTED_MODULE_4__","_polymer_polymer_lib_utils_flush_js__WEBPACK_IMPORTED_MODULE_5__","app-reset-layout","_appResetLayoutHandler","resetLayout","_layoutDebouncer","Debouncer","animationFrame","enqueueDebouncer","_notifyDescendantResize","_notifyLayoutChanged","self","link","_updateNoink","_parentNoink","_onTap","anchor","queryEffectiveChildren","IronMenubarBehaviorImpl","IronMenubarBehavior","_iron_menu_behavior_js__WEBPACK_IMPORTED_MODULE_1__","_onLeftKey","_onRightKey","PaperCheckedElementBehavior","aria-checked","radioContainer","afterNextRender","getComputedStyleValue","parseFloat","defaultInkSize","floor","updateStyles","--paper-radio-button-ink-size","supportsPassive_","applyPassive","globalObj","forceRefresh","isSupported_1","supportsCssVariables_","cssClasses","BG_FOCUSED","FG_ACTIVATION","FG_DEACTIVATION","ROOT","UNBOUNDED","VAR_FG_SCALE","VAR_FG_SIZE","VAR_FG_TRANSLATE_END","VAR_FG_TRANSLATE_START","VAR_LEFT","VAR_TOP","numbers","DEACTIVATION_TIMEOUT_MS","FG_DEACTIVATION_MS","INITIAL_ORIGIN_SCALE","PADDING","TAP_DELAY_MS","ACTIVATION_EVENT_TYPES","POINTER_DEACTIVATION_EVENT_TYPES","activatedTargets","ripple_foundation","_super","MDCRippleFoundation","defaultAdapter","activationAnimationHasEnded_","activationTimer_","fgDeactivationRemovalTimer_","fgScale_","frame_","initialSize_","layoutFrame_","maxRadius_","unboundedCoords_","activationState_","defaultActivationState_","activationTimerCallback_","runDeactivationUXLogicIfReady_","activateHandler_","activate_","deactivateHandler_","deactivate_","focusHandler_","blurHandler_","resizeHandler_","layout","addClass","browserSupportsCssVars","computeBoundingRect","containsEventTarget","deregisterDocumentInteractionHandler","deregisterInteractionHandler","deregisterResizeHandler","getWindowPageOffset","isSurfaceActive","isSurfaceDisabled","isUnbounded","registerDocumentInteractionHandler","registerInteractionHandler","registerResizeHandler","removeClass","updateCssVariable","supportsPressRipple","supportsPressRipple_","registerRootHandlers_","_a","ROOT_1","UNBOUNDED_1","layoutInternal_","ROOT_2","UNBOUNDED_2","removeCssVars_","deregisterRootHandlers_","deregisterDeactivationHandlers_","activate","evt","deactivate","setUnbounded","activationEvent","hasDeactivationUXRun","isActivated","isProgrammatic","wasActivatedByPointer","wasElementMadeActive","evtType","registerDeactivationHandlers_","rippleStrings","activationState","previousActivationEvent","previousActivationEvent_","some","resetActivationState_","checkElementMadeActive_","animateActivation_","_b","translateStart","translateEnd","_c","getFgTranslationCoordinates_","startPoint","endPoint","rmBoundedActivationClasses_","pageOffset","clientRect","normalizedX","normalizedY","documentX","documentY","touchEvent","changedTouches","mouseEvent","getNormalizedEventCoords","animateDeactivation_","maxDim","updateLayoutCssVars_","round","foundation","supportsCssVariablesWin","windowObj","CSS","supportsCssVars","supports","explicitlySupportsCssVars","weAreFeatureDetectingSafari10plus","computedStyle","hasPseudoVarBug","borderTopStyle","detectEdgePseudoVarBug","supportsCssVariables","isSafari","navigator","userAgent","didApplyRippleStyle","ripple_directive_rippleNode","ripple_directive_applyRippleStyle","surfaceNode","interactionNode","getRootNode","rippleFoundation","contains","handler","varName","setProperty","pageXOffset","pageYOffset","rippleInteractionNodes","existingInteractionNode","openAnimationConfig","closeAnimationConfig","focusTarget","noAnimations","allowOutsideScroll","neon-animation-finish","containedElement","_readied","_updateAnimationConfig","contentWrapper","_onNeonAnimationFinish","animationNode","animations","_updateOverlayPosition","_allowOutsideScrollChanged","NeonAnimationBehavior","animationTiming","easing","fill","timingFromConfig","timing","setPrefixedProperty","prefixes","transformOrigin","_effect","KeyframeEffect","ANIMATION_CUBIC_BEZIER","MAX_ANIMATION_TIME_MS","PaperMenuButton","paper_menu_button_templateObject","ignoreSelect","closeOnActivate","delay","_dropdownContent","aria-haspopup","iron-activate","iron-select","contentElement","dropdown","_onIronSelect","_onIronActivate","oldOpened","__onIronOverlayCanceled","uiEvent","trigger","IronScrollTargetBehavior","_defaultScrollTarget","_shouldHaveListener","_scrollTargetChanged","_oldScrollTarget","_toggleScrollListener","_doc","domHost","_isValidScrollTarget","_scrollHandler","_scrollTop","_scrollLeft","scrollTo","scroll","leftOrOptions","_scrollTargetWidth","offsetWidth","_scrollTargetHeight","yes","eventTarget","toggleScrollListener","_scrollEffects","AppScrollEffectsBehavior","effects","effectsConfig","threshold","thresholdTriggered","_updateScrollState","isOnScreen","isContentBelow","_effectsRunFn","_effects","_clampedScrollTop","_scrollStateChanged","_tearDownEffects","createEffect","effectName","effectConfig","effectDef","ReferenceError","_getUndefinedMsg","_boundEffect","setUp","_effectsChanged","_setUpEffect","_layoutIfDirty","startsAt","endsAt","deltaS","noop","runFn","run","progress","tearDown","_runEffects","_setThresholdTriggered","_getDOMRef","reveals","shadow","_height","_dHeight","_stickyElTop","_stickyElRef","_top","_progress","_wasScrollingDown","_initScrollTop","_initTimestamp","_lastTimestamp","_lastScrollTop","_maxHeaderTop","_stickyEl","slot","_configChanged","firstSetup","currentDisabled","_mayMove","offsetTop","forceUpdate","lastTop","maxHeaderTop","dScrollTop","absDScrollTop","isScrollingDown","_clamp","scrollVelocity","_transformHeader","willCondense","translate3d","_ensureBgContainers","_bgContainer","_bgRear","_bgFront","getScrollState","IronCheckedElementBehaviorImpl","checked","_hasIronCheckedElementBehavior","_value","_requiredChanged","_checkedChanged","_valueChanged","IronCheckedElementBehavior","PaperCheckedElementBehaviorImpl","_catch","recover","then","asyncIterator","unsubscribeEvents","subscription","const","Connection","socket","commandId","commands","eventListeners","closeRequested","setSocket","oldSocket","ev","_handleMessage","_handleClose","oldCommands","subscribe","unsub","unsubscribe","fireEvent","eventType","eventData","subscribeEvents","subscribeMessage","event_type","ping","sendMessagePromise","sendMessage","_genCmdId","send","messages","success","code","setupRetry","reconnect","tries","createSocket","tokenRequest","hassUrl","clientId","hostname","formData","FormData","append","fetch","method","credentials","resp","ok","status","json","tokens","expires","genExpires","expires_in","Auth","saveTokens","_saveTokens","prototypeAccessors","wsUrl","accessToken","access_token","expired","refreshAccessToken","grant_type","refresh_token","revoke","defineProperties","getCollection","conn","fetchCollection","subscribeUpdates","unsubProm","store","setState","overwrite","currentListeners","action","args","ret","listener","out","refresh","refreshSwallow","catch","OPEN","subscriber","createCollection","onChange","checkboxSizeText","units","unitsMatches","checkboxSize","--paper-checkbox-ink-size","_computeCheckboxClass","_computeCheckmarkClass","checkboxContainer","allowEmptySelection","newItem","oldItem","_activateFocusedItem","exports","m","toStringTag","__esModule","writable","h","maxPatternLength","u","caseSensitive","tokenSeparator","g","findAllMatches","minMatchCharLength","S","M","_","shouldSort","L","w","getFn","A","C","sortFn","I","score","O","tokenize","P","matchAllTokens","F","T","includeMatches","E","includeScore","K","verbose","J","TypeError","isCaseSensitive","setCollection","limit","_log","_prepareSearchers","tokenSearchers","fullSearcher","_search","weights","_computeScore","_sort","_format","_analyze","record","resultMap","weight","arrayIndex","search","isMatch","output","matchedIndices","nScore","indices","log","patternAlphabet","errors","currentLocation","expectedLocation","charAt","module","__WEBPACK_AMD_DEFINE_RESULT__","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","webpackPolyfill","deprecate","paths","repeat","createAndInsertPart","containerPart","beforePart","beforeNode","newPart","updatePart","insertPartBefore","removePart","generateMap","partListCache","keyListCache","keyFnOrTemplate","keyFn","newKeyToIndexMap","oldKeyToIndexMap","oldParts","oldKeys","newParts","newValues","newKeys","oldHead","oldTail","newHead","newTail","oldIndex","oldPart","_newPart","_oldPart","paper_tabs_templateObject","noBar","noSlide","scrollable","fitContainer","disableDrag","hideScrollButtons","alignBottom","autoselect","autoselectDelay","_holdDelay","_leftHidden","_rightHidden","_previousTab","iron-deselect","left:keyup right:keyup","_holdJob","_pendingActivationItem","_pendingActivationTimeout","_bindDelayedActivationHandler","_delayedActivationHandler","_onBlurCapture","setScrollDirection","tabsContainer","_cancelPendingActivation","_setNoinkAttribute","_removeNoinkAttribute","_computeScrollButtonClass","hideThisButton","_computeTabsContentClass","_computeSelectionBarClass","_onTabSizingChanged","_scroll","_tabChanged","_onIronDeselect","_scheduleActivation","_onArrowKeyup","_tabContainerScrollSize","ddx","_affectScroll","_down","_onLeftScrollButtonDown","_scrollToLeft","setInterval","_onRightScrollButtonDown","_scrollToRight","_onScrollButtonUp","clearInterval","tab","selectionBar","_positionBar","tabsContent","tabRect","tabOffsetLeft","_pos","_calcPercent","oldRect","moveRight","_left","_scrollToSelectedIfNeeded","tabWidth","w0","_width","_onBarTransitionEnd","cl"],"mappings":"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","file":"chunk.12902324b918e12549ba.js","sourcesContent":["/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * @module shady-render\n */\n\nimport {isTemplatePartActive, Template, TemplatePart} from './template.js';\n\nconst walkerNodeFilter = 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */;\n\n/**\n * Removes the list of nodes from a Template safely. In addition to removing\n * nodes from the Template, the Template part indices are updated to match\n * the mutated Template DOM.\n *\n * As the template is walked the removal state is tracked and\n * part indices are adjusted as needed.\n *\n * div\n * div#1 (remove) <-- start removing (removing node is div#1)\n * div\n * div#2 (remove) <-- continue removing (removing node is still div#1)\n * div\n * div <-- stop removing since previous sibling is the removing node (div#1,\n * removed 4 nodes)\n */\nexport function removeNodesFromTemplate(\n template: Template, nodesToRemove: Set) {\n const {element: {content}, parts} = template;\n const walker =\n document.createTreeWalker(content, walkerNodeFilter, null, false);\n let partIndex = nextActiveIndexInTemplateParts(parts);\n let part = parts[partIndex];\n let nodeIndex = -1;\n let removeCount = 0;\n const nodesToRemoveInTemplate = [];\n let currentRemovingNode: Node|null = null;\n while (walker.nextNode()) {\n nodeIndex++;\n const node = walker.currentNode as Element;\n // End removal if stepped past the removing node\n if (node.previousSibling === currentRemovingNode) {\n currentRemovingNode = null;\n }\n // A node to remove was found in the template\n if (nodesToRemove.has(node)) {\n nodesToRemoveInTemplate.push(node);\n // Track node we're removing\n if (currentRemovingNode === null) {\n currentRemovingNode = node;\n }\n }\n // When removing, increment count by which to adjust subsequent part indices\n if (currentRemovingNode !== null) {\n removeCount++;\n }\n while (part !== undefined && part.index === nodeIndex) {\n // If part is in a removed node deactivate it by setting index to -1 or\n // adjust the index as needed.\n part.index = currentRemovingNode !== null ? -1 : part.index - removeCount;\n // go to the next active part.\n partIndex = nextActiveIndexInTemplateParts(parts, partIndex);\n part = parts[partIndex];\n }\n }\n nodesToRemoveInTemplate.forEach((n) => n.parentNode!.removeChild(n));\n}\n\nconst countNodes = (node: Node) => {\n let count = (node.nodeType === 11 /* Node.DOCUMENT_FRAGMENT_NODE */) ? 0 : 1;\n const walker = document.createTreeWalker(node, walkerNodeFilter, null, false);\n while (walker.nextNode()) {\n count++;\n }\n return count;\n};\n\nconst nextActiveIndexInTemplateParts =\n (parts: TemplatePart[], startIndex: number = -1) => {\n for (let i = startIndex + 1; i < parts.length; i++) {\n const part = parts[i];\n if (isTemplatePartActive(part)) {\n return i;\n }\n }\n return -1;\n };\n\n/**\n * Inserts the given node into the Template, optionally before the given\n * refNode. In addition to inserting the node into the Template, the Template\n * part indices are updated to match the mutated Template DOM.\n */\nexport function insertNodeIntoTemplate(\n template: Template, node: Node, refNode: Node|null = null) {\n const {element: {content}, parts} = template;\n // If there's no refNode, then put node at end of template.\n // No part indices need to be shifted in this case.\n if (refNode === null || refNode === undefined) {\n content.appendChild(node);\n return;\n }\n const walker =\n document.createTreeWalker(content, walkerNodeFilter, null, false);\n let partIndex = nextActiveIndexInTemplateParts(parts);\n let insertCount = 0;\n let walkerIndex = -1;\n while (walker.nextNode()) {\n walkerIndex++;\n const walkerNode = walker.currentNode as Element;\n if (walkerNode === refNode) {\n insertCount = countNodes(node);\n refNode.parentNode!.insertBefore(node, refNode);\n }\n while (partIndex !== -1 && parts[partIndex].index === walkerIndex) {\n // If we've inserted the node, simply adjust all subsequent parts\n if (insertCount > 0) {\n while (partIndex !== -1) {\n parts[partIndex].index += insertCount;\n partIndex = nextActiveIndexInTemplateParts(parts, partIndex);\n }\n return;\n }\n partIndex = nextActiveIndexInTemplateParts(parts, partIndex);\n }\n }\n}\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * Module to add shady DOM/shady CSS polyfill support to lit-html template\n * rendering. See the [[render]] method for details.\n *\n * @module shady-render\n * @preferred\n */\n\n/**\n * Do not remove this comment; it keeps typedoc from misplacing the module\n * docs.\n */\nimport {removeNodes} from './dom.js';\nimport {insertNodeIntoTemplate, removeNodesFromTemplate} from './modify-template.js';\nimport {RenderOptions} from './render-options.js';\nimport {parts, render as litRender} from './render.js';\nimport {templateCaches} from './template-factory.js';\nimport {TemplateInstance} from './template-instance.js';\nimport {TemplateResult} from './template-result.js';\nimport {marker, Template} from './template.js';\n\nexport {html, svg, TemplateResult} from '../lit-html.js';\n\n// Get a key to lookup in `templateCaches`.\nconst getTemplateCacheKey = (type: string, scopeName: string) =>\n `${type}--${scopeName}`;\n\nlet compatibleShadyCSSVersion = true;\n\nif (typeof window.ShadyCSS === 'undefined') {\n compatibleShadyCSSVersion = false;\n} else if (typeof window.ShadyCSS.prepareTemplateDom === 'undefined') {\n console.warn(\n `Incompatible ShadyCSS version detected. ` +\n `Please update to at least @webcomponents/webcomponentsjs@2.0.2 and ` +\n `@webcomponents/shadycss@1.3.1.`);\n compatibleShadyCSSVersion = false;\n}\n\n/**\n * Template factory which scopes template DOM using ShadyCSS.\n * @param scopeName {string}\n */\nconst shadyTemplateFactory = (scopeName: string) =>\n (result: TemplateResult) => {\n const cacheKey = getTemplateCacheKey(result.type, scopeName);\n let templateCache = templateCaches.get(cacheKey);\n if (templateCache === undefined) {\n templateCache = {\n stringsArray: new WeakMap(),\n keyString: new Map()\n };\n templateCaches.set(cacheKey, templateCache);\n }\n\n let template = templateCache.stringsArray.get(result.strings);\n if (template !== undefined) {\n return template;\n }\n\n const key = result.strings.join(marker);\n template = templateCache.keyString.get(key);\n if (template === undefined) {\n const element = result.getTemplateElement();\n if (compatibleShadyCSSVersion) {\n window.ShadyCSS!.prepareTemplateDom(element, scopeName);\n }\n template = new Template(result, element);\n templateCache.keyString.set(key, template);\n }\n templateCache.stringsArray.set(result.strings, template);\n return template;\n };\n\nconst TEMPLATE_TYPES = ['html', 'svg'];\n\n/**\n * Removes all style elements from Templates for the given scopeName.\n */\nconst removeStylesFromLitTemplates = (scopeName: string) => {\n TEMPLATE_TYPES.forEach((type) => {\n const templates = templateCaches.get(getTemplateCacheKey(type, scopeName));\n if (templates !== undefined) {\n templates.keyString.forEach((template) => {\n const {element: {content}} = template;\n // IE 11 doesn't support the iterable param Set constructor\n const styles = new Set();\n Array.from(content.querySelectorAll('style')).forEach((s: Element) => {\n styles.add(s);\n });\n removeNodesFromTemplate(template, styles);\n });\n }\n });\n};\n\nconst shadyRenderSet = new Set();\n\n/**\n * For the given scope name, ensures that ShadyCSS style scoping is performed.\n * This is done just once per scope name so the fragment and template cannot\n * be modified.\n * (1) extracts styles from the rendered fragment and hands them to ShadyCSS\n * to be scoped and appended to the document\n * (2) removes style elements from all lit-html Templates for this scope name.\n *\n * Note, \n \n
    \n
    horizontal layout center alignment
    \n
    \n `;\n document.body.appendChild(template.content);\n ```\n\n2. [Custom CSS\nmixins](https://github.com/PolymerElements/iron-flex-layout/blob/master/iron-flex-layout.html).\nThe mixin stylesheet includes custom CSS mixins that can be applied inside a CSS\nrule using the `@apply` function.\n\nPlease note that the old [/deep/ layout\nclasses](https://github.com/PolymerElements/iron-flex-layout/tree/master/classes)\nare deprecated, and should not be used. To continue using layout properties\ndirectly in markup, please switch to using the new `dom-module`-based\n[layout\nclasses](https://github.com/PolymerElements/iron-flex-layout/tree/master/iron-flex-layout-classes.html).\nPlease note that the new version does not use `/deep/`, and therefore requires\nyou to import the `dom-modules` in every element that needs to use them.\n\n@group Iron Elements\n@pseudoElement iron-flex-layout\n@demo demo/index.html\n*/\nconst template = html`\n\n \n\n\n \n`;\n\ntemplate.setAttribute('style', 'display: none;');\ndocument.head.appendChild(template.content);\n\nvar style = document.createElement('style');\nstyle.textContent = '[hidden] { display: none !important; }';\ndocument.head.appendChild(style);\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\n/* Taken from\n * https://www.google.com/design/spec/style/color.html#color-ui-color-application\n */\nimport '@polymer/polymer/polymer-legacy.js';\nimport './color.js';\n\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\nconst template = html`\n\n \n`;\ntemplate.setAttribute('style', 'display: none;');\ndocument.head.appendChild(template.content);\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * @module lit-html\n */\n\nimport {Part} from './part.js';\nimport {AttributeCommitter, BooleanAttributePart, EventPart, NodePart, PropertyCommitter} from './parts.js';\nimport {RenderOptions} from './render-options.js';\nimport {TemplateProcessor} from './template-processor.js';\n\n/**\n * Creates Parts when a template is instantiated.\n */\nexport class DefaultTemplateProcessor implements TemplateProcessor {\n /**\n * Create parts for an attribute-position binding, given the event, attribute\n * name, and string literals.\n *\n * @param element The element containing the binding\n * @param name The attribute name\n * @param strings The string literals. There are always at least two strings,\n * event for fully-controlled bindings with a single expression.\n */\n handleAttributeExpressions(\n element: Element, name: string, strings: string[],\n options: RenderOptions): ReadonlyArray {\n const prefix = name[0];\n if (prefix === '.') {\n const committer = new PropertyCommitter(element, name.slice(1), strings);\n return committer.parts;\n }\n if (prefix === '@') {\n return [new EventPart(element, name.slice(1), options.eventContext)];\n }\n if (prefix === '?') {\n return [new BooleanAttributePart(element, name.slice(1), strings)];\n }\n const committer = new AttributeCommitter(element, name, strings);\n return committer.parts;\n }\n /**\n * Create parts for a text-position binding.\n * @param templateFactory\n */\n handleTextExpression(options: RenderOptions) {\n return new NodePart(options);\n }\n}\n\nexport const defaultTemplateProcessor = new DefaultTemplateProcessor();\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n *\n * Main lit-html module.\n *\n * Main exports:\n *\n * - [[html]]\n * - [[svg]]\n * - [[render]]\n *\n * @module lit-html\n * @preferred\n */\n\n/**\n * Do not remove this comment; it keeps typedoc from misplacing the module\n * docs.\n */\nimport {defaultTemplateProcessor} from './lib/default-template-processor.js';\nimport {SVGTemplateResult, TemplateResult} from './lib/template-result.js';\n\nexport {DefaultTemplateProcessor, defaultTemplateProcessor} from './lib/default-template-processor.js';\nexport {directive, DirectiveFn, isDirective} from './lib/directive.js';\n// TODO(justinfagnani): remove line when we get NodePart moving methods\nexport {removeNodes, reparentNodes} from './lib/dom.js';\nexport {noChange, nothing, Part} from './lib/part.js';\nexport {AttributeCommitter, AttributePart, BooleanAttributePart, EventPart, isIterable, isPrimitive, NodePart, PropertyCommitter, PropertyPart} from './lib/parts.js';\nexport {RenderOptions} from './lib/render-options.js';\nexport {parts, render} from './lib/render.js';\nexport {templateCaches, templateFactory} from './lib/template-factory.js';\nexport {TemplateInstance} from './lib/template-instance.js';\nexport {TemplateProcessor} from './lib/template-processor.js';\nexport {SVGTemplateResult, TemplateResult} from './lib/template-result.js';\nexport {createMarker, isTemplatePartActive, Template} from './lib/template.js';\n\ndeclare global {\n interface Window {\n litHtmlVersions: string[];\n }\n}\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for lit-html usage.\n// TODO(justinfagnani): inject version number at build time\n(window['litHtmlVersions'] || (window['litHtmlVersions'] = [])).push('1.1.2');\n\n/**\n * Interprets a template literal as an HTML template that can efficiently\n * render to and update a container.\n */\nexport const html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n new TemplateResult(strings, values, 'html', defaultTemplateProcessor);\n\n/**\n * Interprets a template literal as an SVG template that can efficiently\n * render to and update a container.\n */\nexport const svg = (strings: TemplateStringsArray, ...values: unknown[]) =>\n new SVGTemplateResult(strings, values, 'svg', defaultTemplateProcessor);\n","/**\n@license\nCopyright 2019 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {HTMLElementWithRipple} from '@material/mwc-base/form-element';\nimport {ripple} from '@material/mwc-ripple/ripple-directive.js';\nimport {html, LitElement, property, query} from 'lit-element';\nimport {classMap} from 'lit-html/directives/class-map';\n\nexport class ButtonBase extends LitElement {\n @property({type: Boolean}) raised = false;\n\n @property({type: Boolean}) unelevated = false;\n\n @property({type: Boolean}) outlined = false;\n\n @property({type: Boolean}) dense = false;\n\n @property({type: Boolean, reflect: true}) disabled = false;\n\n @property({type: Boolean}) trailingIcon = false;\n\n @property() icon = '';\n\n @property() label = '';\n\n @query('#button') buttonElement!: HTMLElementWithRipple;\n\n protected createRenderRoot() {\n return this.attachShadow({mode: 'open', delegatesFocus: true});\n }\n\n focus() {\n const buttonElement = this.buttonElement;\n if (buttonElement) {\n const ripple = buttonElement.ripple;\n if (ripple) {\n ripple.handleFocus();\n }\n\n buttonElement.focus();\n }\n }\n\n blur() {\n const buttonElement = this.buttonElement;\n if (buttonElement) {\n const ripple = buttonElement.ripple;\n if (ripple) {\n ripple.handleBlur();\n }\n\n buttonElement.blur();\n }\n }\n\n protected render() {\n const classes = {\n 'mdc-button--raised': this.raised,\n 'mdc-button--unelevated': this.unelevated,\n 'mdc-button--outlined': this.outlined,\n 'mdc-button--dense': this.dense,\n };\n const mdcButtonIcon =\n html`${this.icon}`;\n const buttonRipple = ripple({unbounded: false});\n return html`\n `;\n }\n}\n","/**\n@license\nCopyright 2018 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {css} from 'lit-element';\n\nexport const style = css`.mdc-button{font-family:Roboto, sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-size:.875rem;line-height:2.25rem;font-weight:500;letter-spacing:.0892857143em;text-decoration:none;text-transform:uppercase;padding:0 8px 0 8px;display:inline-flex;position:relative;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;border-radius:4px}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{background-color:transparent;color:rgba(0,0,0,.37);cursor:default;pointer-events:none}.mdc-button .mdc-button__ripple{border-radius:4px}.mdc-button:not(:disabled){background-color:transparent}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;width:18px;height:18px;font-size:18px;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__touch{position:absolute;top:50%;right:0;left:0;height:48px;transform:translateY(-50%)}.mdc-button:not(:disabled){color:#6200ee;color:var(--mdc-theme-primary, #6200ee)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--raised .mdc-button__icon,.mdc-button--unelevated .mdc-button__icon,.mdc-button--outlined .mdc-button__icon{margin-left:-4px;margin-right:8px}[dir=rtl] .mdc-button--raised .mdc-button__icon,.mdc-button--raised .mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--unelevated .mdc-button__icon,.mdc-button--unelevated .mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--outlined .mdc-button__icon,.mdc-button--outlined .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mdc-button--raised .mdc-button__label+.mdc-button__icon,.mdc-button--unelevated .mdc-button__label+.mdc-button__icon,.mdc-button--outlined .mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mdc-button--raised .mdc-button__label+.mdc-button__icon,.mdc-button--raised .mdc-button__label+.mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--unelevated .mdc-button__label+.mdc-button__icon,.mdc-button--unelevated .mdc-button__label+.mdc-button__icon[dir=rtl],[dir=rtl] .mdc-button--outlined .mdc-button__label+.mdc-button__icon,.mdc-button--outlined .mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mdc-button--raised,.mdc-button--unelevated{padding:0 16px 0 16px}.mdc-button--raised:disabled,.mdc-button--unelevated:disabled{background-color:rgba(0,0,0,.12);color:rgba(0,0,0,.37)}.mdc-button--raised:not(:disabled),.mdc-button--unelevated:not(:disabled){background-color:#6200ee}@supports not (-ms-ime-align: auto){.mdc-button--raised:not(:disabled),.mdc-button--unelevated:not(:disabled){background-color:var(--mdc-theme-primary, #6200ee)}}.mdc-button--raised:not(:disabled),.mdc-button--unelevated:not(:disabled){color:#fff;color:var(--mdc-theme-on-primary, #fff)}.mdc-button--raised{box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2),0px 2px 2px 0px rgba(0, 0, 0, 0.14),0px 1px 5px 0px rgba(0,0,0,.12);transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--raised:hover,.mdc-button--raised:focus{box-shadow:0px 2px 4px -1px rgba(0, 0, 0, 0.2),0px 4px 5px 0px rgba(0, 0, 0, 0.14),0px 1px 10px 0px rgba(0,0,0,.12)}.mdc-button--raised:active{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2),0px 8px 10px 1px rgba(0, 0, 0, 0.14),0px 3px 14px 2px rgba(0,0,0,.12)}.mdc-button--raised:disabled{box-shadow:0px 0px 0px 0px rgba(0, 0, 0, 0.2),0px 0px 0px 0px rgba(0, 0, 0, 0.14),0px 0px 0px 0px rgba(0,0,0,.12)}.mdc-button--outlined{border-style:solid;padding:0 15px 0 15px;border-width:1px}.mdc-button--outlined:disabled{border-color:rgba(0,0,0,.37)}.mdc-button--outlined .mdc-button__ripple{top:-1px;left:-1px;border:1px solid transparent}.mdc-button--outlined:not(:disabled){border-color:#6200ee;border-color:var(--mdc-theme-primary, #6200ee)}.mdc-button--touch{margin-top:6px;margin-bottom:6px}@keyframes mdc-ripple-fg-radius-in{from{animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1)}to{transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}}@keyframes mdc-ripple-fg-opacity-in{from{animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-out{from{animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-ripple-surface--test-edge-var-bug{--mdc-ripple-surface-test-edge-var: 1px solid #000;visibility:hidden}.mdc-ripple-surface--test-edge-var-bug::before{border:var(--mdc-ripple-surface-test-edge-var)}.mdc-button{--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-button .mdc-button__ripple::before,.mdc-button .mdc-button__ripple::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-button .mdc-button__ripple::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1}.mdc-button.mdc-ripple-upgraded .mdc-button__ripple::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-button.mdc-ripple-upgraded .mdc-button__ripple::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-button.mdc-ripple-upgraded--unbounded .mdc-button__ripple::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.mdc-button.mdc-ripple-upgraded--foreground-activation .mdc-button__ripple::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-button.mdc-ripple-upgraded--foreground-deactivation .mdc-button__ripple::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-button .mdc-button__ripple::before,.mdc-button .mdc-button__ripple::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-button.mdc-ripple-upgraded .mdc-button__ripple::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-button .mdc-button__ripple::before,.mdc-button .mdc-button__ripple::after{background-color:#6200ee}@supports not (-ms-ime-align: auto){.mdc-button .mdc-button__ripple::before,.mdc-button .mdc-button__ripple::after{background-color:var(--mdc-theme-primary, #6200ee)}}.mdc-button:hover .mdc-button__ripple::before{opacity:.04}.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__ripple::before,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__ripple::before{transition-duration:75ms;opacity:.12}.mdc-button:not(.mdc-ripple-upgraded) .mdc-button__ripple::after{transition:opacity 150ms linear}.mdc-button:not(.mdc-ripple-upgraded):active .mdc-button__ripple::after{transition-duration:75ms;opacity:.12}.mdc-button.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.12}.mdc-button .mdc-button__ripple{position:absolute;width:100%;height:100%;overflow:hidden}.mdc-button:not(.mdc-button--outlined) .mdc-button__ripple{top:0;left:0}.mdc-button--raised .mdc-button__ripple::before,.mdc-button--raised .mdc-button__ripple::after,.mdc-button--unelevated .mdc-button__ripple::before,.mdc-button--unelevated .mdc-button__ripple::after{background-color:#fff}@supports not (-ms-ime-align: auto){.mdc-button--raised .mdc-button__ripple::before,.mdc-button--raised .mdc-button__ripple::after,.mdc-button--unelevated .mdc-button__ripple::before,.mdc-button--unelevated .mdc-button__ripple::after{background-color:var(--mdc-theme-on-primary, #fff)}}.mdc-button--raised:hover .mdc-button__ripple::before,.mdc-button--unelevated:hover .mdc-button__ripple::before{opacity:.08}.mdc-button--raised.mdc-ripple-upgraded--background-focused .mdc-button__ripple::before,.mdc-button--raised:not(.mdc-ripple-upgraded):focus .mdc-button__ripple::before,.mdc-button--unelevated.mdc-ripple-upgraded--background-focused .mdc-button__ripple::before,.mdc-button--unelevated:not(.mdc-ripple-upgraded):focus .mdc-button__ripple::before{transition-duration:75ms;opacity:.24}.mdc-button--raised:not(.mdc-ripple-upgraded) .mdc-button__ripple::after,.mdc-button--unelevated:not(.mdc-ripple-upgraded) .mdc-button__ripple::after{transition:opacity 150ms linear}.mdc-button--raised:not(.mdc-ripple-upgraded):active .mdc-button__ripple::after,.mdc-button--unelevated:not(.mdc-ripple-upgraded):active .mdc-button__ripple::after{transition-duration:75ms;opacity:.24}.mdc-button--raised.mdc-ripple-upgraded,.mdc-button--unelevated.mdc-ripple-upgraded{--mdc-ripple-fg-opacity: 0.24}.mdc-button{height:36px}.material-icons{font-family:var(--mdc-icon-font, \"Material Icons\");font-weight:normal;font-style:normal;font-size:var(--mdc-icon-size, 24px);line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}:host{display:inline-flex;outline:none}:host([disabled]){pointer-events:none}.mdc-button{flex:auto}`;\n","/**\n@license\nCopyright 2018 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport {customElement} from 'lit-element';\n\nimport {ButtonBase} from './mwc-button-base.js';\nimport {style} from './mwc-button-css.js';\n\n@customElement('mwc-button')\nexport class Button extends ButtonBase {\n static styles = style;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'mwc-button': Button;\n }\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\n\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\nimport {resolveUrl} from '@polymer/polymer/lib/utils/resolve-url.js';\n\n/**\n`iron-image` is an element for displaying an image that provides useful sizing and\npreloading options not found on the standard `` tag.\n\nThe `sizing` option allows the image to be either cropped (`cover`) or\nletterboxed (`contain`) to fill a fixed user-size placed on the element.\n\nThe `preload` option prevents the browser from rendering the image until the\nimage is fully loaded. In the interim, either the element's CSS `background-color`\ncan be be used as the placeholder, or the `placeholder` property can be\nset to a URL (preferably a data-URI, for instant rendering) for an\nplaceholder image.\n\nThe `fade` option (only valid when `preload` is set) will cause the placeholder\nimage/color to be faded out once the image is rendered.\n\nExamples:\n\n Basically identical to `` tag:\n\n \n\n Will letterbox the image to fit:\n\n \n\n Will crop the image to fit:\n\n \n\n Will show light-gray background until the image loads:\n\n \n\n Will show a base-64 encoded placeholder image until the image loads:\n\n \n\n Will fade the light-gray background out once the image is loaded:\n\n \n\nCustom property | Description | Default\n----------------|-------------|----------\n`--iron-image-placeholder` | Mixin applied to #placeholder | `{}`\n`--iron-image-width` | Sets the width of the wrapped image | `auto`\n`--iron-image-height` | Sets the height of the wrapped image | `auto`\n\n@group Iron Elements\n@element iron-image\n@demo demo/index.html\n*/\nPolymer({\n _template: html`\n \n\n \n
    \n \n
    \n`,\n\n is: 'iron-image',\n\n properties: {\n /**\n * The URL of an image.\n */\n src: {type: String, value: ''},\n\n /**\n * A short text alternative for the image.\n */\n alt: {type: String, value: null},\n\n /**\n * CORS enabled images support:\n * https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image\n */\n crossorigin: {type: String, value: null},\n\n /**\n * When true, the image is prevented from loading and any placeholder is\n * shown. This may be useful when a binding to the src property is known to\n * be invalid, to prevent 404 requests.\n */\n preventLoad: {type: Boolean, value: false},\n\n /**\n * Sets a sizing option for the image. Valid values are `contain` (full\n * aspect ratio of the image is contained within the element and\n * letterboxed) or `cover` (image is cropped in order to fully cover the\n * bounds of the element), or `null` (default: image takes natural size).\n */\n sizing: {type: String, value: null, reflectToAttribute: true},\n\n /**\n * When a sizing option is used (`cover` or `contain`), this determines\n * how the image is aligned within the element bounds.\n */\n position: {type: String, value: 'center'},\n\n /**\n * When `true`, any change to the `src` property will cause the\n * `placeholder` image to be shown until the new image has loaded.\n */\n preload: {type: Boolean, value: false},\n\n /**\n * This image will be used as a background/placeholder until the src image\n * has loaded. Use of a data-URI for placeholder is encouraged for instant\n * rendering.\n */\n placeholder: {type: String, value: null, observer: '_placeholderChanged'},\n\n /**\n * When `preload` is true, setting `fade` to true will cause the image to\n * fade into place.\n */\n fade: {type: Boolean, value: false},\n\n /**\n * Read-only value that is true when the image is loaded.\n */\n loaded: {notify: true, readOnly: true, type: Boolean, value: false},\n\n /**\n * Read-only value that tracks the loading state of the image when the\n * `preload` option is used.\n */\n loading: {notify: true, readOnly: true, type: Boolean, value: false},\n\n /**\n * Read-only value that indicates that the last set `src` failed to load.\n */\n error: {notify: true, readOnly: true, type: Boolean, value: false},\n\n /**\n * Can be used to set the width of image (e.g. via binding); size may also\n * be set via CSS.\n */\n width: {observer: '_widthChanged', type: Number, value: null},\n\n /**\n * Can be used to set the height of image (e.g. via binding); size may also\n * be set via CSS.\n *\n * @attribute height\n * @type number\n * @default null\n */\n height: {observer: '_heightChanged', type: Number, value: null},\n },\n\n observers: [\n '_transformChanged(sizing, position)',\n '_loadStateObserver(src, preventLoad)'\n ],\n\n created: function() {\n this._resolvedSrc = '';\n },\n\n _imgOnLoad: function() {\n if (this.$.img.src !== this._resolveSrc(this.src)) {\n return;\n }\n\n this._setLoading(false);\n this._setLoaded(true);\n this._setError(false);\n },\n\n _imgOnError: function() {\n if (this.$.img.src !== this._resolveSrc(this.src)) {\n return;\n }\n\n this.$.img.removeAttribute('src');\n this.$.sizedImgDiv.style.backgroundImage = '';\n\n this._setLoading(false);\n this._setLoaded(false);\n this._setError(true);\n },\n\n _computePlaceholderHidden: function() {\n return !this.preload || (!this.fade && !this.loading && this.loaded);\n },\n\n _computePlaceholderClassName: function() {\n return (this.preload && this.fade && !this.loading && this.loaded) ?\n 'faded-out' :\n '';\n },\n\n _computeImgDivHidden: function() {\n return !this.sizing;\n },\n\n _computeImgDivARIAHidden: function() {\n return this.alt === '' ? 'true' : undefined;\n },\n\n _computeImgDivARIALabel: function() {\n if (this.alt !== null) {\n return this.alt;\n }\n\n // Polymer.ResolveUrl.resolveUrl will resolve '' relative to a URL x to\n // that URL x, but '' is the default for src.\n if (this.src === '') {\n return '';\n }\n\n // NOTE: Use of `URL` was removed here because IE11 doesn't support\n // constructing it. If this ends up being problematic, we should\n // consider reverting and adding the URL polyfill as a dev dependency.\n var resolved = this._resolveSrc(this.src);\n // Remove query parts, get file name.\n return resolved.replace(/[?|#].*/g, '').split('/').pop();\n },\n\n _computeImgHidden: function() {\n return !!this.sizing;\n },\n\n _widthChanged: function() {\n this.style.width = isNaN(this.width) ? this.width : this.width + 'px';\n },\n\n _heightChanged: function() {\n this.style.height = isNaN(this.height) ? this.height : this.height + 'px';\n },\n\n _loadStateObserver: function(src, preventLoad) {\n var newResolvedSrc = this._resolveSrc(src);\n if (newResolvedSrc === this._resolvedSrc) {\n return;\n }\n\n this._resolvedSrc = '';\n this.$.img.removeAttribute('src');\n this.$.sizedImgDiv.style.backgroundImage = '';\n\n if (src === '' || preventLoad) {\n this._setLoading(false);\n this._setLoaded(false);\n this._setError(false);\n } else {\n this._resolvedSrc = newResolvedSrc;\n this.$.img.src = this._resolvedSrc;\n this.$.sizedImgDiv.style.backgroundImage =\n 'url(\"' + this._resolvedSrc + '\")';\n\n this._setLoading(true);\n this._setLoaded(false);\n this._setError(false);\n }\n },\n\n _placeholderChanged: function() {\n this.$.placeholder.style.backgroundImage =\n this.placeholder ? 'url(\"' + this.placeholder + '\")' : '';\n },\n\n _transformChanged: function() {\n var sizedImgDivStyle = this.$.sizedImgDiv.style;\n var placeholderStyle = this.$.placeholder.style;\n\n sizedImgDivStyle.backgroundSize = placeholderStyle.backgroundSize =\n this.sizing;\n\n sizedImgDivStyle.backgroundPosition = placeholderStyle.backgroundPosition =\n this.sizing ? this.position : '';\n\n sizedImgDivStyle.backgroundRepeat = placeholderStyle.backgroundRepeat =\n this.sizing ? 'no-repeat' : '';\n },\n\n _resolveSrc: function(testSrc) {\n var resolved = resolveUrl(testSrc, this.$.baseURIAnchor.href);\n // NOTE: Use of `URL` was removed here because IE11 doesn't support\n // constructing it. If this ends up being problematic, we should\n // consider reverting and adding the URL polyfill as a dev dependency.\n if (resolved.length >= 2 && resolved[0] === '/' && resolved[1] !== '/') {\n // In IE location.origin might not work\n // https://connect.microsoft.com/IE/feedback/details/1763802/location-origin-is-undefined-in-ie-11-on-windows-10-but-works-on-windows-7\n resolved = (location.origin || location.protocol + '//' + location.host) +\n resolved;\n }\n return resolved;\n }\n});\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\n/**\nMaterial design:\n[Cards](https://www.google.com/design/spec/components/cards.html)\n\nShared styles that you can apply to an element to renders two shadows on top\nof each other,that create the effect of a lifted piece of paper.\n\nExample:\n\n \n \n \n\n
    \n ... content ...\n
    \n\n@group Paper Elements\n@demo demo/index.html\n*/\n\nimport '@polymer/polymer/polymer-legacy.js';\nimport '../shadow.js';\n\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\nconst template = html`\n\n \n`;\ntemplate.setAttribute('style', 'display: none;');\ndocument.head.appendChild(template.content);\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\n\nimport '@polymer/iron-flex-layout/iron-flex-layout.js';\nimport '@polymer/iron-image/iron-image.js';\nimport '@polymer/paper-styles/element-styles/paper-material-styles.js';\nimport '@polymer/paper-styles/default-theme.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\n\n/**\nMaterial design:\n[Cards](https://www.google.com/design/spec/components/cards.html)\n\n`paper-card` is a container with a drop shadow.\n\nExample:\n\n \n
    Some content
    \n
    \n Some action\n
    \n
    \n\nExample - top card image:\n\n \n ...\n \n\n### Accessibility\n\nBy default, the `aria-label` will be set to the value of the `heading`\nattribute.\n\n### Styling\n\nThe following custom properties and mixins are available for styling:\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--paper-card-background-color` | The background color of the card | `--primary-background-color`\n`--paper-card-header-color` | The color of the header text | `#000`\n`--paper-card-header` | Mixin applied to the card header section | `{}`\n`--paper-card-header-text` | Mixin applied to the title in the card header section | `{}`\n`--paper-card-header-image` | Mixin applied to the image in the card header section | `{}`\n`--paper-card-header-image-text` | Mixin applied to the text overlapping the image in the card header section | `{}`\n`--paper-card-content` | Mixin applied to the card content section| `{}`\n`--paper-card-actions` | Mixin applied to the card action section | `{}`\n`--paper-card` | Mixin applied to the card | `{}`\n\n@group Paper Elements\n@element paper-card\n@demo demo/index.html\n*/\nPolymer({\n _template: html`\n \n\n
    \n \n
    [[heading]]
    \n
    \n\n \n`,\n\n is: 'paper-card',\n\n properties: {\n /**\n * The title of the card.\n */\n heading: {type: String, value: '', observer: '_headingChanged'},\n\n /**\n * The url of the title image of the card.\n */\n image: {type: String, value: ''},\n\n /**\n * The text alternative of the card's title image.\n */\n alt: {type: String},\n\n /**\n * When `true`, any change to the image url property will cause the\n * `placeholder` image to be shown until the image is fully rendered.\n */\n preloadImage: {type: Boolean, value: false},\n\n /**\n * When `preloadImage` is true, setting `fadeImage` to true will cause the\n * image to fade into place.\n */\n fadeImage: {type: Boolean, value: false},\n\n /**\n * This image will be used as a background/placeholder until the src image\n * has loaded. Use of a data-URI for placeholder is encouraged for instant\n * rendering.\n */\n placeholderImage: {type: String, value: null},\n\n /**\n * The z-depth of the card, from 0-5.\n */\n elevation: {type: Number, value: 1, reflectToAttribute: true},\n\n /**\n * Set this to true to animate the card shadow when setting a new\n * `z` value.\n */\n animatedShadow: {type: Boolean, value: false},\n\n /**\n * Read-only property used to pass down the `animatedShadow` value to\n * the underlying paper-material style (since they have different names).\n */\n animated: {\n type: Boolean,\n reflectToAttribute: true,\n readOnly: true,\n computed: '_computeAnimated(animatedShadow)'\n }\n },\n\n /**\n * Format function for aria-hidden. Use the ! operator results in the\n * empty string when given a falsy value.\n */\n _isHidden: function(image) {\n return image ? 'false' : 'true';\n },\n\n _headingChanged: function(heading) {\n var currentHeading = this.getAttribute('heading'),\n currentLabel = this.getAttribute('aria-label');\n\n if (typeof currentLabel !== 'string' || currentLabel === currentHeading) {\n this.setAttribute('aria-label', heading);\n }\n },\n\n _computeHeadingClass: function(image) {\n return image ? ' over-image' : '';\n },\n\n _computeAnimated: function(animatedShadow) {\n return animatedShadow;\n }\n});\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * @module lit-html\n */\n\nimport {isDirective} from './directive.js';\nimport {removeNodes} from './dom.js';\nimport {noChange, nothing, Part} from './part.js';\nimport {RenderOptions} from './render-options.js';\nimport {TemplateInstance} from './template-instance.js';\nimport {TemplateResult} from './template-result.js';\nimport {createMarker} from './template.js';\n\n// https://tc39.github.io/ecma262/#sec-typeof-operator\nexport type Primitive = null|undefined|boolean|number|string|Symbol|bigint;\nexport const isPrimitive = (value: unknown): value is Primitive => {\n return (\n value === null ||\n !(typeof value === 'object' || typeof value === 'function'));\n};\nexport const isIterable = (value: unknown): value is Iterable => {\n return Array.isArray(value) ||\n // tslint:disable-next-line:no-any\n !!(value && (value as any)[Symbol.iterator]);\n};\n\n/**\n * Writes attribute values to the DOM for a group of AttributeParts bound to a\n * single attibute. The value is only set once even if there are multiple parts\n * for an attribute.\n */\nexport class AttributeCommitter {\n readonly element: Element;\n readonly name: string;\n readonly strings: ReadonlyArray;\n readonly parts: ReadonlyArray;\n dirty = true;\n\n constructor(element: Element, name: string, strings: ReadonlyArray) {\n this.element = element;\n this.name = name;\n this.strings = strings;\n this.parts = [];\n for (let i = 0; i < strings.length - 1; i++) {\n (this.parts as AttributePart[])[i] = this._createPart();\n }\n }\n\n /**\n * Creates a single part. Override this to create a differnt type of part.\n */\n protected _createPart(): AttributePart {\n return new AttributePart(this);\n }\n\n protected _getValue(): unknown {\n const strings = this.strings;\n const l = strings.length - 1;\n let text = '';\n\n for (let i = 0; i < l; i++) {\n text += strings[i];\n const part = this.parts[i];\n if (part !== undefined) {\n const v = part.value;\n if (isPrimitive(v) || !isIterable(v)) {\n text += typeof v === 'string' ? v : String(v);\n } else {\n for (const t of v) {\n text += typeof t === 'string' ? t : String(t);\n }\n }\n }\n }\n\n text += strings[l];\n return text;\n }\n\n commit(): void {\n if (this.dirty) {\n this.dirty = false;\n this.element.setAttribute(this.name, this._getValue() as string);\n }\n }\n}\n\n/**\n * A Part that controls all or part of an attribute value.\n */\nexport class AttributePart implements Part {\n readonly committer: AttributeCommitter;\n value: unknown = undefined;\n\n constructor(committer: AttributeCommitter) {\n this.committer = committer;\n }\n\n setValue(value: unknown): void {\n if (value !== noChange && (!isPrimitive(value) || value !== this.value)) {\n this.value = value;\n // If the value is a not a directive, dirty the committer so that it'll\n // call setAttribute. If the value is a directive, it'll dirty the\n // committer if it calls setValue().\n if (!isDirective(value)) {\n this.committer.dirty = true;\n }\n }\n }\n\n commit() {\n while (isDirective(this.value)) {\n const directive = this.value;\n this.value = noChange;\n directive(this);\n }\n if (this.value === noChange) {\n return;\n }\n this.committer.commit();\n }\n}\n\n/**\n * A Part that controls a location within a Node tree. Like a Range, NodePart\n * has start and end locations and can set and update the Nodes between those\n * locations.\n *\n * NodeParts support several value types: primitives, Nodes, TemplateResults,\n * as well as arrays and iterables of those types.\n */\nexport class NodePart implements Part {\n readonly options: RenderOptions;\n startNode!: Node;\n endNode!: Node;\n value: unknown = undefined;\n private __pendingValue: unknown = undefined;\n\n constructor(options: RenderOptions) {\n this.options = options;\n }\n\n /**\n * Appends this part into a container.\n *\n * This part must be empty, as its contents are not automatically moved.\n */\n appendInto(container: Node) {\n this.startNode = container.appendChild(createMarker());\n this.endNode = container.appendChild(createMarker());\n }\n\n /**\n * Inserts this part after the `ref` node (between `ref` and `ref`'s next\n * sibling). Both `ref` and its next sibling must be static, unchanging nodes\n * such as those that appear in a literal section of a template.\n *\n * This part must be empty, as its contents are not automatically moved.\n */\n insertAfterNode(ref: Node) {\n this.startNode = ref;\n this.endNode = ref.nextSibling!;\n }\n\n /**\n * Appends this part into a parent part.\n *\n * This part must be empty, as its contents are not automatically moved.\n */\n appendIntoPart(part: NodePart) {\n part.__insert(this.startNode = createMarker());\n part.__insert(this.endNode = createMarker());\n }\n\n /**\n * Inserts this part after the `ref` part.\n *\n * This part must be empty, as its contents are not automatically moved.\n */\n insertAfterPart(ref: NodePart) {\n ref.__insert(this.startNode = createMarker());\n this.endNode = ref.endNode;\n ref.endNode = this.startNode;\n }\n\n setValue(value: unknown): void {\n this.__pendingValue = value;\n }\n\n commit() {\n while (isDirective(this.__pendingValue)) {\n const directive = this.__pendingValue;\n this.__pendingValue = noChange;\n directive(this);\n }\n const value = this.__pendingValue;\n if (value === noChange) {\n return;\n }\n if (isPrimitive(value)) {\n if (value !== this.value) {\n this.__commitText(value);\n }\n } else if (value instanceof TemplateResult) {\n this.__commitTemplateResult(value);\n } else if (value instanceof Node) {\n this.__commitNode(value);\n } else if (isIterable(value)) {\n this.__commitIterable(value);\n } else if (value === nothing) {\n this.value = nothing;\n this.clear();\n } else {\n // Fallback, will render the string representation\n this.__commitText(value);\n }\n }\n\n private __insert(node: Node) {\n this.endNode.parentNode!.insertBefore(node, this.endNode);\n }\n\n private __commitNode(value: Node): void {\n if (this.value === value) {\n return;\n }\n this.clear();\n this.__insert(value);\n this.value = value;\n }\n\n private __commitText(value: unknown): void {\n const node = this.startNode.nextSibling!;\n value = value == null ? '' : value;\n // If `value` isn't already a string, we explicitly convert it here in case\n // it can't be implicitly converted - i.e. it's a symbol.\n const valueAsString: string =\n typeof value === 'string' ? value : String(value);\n if (node === this.endNode.previousSibling &&\n node.nodeType === 3 /* Node.TEXT_NODE */) {\n // If we only have a single text node between the markers, we can just\n // set its value, rather than replacing it.\n // TODO(justinfagnani): Can we just check if this.value is primitive?\n (node as Text).data = valueAsString;\n } else {\n this.__commitNode(document.createTextNode(valueAsString));\n }\n this.value = value;\n }\n\n private __commitTemplateResult(value: TemplateResult): void {\n const template = this.options.templateFactory(value);\n if (this.value instanceof TemplateInstance &&\n this.value.template === template) {\n this.value.update(value.values);\n } else {\n // Make sure we propagate the template processor from the TemplateResult\n // so that we use its syntax extension, etc. The template factory comes\n // from the render function options so that it can control template\n // caching and preprocessing.\n const instance =\n new TemplateInstance(template, value.processor, this.options);\n const fragment = instance._clone();\n instance.update(value.values);\n this.__commitNode(fragment);\n this.value = instance;\n }\n }\n\n private __commitIterable(value: Iterable): void {\n // For an Iterable, we create a new InstancePart per item, then set its\n // value to the item. This is a little bit of overhead for every item in\n // an Iterable, but it lets us recurse easily and efficiently update Arrays\n // of TemplateResults that will be commonly returned from expressions like:\n // array.map((i) => html`${i}`), by reusing existing TemplateInstances.\n\n // If _value is an array, then the previous render was of an\n // iterable and _value will contain the NodeParts from the previous\n // render. If _value is not an array, clear this part and make a new\n // array for NodeParts.\n if (!Array.isArray(this.value)) {\n this.value = [];\n this.clear();\n }\n\n // Lets us keep track of how many items we stamped so we can clear leftover\n // items from a previous render\n const itemParts = this.value as NodePart[];\n let partIndex = 0;\n let itemPart: NodePart|undefined;\n\n for (const item of value) {\n // Try to reuse an existing part\n itemPart = itemParts[partIndex];\n\n // If no existing part, create a new one\n if (itemPart === undefined) {\n itemPart = new NodePart(this.options);\n itemParts.push(itemPart);\n if (partIndex === 0) {\n itemPart.appendIntoPart(this);\n } else {\n itemPart.insertAfterPart(itemParts[partIndex - 1]);\n }\n }\n itemPart.setValue(item);\n itemPart.commit();\n partIndex++;\n }\n\n if (partIndex < itemParts.length) {\n // Truncate the parts array so _value reflects the current state\n itemParts.length = partIndex;\n this.clear(itemPart && itemPart.endNode);\n }\n }\n\n clear(startNode: Node = this.startNode) {\n removeNodes(\n this.startNode.parentNode!, startNode.nextSibling!, this.endNode);\n }\n}\n\n/**\n * Implements a boolean attribute, roughly as defined in the HTML\n * specification.\n *\n * If the value is truthy, then the attribute is present with a value of\n * ''. If the value is falsey, the attribute is removed.\n */\nexport class BooleanAttributePart implements Part {\n readonly element: Element;\n readonly name: string;\n readonly strings: ReadonlyArray;\n value: unknown = undefined;\n private __pendingValue: unknown = undefined;\n\n constructor(element: Element, name: string, strings: ReadonlyArray) {\n if (strings.length !== 2 || strings[0] !== '' || strings[1] !== '') {\n throw new Error(\n 'Boolean attributes can only contain a single expression');\n }\n this.element = element;\n this.name = name;\n this.strings = strings;\n }\n\n setValue(value: unknown): void {\n this.__pendingValue = value;\n }\n\n commit() {\n while (isDirective(this.__pendingValue)) {\n const directive = this.__pendingValue;\n this.__pendingValue = noChange;\n directive(this);\n }\n if (this.__pendingValue === noChange) {\n return;\n }\n const value = !!this.__pendingValue;\n if (this.value !== value) {\n if (value) {\n this.element.setAttribute(this.name, '');\n } else {\n this.element.removeAttribute(this.name);\n }\n this.value = value;\n }\n this.__pendingValue = noChange;\n }\n}\n\n/**\n * Sets attribute values for PropertyParts, so that the value is only set once\n * even if there are multiple parts for a property.\n *\n * If an expression controls the whole property value, then the value is simply\n * assigned to the property under control. If there are string literals or\n * multiple expressions, then the strings are expressions are interpolated into\n * a string first.\n */\nexport class PropertyCommitter extends AttributeCommitter {\n readonly single: boolean;\n\n constructor(element: Element, name: string, strings: ReadonlyArray) {\n super(element, name, strings);\n this.single =\n (strings.length === 2 && strings[0] === '' && strings[1] === '');\n }\n\n protected _createPart(): PropertyPart {\n return new PropertyPart(this);\n }\n\n protected _getValue() {\n if (this.single) {\n return this.parts[0].value;\n }\n return super._getValue();\n }\n\n commit(): void {\n if (this.dirty) {\n this.dirty = false;\n // tslint:disable-next-line:no-any\n (this.element as any)[this.name] = this._getValue();\n }\n }\n}\n\nexport class PropertyPart extends AttributePart {}\n\n// Detect event listener options support. If the `capture` property is read\n// from the options object, then options are supported. If not, then the thrid\n// argument to add/removeEventListener is interpreted as the boolean capture\n// value so we should only pass the `capture` property.\nlet eventOptionsSupported = false;\n\ntry {\n const options = {\n get capture() {\n eventOptionsSupported = true;\n return false;\n }\n };\n // tslint:disable-next-line:no-any\n window.addEventListener('test', options as any, options);\n // tslint:disable-next-line:no-any\n window.removeEventListener('test', options as any, options);\n} catch (_e) {\n}\n\n\ntype EventHandlerWithOptions =\n EventListenerOrEventListenerObject&Partial;\nexport class EventPart implements Part {\n readonly element: Element;\n readonly eventName: string;\n readonly eventContext?: EventTarget;\n value: undefined|EventHandlerWithOptions = undefined;\n private __options?: AddEventListenerOptions;\n private __pendingValue: undefined|EventHandlerWithOptions = undefined;\n private readonly __boundHandleEvent: (event: Event) => void;\n\n constructor(element: Element, eventName: string, eventContext?: EventTarget) {\n this.element = element;\n this.eventName = eventName;\n this.eventContext = eventContext;\n this.__boundHandleEvent = (e) => this.handleEvent(e);\n }\n\n setValue(value: undefined|EventHandlerWithOptions): void {\n this.__pendingValue = value;\n }\n\n commit() {\n while (isDirective(this.__pendingValue)) {\n const directive = this.__pendingValue;\n this.__pendingValue = noChange as EventHandlerWithOptions;\n directive(this);\n }\n if (this.__pendingValue === noChange) {\n return;\n }\n\n const newListener = this.__pendingValue;\n const oldListener = this.value;\n const shouldRemoveListener = newListener == null ||\n oldListener != null &&\n (newListener.capture !== oldListener.capture ||\n newListener.once !== oldListener.once ||\n newListener.passive !== oldListener.passive);\n const shouldAddListener =\n newListener != null && (oldListener == null || shouldRemoveListener);\n\n if (shouldRemoveListener) {\n this.element.removeEventListener(\n this.eventName, this.__boundHandleEvent, this.__options);\n }\n if (shouldAddListener) {\n this.__options = getOptions(newListener);\n this.element.addEventListener(\n this.eventName, this.__boundHandleEvent, this.__options);\n }\n this.value = newListener;\n this.__pendingValue = noChange as EventHandlerWithOptions;\n }\n\n handleEvent(event: Event) {\n if (typeof this.value === 'function') {\n this.value.call(this.eventContext || this.element, event);\n } else {\n (this.value as EventListenerObject).handleEvent(event);\n }\n }\n}\n\n// We copy options because of the inconsistent behavior of browsers when reading\n// the third argument of add/removeEventListener. IE11 doesn't support options\n// at all. Chrome 41 only reads `capture` if the argument is an object.\nconst getOptions = (o: AddEventListenerOptions|undefined) => o &&\n (eventOptionsSupported ?\n {capture: o.capture, passive: o.passive, once: o.once} :\n o.capture as AddEventListenerOptions);\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * @module lit-html\n */\n\nimport {TemplateResult} from './template-result.js';\n\n/**\n * An expression marker with embedded unique key to avoid collision with\n * possible text in templates.\n */\nexport const marker = `{{lit-${String(Math.random()).slice(2)}}}`;\n\n/**\n * An expression marker used text-positions, multi-binding attributes, and\n * attributes with markup-like text values.\n */\nexport const nodeMarker = ``;\n\nexport const markerRegex = new RegExp(`${marker}|${nodeMarker}`);\n\n/**\n * Suffix appended to all bound attribute names.\n */\nexport const boundAttributeSuffix = '$lit$';\n\n/**\n * An updateable Template that tracks the location of dynamic parts.\n */\nexport class Template {\n readonly parts: TemplatePart[] = [];\n readonly element: HTMLTemplateElement;\n\n constructor(result: TemplateResult, element: HTMLTemplateElement) {\n this.element = element;\n\n const nodesToRemove: Node[] = [];\n const stack: Node[] = [];\n // Edge needs all 4 parameters present; IE11 needs 3rd parameter to be null\n const walker = document.createTreeWalker(\n element.content,\n 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */,\n null,\n false);\n // Keeps track of the last index associated with a part. We try to delete\n // unnecessary nodes, but we never want to associate two different parts\n // to the same index. They must have a constant node between.\n let lastPartIndex = 0;\n let index = -1;\n let partIndex = 0;\n const {strings, values: {length}} = result;\n while (partIndex < length) {\n const node = walker.nextNode() as Element | Comment | Text | null;\n if (node === null) {\n // We've exhausted the content inside a nested template element.\n // Because we still have parts (the outer for-loop), we know:\n // - There is a template in the stack\n // - The walker will find a nextNode outside the template\n walker.currentNode = stack.pop()!;\n continue;\n }\n index++;\n\n if (node.nodeType === 1 /* Node.ELEMENT_NODE */) {\n if ((node as Element).hasAttributes()) {\n const attributes = (node as Element).attributes;\n const {length} = attributes;\n // Per\n // https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap,\n // attributes are not guaranteed to be returned in document order.\n // In particular, Edge/IE can return them out of order, so we cannot\n // assume a correspondence between part index and attribute index.\n let count = 0;\n for (let i = 0; i < length; i++) {\n if (endsWith(attributes[i].name, boundAttributeSuffix)) {\n count++;\n }\n }\n while (count-- > 0) {\n // Get the template literal section leading up to the first\n // expression in this attribute\n const stringForPart = strings[partIndex];\n // Find the attribute name\n const name = lastAttributeNameRegex.exec(stringForPart)![2];\n // Find the corresponding attribute\n // All bound attributes have had a suffix added in\n // TemplateResult#getHTML to opt out of special attribute\n // handling. To look up the attribute value we also need to add\n // the suffix.\n const attributeLookupName =\n name.toLowerCase() + boundAttributeSuffix;\n const attributeValue =\n (node as Element).getAttribute(attributeLookupName)!;\n (node as Element).removeAttribute(attributeLookupName);\n const statics = attributeValue.split(markerRegex);\n this.parts.push({type: 'attribute', index, name, strings: statics});\n partIndex += statics.length - 1;\n }\n }\n if ((node as Element).tagName === 'TEMPLATE') {\n stack.push(node);\n walker.currentNode = (node as HTMLTemplateElement).content;\n }\n } else if (node.nodeType === 3 /* Node.TEXT_NODE */) {\n const data = (node as Text).data;\n if (data.indexOf(marker) >= 0) {\n const parent = node.parentNode!;\n const strings = data.split(markerRegex);\n const lastIndex = strings.length - 1;\n // Generate a new text node for each literal section\n // These nodes are also used as the markers for node parts\n for (let i = 0; i < lastIndex; i++) {\n let insert: Node;\n let s = strings[i];\n if (s === '') {\n insert = createMarker();\n } else {\n const match = lastAttributeNameRegex.exec(s);\n if (match !== null && endsWith(match[2], boundAttributeSuffix)) {\n s = s.slice(0, match.index) + match[1] +\n match[2].slice(0, -boundAttributeSuffix.length) + match[3];\n }\n insert = document.createTextNode(s);\n }\n parent.insertBefore(insert, node);\n this.parts.push({type: 'node', index: ++index});\n }\n // If there's no text, we must insert a comment to mark our place.\n // Else, we can trust it will stick around after cloning.\n if (strings[lastIndex] === '') {\n parent.insertBefore(createMarker(), node);\n nodesToRemove.push(node);\n } else {\n (node as Text).data = strings[lastIndex];\n }\n // We have a part for each match found\n partIndex += lastIndex;\n }\n } else if (node.nodeType === 8 /* Node.COMMENT_NODE */) {\n if ((node as Comment).data === marker) {\n const parent = node.parentNode!;\n // Add a new marker node to be the startNode of the Part if any of\n // the following are true:\n // * We don't have a previousSibling\n // * The previousSibling is already the start of a previous part\n if (node.previousSibling === null || index === lastPartIndex) {\n index++;\n parent.insertBefore(createMarker(), node);\n }\n lastPartIndex = index;\n this.parts.push({type: 'node', index});\n // If we don't have a nextSibling, keep this node so we have an end.\n // Else, we can remove it to save future costs.\n if (node.nextSibling === null) {\n (node as Comment).data = '';\n } else {\n nodesToRemove.push(node);\n index--;\n }\n partIndex++;\n } else {\n let i = -1;\n while ((i = (node as Comment).data.indexOf(marker, i + 1)) !== -1) {\n // Comment node has a binding marker inside, make an inactive part\n // The binding won't work, but subsequent bindings will\n // TODO (justinfagnani): consider whether it's even worth it to\n // make bindings in comments work\n this.parts.push({type: 'node', index: -1});\n partIndex++;\n }\n }\n }\n }\n\n // Remove text binding nodes after the walk to not disturb the TreeWalker\n for (const n of nodesToRemove) {\n n.parentNode!.removeChild(n);\n }\n }\n}\n\nconst endsWith = (str: string, suffix: string): boolean => {\n const index = str.length - suffix.length;\n return index >= 0 && str.slice(index) === suffix;\n};\n\n/**\n * A placeholder for a dynamic expression in an HTML template.\n *\n * There are two built-in part types: AttributePart and NodePart. NodeParts\n * always represent a single dynamic expression, while AttributeParts may\n * represent as many expressions are contained in the attribute.\n *\n * A Template's parts are mutable, so parts can be replaced or modified\n * (possibly to implement different template semantics). The contract is that\n * parts can only be replaced, not removed, added or reordered, and parts must\n * always consume the correct number of values in their `update()` method.\n *\n * TODO(justinfagnani): That requirement is a little fragile. A\n * TemplateInstance could instead be more careful about which values it gives\n * to Part.update().\n */\nexport type TemplatePart = {\n readonly type: 'node',\n index: number\n}|{readonly type: 'attribute', index: number, readonly name: string, readonly strings: ReadonlyArray};\n\nexport const isTemplatePartActive = (part: TemplatePart) => part.index !== -1;\n\n// Allows `document.createComment('')` to be renamed for a\n// small manual size-savings.\nexport const createMarker = () => document.createComment('');\n\n/**\n * This regex extracts the attribute name preceding an attribute-position\n * expression. It does this by matching the syntax allowed for attributes\n * against the string literal directly preceding the expression, assuming that\n * the expression is in an attribute-value position.\n *\n * See attributes in the HTML spec:\n * https://www.w3.org/TR/html5/syntax.html#elements-attributes\n *\n * \" \\x09\\x0a\\x0c\\x0d\" are HTML space characters:\n * https://www.w3.org/TR/html5/infrastructure.html#space-characters\n *\n * \"\\0-\\x1F\\x7F-\\x9F\" are Unicode control characters, which includes every\n * space character except \" \".\n *\n * So an attribute is:\n * * The name: any character except a control character, space character, ('),\n * (\"), \">\", \"=\", or \"/\"\n * * Followed by zero or more space characters\n * * Followed by \"=\"\n * * Followed by zero or more space characters\n * * Followed by:\n * * Any character except space, ('), (\"), \"<\", \">\", \"=\", (`), or\n * * (\") then any non-(\"), or\n * * (') then any non-(')\n */\nexport const lastAttributeNameRegex =\n /([ \\x09\\x0a\\x0c\\x0d])([^\\0-\\x1F\\x7F-\\x9F \"'>=/]+)([ \\x09\\x0a\\x0c\\x0d]*=[ \\x09\\x0a\\x0c\\x0d]*(?:[^ \\x09\\x0a\\x0c\\x0d\"'`<>=]*|\"[^\"]*|'[^']*))$/;\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/iron-flex-layout/iron-flex-layout.js';\n\nimport {IronMeta} from '@polymer/iron-meta/iron-meta.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\nimport {Base} from '@polymer/polymer/polymer-legacy.js';\n\n/**\n\nThe `iron-icon` element displays an icon. By default an icon renders as a 24px\nsquare.\n\nExample using src:\n\n \n\nExample setting size to 32px x 32px:\n\n \n\n \n\nThe iron elements include several sets of icons. To use the default set of\nicons, import `iron-icons.js` and use the `icon` attribute to specify an icon:\n\n \n\n \n\nTo use a different built-in set of icons, import the specific\n`iron-icons/-icons.js`, and specify the icon as `:`.\nFor example, to use a communication icon, you would use:\n\n \n\n \n\nYou can also create custom icon sets of bitmap or SVG icons.\n\nExample of using an icon named `cherry` from a custom iconset with the ID\n`fruit`:\n\n \n\nSee `` and `` for more information about how to\ncreate a custom iconset.\n\nSee the `iron-icons` demo to see the icons available in the various iconsets.\n\n### Styling\n\nThe following custom properties are available for styling:\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--iron-icon` | Mixin applied to the icon | {}\n`--iron-icon-width` | Width of the icon | `24px`\n`--iron-icon-height` | Height of the icon | `24px`\n`--iron-icon-fill-color` | Fill color of the svg icon | `currentcolor`\n`--iron-icon-stroke-color` | Stroke color of the svg icon | none\n\n@group Iron Elements\n@element iron-icon\n@demo demo/index.html\n@hero hero.svg\n@homepage polymer.github.io\n*/\nPolymer({\n _template: html`\n \n`,\n\n is: 'iron-icon',\n\n properties: {\n\n /**\n * The name of the icon to use. The name should be of the form:\n * `iconset_name:icon_name`.\n */\n icon: {type: String},\n\n /**\n * The name of the theme to used, if one is specified by the\n * iconset.\n */\n theme: {type: String},\n\n /**\n * If using iron-icon without an iconset, you can set the src to be\n * the URL of an individual icon image file. Note that this will take\n * precedence over a given icon attribute.\n */\n src: {type: String},\n\n /**\n * @type {!IronMeta}\n */\n _meta: {value: Base.create('iron-meta', {type: 'iconset'})}\n\n },\n\n observers: [\n '_updateIcon(_meta, isAttached)',\n '_updateIcon(theme, isAttached)',\n '_srcChanged(src, isAttached)',\n '_iconChanged(icon, isAttached)'\n ],\n\n _DEFAULT_ICONSET: 'icons',\n\n _iconChanged: function(icon) {\n var parts = (icon || '').split(':');\n this._iconName = parts.pop();\n this._iconsetName = parts.pop() || this._DEFAULT_ICONSET;\n this._updateIcon();\n },\n\n _srcChanged: function(src) {\n this._updateIcon();\n },\n\n _usesIconset: function() {\n return this.icon || !this.src;\n },\n\n /** @suppress {visibility} */\n _updateIcon: function() {\n if (this._usesIconset()) {\n if (this._img && this._img.parentNode) {\n dom(this.root).removeChild(this._img);\n }\n if (this._iconName === '') {\n if (this._iconset) {\n this._iconset.removeIcon(this);\n }\n } else if (this._iconsetName && this._meta) {\n this._iconset = /** @type {?Polymer.Iconset} */ (\n this._meta.byKey(this._iconsetName));\n if (this._iconset) {\n this._iconset.applyIcon(this, this._iconName, this.theme);\n this.unlisten(window, 'iron-iconset-added', '_updateIcon');\n } else {\n this.listen(window, 'iron-iconset-added', '_updateIcon');\n }\n }\n } else {\n if (this._iconset) {\n this._iconset.removeIcon(this);\n }\n if (!this._img) {\n this._img = document.createElement('img');\n this._img.style.width = '100%';\n this._img.style.height = '100%';\n this._img.draggable = false;\n }\n this._img.src = this.src;\n dom(this.root).appendChild(this._img);\n }\n }\n});\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/iron-icon/iron-icon.js';\nimport '@polymer/paper-styles/default-theme.js';\n\nimport {PaperInkyFocusBehavior} from '@polymer/paper-behaviors/paper-inky-focus-behavior.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\n\n/**\nMaterial design: [Icon\ntoggles](https://www.google.com/design/spec/components/buttons.html#buttons-toggle-buttons)\n\n`paper-icon-button` is a button with an image placed at the center. When the\nuser touches the button, a ripple effect emanates from the center of the button.\n\n`paper-icon-button` does not include a default icon set. To use icons from the\ndefault set, include `PolymerElements/iron-icons/iron-icons.html`, and use the\n`icon` attribute to specify which icon from the icon set to use.\n\n \n\nSee [`iron-iconset`](iron-iconset) for more information about\nhow to use a custom icon set.\n\nExample:\n\n \n\n \n \n\nTo use `paper-icon-button` as a link, wrap it in an anchor tag. Since\n`paper-icon-button` will already receive focus, you may want to prevent the\nanchor tag from receiving focus as well by setting its tabindex to -1.\n\n \n \n \n\n### Styling\n\nStyle the button with CSS as you would a normal DOM element. If you are using\nthe icons provided by `iron-icons`, they will inherit the foreground color of\nthe button.\n\n /* make a red \"favorite\" button *\\/\n \n\nBy default, the ripple is the same color as the foreground at 25% opacity. You\nmay customize the color using the `--paper-icon-button-ink-color` custom\nproperty.\n\nThe following custom properties and mixins are available for styling:\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--paper-icon-button-disabled-text` | The color of the disabled button | `--disabled-text-color`\n`--paper-icon-button-ink-color` | Selected/focus ripple color | `--primary-text-color`\n`--paper-icon-button` | Mixin for a button | `{}`\n`--paper-icon-button-disabled` | Mixin for a disabled button | `{}`\n`--paper-icon-button-hover` | Mixin for button on hover | `{}`\n\n@group Paper Elements\n@element paper-icon-button\n@demo demo/index.html\n*/\nPolymer({\n is: 'paper-icon-button',\n\n _template: html`\n \n\n \n `,\n\n hostAttributes: {role: 'button', tabindex: '0'},\n\n behaviors: [PaperInkyFocusBehavior],\n\n registered: function() {\n this._template.setAttribute('strip-whitespace', '');\n },\n\n properties: {\n /**\n * The URL of an image for the icon. If the src property is specified,\n * the icon property should not be.\n */\n src: {type: String},\n\n /**\n * Specifies the icon name or index in the set of icons available in\n * the icon's icon set. If the icon property is specified,\n * the src property should not be.\n */\n icon: {type: String},\n\n /**\n * Specifies the alternate text for the button, for accessibility.\n */\n alt: {type: String, observer: '_altChanged'}\n },\n\n _altChanged: function(newValue, oldValue) {\n var label = this.getAttribute('aria-label');\n\n // Don't stomp over a user-set aria-label.\n if (!label || oldValue == label) {\n this.setAttribute('aria-label', newValue);\n }\n }\n});\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\n\nimport {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js';\n\n/**\n * @demo demo/index.html\n * @polymerBehavior\n */\nexport const IronControlState = {\n\n properties: {\n\n /**\n * If true, the element currently has focus.\n */\n focused: {\n type: Boolean,\n value: false,\n notify: true,\n readOnly: true,\n reflectToAttribute: true\n },\n\n /**\n * If true, the user cannot interact with this element.\n */\n disabled: {\n type: Boolean,\n value: false,\n notify: true,\n observer: '_disabledChanged',\n reflectToAttribute: true\n },\n\n /**\n * Value of the `tabindex` attribute before `disabled` was activated.\n * `null` means the attribute was not present.\n * @type {?string|undefined}\n */\n _oldTabIndex: {type: String},\n\n _boundFocusBlurHandler: {\n type: Function,\n value: function() {\n return this._focusBlurHandler.bind(this);\n }\n }\n },\n\n observers: ['_changedControlState(focused, disabled)'],\n\n /**\n * @return {void}\n */\n ready: function() {\n this.addEventListener('focus', this._boundFocusBlurHandler, true);\n this.addEventListener('blur', this._boundFocusBlurHandler, true);\n },\n\n _focusBlurHandler: function(event) {\n // Polymer takes care of retargeting events.\n this._setFocused(event.type === 'focus');\n return;\n },\n\n _disabledChanged: function(disabled, old) {\n this.setAttribute('aria-disabled', disabled ? 'true' : 'false');\n this.style.pointerEvents = disabled ? 'none' : '';\n if (disabled) {\n // Read the `tabindex` attribute instead of the `tabIndex` property.\n // The property returns `-1` if there is no `tabindex` attribute.\n // This distinction is important when restoring the value because\n // leaving `-1` hides shadow root children from the tab order.\n this._oldTabIndex = this.getAttribute('tabindex');\n this._setFocused(false);\n this.tabIndex = -1;\n this.blur();\n } else if (this._oldTabIndex !== undefined) {\n if (this._oldTabIndex === null) {\n this.removeAttribute('tabindex');\n } else {\n this.setAttribute('tabindex', this._oldTabIndex);\n }\n }\n },\n\n _changedControlState: function() {\n // _controlStateChanged is abstract, follow-on behaviors may implement it\n if (this._controlStateChanged) {\n this._controlStateChanged();\n }\n }\n\n};\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\n\n/**\n * Chrome uses an older version of DOM Level 3 Keyboard Events\n *\n * Most keys are labeled as text, but some are Unicode codepoints.\n * Values taken from:\n * http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-20071221/keyset.html#KeySet-Set\n */\nvar KEY_IDENTIFIER = {\n 'U+0008': 'backspace',\n 'U+0009': 'tab',\n 'U+001B': 'esc',\n 'U+0020': 'space',\n 'U+007F': 'del'\n};\n\n/**\n * Special table for KeyboardEvent.keyCode.\n * KeyboardEvent.keyIdentifier is better, and KeyBoardEvent.key is even better\n * than that.\n *\n * Values from:\n * https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.keyCode#Value_of_keyCode\n */\nvar KEY_CODE = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'enter',\n 27: 'esc',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 32: 'space',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 46: 'del',\n 106: '*'\n};\n\n/**\n * MODIFIER_KEYS maps the short name for modifier keys used in a key\n * combo string to the property name that references those same keys\n * in a KeyboardEvent instance.\n */\nvar MODIFIER_KEYS = {\n 'shift': 'shiftKey',\n 'ctrl': 'ctrlKey',\n 'alt': 'altKey',\n 'meta': 'metaKey'\n};\n\n/**\n * KeyboardEvent.key is mostly represented by printable character made by\n * the keyboard, with unprintable keys labeled nicely.\n *\n * However, on OS X, Alt+char can make a Unicode character that follows an\n * Apple-specific mapping. In this case, we fall back to .keyCode.\n */\nvar KEY_CHAR = /[a-z0-9*]/;\n\n/**\n * Matches a keyIdentifier string.\n */\nvar IDENT_CHAR = /U\\+/;\n\n/**\n * Matches arrow keys in Gecko 27.0+\n */\nvar ARROW_KEY = /^arrow/;\n\n/**\n * Matches space keys everywhere (notably including IE10's exceptional name\n * `spacebar`).\n */\nvar SPACE_KEY = /^space(bar)?/;\n\n/**\n * Matches ESC key.\n *\n * Value from: http://w3c.github.io/uievents-key/#key-Escape\n */\nvar ESC_KEY = /^escape$/;\n\n/**\n * Transforms the key.\n * @param {string} key The KeyBoardEvent.key\n * @param {Boolean} [noSpecialChars] Limits the transformation to\n * alpha-numeric characters.\n */\nfunction transformKey(key, noSpecialChars) {\n var validKey = '';\n if (key) {\n var lKey = key.toLowerCase();\n if (lKey === ' ' || SPACE_KEY.test(lKey)) {\n validKey = 'space';\n } else if (ESC_KEY.test(lKey)) {\n validKey = 'esc';\n } else if (lKey.length == 1) {\n if (!noSpecialChars || KEY_CHAR.test(lKey)) {\n validKey = lKey;\n }\n } else if (ARROW_KEY.test(lKey)) {\n validKey = lKey.replace('arrow', '');\n } else if (lKey == 'multiply') {\n // numpad '*' can map to Multiply on IE/Windows\n validKey = '*';\n } else {\n validKey = lKey;\n }\n }\n return validKey;\n}\n\nfunction transformKeyIdentifier(keyIdent) {\n var validKey = '';\n if (keyIdent) {\n if (keyIdent in KEY_IDENTIFIER) {\n validKey = KEY_IDENTIFIER[keyIdent];\n } else if (IDENT_CHAR.test(keyIdent)) {\n keyIdent = parseInt(keyIdent.replace('U+', '0x'), 16);\n validKey = String.fromCharCode(keyIdent).toLowerCase();\n } else {\n validKey = keyIdent.toLowerCase();\n }\n }\n return validKey;\n}\n\nfunction transformKeyCode(keyCode) {\n var validKey = '';\n if (Number(keyCode)) {\n if (keyCode >= 65 && keyCode <= 90) {\n // ascii a-z\n // lowercase is 32 offset from uppercase\n validKey = String.fromCharCode(32 + keyCode);\n } else if (keyCode >= 112 && keyCode <= 123) {\n // function keys f1-f12\n validKey = 'f' + (keyCode - 112 + 1);\n } else if (keyCode >= 48 && keyCode <= 57) {\n // top 0-9 keys\n validKey = String(keyCode - 48);\n } else if (keyCode >= 96 && keyCode <= 105) {\n // num pad 0-9\n validKey = String(keyCode - 96);\n } else {\n validKey = KEY_CODE[keyCode];\n }\n }\n return validKey;\n}\n\n/**\n * Calculates the normalized key for a KeyboardEvent.\n * @param {KeyboardEvent} keyEvent\n * @param {Boolean} [noSpecialChars] Set to true to limit keyEvent.key\n * transformation to alpha-numeric chars. This is useful with key\n * combinations like shift + 2, which on FF for MacOS produces\n * keyEvent.key = @\n * To get 2 returned, set noSpecialChars = true\n * To get @ returned, set noSpecialChars = false\n */\nfunction normalizedKeyForEvent(keyEvent, noSpecialChars) {\n // Fall back from .key, to .detail.key for artifical keyboard events,\n // and then to deprecated .keyIdentifier and .keyCode.\n if (keyEvent.key) {\n return transformKey(keyEvent.key, noSpecialChars);\n }\n if (keyEvent.detail && keyEvent.detail.key) {\n return transformKey(keyEvent.detail.key, noSpecialChars);\n }\n return transformKeyIdentifier(keyEvent.keyIdentifier) ||\n transformKeyCode(keyEvent.keyCode) || '';\n}\n\nfunction keyComboMatchesEvent(keyCombo, event) {\n // For combos with modifiers we support only alpha-numeric keys\n var keyEvent = normalizedKeyForEvent(event, keyCombo.hasModifiers);\n return keyEvent === keyCombo.key &&\n (!keyCombo.hasModifiers ||\n (!!event.shiftKey === !!keyCombo.shiftKey &&\n !!event.ctrlKey === !!keyCombo.ctrlKey &&\n !!event.altKey === !!keyCombo.altKey &&\n !!event.metaKey === !!keyCombo.metaKey));\n}\n\nfunction parseKeyComboString(keyComboString) {\n if (keyComboString.length === 1) {\n return {combo: keyComboString, key: keyComboString, event: 'keydown'};\n }\n return keyComboString.split('+')\n .reduce(function(parsedKeyCombo, keyComboPart) {\n var eventParts = keyComboPart.split(':');\n var keyName = eventParts[0];\n var event = eventParts[1];\n\n if (keyName in MODIFIER_KEYS) {\n parsedKeyCombo[MODIFIER_KEYS[keyName]] = true;\n parsedKeyCombo.hasModifiers = true;\n } else {\n parsedKeyCombo.key = keyName;\n parsedKeyCombo.event = event || 'keydown';\n }\n\n return parsedKeyCombo;\n }, {combo: keyComboString.split(':').shift()});\n}\n\nfunction parseEventString(eventString) {\n return eventString.trim().split(' ').map(function(keyComboString) {\n return parseKeyComboString(keyComboString);\n });\n}\n\n/**\n * `Polymer.IronA11yKeysBehavior` provides a normalized interface for processing\n * keyboard commands that pertain to [WAI-ARIA best\n * practices](http://www.w3.org/TR/wai-aria-practices/#kbd_general_binding). The\n * element takes care of browser differences with respect to Keyboard events and\n * uses an expressive syntax to filter key presses.\n *\n * Use the `keyBindings` prototype property to express what combination of keys\n * will trigger the callback. A key binding has the format\n * `\"KEY+MODIFIER:EVENT\": \"callback\"` (`\"KEY\": \"callback\"` or\n * `\"KEY:EVENT\": \"callback\"` are valid as well). Some examples:\n *\n * keyBindings: {\n * 'space': '_onKeydown', // same as 'space:keydown'\n * 'shift+tab': '_onKeydown',\n * 'enter:keypress': '_onKeypress',\n * 'esc:keyup': '_onKeyup'\n * }\n *\n * The callback will receive with an event containing the following information\n * in `event.detail`:\n *\n * _onKeydown: function(event) {\n * console.log(event.detail.combo); // KEY+MODIFIER, e.g. \"shift+tab\"\n * console.log(event.detail.key); // KEY only, e.g. \"tab\"\n * console.log(event.detail.event); // EVENT, e.g. \"keydown\"\n * console.log(event.detail.keyboardEvent); // the original KeyboardEvent\n * }\n *\n * Use the `keyEventTarget` attribute to set up event handlers on a specific\n * node.\n *\n * See the [demo source\n * code](https://github.com/PolymerElements/iron-a11y-keys-behavior/blob/master/demo/x-key-aware.html)\n * for an example.\n *\n * @demo demo/index.html\n * @polymerBehavior\n */\nexport const IronA11yKeysBehavior = {\n properties: {\n /**\n * The EventTarget that will be firing relevant KeyboardEvents. Set it to\n * `null` to disable the listeners.\n * @type {?EventTarget}\n */\n keyEventTarget: {\n type: Object,\n value: function() {\n return this;\n }\n },\n\n /**\n * If true, this property will cause the implementing element to\n * automatically stop propagation on any handled KeyboardEvents.\n */\n stopKeyboardEventPropagation: {type: Boolean, value: false},\n\n _boundKeyHandlers: {\n type: Array,\n value: function() {\n return [];\n }\n },\n\n // We use this due to a limitation in IE10 where instances will have\n // own properties of everything on the \"prototype\".\n _imperativeKeyBindings: {\n type: Object,\n value: function() {\n return {};\n }\n }\n },\n\n observers: ['_resetKeyEventListeners(keyEventTarget, _boundKeyHandlers)'],\n\n\n /**\n * To be used to express what combination of keys will trigger the relative\n * callback. e.g. `keyBindings: { 'esc': '_onEscPressed'}`\n * @type {!Object}\n */\n keyBindings: {},\n\n registered: function() {\n this._prepKeyBindings();\n },\n\n attached: function() {\n this._listenKeyEventListeners();\n },\n\n detached: function() {\n this._unlistenKeyEventListeners();\n },\n\n /**\n * Can be used to imperatively add a key binding to the implementing\n * element. This is the imperative equivalent of declaring a keybinding\n * in the `keyBindings` prototype property.\n *\n * @param {string} eventString\n * @param {string} handlerName\n */\n addOwnKeyBinding: function(eventString, handlerName) {\n this._imperativeKeyBindings[eventString] = handlerName;\n this._prepKeyBindings();\n this._resetKeyEventListeners();\n },\n\n /**\n * When called, will remove all imperatively-added key bindings.\n */\n removeOwnKeyBindings: function() {\n this._imperativeKeyBindings = {};\n this._prepKeyBindings();\n this._resetKeyEventListeners();\n },\n\n /**\n * Returns true if a keyboard event matches `eventString`.\n *\n * @param {KeyboardEvent} event\n * @param {string} eventString\n * @return {boolean}\n */\n keyboardEventMatchesKeys: function(event, eventString) {\n var keyCombos = parseEventString(eventString);\n for (var i = 0; i < keyCombos.length; ++i) {\n if (keyComboMatchesEvent(keyCombos[i], event)) {\n return true;\n }\n }\n return false;\n },\n\n _collectKeyBindings: function() {\n var keyBindings = this.behaviors.map(function(behavior) {\n return behavior.keyBindings;\n });\n\n if (keyBindings.indexOf(this.keyBindings) === -1) {\n keyBindings.push(this.keyBindings);\n }\n\n return keyBindings;\n },\n\n _prepKeyBindings: function() {\n this._keyBindings = {};\n\n this._collectKeyBindings().forEach(function(keyBindings) {\n for (var eventString in keyBindings) {\n this._addKeyBinding(eventString, keyBindings[eventString]);\n }\n }, this);\n\n for (var eventString in this._imperativeKeyBindings) {\n this._addKeyBinding(\n eventString, this._imperativeKeyBindings[eventString]);\n }\n\n // Give precedence to combos with modifiers to be checked first.\n for (var eventName in this._keyBindings) {\n this._keyBindings[eventName].sort(function(kb1, kb2) {\n var b1 = kb1[0].hasModifiers;\n var b2 = kb2[0].hasModifiers;\n return (b1 === b2) ? 0 : b1 ? -1 : 1;\n })\n }\n },\n\n _addKeyBinding: function(eventString, handlerName) {\n parseEventString(eventString).forEach(function(keyCombo) {\n this._keyBindings[keyCombo.event] =\n this._keyBindings[keyCombo.event] || [];\n\n this._keyBindings[keyCombo.event].push([keyCombo, handlerName]);\n }, this);\n },\n\n _resetKeyEventListeners: function() {\n this._unlistenKeyEventListeners();\n\n if (this.isAttached) {\n this._listenKeyEventListeners();\n }\n },\n\n _listenKeyEventListeners: function() {\n if (!this.keyEventTarget) {\n return;\n }\n Object.keys(this._keyBindings).forEach(function(eventName) {\n var keyBindings = this._keyBindings[eventName];\n var boundKeyHandler = this._onKeyBindingEvent.bind(this, keyBindings);\n\n this._boundKeyHandlers.push(\n [this.keyEventTarget, eventName, boundKeyHandler]);\n\n this.keyEventTarget.addEventListener(eventName, boundKeyHandler);\n }, this);\n },\n\n _unlistenKeyEventListeners: function() {\n var keyHandlerTuple;\n var keyEventTarget;\n var eventName;\n var boundKeyHandler;\n\n while (this._boundKeyHandlers.length) {\n // My kingdom for block-scope binding and destructuring assignment..\n keyHandlerTuple = this._boundKeyHandlers.pop();\n keyEventTarget = keyHandlerTuple[0];\n eventName = keyHandlerTuple[1];\n boundKeyHandler = keyHandlerTuple[2];\n\n keyEventTarget.removeEventListener(eventName, boundKeyHandler);\n }\n },\n\n _onKeyBindingEvent: function(keyBindings, event) {\n if (this.stopKeyboardEventPropagation) {\n event.stopPropagation();\n }\n\n // if event has been already prevented, don't do anything\n if (event.defaultPrevented) {\n return;\n }\n\n for (var i = 0; i < keyBindings.length; i++) {\n var keyCombo = keyBindings[i][0];\n var handlerName = keyBindings[i][1];\n if (keyComboMatchesEvent(keyCombo, event)) {\n this._triggerKeyHandler(keyCombo, handlerName, event);\n // exit the loop if eventDefault was prevented\n if (event.defaultPrevented) {\n return;\n }\n }\n }\n },\n\n _triggerKeyHandler: function(keyCombo, handlerName, keyboardEvent) {\n var detail = Object.create(keyCombo);\n detail.keyboardEvent = keyboardEvent;\n var event =\n new CustomEvent(keyCombo.event, {detail: detail, cancelable: true});\n this[handlerName].call(this, event);\n if (event.defaultPrevented) {\n keyboardEvent.preventDefault();\n }\n }\n};\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * @module lit-html\n */\n\ninterface MaybePolyfilledCe extends CustomElementRegistry {\n readonly polyfillWrapFlushCallback?: object;\n}\n\n/**\n * True if the custom elements polyfill is in use.\n */\nexport const isCEPolyfill = window.customElements !== undefined &&\n (window.customElements as MaybePolyfilledCe).polyfillWrapFlushCallback !==\n undefined;\n\n/**\n * Reparents nodes, starting from `start` (inclusive) to `end` (exclusive),\n * into another container (could be the same container), before `before`. If\n * `before` is null, it appends the nodes to the container.\n */\nexport const reparentNodes =\n (container: Node,\n start: Node|null,\n end: Node|null = null,\n before: Node|null = null): void => {\n while (start !== end) {\n const n = start!.nextSibling;\n container.insertBefore(start!, before);\n start = n;\n }\n };\n\n/**\n * Removes nodes, starting from `start` (inclusive) to `end` (exclusive), from\n * `container`.\n */\nexport const removeNodes =\n (container: Node, start: Node|null, end: Node|null = null): void => {\n while (start !== end) {\n const n = start!.nextSibling;\n container.removeChild(start!);\n start = n;\n }\n };\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\n/*\nTypographic styles are provided matching the Material Design standard styles:\nhttp://www.google.com/design/spec/style/typography.html#typography-standard-styles\n\nNote that these are English/Latin centric styles. You may need to further adjust\nline heights and weights for CJK typesetting. See the notes in the Material\nDesign typography section.\n*/\n\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/font-roboto/roboto.js';\n\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\nconst template = html`\n \n`;\ntemplate.setAttribute('style', 'display: none;');\ndocument.head.appendChild(template.content);\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * @module lit-html\n */\n\nimport {reparentNodes} from './dom.js';\nimport {TemplateProcessor} from './template-processor.js';\nimport {boundAttributeSuffix, lastAttributeNameRegex, marker, nodeMarker} from './template.js';\n\nconst commentMarker = ` ${marker} `;\n\n/**\n * The return type of `html`, which holds a Template and the values from\n * interpolated expressions.\n */\nexport class TemplateResult {\n readonly strings: TemplateStringsArray;\n readonly values: ReadonlyArray;\n readonly type: string;\n readonly processor: TemplateProcessor;\n\n constructor(\n strings: TemplateStringsArray, values: ReadonlyArray,\n type: string, processor: TemplateProcessor) {\n this.strings = strings;\n this.values = values;\n this.type = type;\n this.processor = processor;\n }\n\n /**\n * Returns a string of HTML used to create a `\n \n \n \n \n \n ']);return G=function(){return e},e}function V(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=[],o=!0,a=!1,i=void 0;try{for(var r,s=e[Symbol.iterator]();!(o=(r=s.next()).done)&&(t.push(r.value),!n||t.length!==n);o=!0);}catch(c){a=!0,i=c}finally{try{o||null==s.return||s.return()}finally{if(a)throw i}}return t}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function Y(e,n){for(var t=0;t4?"green":e>2?"yellow":"red"}},{key:"startOnBootToggled",value:function(){var e={boot:"auto"===this.addon.boot?"manual":"auto"};this.hass.callApi("POST","hassio/addons/".concat(this.addonSlug,"/options"),e)}},{key:"autoUpdateToggled",value:function(){var e={auto_update:!this.addon.auto_update};this.hass.callApi("POST","hassio/addons/".concat(this.addonSlug,"/options"),e)}},{key:"protectionToggled",value:function(){var e={protected:!this.addon.protected};this.hass.callApi("POST","hassio/addons/".concat(this.addonSlug,"/security"),e),this.set("addon.protected",!this.addon.protected)}},{key:"panelToggled",value:function(){var e={ingress_panel:!this.addon.ingress_panel};this.hass.callApi("POST","hassio/addons/".concat(this.addonSlug,"/options"),e)}},{key:"showMoreInfo",value:function(e){var n=e.target.getAttribute("id");Object(X.a)(this,{title:ee[n].title,content:ee[n].description})}},{key:"openChangelog",value:function(){var e=this;this.hass.callApi("get","hassio/addons/".concat(this.addonSlug,"/changelog")).then(function(e){return e},function(){return"Error getting changelog"}).then(function(n){Object(X.a)(e,{title:"Changelog",content:n})})}},{key:"_unistallClicked",value:function(){var e=this;if(confirm("Are you sure you want to uninstall this add-on?")){var n="hassio/addons/".concat(this.addonSlug,"/uninstall"),t={path:n};this.hass.callApi("post",n).then(function(e){t.success=!0,t.response=e},function(e){t.success=!1,t.response=e}).then(function(){e.fire("hass-api-called",t)})}}},{key:"_computeCannotIngressSidebar",value:function(e,n){return!n.ingress||!this._computeHA92plus(e)}},{key:"_computeHA92plus",value:function(e){var n=V(e.config.version.split(".",2),2),t=n[0],o=n[1];return Number(t)>0||"0"===t&&Number(o)>=92}}])&&Y(t.prototype,r),s&&Y(t,s),n}();customElements.define("hassio-addon-info",ne);var te=t(100);function oe(e){return(oe="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)}function ae(){var e=function(e,n){n||(n=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}(['\n \n ','\n \n
    \n
    \n Refresh\n
    \n
    \n ']);return ae=function(){return e},e}function ie(e,n){for(var t=0;t\n :host {\n display: block;\n }\n paper-card {\n display: block;\n }\n .errors {\n color: var(--google-red-500);\n margin-bottom: 16px;\n }\n .card-actions {\n @apply --layout;\n @apply --layout-justified;\n }\n \n \n
    \n \n\n \n \n \n \n \n \n \n \n \n
    ContainerHostDescription
    \n
    \n
    \n Reset to defaults\n Save\n
    \n
    \n ']);return ue=function(){return e},e}function pe(e,n){for(var t=0;t\n :host {\n color: var(--primary-text-color);\n --paper-card-header-color: var(--primary-text-color);\n }\n .content {\n padding: 24px 0 32px;\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n hassio-addon-info,\n hassio-addon-network,\n hassio-addon-audio,\n hassio-addon-config {\n margin-bottom: 24px;\n width: 600px;\n }\n hassio-addon-logs {\n max-width: calc(100% - 8px);\n min-width: 600px;\n }\n @media only screen and (max-width: 600px) {\n hassio-addon-info,\n hassio-addon-network,\n hassio-addon-audio,\n hassio-addon-config,\n hassio-addon-logs {\n max-width: 100%;\n min-width: 100%;\n }\n }\n \n \n
    \n \n\n \n
    \n
    \n ']);return ye=function(){return e},e}function ve(e,n){for(var t=0;t=0?n:null}:null}),e._resize();for(var n=document.createTreeWalker(e,1,null,!1);n.nextNode();){var t=n.currentNode;"A"===t.tagName&&t.host!==document.location.host?t.target="_blank":"IMG"===t.tagName&&t.addEventListener("load",e._resize)}}else 2===e._scriptLoaded&&(e.innerText=e.content)}))}}])&&r(i.prototype,f),h&&r(i,h),n}();customElements.define("ha-markdown",f)}}]); -//# sourceMappingURL=chunk.87d3a6d0178fb26762cf.js.map \ No newline at end of file diff --git a/hassio/api/panel/chunk.87d3a6d0178fb26762cf.js.gz b/hassio/api/panel/chunk.87d3a6d0178fb26762cf.js.gz deleted file mode 100644 index a97b204c7..000000000 Binary files a/hassio/api/panel/chunk.87d3a6d0178fb26762cf.js.gz and /dev/null differ diff --git a/hassio/api/panel/chunk.87d3a6d0178fb26762cf.js.map b/hassio/api/panel/chunk.87d3a6d0178fb26762cf.js.map deleted file mode 100644 index c114be5c5..000000000 --- a/hassio/api/panel/chunk.87d3a6d0178fb26762cf.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/addon-view/hassio-addon-audio.js","webpack:///./src/addon-view/hassio-addon-config.js","webpack:///../src/components/ha-icon.ts","webpack:///../src/components/ha-label-badge.ts","webpack:///./src/addon-view/hassio-addon-info.js","webpack:///./src/addon-view/hassio-addon-logs.js","webpack:///./src/addon-view/hassio-addon-network.js","webpack:///./src/addon-view/hassio-addon-view.js","webpack:///../src/components/ha-markdown.js"],"names":["HassioAddonAudio","EventsMixin","PolymerElement","html","_templateObject","hass","Object","addon","type","observer","inputDevices","Array","outputDevices","selectedInput","String","selectedOutput","error","_this","this","setProperties","audio_input","audio_output","noDevice","device","name","callApi","then","resp","dev","data","audio","input","keys","map","key","output","concat","_this2","path","slug","fire","success","body","message","customElements","define","HassioAddonConfig","hassio_addon_config_templateObject","addonSlug","config","configParsed","resetData","value","options","JSON","stringify","$","classList","remove","parse","err","add","catch","ironIconClass","get","loaded","HaIcon","_ironIconClass","_getPrototypeOf2","ha_icon_classCallCheck","_len","arguments","length","args","_key","ha_icon_possibleConstructorReturn","ha_icon_getPrototypeOf","call","apply","_iconsetName","ha_icon_inherits","node","eventName","methodName","_get","prototype","__webpack_require__","e","bind","HaLabelBadge","icon","label","description","image","LitElement","css","_templateObject6","ha_label_badge_templateObject","classMap","big","Boolean","_templateObject2","_templateObject3","_templateObject4","_templateObject5","changedProperties","ha_label_badge_get","ha_label_badge_getPrototypeOf","has","shadowRoot","getElementById","style","backgroundImage","PERMIS_DESC","rating","title","host_network","homeassistant_api","full_access","hassio_api","docker_api","host_pid","apparmor","auth_api","ingress","HassioAddonInfo","hassio_addon_info_templateObject","isRunning","computed","state","detached","version","last_version","hassio_role","webui","replace","document","location","hostname","navigate","boot","auto_update","protected","set","ingress_panel","id","target","getAttribute","showHassioMarkdownDialog","content","confirm","eventData","response","_computeHA92plus","_hass$config$version$2","_slicedToArray","split","major","minor","Number","HassioAddonLogs","hassio_addon_logs_templateObject","ANSI_HTML_STYLE","refresh","setTimeout","addonChanged","text","lastChild","removeChild","appendChild","parseTextToColoredPre","HassioAddonNetwork","hassio_addon_network_templateObject","network","network_description","items","container","host","sort","el1","el2","forEach","item","parseInt","HassioAddonView","hassio_addon_view_templateObject","route","hassio_addon_view_get","hassio_addon_view_getPrototypeOf","addEventListener","ev","apiCalled","detail","substr","lastIndexOf","history","back","routeDataChanged","routeData","info","svgWhiteList","HaMarkdown","allowSvg","_getPrototypeOf","_scriptLoaded","_renderScheduled","_resize","Promise","all","_ref","marked","filterXSS","_render","resolve","innerHTML","gfm","tables","breaks","onIgnoreTag","tag","indexOf","walker","createTreeWalker","nextNode","currentNode","tagName","innerText"],"mappings":"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","file":"chunk.87d3a6d0178fb26762cf.js","sourcesContent":["import \"web-animations-js/web-animations-next-lite.min\";\n\nimport \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport \"@polymer/paper-dropdown-menu/paper-dropdown-menu\";\nimport \"@polymer/paper-item/paper-item\";\nimport \"@polymer/paper-listbox/paper-listbox\";\nimport { html } from \"@polymer/polymer/lib/utils/html-tag\";\nimport { PolymerElement } from \"@polymer/polymer/polymer-element\";\n\nimport \"../../../src/resources/ha-style\";\nimport { EventsMixin } from \"../../../src/mixins/events-mixin\";\n\nclass HassioAddonAudio extends EventsMixin(PolymerElement) {\n static get template() {\n return html`\n \n \n
    \n \n\n \n \n \n \n \n \n \n \n \n \n
    \n
    \n Save\n
    \n
    \n `;\n }\n\n static get properties() {\n return {\n hass: Object,\n addon: {\n type: Object,\n observer: \"addonChanged\",\n },\n inputDevices: Array,\n outputDevices: Array,\n selectedInput: String,\n selectedOutput: String,\n error: String,\n };\n }\n\n addonChanged(addon) {\n this.setProperties({\n selectedInput: addon.audio_input || \"null\",\n selectedOutput: addon.audio_output || \"null\",\n });\n if (this.outputDevices) return;\n\n const noDevice = [{ device: \"null\", name: \"-\" }];\n this.hass.callApi(\"get\", \"hassio/hardware/audio\").then(\n (resp) => {\n const dev = resp.data.audio;\n const input = Object.keys(dev.input).map((key) => ({\n device: key,\n name: dev.input[key],\n }));\n const output = Object.keys(dev.output).map((key) => ({\n device: key,\n name: dev.output[key],\n }));\n this.setProperties({\n inputDevices: noDevice.concat(input),\n outputDevices: noDevice.concat(output),\n });\n },\n () => {\n this.setProperties({\n inputDevices: noDevice,\n outputDevices: noDevice,\n });\n }\n );\n }\n\n _saveSettings() {\n this.error = null;\n const path = `hassio/addons/${this.addon.slug}/options`;\n this.hass\n .callApi(\"post\", path, {\n audio_input: this.selectedInput === \"null\" ? null : this.selectedInput,\n audio_output:\n this.selectedOutput === \"null\" ? null : this.selectedOutput,\n })\n .then(\n () => {\n this.fire(\"hass-api-called\", { success: true, path: path });\n },\n (resp) => {\n this.error = resp.body.message;\n }\n );\n }\n}\n\ncustomElements.define(\"hassio-addon-audio\", HassioAddonAudio);\n","import \"@polymer/iron-autogrow-textarea/iron-autogrow-textarea\";\nimport \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport { html } from \"@polymer/polymer/lib/utils/html-tag\";\nimport { PolymerElement } from \"@polymer/polymer/polymer-element\";\n\nimport \"../../../src/components/buttons/ha-call-api-button\";\n\nclass HassioAddonConfig extends PolymerElement {\n static get template() {\n return html`\n \n \n
    \n \n \n
    \n
    \n Reset to defaults\n Save\n
    \n
    \n `;\n }\n\n static get properties() {\n return {\n hass: Object,\n addon: {\n type: Object,\n observer: \"addonChanged\",\n },\n addonSlug: String,\n config: {\n type: String,\n observer: \"configChanged\",\n },\n configParsed: Object,\n error: String,\n resetData: {\n type: Object,\n value: {\n options: null,\n },\n },\n };\n }\n\n addonChanged(addon) {\n this.config = addon ? JSON.stringify(addon.options, null, 2) : \"\";\n }\n\n configChanged(config) {\n try {\n this.$.config.classList.remove(\"syntaxerror\");\n this.configParsed = JSON.parse(config);\n } catch (err) {\n this.$.config.classList.add(\"syntaxerror\");\n this.configParsed = null;\n }\n }\n\n saveTapped() {\n this.error = null;\n\n this.hass\n .callApi(\"post\", `hassio/addons/${this.addonSlug}/options`, {\n options: this.configParsed,\n })\n .catch((resp) => {\n this.error = resp.body.message;\n });\n }\n}\n\ncustomElements.define(\"hassio-addon-config\", HassioAddonConfig);\n","import { Constructor } from \"lit-element\";\nimport \"@polymer/iron-icon/iron-icon\";\n// Not duplicate, this is for typing.\n// tslint:disable-next-line\nimport { IronIconElement } from \"@polymer/iron-icon/iron-icon\";\n\nconst ironIconClass = customElements.get(\"iron-icon\") as Constructor<\n IronIconElement\n>;\n\nlet loaded = false;\n\nexport class HaIcon extends ironIconClass {\n private _iconsetName?: string;\n\n public listen(\n node: EventTarget | null,\n eventName: string,\n methodName: string\n ): void {\n super.listen(node, eventName, methodName);\n\n if (!loaded && this._iconsetName === \"mdi\") {\n loaded = true;\n import(/* webpackChunkName: \"mdi-icons\" */ \"../resources/mdi-icons\");\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-icon\": HaIcon;\n }\n}\n\ncustomElements.define(\"ha-icon\", HaIcon);\n","import {\n html,\n LitElement,\n PropertyDeclarations,\n PropertyValues,\n TemplateResult,\n CSSResult,\n css,\n} from \"lit-element\";\nimport { classMap } from \"lit-html/directives/class-map\";\nimport \"./ha-icon\";\n\nclass HaLabelBadge extends LitElement {\n public value?: string;\n public icon?: string;\n public label?: string;\n public description?: string;\n public image?: string;\n\n static get properties(): PropertyDeclarations {\n return {\n value: {},\n icon: {},\n label: {},\n description: {},\n image: {},\n };\n }\n\n protected render(): TemplateResult | void {\n return html`\n
    \n
    \n 4),\n })}\"\n >\n ${this.icon && !this.value && !this.image\n ? html`\n \n `\n : \"\"}\n ${this.value && !this.image\n ? html`\n ${this.value}\n `\n : \"\"}\n
    \n ${this.label\n ? html`\n 5,\n })}\"\n >\n ${this.label}\n
    \n `\n : \"\"}\n \n ${this.description\n ? html`\n
    ${this.description}
    \n `\n : \"\"}\n \n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n css`\n .badge-container {\n display: inline-block;\n text-align: center;\n vertical-align: top;\n }\n .label-badge {\n position: relative;\n display: block;\n margin: 0 auto;\n width: var(--ha-label-badge-size, 2.5em);\n text-align: center;\n height: var(--ha-label-badge-size, 2.5em);\n line-height: var(--ha-label-badge-size, 2.5em);\n font-size: var(--ha-label-badge-font-size, 1.5em);\n border-radius: 50%;\n border: 0.1em solid var(--ha-label-badge-color, var(--primary-color));\n color: var(--label-badge-text-color, rgb(76, 76, 76));\n\n white-space: nowrap;\n background-color: var(--label-badge-background-color, white);\n background-size: cover;\n transition: border 0.3s ease-in-out;\n }\n .label-badge .value {\n font-size: 90%;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .label-badge .value.big {\n font-size: 70%;\n }\n .label-badge .label {\n position: absolute;\n bottom: -1em;\n /* Make the label as wide as container+border. (parent_borderwidth / font-size) */\n left: -0.2em;\n right: -0.2em;\n line-height: 1em;\n font-size: 0.5em;\n }\n .label-badge .label span {\n box-sizing: border-box;\n max-width: 100%;\n display: inline-block;\n background-color: var(--ha-label-badge-color, var(--primary-color));\n color: var(--ha-label-badge-label-color, white);\n border-radius: 1em;\n padding: 9% 16% 8% 16%; /* mostly apitalized text, not much descenders => bit more top margin */\n font-weight: 500;\n overflow: hidden;\n text-transform: uppercase;\n text-overflow: ellipsis;\n transition: background-color 0.3s ease-in-out;\n text-transform: var(--ha-label-badge-label-text-transform, uppercase);\n }\n .label-badge .label.big span {\n font-size: 90%;\n padding: 10% 12% 7% 12%; /* push smaller text a bit down to center vertically */\n }\n .badge-container .title {\n margin-top: 1em;\n font-size: var(--ha-label-badge-title-font-size, 0.9em);\n width: var(--ha-label-badge-title-width, 5em);\n font-weight: var(--ha-label-badge-title-font-weight, 400);\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: normal;\n }\n `,\n ];\n }\n\n protected updated(changedProperties: PropertyValues): void {\n super.updated(changedProperties);\n if (changedProperties.has(\"image\")) {\n this.shadowRoot!.getElementById(\"badge\")!.style.backgroundImage = this\n .image\n ? `url(${this.image})`\n : \"\";\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-label-badge\": HaLabelBadge;\n }\n}\n\ncustomElements.define(\"ha-label-badge\", HaLabelBadge);\n","import \"@polymer/iron-icon/iron-icon\";\nimport \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport \"@polymer/paper-tooltip/paper-tooltip\";\nimport \"@polymer/paper-toggle-button/paper-toggle-button\";\nimport { html } from \"@polymer/polymer/lib/utils/html-tag\";\nimport { PolymerElement } from \"@polymer/polymer/polymer-element\";\n\nimport \"../../../src/components/ha-label-badge\";\nimport \"../../../src/components/ha-markdown\";\nimport \"../../../src/components/buttons/ha-call-api-button\";\nimport \"../../../src/resources/ha-style\";\nimport { EventsMixin } from \"../../../src/mixins/events-mixin\";\nimport { navigate } from \"../../../src/common/navigate\";\n\nimport { showHassioMarkdownDialog } from \"../dialogs/markdown/show-dialog-hassio-markdown\";\nimport \"../components/hassio-card-content\";\n\nconst PERMIS_DESC = {\n rating: {\n title: \"Add-on Security Rating\",\n description:\n \"Hass.io provides a security rating to each of the add-ons, which indicates the risks involved when using this add-on. The more access an add-on requires on your system, the lower the score, thus raising the possible security risks.\\n\\nA score is on a scale from 1 to 6. Where 1 is the lowest score (considered the most insecure and highest risk) and a score of 6 is the highest score (considered the most secure and lowest risk).\",\n },\n host_network: {\n title: \"Host Network\",\n description:\n \"Add-ons usually run in their own isolated network layer, which prevents them from accessing the network of the host operating system. In some cases, this network isolation can limit add-ons in providing their services and therefore, the isolation can be lifted by the add-on author, giving the add-on full access to the network capabilities of the host machine. This gives the add-on more networking capabilities but lowers the security, hence, the security rating of the add-on will be lowered when this option is used by the add-on.\",\n },\n homeassistant_api: {\n title: \"Home Assistant API Access\",\n description:\n \"This add-on is allowed to access your running Home Assistant instance directly via the Home Assistant API. This mode handles authentication for the add-on as well, which enables an add-on to interact with Home Assistant without the need for additional authentication tokens.\",\n },\n full_access: {\n title: \"Full Hardware Access\",\n description:\n \"This add-on is given full access to the hardware of your system, by request of the add-on author. Access is comparable to the privileged mode in Docker. Since this opens up possible security risks, this feature impacts the add-on security score negatively.\\n\\nThis level of access is not granted automatically and needs to be confirmed by you. To do this, you need to disable the protection mode on the add-on manually. Only disable the protection mode if you know, need AND trust the source of this add-on.\",\n },\n hassio_api: {\n title: \"Hass.io API Access\",\n description:\n \"The add-on was given access to the Hass.io API, by request of the add-on author. By default, the add-on can access general version information of your system. When the add-on requests 'manager' or 'admin' level access to the API, it will gain access to control multiple parts of your Hass.io system. This permission is indicated by this badge and will impact the security score of the addon negatively.\",\n },\n docker_api: {\n title: \"Full Docker Access\",\n description:\n \"The add-on author has requested the add-on to have management access to the Docker instance running on your system. This mode gives the add-on full access and control to your entire Hass.io system, which adds security risks, and could damage your system when misused. Therefore, this feature impacts the add-on security score negatively.\\n\\nThis level of access is not granted automatically and needs to be confirmed by you. To do this, you need to disable the protection mode on the add-on manually. Only disable the protection mode if you know, need AND trust the source of this add-on.\",\n },\n host_pid: {\n title: \"Host Processes Namespace\",\n description:\n \"Usually, the processes the add-on runs, are isolated from all other system processes. The add-on author has requested the add-on to have access to the system processes running on the host system instance, and allow the add-on to spawn processes on the host system as well. This mode gives the add-on full access and control to your entire Hass.io system, which adds security risks, and could damage your system when misused. Therefore, this feature impacts the add-on security score negatively.\\n\\nThis level of access is not granted automatically and needs to be confirmed by you. To do this, you need to disable the protection mode on the add-on manually. Only disable the protection mode if you know, need AND trust the source of this add-on.\",\n },\n apparmor: {\n title: \"AppArmor\",\n description:\n \"AppArmor ('Application Armor') is a Linux kernel security module that restricts add-ons capabilities like network access, raw socket access, and permission to read, write, or execute specific files.\\n\\nAdd-on authors can provide their security profiles, optimized for the add-on, or request it to be disabled. If AppArmor is disabled, it will raise security risks and therefore, has a negative impact on the security score of the add-on.\",\n },\n auth_api: {\n title: \"Home Assistant Authentication\",\n description:\n \"An add-on can authenticate users against Home Assistant, allowing add-ons to give users the possibility to log into applications running inside add-ons, using their Home Assistant username/password. This badge indicates if the add-on author requests this capability.\",\n },\n ingress: {\n title: \"Ingress\",\n description:\n \"This add-on is using Ingress to embed its interface securely into Home Assistant.\",\n },\n};\n\nclass HassioAddonInfo extends EventsMixin(PolymerElement) {\n static get template() {\n return html`\n \n\n \n\n \n\n \n
    \n
    \n [[addon.name]]\n
    \n \n \n
    \n
    \n
    \n [[addon.description]].
    \n Visit\n [[addon.name]] page for\n details.\n
    \n \n
    \n \n \n \n \n \n \n \n \n \n \n
    \n \n
    \n
    \n \n \n Open web UI\n \n \n \n
    \n
    \n \n `;\n }\n\n static get properties() {\n return {\n hass: Object,\n addon: Object,\n addonSlug: String,\n isRunning: { type: Boolean, computed: \"computeIsRunning(addon)\" },\n };\n }\n\n computeIsRunning(addon) {\n return addon && addon.state === \"started\";\n }\n\n computeUpdateAvailable(addon) {\n return (\n addon &&\n !addon.detached &&\n addon.version &&\n addon.version !== addon.last_version\n );\n }\n\n computeHassioApi(addon) {\n return (\n addon.hassio_api &&\n (addon.hassio_role === \"manager\" || addon.hassio_role === \"admin\")\n );\n }\n\n computeApparmorClassName(apparmor) {\n if (apparmor === \"profile\") {\n return \"green\";\n }\n if (apparmor === \"disable\") {\n return \"red\";\n }\n return \"\";\n }\n\n pathWebui(webui) {\n return webui && webui.replace(\"[HOST]\", document.location.hostname);\n }\n\n computeShowWebUI(ingress, webui, isRunning) {\n return !ingress && webui && isRunning;\n }\n\n openIngress() {\n navigate(this, `/hassio/ingress/${this.addon.slug}`);\n }\n\n computeShowIngressUI(ingress, isRunning) {\n return ingress && isRunning;\n }\n\n computeStartOnBoot(state) {\n return state === \"auto\";\n }\n\n computeSecurityClassName(rating) {\n if (rating > 4) {\n return \"green\";\n }\n if (rating > 2) {\n return \"yellow\";\n }\n return \"red\";\n }\n\n startOnBootToggled() {\n const data = { boot: this.addon.boot === \"auto\" ? \"manual\" : \"auto\" };\n this.hass.callApi(\"POST\", `hassio/addons/${this.addonSlug}/options`, data);\n }\n\n autoUpdateToggled() {\n const data = { auto_update: !this.addon.auto_update };\n this.hass.callApi(\"POST\", `hassio/addons/${this.addonSlug}/options`, data);\n }\n\n protectionToggled() {\n const data = { protected: !this.addon.protected };\n this.hass.callApi(\"POST\", `hassio/addons/${this.addonSlug}/security`, data);\n this.set(\"addon.protected\", !this.addon.protected);\n }\n\n panelToggled() {\n const data = { ingress_panel: !this.addon.ingress_panel };\n this.hass.callApi(\"POST\", `hassio/addons/${this.addonSlug}/options`, data);\n }\n\n showMoreInfo(e) {\n const id = e.target.getAttribute(\"id\");\n showHassioMarkdownDialog(this, {\n title: PERMIS_DESC[id].title,\n content: PERMIS_DESC[id].description,\n });\n }\n\n openChangelog() {\n this.hass\n .callApi(\"get\", `hassio/addons/${this.addonSlug}/changelog`)\n .then((resp) => resp, () => \"Error getting changelog\")\n .then((content) => {\n showHassioMarkdownDialog(this, {\n title: \"Changelog\",\n content: content,\n });\n });\n }\n\n _unistallClicked() {\n if (!confirm(\"Are you sure you want to uninstall this add-on?\")) {\n return;\n }\n const path = `hassio/addons/${this.addonSlug}/uninstall`;\n const eventData = {\n path: path,\n };\n this.hass\n .callApi(\"post\", path)\n .then(\n (resp) => {\n eventData.success = true;\n eventData.response = resp;\n },\n (resp) => {\n eventData.success = false;\n eventData.response = resp;\n }\n )\n .then(() => {\n this.fire(\"hass-api-called\", eventData);\n });\n }\n\n _computeCannotIngressSidebar(hass, addon) {\n return !addon.ingress || !this._computeHA92plus(hass);\n }\n\n _computeHA92plus(hass) {\n const [major, minor] = hass.config.version.split(\".\", 2);\n return Number(major) > 0 || (major === \"0\" && Number(minor) >= 92);\n }\n}\ncustomElements.define(\"hassio-addon-info\", HassioAddonInfo);\n","import \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport { html } from \"@polymer/polymer/lib/utils/html-tag\";\nimport { PolymerElement } from \"@polymer/polymer/polymer-element\";\nimport { ANSI_HTML_STYLE, parseTextToColoredPre } from \"../ansi-to-html\";\n\nimport \"../../../src/resources/ha-style\";\n\nclass HassioAddonLogs extends PolymerElement {\n static get template() {\n return html`\n \n ${ANSI_HTML_STYLE}\n \n
    \n
    \n Refresh\n
    \n
    \n `;\n }\n\n static get properties() {\n return {\n hass: Object,\n addonSlug: {\n type: String,\n observer: \"addonSlugChanged\",\n },\n };\n }\n\n addonSlugChanged(slug) {\n if (!this.hass) {\n setTimeout(() => {\n this.addonChanged(slug);\n }, 0);\n return;\n }\n\n this.refresh();\n }\n\n refresh() {\n this.hass\n .callApi(\"get\", `hassio/addons/${this.addonSlug}/logs`)\n .then((text) => {\n while (this.$.content.lastChild) {\n this.$.content.removeChild(this.$.content.lastChild);\n }\n this.$.content.appendChild(parseTextToColoredPre(text));\n });\n }\n}\n\ncustomElements.define(\"hassio-addon-logs\", HassioAddonLogs);\n","import \"@polymer/paper-card/paper-card\";\nimport \"@polymer/paper-input/paper-input\";\nimport { html } from \"@polymer/polymer/lib/utils/html-tag\";\nimport { PolymerElement } from \"@polymer/polymer/polymer-element\";\n\nimport \"../../../src/components/buttons/ha-call-api-button\";\nimport \"../../../src/resources/ha-style\";\nimport { EventsMixin } from \"../../../src/mixins/events-mixin\";\n\nclass HassioAddonNetwork extends EventsMixin(PolymerElement) {\n static get template() {\n return html`\n \n \n
    \n \n\n \n \n \n \n \n \n \n \n \n
    ContainerHostDescription
    \n
    \n
    \n Reset to defaults\n Save\n
    \n
    \n `;\n }\n\n static get properties() {\n return {\n hass: Object,\n addonSlug: String,\n config: Object,\n addon: {\n type: Object,\n observer: \"addonChanged\",\n },\n error: String,\n resetData: {\n type: Object,\n value: {\n network: null,\n },\n },\n };\n }\n\n addonChanged(addon) {\n if (!addon) return;\n\n const network = addon.network || {};\n const description = addon.network_description || {};\n const items = Object.keys(network).map((key) => ({\n container: key,\n host: network[key],\n description: description[key],\n }));\n this.config = items.sort(function(el1, el2) {\n return el1.host - el2.host;\n });\n }\n\n saveTapped() {\n this.error = null;\n const data = {};\n this.config.forEach(function(item) {\n data[item.container] = parseInt(item.host);\n });\n const path = `hassio/addons/${this.addonSlug}/options`;\n\n this.hass\n .callApi(\"post\", path, {\n network: data,\n })\n .then(\n () => {\n this.fire(\"hass-api-called\", { success: true, path: path });\n },\n (resp) => {\n this.error = resp.body.message;\n }\n );\n }\n}\n\ncustomElements.define(\"hassio-addon-network\", HassioAddonNetwork);\n","import \"@polymer/app-layout/app-header-layout/app-header-layout\";\nimport \"@polymer/app-layout/app-header/app-header\";\nimport \"@polymer/app-layout/app-toolbar/app-toolbar\";\nimport \"@polymer/paper-icon-button/paper-icon-button\";\nimport { html } from \"@polymer/polymer/lib/utils/html-tag\";\nimport { PolymerElement } from \"@polymer/polymer/polymer-element\";\n\nimport \"./hassio-addon-audio\";\nimport \"./hassio-addon-config\";\nimport \"./hassio-addon-info\";\nimport \"./hassio-addon-logs\";\nimport \"./hassio-addon-network\";\n\nclass HassioAddonView extends PolymerElement {\n static get template() {\n return html`\n \n \n
    \n \n\n \n
    \n
    \n `;\n }\n\n static get properties() {\n return {\n hass: Object,\n route: {\n type: Object,\n observer: \"routeDataChanged\",\n },\n addonSlug: {\n type: String,\n computed: \"_computeSlug(route)\",\n },\n addon: Object,\n };\n }\n\n ready() {\n super.ready();\n this.addEventListener(\"hass-api-called\", (ev) => this.apiCalled(ev));\n }\n\n apiCalled(ev) {\n const path = ev.detail.path;\n\n if (!path) return;\n\n if (path.substr(path.lastIndexOf(\"/\") + 1) === \"uninstall\") {\n history.back();\n } else {\n this.routeDataChanged(this.route);\n }\n }\n\n routeDataChanged(routeData) {\n const addon = routeData.path.substr(1);\n this.hass.callApi(\"get\", `hassio/addons/${addon}/info`).then(\n (info) => {\n this.addon = info.data;\n },\n () => {\n this.addon = null;\n }\n );\n }\n\n _computeSlug(route) {\n return route.path.substr(1);\n }\n}\n\ncustomElements.define(\"hassio-addon-view\", HassioAddonView);\n","import { PolymerElement } from \"@polymer/polymer/polymer-element\";\nimport { EventsMixin } from \"../mixins/events-mixin\";\n\nlet loaded = null;\n\n/**\n * White list allowed svg tag.\n * Only put in the tag used in QR code, can be extend in future.\n */\nconst svgWhiteList = [\"svg\", \"path\"];\n\n/*\n * @appliesMixin EventsMixin\n */\nclass HaMarkdown extends EventsMixin(PolymerElement) {\n static get properties() {\n return {\n content: {\n type: String,\n observer: \"_render\",\n },\n allowSvg: {\n type: Boolean,\n value: false,\n },\n };\n }\n\n connectedCallback() {\n super.connectedCallback();\n // 0 = not loaded, 1 = success, 2 = error\n this._scriptLoaded = 0;\n this._renderScheduled = false;\n this._resize = () => this.fire(\"iron-resize\");\n\n if (!loaded) {\n loaded = import(/* webpackChunkName: \"load_markdown\" */ \"../resources/load_markdown\");\n }\n loaded\n .then(\n ({ marked, filterXSS }) => {\n this.marked = marked;\n this.filterXSS = filterXSS;\n this._scriptLoaded = 1;\n },\n () => {\n this._scriptLoaded = 2;\n }\n )\n .then(() => this._render());\n }\n\n _render() {\n if (this._scriptLoaded === 0 || this._renderScheduled) return;\n\n this._renderScheduled = true;\n\n // debounce it to next microtask.\n Promise.resolve().then(() => {\n this._renderScheduled = false;\n\n if (this._scriptLoaded === 1) {\n this.innerHTML = this.filterXSS(\n this.marked(this.content, {\n gfm: true,\n tables: true,\n breaks: true,\n }),\n {\n onIgnoreTag: this.allowSvg\n ? (tag, html) => (svgWhiteList.indexOf(tag) >= 0 ? html : null)\n : null,\n }\n );\n this._resize();\n\n const walker = document.createTreeWalker(\n this,\n 1 /* SHOW_ELEMENT */,\n null,\n false\n );\n\n while (walker.nextNode()) {\n const node = walker.currentNode;\n\n // Open external links in a new window\n if (node.tagName === \"A\" && node.host !== document.location.host) {\n node.target = \"_blank\";\n\n // Fire a resize event when images loaded to notify content resized\n } else if (node.tagName === \"IMG\") {\n node.addEventListener(\"load\", this._resize);\n }\n }\n } else if (this._scriptLoaded === 2) {\n this.innerText = this.content;\n }\n });\n }\n}\n\ncustomElements.define(\"ha-markdown\", HaMarkdown);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/hassio/api/panel/chunk.884d6e32c83f99e41040.js b/hassio/api/panel/chunk.884d6e32c83f99e41040.js new file mode 100644 index 000000000..f8e30ed1d --- /dev/null +++ b/hassio/api/panel/chunk.884d6e32c83f99e41040.js @@ -0,0 +1,2 @@ +(self.webpackJsonp=self.webpackJsonp||[]).push([[8],{133:function(H,V,C){"use strict";C.r(V);var L=document.createElement("template");L.setAttribute("style","display: none;"),L.innerHTML='',document.head.appendChild(L.content)}}]); +//# sourceMappingURL=chunk.884d6e32c83f99e41040.js.map \ No newline at end of file diff --git a/hassio/api/panel/chunk.884d6e32c83f99e41040.js.gz b/hassio/api/panel/chunk.884d6e32c83f99e41040.js.gz new file mode 100644 index 000000000..1f293531d Binary files /dev/null and b/hassio/api/panel/chunk.884d6e32c83f99e41040.js.gz differ diff --git a/hassio/api/panel/chunk.884d6e32c83f99e41040.js.map b/hassio/api/panel/chunk.884d6e32c83f99e41040.js.map new file mode 100644 index 000000000..eebb2b207 --- /dev/null +++ b/hassio/api/panel/chunk.884d6e32c83f99e41040.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./build/mdi.html","webpack:///./src/resources/mdi-icons.js"],"names":["documentContainer","document","createElement","setAttribute","innerHTML","head","appendChild","content"],"mappings":"6FAAe,ICETA,EAAoBC,SAASC,cAAc,YACjDF,EAAkBG,aAAa,QAAS,kBACxCH,EAAkBI,UDJH,+2ipDCKfH,SAASI,KAAKC,YAAYN,EAAkBO","file":"chunk.884d6e32c83f99e41040.js","sourcesContent":["export default \"\";","import iconSetContent from \"../../build/mdi.html\";\n\nconst documentContainer = document.createElement(\"template\");\ndocumentContainer.setAttribute(\"style\", \"display: none;\");\ndocumentContainer.innerHTML = iconSetContent;\ndocument.head.appendChild(documentContainer.content);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/hassio/api/panel/chunk.900c5d3fab8b6ebdcbc6.js b/hassio/api/panel/chunk.900c5d3fab8b6ebdcbc6.js new file mode 100644 index 000000000..66b349f52 --- /dev/null +++ b/hassio/api/panel/chunk.900c5d3fab8b6ebdcbc6.js @@ -0,0 +1,2 @@ +(self.webpackJsonp=self.webpackJsonp||[]).push([[6],{130:function(e,t,r){"use strict";r.r(t);var n=r(4),i=r(54),o=r(25);r(93),r(91);function s(e){return(s="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)}function a(){var e=u(["\n iframe {\n display: block;\n width: 100%;\n height: 100%;\n border: 0;\n }\n paper-icon-button {\n color: var(--text-primary-color);\n }\n "]);return a=function(){return e},e}function c(e,t){return k(e)||function(e,t){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var r=[],n=!0,i=!1,o=void 0;try{for(var s,a=e[Symbol.iterator]();!(n=(s=a.next()).done)&&(r.push(s.value),!t||r.length!==t);n=!0);}catch(c){i=!0,o=c}finally{try{n||null==a.return||a.return()}finally{if(i)throw o}}return r}(e,t)||g()}function l(){var e=u(["\n \n \n \n "]);return l=function(){return e},e}function f(){var e=u(["\n \n "]);return f=function(){return e},e}function u(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e){var t,r=w(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function m(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function y(e){return e.decorators&&e.decorators.length}function v(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function b(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function w(e){var t=function(e,t){if("object"!==s(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==s(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===s(t)?t:String(t)}function g(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function k(e){if(Array.isArray(e))return e}function E(e,t,r){return(E="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=O(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(r):i.value}})(e,t,r||e)}function O(e){return(O=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!y(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var s=t[e.placement];s.splice(s.indexOf(e.key),1);var a=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(a)||a);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var f=0;f=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var s=0;s\n `;\n }\n\n return html`\n \n \n \n `;\n }\n\n protected updated(changedProps: PropertyValues) {\n super.firstUpdated(changedProps);\n\n if (!changedProps.has(\"route\")) {\n return;\n }\n\n const addon = this.route.path.substr(1);\n\n const oldRoute = changedProps.get(\"route\") as this[\"route\"] | undefined;\n const oldAddon = oldRoute ? oldRoute.path.substr(1) : undefined;\n\n if (addon && addon !== oldAddon) {\n this._fetchData(addon);\n }\n }\n\n private async _fetchData(addonSlug: string) {\n try {\n const [addon] = await Promise.all([\n fetchHassioAddonInfo(this.hass, addonSlug).catch(() => {\n throw new Error(\"Failed to fetch add-on info\");\n }),\n createHassioSession(this.hass).catch(() => {\n throw new Error(\"Failed to create an ingress session\");\n }),\n ]);\n\n if (!addon.ingress) {\n throw new Error(\"This add-on does not support ingress\");\n }\n\n this._addon = addon;\n } catch (err) {\n // tslint:disable-next-line\n console.error(err);\n alert(err.message || \"Unknown error starting ingress.\");\n history.back();\n }\n }\n\n static get styles(): CSSResult {\n return css`\n iframe {\n display: block;\n width: 100%;\n height: 100%;\n border: 0;\n }\n paper-icon-button {\n color: var(--text-primary-color);\n }\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-ingress-view\": HassioIngressView;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/hassio/api/panel/chunk.9cea224f33b375867edd.js b/hassio/api/panel/chunk.9cea224f33b375867edd.js new file mode 100644 index 000000000..a37c1efd2 --- /dev/null +++ b/hassio/api/panel/chunk.9cea224f33b375867edd.js @@ -0,0 +1,3 @@ +/*! For license information please see chunk.9cea224f33b375867edd.js.LICENSE */ +(self.webpackJsonp=self.webpackJsonp||[]).push([[1],{125:function(e,t,r){"use strict";r.r(t);r(41),r(75),r(22);var n=r(4),i=r(12),o=r(9);r(77),r(72);function a(e){return(a="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)}function s(){var e=c(['\n ha-paper-dialog {\n min-width: 350px;\n font-size: 14px;\n border-radius: 2px;\n }\n app-toolbar {\n margin: 0;\n padding: 0 16px;\n color: var(--primary-text-color);\n background-color: var(--secondary-background-color);\n }\n app-toolbar [main-title] {\n margin-left: 16px;\n }\n paper-checkbox {\n display: block;\n margin: 4px;\n }\n @media all and (max-width: 450px), all and (max-height: 500px) {\n ha-paper-dialog {\n max-height: 100%;\n }\n ha-paper-dialog::before {\n content: "";\n position: fixed;\n z-index: -1;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n background-color: inherit;\n }\n app-toolbar {\n color: var(--text-primary-color);\n background-color: var(--primary-color);\n }\n }\n ']);return s=function(){return e},e}function l(){var e=c(['\n \n \n \n
    ',"
    \n
    \n \n \n \n
    \n "]);return l=function(){return e},e}function c(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function p(e){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function u(e,t){return(u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function f(e){var t,r=v(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function h(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function m(e){return e.decorators&&e.decorators.length}function y(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function b(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function v(e){var t=function(e,t){if("object"!==a(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==a(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===a(t)?t:String(t)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!m(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),l=this.toElementFinisherExtras((0,i[o])(s)||s);e=l.element,this.addElementPlacement(e,t),l.finisher&&n.push(l.finisher);var c=l.extras;if(c){for(var p=0;p=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),l=this.toElementFinisherExtras((0,i[o])(s)||s);e=l.element,this.addElementPlacement(e,t),l.finisher&&n.push(l.finisher);var c=l.extras;if(c){for(var p=0;p=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n\n :host {\n display: block;\n @apply --layout-relative;\n }\n\n :host(.is-scrolled:not(:first-child))::before {\n content: \'\';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 1px;\n background: var(--divider-color);\n }\n\n :host(.can-scroll:not(.scrolled-to-bottom):not(:last-child))::after {\n content: \'\';\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 1px;\n background: var(--divider-color);\n }\n\n .scrollable {\n padding: 0 24px;\n\n @apply --layout-scroll;\n @apply --paper-dialog-scrollable;\n }\n\n .fit {\n @apply --layout-fit;\n }\n \n\n
    \n \n
    \n']);return a=function(){return e},e}Object(i.a)({_template:Object(o.a)(a()),is:"paper-dialog-scrollable",properties:{dialogElement:{type:Object}},get scrollTarget(){return this.$.scrollable},ready:function(){this._ensureTarget(),this.classList.add("no-padding")},attached:function(){this._ensureTarget(),requestAnimationFrame(this.updateScrollState.bind(this))},updateScrollState:function(){this.toggleClass("is-scrolled",this.scrollTarget.scrollTop>0),this.toggleClass("can-scroll",this.scrollTarget.offsetHeight=this.scrollTarget.scrollHeight)},_ensureTarget:function(){this.dialogElement=this.dialogElement||this.parentElement,this.dialogElement&&this.dialogElement.behaviors&&this.dialogElement.behaviors.indexOf(n.b)>=0?(this.dialogElement.sizingTarget=this.scrollTarget,this.scrollTarget.classList.remove("fit")):this.dialogElement&&this.scrollTarget.classList.add("fit")}})},77:function(e,t,r){"use strict";r(3),r(10),r(11),r(29),r(39);var n=document.createElement("template");n.setAttribute("style","display: none;"),n.innerHTML='\n \n',document.head.appendChild(n.content);var i=r(82),o=r(43),a=r(6),s=r(5);function l(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n \n']);return l=function(){return e},e}Object(a.a)({_template:Object(s.a)(l()),is:"paper-dialog",behaviors:[o.a,i.a],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_renderOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderClosed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimationFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderClosed()}});var c=r(63),p=r(7),d=r(71),u={getTabbableNodes:function(e){var t=[];return this._collectTabbableNodes(e,t)?d.a._sortByTabIndex(t):t},_collectTabbableNodes:function(e,t){if(e.nodeType!==Node.ELEMENT_NODE||!d.a._isVisible(e))return!1;var r,n=e,i=d.a._normalizedTabIndex(n),o=i>0;i>=0&&t.push(n),r="content"===n.localName||"slot"===n.localName?Object(p.a)(n).getDistributedNodes():Object(p.a)(n.shadowRoot||n.root||n).children;for(var a=0;a\n \n \n
    ${this.title}
    \n
    \n \n \n \n \n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyleDialog,\n hassioStyle,\n css`\n ha-paper-dialog {\n min-width: 350px;\n font-size: 14px;\n border-radius: 2px;\n }\n app-toolbar {\n margin: 0;\n padding: 0 16px;\n color: var(--primary-text-color);\n background-color: var(--secondary-background-color);\n }\n app-toolbar [main-title] {\n margin-left: 16px;\n }\n paper-checkbox {\n display: block;\n margin: 4px;\n }\n @media all and (max-width: 450px), all and (max-height: 500px) {\n ha-paper-dialog {\n max-height: 100%;\n }\n ha-paper-dialog::before {\n content: \"\";\n position: fixed;\n z-index: -1;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n background-color: inherit;\n }\n app-toolbar {\n color: var(--text-primary-color);\n background-color: var(--primary-color);\n }\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"dialog-hassio-markdown\": HassioMarkdownDialog;\n }\n}\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\n\nimport {IronOverlayBehavior} from '@polymer/iron-overlay-behavior/iron-overlay-behavior.js';\nimport {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js';\n\n/**\n Use `Polymer.PaperDialogBehavior` and `paper-dialog-shared-styles.html` to\n implement a Material Design dialog.\n\n For example, if `` implements this behavior:\n\n \n

    Header

    \n
    Dialog body
    \n
    \n Cancel\n Accept\n
    \n
    \n\n `paper-dialog-shared-styles.html` provide styles for a header, content area,\n and an action area for buttons. Use the `

    ` tag for the header and the\n `buttons` class for the action area. You can use the `paper-dialog-scrollable`\n element (in its own repository) if you need a scrolling content area.\n\n Use the `dialog-dismiss` and `dialog-confirm` attributes on interactive\n controls to close the dialog. If the user dismisses the dialog with\n `dialog-confirm`, the `closingReason` will update to include `confirmed:\n true`.\n\n ### Accessibility\n\n This element has `role=\"dialog\"` by default. Depending on the context, it may\n be more appropriate to override this attribute with `role=\"alertdialog\"`.\n\n If `modal` is set, the element will prevent the focus from exiting the\n element. It will also ensure that focus remains in the dialog.\n\n @hero hero.svg\n @demo demo/index.html\n @polymerBehavior PaperDialogBehavior\n */\nexport const PaperDialogBehaviorImpl = {\n\n hostAttributes: {'role': 'dialog', 'tabindex': '-1'},\n\n properties: {\n\n /**\n * If `modal` is true, this implies `no-cancel-on-outside-click`,\n * `no-cancel-on-esc-key` and `with-backdrop`.\n */\n modal: {type: Boolean, value: false},\n\n __readied: {type: Boolean, value: false}\n\n },\n\n observers: ['_modalChanged(modal, __readied)'],\n\n listeners: {'tap': '_onDialogClick'},\n\n /**\n * @return {void}\n */\n ready: function() {\n // Only now these properties can be read.\n this.__prevNoCancelOnOutsideClick = this.noCancelOnOutsideClick;\n this.__prevNoCancelOnEscKey = this.noCancelOnEscKey;\n this.__prevWithBackdrop = this.withBackdrop;\n this.__readied = true;\n },\n\n _modalChanged: function(modal, readied) {\n // modal implies noCancelOnOutsideClick, noCancelOnEscKey and withBackdrop.\n // We need to wait for the element to be ready before we can read the\n // properties values.\n if (!readied) {\n return;\n }\n\n if (modal) {\n this.__prevNoCancelOnOutsideClick = this.noCancelOnOutsideClick;\n this.__prevNoCancelOnEscKey = this.noCancelOnEscKey;\n this.__prevWithBackdrop = this.withBackdrop;\n this.noCancelOnOutsideClick = true;\n this.noCancelOnEscKey = true;\n this.withBackdrop = true;\n } else {\n // If the value was changed to false, let it false.\n this.noCancelOnOutsideClick =\n this.noCancelOnOutsideClick && this.__prevNoCancelOnOutsideClick;\n this.noCancelOnEscKey =\n this.noCancelOnEscKey && this.__prevNoCancelOnEscKey;\n this.withBackdrop = this.withBackdrop && this.__prevWithBackdrop;\n }\n },\n\n _updateClosingReasonConfirmed: function(confirmed) {\n this.closingReason = this.closingReason || {};\n this.closingReason.confirmed = confirmed;\n },\n\n /**\n * Will dismiss the dialog if user clicked on an element with dialog-dismiss\n * or dialog-confirm attribute.\n */\n _onDialogClick: function(event) {\n // Search for the element with dialog-confirm or dialog-dismiss,\n // from the root target until this (excluded).\n var path = dom(event).path;\n for (var i = 0, l = path.indexOf(this); i < l; i++) {\n var target = path[i];\n if (target.hasAttribute &&\n (target.hasAttribute('dialog-dismiss') ||\n target.hasAttribute('dialog-confirm'))) {\n this._updateClosingReasonConfirmed(\n target.hasAttribute('dialog-confirm'));\n this.close();\n event.stopPropagation();\n break;\n }\n }\n }\n\n};\n\n/** @polymerBehavior */\nexport const PaperDialogBehavior =\n [IronOverlayBehavior, PaperDialogBehaviorImpl];\n","import { UpdatingElement, property, customElement } from \"lit-element\";\n// eslint-disable-next-line import/no-webpack-loader-syntax\n// @ts-ignore\n// tslint:disable-next-line: no-implicit-dependencies\nimport markdownWorker from \"workerize-loader!../resources/markdown_worker\";\nimport { fireEvent } from \"../common/dom/fire_event\";\n\nlet worker: any | undefined;\n\n@customElement(\"ha-markdown\")\nclass HaMarkdown extends UpdatingElement {\n @property() public content = \"\";\n @property({ type: Boolean }) public allowSvg = false;\n\n protected update(changedProps) {\n super.update(changedProps);\n\n if (!worker) {\n worker = markdownWorker();\n }\n\n this._render();\n }\n\n private async _render() {\n this.innerHTML = await worker.renderMarkdown(\n this.content,\n {\n breaks: true,\n gfm: true,\n tables: true,\n },\n {\n allowSvg: this.allowSvg,\n }\n );\n\n this._resize();\n\n const walker = document.createTreeWalker(\n this,\n 1 /* SHOW_ELEMENT */,\n null,\n false\n );\n\n while (walker.nextNode()) {\n const node = walker.currentNode;\n\n // Open external links in a new window\n if (\n node instanceof HTMLAnchorElement &&\n node.host !== document.location.host\n ) {\n node.target = \"_blank\";\n\n // protect referrer on external links and deny window.opener access for security reasons\n // (see https://mathiasbynens.github.io/rel-noopener/)\n node.rel = \"noreferrer noopener\";\n\n // Fire a resize event when images loaded to notify content resized\n } else if (node) {\n node.addEventListener(\"load\", this._resize);\n }\n }\n }\n\n private _resize = () => fireEvent(this, \"iron-resize\");\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-markdown\": HaMarkdown;\n }\n}\n","\n\t\t\t\tvar addMethods = require(\"../../node_modules/workerize-loader/dist/rpc-wrapper.js\")\n\t\t\t\tvar methods = [\"renderMarkdown\"]\n\t\t\t\tmodule.exports = function() {\n\t\t\t\t\tvar w = new Worker(__webpack_public_path__ + \"201359fd5a526afe13ef.worker.js\", { name: \"[hash].worker.js\" })\n\t\t\t\t\taddMethods(w, methods)\n\t\t\t\t\t\n\t\t\t\t\treturn w\n\t\t\t\t}\n\t\t\t","export default function addMethods(worker, methods) {\n\tlet c = 0;\n\tlet callbacks = {};\n\tworker.addEventListener('message', (e) => {\n\t\tlet d = e.data;\n\t\tif (d.type!=='RPC') return;\n\t\tif (d.id) {\n\t\t\tlet f = callbacks[d.id];\n\t\t\tif (f) {\n\t\t\t\tdelete callbacks[d.id];\n\t\t\t\tif (d.error) {\n\t\t\t\t\tf[1](Object.assign(Error(d.error.message), d.error));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tf[0](d.result);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tlet evt = document.createEvent('Event');\n\t\t\tevt.initEvent(d.method, false, false);\n\t\t\tevt.data = d.params;\n\t\t\tworker.dispatchEvent(evt);\n\t\t}\n\t});\n\tmethods.forEach( method => {\n\t\tworker[method] = (...params) => new Promise( (a, b) => {\n\t\t\tlet id = ++c;\n\t\t\tcallbacks[id] = [a, b];\n\t\t\tworker.postMessage({ type: 'RPC', id, method, params });\n\t\t});\n\t});\n}\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/iron-flex-layout/iron-flex-layout.js';\nimport '@polymer/paper-styles/default-theme.js';\n\nimport {PaperDialogBehaviorImpl} from '@polymer/paper-dialog-behavior/paper-dialog-behavior.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\n\n/**\nMaterial design:\n[Dialogs](https://www.google.com/design/spec/components/dialogs.html)\n\n`paper-dialog-scrollable` implements a scrolling area used in a Material Design\ndialog. It shows a divider at the top and/or bottom indicating more content,\ndepending on scroll position. Use this together with elements implementing\n`Polymer.PaperDialogBehavior`.\n\n \n

    Header

    \n \n Lorem ipsum...\n \n
    \n OK\n
    \n
    \n\nIt shows a top divider after scrolling if it is not the first child in its\nparent container, indicating there is more content above. It shows a bottom\ndivider if it is scrollable and it is not the last child in its parent\ncontainer, indicating there is more content below. The bottom divider is hidden\nif it is scrolled to the bottom.\n\nIf `paper-dialog-scrollable` is not a direct child of the element implementing\n`Polymer.PaperDialogBehavior`, remember to set the `dialogElement`:\n\n \n

    Header

    \n
    \n

    Sub-header

    \n \n Lorem ipsum...\n \n
    \n
    \n OK\n
    \n
    \n\n \n\n### Styling\nThe following custom properties and mixins are available for styling:\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--paper-dialog-scrollable` | Mixin for the scrollable content | {}\n\n@group Paper Elements\n@element paper-dialog-scrollable\n@demo demo/index.html\n@hero hero.svg\n*/\nPolymer({\n _template: html`\n \n\n
    \n \n
    \n`,\n\n is: 'paper-dialog-scrollable',\n\n properties: {\n\n /**\n * The dialog element that implements `Polymer.PaperDialogBehavior`\n * containing this element.\n * @type {?Node}\n */\n dialogElement: {type: Object}\n\n },\n\n /**\n * Returns the scrolling element.\n */\n get scrollTarget() {\n return this.$.scrollable;\n },\n\n ready: function() {\n this._ensureTarget();\n this.classList.add('no-padding');\n },\n\n attached: function() {\n this._ensureTarget();\n requestAnimationFrame(this.updateScrollState.bind(this));\n },\n\n updateScrollState: function() {\n this.toggleClass('is-scrolled', this.scrollTarget.scrollTop > 0);\n this.toggleClass(\n 'can-scroll',\n this.scrollTarget.offsetHeight < this.scrollTarget.scrollHeight);\n this.toggleClass(\n 'scrolled-to-bottom',\n this.scrollTarget.scrollTop + this.scrollTarget.offsetHeight >=\n this.scrollTarget.scrollHeight);\n },\n\n _ensureTarget: function() {\n // Read parentElement instead of parentNode in order to skip shadowRoots.\n this.dialogElement = this.dialogElement || this.parentElement;\n // Check if dialog implements paper-dialog-behavior. If not, fit\n // scrollTarget to host.\n if (this.dialogElement && this.dialogElement.behaviors &&\n this.dialogElement.behaviors.indexOf(PaperDialogBehaviorImpl) >= 0) {\n this.dialogElement.sizingTarget = this.scrollTarget;\n this.scrollTarget.classList.remove('fit');\n } else if (this.dialogElement) {\n this.scrollTarget.classList.add('fit');\n }\n }\n});\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\n/*\n### Styling\n\nThe following custom properties and mixins are available for styling.\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--paper-dialog-background-color` | Dialog background color | `--primary-background-color`\n`--paper-dialog-color` | Dialog foreground color | `--primary-text-color`\n`--paper-dialog` | Mixin applied to the dialog | `{}`\n`--paper-dialog-title` | Mixin applied to the title (`

    `) element | `{}`\n`--paper-dialog-button-color` | Button area foreground color | `--default-primary-color`\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/iron-flex-layout/iron-flex-layout.js';\nimport '@polymer/paper-styles/default-theme.js';\nimport '@polymer/paper-styles/typography.js';\nimport '@polymer/paper-styles/shadow.js';\nconst $_documentContainer = document.createElement('template');\n$_documentContainer.setAttribute('style', 'display: none;');\n\n$_documentContainer.innerHTML = `\n \n`;\n\ndocument.head.appendChild($_documentContainer.content);\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/paper-dialog-behavior/paper-dialog-shared-styles.js';\n\nimport {NeonAnimationRunnerBehavior} from '@polymer/neon-animation/neon-animation-runner-behavior.js';\nimport {PaperDialogBehavior} from '@polymer/paper-dialog-behavior/paper-dialog-behavior.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\n\n/**\nMaterial design:\n[Dialogs](https://www.google.com/design/spec/components/dialogs.html)\n\n`` is a dialog with Material Design styling and optional\nanimations when it is opened or closed. It provides styles for a header, content\narea, and an action area for buttons. You can use the\n`` element (in its own repository) if you need a\nscrolling content area. To autofocus a specific child element after opening the\ndialog, give it the `autofocus` attribute. See `Polymer.PaperDialogBehavior` and\n`Polymer.IronOverlayBehavior` for specifics.\n\nFor example, the following code implements a dialog with a header, scrolling\ncontent area and buttons. Focus will be given to the `dialog-confirm` button\nwhen the dialog is opened.\n\n \n

    Header

    \n \n Lorem ipsum...\n \n
    \n Cancel\n Accept\n
    \n
    \n\n### Styling\n\nSee the docs for `Polymer.PaperDialogBehavior` for the custom properties\navailable for styling this element.\n\n### Animations\n\nSet the `entry-animation` and/or `exit-animation` attributes to add an animation\nwhen the dialog is opened or closed. See the documentation in\n[PolymerElements/neon-animation](https://github.com/PolymerElements/neon-animation)\nfor more info.\n\nFor example:\n\n \n\n \n

    Header

    \n
    Dialog body
    \n
    \n\n### Accessibility\n\nSee the docs for `Polymer.PaperDialogBehavior` for accessibility features\nimplemented by this element.\n\n@group Paper Elements\n@element paper-dialog\n@hero hero.svg\n@demo demo/index.html\n*/\nPolymer({\n _template: html`\n \n \n`,\n\n is: 'paper-dialog',\n behaviors: [PaperDialogBehavior, NeonAnimationRunnerBehavior],\n listeners: {'neon-animation-finish': '_onNeonAnimationFinish'},\n\n _renderOpened: function() {\n this.cancelAnimation();\n this.playAnimation('entry');\n },\n\n _renderClosed: function() {\n this.cancelAnimation();\n this.playAnimation('exit');\n },\n\n _onNeonAnimationFinish: function() {\n if (this.opened) {\n this._finishRenderOpened();\n } else {\n this._finishRenderClosed();\n }\n }\n});\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\n/*\n Fixes issue with not using shadow dom properly in iron-overlay-behavior/icon-focusables-helper.js\n*/\nimport { dom } from \"@polymer/polymer/lib/legacy/polymer.dom.js\";\n\nimport { IronFocusablesHelper } from \"@polymer/iron-overlay-behavior/iron-focusables-helper.js\";\n\nexport const HaIronFocusablesHelper = {\n /**\n * Returns a sorted array of tabbable nodes, including the root node.\n * It searches the tabbable nodes in the light and shadow dom of the chidren,\n * sorting the result by tabindex.\n * @param {!Node} node\n * @return {!Array}\n */\n getTabbableNodes: function(node) {\n var result = [];\n // If there is at least one element with tabindex > 0, we need to sort\n // the final array by tabindex.\n var needsSortByTabIndex = this._collectTabbableNodes(node, result);\n if (needsSortByTabIndex) {\n return IronFocusablesHelper._sortByTabIndex(result);\n }\n return result;\n },\n\n /**\n * Searches for nodes that are tabbable and adds them to the `result` array.\n * Returns if the `result` array needs to be sorted by tabindex.\n * @param {!Node} node The starting point for the search; added to `result`\n * if tabbable.\n * @param {!Array} result\n * @return {boolean}\n * @private\n */\n _collectTabbableNodes: function(node, result) {\n // If not an element or not visible, no need to explore children.\n if (\n node.nodeType !== Node.ELEMENT_NODE ||\n !IronFocusablesHelper._isVisible(node)\n ) {\n return false;\n }\n var element = /** @type {!HTMLElement} */ (node);\n var tabIndex = IronFocusablesHelper._normalizedTabIndex(element);\n var needsSort = tabIndex > 0;\n if (tabIndex >= 0) {\n result.push(element);\n }\n\n // In ShadowDOM v1, tab order is affected by the order of distrubution.\n // E.g. getTabbableNodes(#root) in ShadowDOM v1 should return [#A, #B];\n // in ShadowDOM v0 tab order is not affected by the distrubution order,\n // in fact getTabbableNodes(#root) returns [#B, #A].\n //
    \n // \n // \n // \n // \n // \n // \n //
    \n // TODO(valdrin) support ShadowDOM v1 when upgrading to Polymer v2.0.\n var children;\n if (element.localName === \"content\" || element.localName === \"slot\") {\n children = dom(element).getDistributedNodes();\n } else {\n // /////////////////////////\n // Use shadow root if possible, will check for distributed nodes.\n // THIS IS THE CHANGED LINE\n children = dom(element.shadowRoot || element.root || element).children;\n // /////////////////////////\n }\n for (var i = 0; i < children.length; i++) {\n // Ensure method is always invoked to collect tabbable children.\n needsSort = this._collectTabbableNodes(children[i], result) || needsSort;\n }\n return needsSort;\n },\n};\n","import \"@polymer/paper-dialog/paper-dialog\";\nimport { mixinBehaviors } from \"@polymer/polymer/lib/legacy/class\";\nimport { HaIronFocusablesHelper } from \"./ha-iron-focusables-helper.js\";\n// tslint:disable-next-line\nimport { PaperDialogElement } from \"@polymer/paper-dialog/paper-dialog\";\n\nconst paperDialogClass = customElements.get(\"paper-dialog\");\n\n// behavior that will override existing iron-overlay-behavior and call the fixed implementation\nconst haTabFixBehaviorImpl = {\n get _focusableNodes() {\n return HaIronFocusablesHelper.getTabbableNodes(this);\n },\n};\n\n// paper-dialog that uses the haTabFixBehaviorImpl behvaior\n// export class HaPaperDialog extends paperDialogClass {}\n// @ts-ignore\nexport class HaPaperDialog\n extends mixinBehaviors([haTabFixBehaviorImpl], paperDialogClass)\n implements PaperDialogElement {}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-paper-dialog\": HaPaperDialog;\n }\n}\ncustomElements.define(\"ha-paper-dialog\", HaPaperDialog);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/hassio/api/panel/chunk.9d7374dae6137783dda4.js b/hassio/api/panel/chunk.9d7374dae6137783dda4.js deleted file mode 100644 index 58050a04d..000000000 --- a/hassio/api/panel/chunk.9d7374dae6137783dda4.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see chunk.9d7374dae6137783dda4.js.LICENSE */ -(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{118:function(t,e){var n,i,r,o;n=function(){return this}(),r={},o={},function(t,e){function n(){this._delay=0,this._endDelay=0,this._fill="none",this._iterationStart=0,this._iterations=1,this._duration=0,this._playbackRate=1,this._direction="normal",this._easing="linear",this._easingFunction=h}function i(){return t.isDeprecated("Invalid timing inputs","2016-03-02","TypeError exceptions will be thrown instead.",!0)}function r(e,i,r){var o=new n;return i&&(o.fill="both",o.duration="auto"),"number"!=typeof e||isNaN(e)?void 0!==e&&Object.getOwnPropertyNames(e).forEach(function(n){if("auto"!=e[n]){if(("number"==typeof o[n]||"duration"==n)&&("number"!=typeof e[n]||isNaN(e[n])))return;if("fill"==n&&-1==c.indexOf(e[n]))return;if("direction"==n&&-1==p.indexOf(e[n]))return;if("playbackRate"==n&&1!==e[n]&&t.isDeprecated("AnimationEffectTiming.playbackRate","2014-11-28","Use Animation.playbackRate instead."))return;o[n]=e[n]}}):o.duration=e,o}function o(t,e,n,i){return t<0||t>1||n<0||n>1?h:function(r){function o(t,e,n){return 3*t*(1-n)*(1-n)*n+3*e*(1-n)*n*n+n*n*n}if(r<=0){var a=0;return t>0?a=e/t:!e&&n>0&&(a=i/n),a*r}if(r>=1){var s=0;return n<1?s=(i-1)/(n-1):1==n&&t<1&&(s=(e-1)/(t-1)),1+s*(r-1)}for(var l=0,u=1;l=1)return 1;var i=1/t;return(n+=e*i)-n%i}}function s(t){v||(v=document.createElement("div").style),v.animationTimingFunction="",v.animationTimingFunction=t;var e=v.animationTimingFunction;if(""==e&&i())throw new TypeError(t+" is not a valid value for easing");return e}function l(t){if("linear"==t)return h;var e=_.exec(t);if(e)return o.apply(this,e.slice(1).map(Number));var n=b.exec(t);return n?a(Number(n[1]),{start:d,middle:f,end:m}[n[2]]):g[t]||h}function u(t,e,n){if(null==e)return w;var i=n.delay+t+n.endDelay;return e=Math.min(n.delay+t,i)?T:A}var c="backwards|forwards|both|none".split("|"),p="reverse|alternate|alternate-reverse".split("|"),h=function(t){return t};n.prototype={_setMember:function(e,n){this["_"+e]=n,this._effect&&(this._effect._timingInput[e]=n,this._effect._timing=t.normalizeTimingInput(this._effect._timingInput),this._effect.activeDuration=t.calculateActiveDuration(this._effect._timing),this._effect._animation&&this._effect._animation._rebuildUnderlyingAnimation())},get playbackRate(){return this._playbackRate},set delay(t){this._setMember("delay",t)},get delay(){return this._delay},set endDelay(t){this._setMember("endDelay",t)},get endDelay(){return this._endDelay},set fill(t){this._setMember("fill",t)},get fill(){return this._fill},set iterationStart(t){if((isNaN(t)||t<0)&&i())throw new TypeError("iterationStart must be a non-negative number, received: "+timing.iterationStart);this._setMember("iterationStart",t)},get iterationStart(){return this._iterationStart},set duration(t){if("auto"!=t&&(isNaN(t)||t<0)&&i())throw new TypeError("duration must be non-negative or auto, received: "+t);this._setMember("duration",t)},get duration(){return this._duration},set direction(t){this._setMember("direction",t)},get direction(){return this._direction},set easing(t){this._easingFunction=l(s(t)),this._setMember("easing",t)},get easing(){return this._easing},set iterations(t){if((isNaN(t)||t<0)&&i())throw new TypeError("iterations must be non-negative, received: "+t);this._setMember("iterations",t)},get iterations(){return this._iterations}};var d=1,f=.5,m=0,g={ease:o(.25,.1,.25,1),"ease-in":o(.42,0,1,1),"ease-out":o(0,0,.58,1),"ease-in-out":o(.42,0,.58,1),"step-start":a(1,d),"step-middle":a(1,f),"step-end":a(1,m)},v=null,y="\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*",_=new RegExp("cubic-bezier\\("+y+","+y+","+y+","+y+"\\)"),b=/steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/,w=0,x=1,T=2,A=3;t.cloneTimingInput=function(t){if("number"==typeof t)return t;var e={};for(var n in t)e[n]=t[n];return e},t.makeTiming=r,t.numericTimingToObject=function(t){return"number"==typeof t&&(t=isNaN(t)?{duration:0}:{duration:t}),t},t.normalizeTimingInput=function(e,n){return r(e=t.numericTimingToObject(e),n)},t.calculateActiveDuration=function(t){return Math.abs(function(t){return 0===t.duration||0===t.iterations?0:t.duration*t.iterations}(t)/t.playbackRate)},t.calculateIterationProgress=function(t,e,n){var i=u(t,e,n),r=function(t,e,n,i,r){switch(i){case x:return"backwards"==e||"both"==e?0:null;case A:return n-r;case T:return"forwards"==e||"both"==e?t:null;case w:return null}}(t,n.fill,e,i,n.delay);if(null===r)return null;var o=function(t,e,n,i,r){var o=r;return 0===t?e!==x&&(o+=n):o+=i/t,o}(n.duration,i,n.iterations,r,n.iterationStart),a=function(t,e,n,i,r,o){var a=t===1/0?e%1:t%1;return 0!==a||n!==T||0===i||0===r&&0!==o||(a=1),a}(o,n.iterationStart,i,n.iterations,r,n.duration),s=function(t,e,n,i){return t===T&&e===1/0?1/0:1===n?Math.floor(i)-1:Math.floor(i)}(i,n.iterations,a,o),l=function(t,e,n){var i=t;if("normal"!==t&&"reverse"!==t){var r=e;"alternate-reverse"===t&&(r+=1),i="normal",r!==1/0&&r%2!=0&&(i="reverse")}return"normal"===i?n:1-n}(n.direction,s,a);return n._easingFunction(l)},t.calculatePhase=u,t.normalizeEasing=s,t.parseEasingFunction=l}(i={}),function(t,e){function n(t,e){return t in l&&l[t][e]||e}function i(t,e,i){if(!function(t){return"display"===t||0===t.lastIndexOf("animation",0)||0===t.lastIndexOf("transition",0)}(t)){var r=o[t];if(r)for(var s in a.style[t]=e,r){var l=r[s],u=a.style[l];i[l]=n(l,u)}else i[t]=n(t,e)}}function r(t){var e=[];for(var n in t)if(!(n in["easing","offset","composite"])){var i=t[n];Array.isArray(i)||(i=[i]);for(var r,o=i.length,a=0;a1)throw new TypeError("Keyframe offsets must be between 0 and 1.")}}else if("composite"==r){if("add"==o||"accumulate"==o)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"add compositing is not supported"};if("replace"!=o)throw new TypeError("Invalid composite mode "+o+".")}else o="easing"==r?t.normalizeEasing(o):""+o;i(r,o,n)}return null==n.offset&&(n.offset=null),null==n.easing&&(n.easing="linear"),n}),o=!0,a=-1/0,s=0;s=0&&t.offset<=1}),o||function(){var t=n.length;null==n[t-1].offset&&(n[t-1].offset=1),t>1&&null==n[0].offset&&(n[0].offset=0);for(var e=0,i=n[0].offset,r=1;r=t.applyFrom&&n0?this._totalDuration:0),this._ensureAlive())},get currentTime(){return this._idle||this._currentTimePending?null:this._currentTime},set currentTime(t){t=+t,isNaN(t)||(e.restart(),this._paused||null==this._startTime||(this._startTime=this._timeline.currentTime-t/this._playbackRate),this._currentTimePending=!1,this._currentTime!=t&&(this._idle&&(this._idle=!1,this._paused=!0),this._tickCurrentTime(t,!0),e.applyDirtiedAnimation(this)))},get startTime(){return this._startTime},set startTime(t){t=+t,isNaN(t)||this._paused||this._idle||(this._startTime=t,this._tickCurrentTime((this._timeline.currentTime-this._startTime)*this.playbackRate),e.applyDirtiedAnimation(this))},get playbackRate(){return this._playbackRate},set playbackRate(t){if(t!=this._playbackRate){var n=this.currentTime;this._playbackRate=t,this._startTime=null,"paused"!=this.playState&&"idle"!=this.playState&&(this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),e.applyDirtiedAnimation(this)),null!=n&&(this.currentTime=n)}},get _isFinished(){return!this._idle&&(this._playbackRate>0&&this._currentTime>=this._totalDuration||this._playbackRate<0&&this._currentTime<=0)},get _totalDuration(){return this._effect._totalDuration},get playState(){return this._idle?"idle":null==this._startTime&&!this._paused&&0!=this.playbackRate||this._currentTimePending?"pending":this._paused?"paused":this._isFinished?"finished":"running"},_rewind:function(){if(this._playbackRate>=0)this._currentTime=0;else{if(!(this._totalDuration<1/0))throw new DOMException("Unable to rewind negative playback rate animation with infinite duration","InvalidStateError");this._currentTime=this._totalDuration}},play:function(){this._paused=!1,(this._isFinished||this._idle)&&(this._rewind(),this._startTime=null),this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),e.applyDirtiedAnimation(this)},pause:function(){this._isFinished||this._paused||this._idle?this._idle&&(this._rewind(),this._idle=!1):this._currentTimePending=!0,this._startTime=null,this._paused=!0},finish:function(){this._idle||(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this._currentTimePending=!1,e.applyDirtiedAnimation(this))},cancel:function(){this._inEffect&&(this._inEffect=!1,this._idle=!0,this._paused=!1,this._isFinished=!0,this._finishedFlag=!0,this._currentTime=0,this._startTime=null,this._effect._update(null),e.applyDirtiedAnimation(this))},reverse:function(){this.playbackRate*=-1,this.play()},addEventListener:function(t,e){"function"==typeof e&&"finish"==t&&this._finishHandlers.push(e)},removeEventListener:function(t,e){if("finish"==t){var n=this._finishHandlers.indexOf(e);n>=0&&this._finishHandlers.splice(n,1)}},_fireEvents:function(t){if(this._isFinished){if(!this._finishedFlag){var e=new i(this,this._currentTime,t),n=this._finishHandlers.concat(this.onfinish?[this.onfinish]:[]);setTimeout(function(){n.forEach(function(t){t.call(e.target,e)})},0),this._finishedFlag=!0}}else this._finishedFlag=!1},_tick:function(t,e){this._idle||this._paused||(null==this._startTime?e&&(this.startTime=t-this._currentTime/this.playbackRate):this._isFinished||this._tickCurrentTime((t-this._startTime)*this.playbackRate)),e&&(this._currentTimePending=!1,this._fireEvents(t))},get _needsTick(){return this.playState in{pending:1,running:1}||!this._finishedFlag},_targetAnimations:function(){var t=this._effect._target;return t._activeAnimations||(t._activeAnimations=[]),t._activeAnimations},_markTarget:function(){var t=this._targetAnimations();-1===t.indexOf(this)&&t.push(this)},_unmarkTarget:function(){var t=this._targetAnimations(),e=t.indexOf(this);-1!==e&&t.splice(e,1)}}}(i,r),function(t,e,n){function i(t){var e=u;u=[],ti?n%=i:i%=n;return t*e/(n+i)}(i.length,r.length),u=0;u=1?e:"visible"}]},["visibility"]),function(t,e){function n(t){t=t.trim(),o.fillStyle="#000",o.fillStyle=t;var e=o.fillStyle;if(o.fillStyle="#fff",o.fillStyle=t,e==o.fillStyle){o.fillRect(0,0,1,1);var n=o.getImageData(0,0,1,1).data;o.clearRect(0,0,1,1);var i=n[3]/255;return[n[0]*i,n[1]*i,n[2]*i,i]}}function i(e,n){return[e,n,function(e){function n(t){return Math.max(0,Math.min(255,t))}if(e[3])for(var i=0;i<3;i++)e[i]=Math.round(n(e[i]/e[3]));return e[3]=t.numberToString(t.clamp(0,1,e[3])),"rgba("+e.join(",")+")"}]}var r=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");r.width=r.height=1;var o=r.getContext("2d");t.addPropertiesHandler(n,i,["background-color","border-bottom-color","border-left-color","border-right-color","border-top-color","color","fill","flood-color","lighting-color","outline-color","stop-color","stroke","text-decoration-color"]),t.consumeColor=t.consumeParenthesised.bind(null,n),t.mergeColors=i}(r),function(t,e){function n(t){function e(){var e=a.exec(t);o=e?e[0]:void 0}function n(){if("("!==o)return function(){var t=Number(o);return e(),t}();e();var t=r();return")"!==o?NaN:(e(),t)}function i(){for(var t=n();"*"===o||"/"===o;){var i=o;e();var r=n();"*"===i?t*=r:t/=r}return t}function r(){for(var t=i();"+"===o||"-"===o;){var n=o;e();var r=i();"+"===n?t+=r:t-=r}return t}var o,a=/([\+\-\w\.]+|[\(\)\*\/])/g;return e(),r()}function i(t,e){if("0"==(e=e.trim().toLowerCase())&&"px".search(t)>=0)return{px:0};if(/^[^(]*$|^calc/.test(e)){e=e.replace(/calc\(/g,"(");var i={};e=e.replace(t,function(t){return i[t]=null,"U"+t});for(var r="U("+t.source+")",o=e.replace(/[-+]?(\d*\.)?\d+([Ee][-+]?\d+)?/g,"N").replace(new RegExp("N"+r,"g"),"D").replace(/\s[+-]\s/g,"O").replace(/\s/g,""),a=[/N\*(D)/g,/(N|D)[*\/]N/g,/(N|D)O\1/g,/\((N|D)\)/g],s=0;s1?"calc("+n+")":n}]}var a="px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc",s=i.bind(null,new RegExp(a,"g")),l=i.bind(null,new RegExp(a+"|%","g")),u=i.bind(null,/deg|rad|grad|turn/g);t.parseLength=s,t.parseLengthOrPercent=l,t.consumeLengthOrPercent=t.consumeParenthesised.bind(null,l),t.parseAngle=u,t.mergeDimensions=o;var c=t.consumeParenthesised.bind(null,s),p=t.consumeRepeated.bind(void 0,c,/^/),h=t.consumeRepeated.bind(void 0,p,/^,/);t.consumeSizePairList=h;var d=t.mergeNestedRepeated.bind(void 0,r," "),f=t.mergeNestedRepeated.bind(void 0,d,",");t.mergeNonNegativeSizePair=d,t.addPropertiesHandler(function(t){var e=h(t);if(e&&""==e[1])return e[0]},f,["background-size"]),t.addPropertiesHandler(l,r,["border-bottom-width","border-image-width","border-left-width","border-right-width","border-top-width","flex-basis","font-size","height","line-height","max-height","max-width","outline-width","width"]),t.addPropertiesHandler(l,o,["border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","bottom","left","letter-spacing","margin-bottom","margin-left","margin-right","margin-top","min-height","min-width","outline-offset","padding-bottom","padding-left","padding-right","padding-top","perspective","right","shape-margin","stroke-dashoffset","text-indent","top","vertical-align","word-spacing"])}(r),function(t,e){function n(e){return t.consumeLengthOrPercent(e)||t.consumeToken(/^auto/,e)}function i(e){var i=t.consumeList([t.ignore(t.consumeToken.bind(null,/^rect/)),t.ignore(t.consumeToken.bind(null,/^\(/)),t.consumeRepeated.bind(null,n,/^,/),t.ignore(t.consumeToken.bind(null,/^\)/))],e);if(i&&4==i[0].length)return i[0]}var r=t.mergeWrappedNestedRepeated.bind(null,function(t){return"rect("+t+")"},function(e,n){return"auto"==e||"auto"==n?[!0,!1,function(i){var r=i?e:n;if("auto"==r)return"auto";var o=t.mergeDimensions(r,r);return o[2](o[0])}]:t.mergeDimensions(e,n)},", ");t.parseBox=i,t.mergeBoxes=r,t.addPropertiesHandler(i,r,["clip"])}(r),function(t,e){function n(t){return function(e){var n=0;return t.map(function(t){return t===u?e[n++]:t})}}function i(t){return t}function r(e){if("none"==(e=e.toLowerCase().trim()))return[];for(var n,i=/\s*(\w+)\(([^)]*)\)/g,r=[],o=0;n=i.exec(e);){if(n.index!=o)return;o=n.index+n[0].length;var a=n[1],s=h[a];if(!s)return;var l=n[2].split(","),u=s[0];if(u.length=0&&this._cancelHandlers.splice(n,1)}else l.call(this,t,e)},o}}}(),function(t){var e=document.documentElement,n=null,i=!1;try{var r="0"==getComputedStyle(e).getPropertyValue("opacity")?"1":"0";(n=e.animate({opacity:[r,r]},{duration:1})).currentTime=0,i=getComputedStyle(e).getPropertyValue("opacity")==r}catch(t){}finally{n&&n.cancel()}if(!i){var o=window.Element.prototype.animate;window.Element.prototype.animate=function(e,n){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&e[Symbol.iterator]&&(e=Array.from(e)),Array.isArray(e)||null===e||(e=t.convertToArrayForm(e)),o.call(this,e,n)}}}(i),function(t,e,n){function i(t){var n=e.timeline;n.currentTime=t,n._discardAnimations(),0==n._animations.length?o=!1:requestAnimationFrame(i)}var r=window.requestAnimationFrame;window.requestAnimationFrame=function(t){return r(function(n){e.timeline._updateAnimationsPromises(),t(n),e.timeline._updateAnimationsPromises()})},e.AnimationTimeline=function(){this._animations=[],this.currentTime=void 0},e.AnimationTimeline.prototype={getAnimations:function(){return this._discardAnimations(),this._animations.slice()},_updateAnimationsPromises:function(){e.animationsWithPromises=e.animationsWithPromises.filter(function(t){return t._updatePromises()})},_discardAnimations:function(){this._updateAnimationsPromises(),this._animations=this._animations.filter(function(t){return"finished"!=t.playState&&"idle"!=t.playState})},_play:function(t){var n=new e.Animation(t,this);return this._animations.push(n),e.restartWebAnimationsNextTick(),n._updatePromises(),n._animation.play(),n._updatePromises(),n},play:function(t){return t&&t.remove(),this._play(t)}};var o=!1;e.restartWebAnimationsNextTick=function(){o||(o=!0,requestAnimationFrame(i))};var a=new e.AnimationTimeline;e.timeline=a;try{Object.defineProperty(window.document,"timeline",{configurable:!0,get:function(){return a}})}catch(t){}try{window.document.timeline=a}catch(t){}}(0,o),function(t,e,n){e.animationsWithPromises=[],e.Animation=function(e,n){if(this.id="",e&&e._id&&(this.id=e._id),this.effect=e,e&&(e._animation=this),!n)throw new Error("Animation with null timeline is not supported");this._timeline=n,this._sequenceNumber=t.sequenceNumber++,this._holdTime=0,this._paused=!1,this._isGroup=!1,this._animation=null,this._childAnimations=[],this._callback=null,this._oldPlayState="idle",this._rebuildUnderlyingAnimation(),this._animation.cancel(),this._updatePromises()},e.Animation.prototype={_updatePromises:function(){var t=this._oldPlayState,e=this.playState;return this._readyPromise&&e!==t&&("idle"==e?(this._rejectReadyPromise(),this._readyPromise=void 0):"pending"==t?this._resolveReadyPromise():"pending"==e&&(this._readyPromise=void 0)),this._finishedPromise&&e!==t&&("idle"==e?(this._rejectFinishedPromise(),this._finishedPromise=void 0):"finished"==e?this._resolveFinishedPromise():"finished"==t&&(this._finishedPromise=void 0)),this._oldPlayState=this.playState,this._readyPromise||this._finishedPromise},_rebuildUnderlyingAnimation:function(){this._updatePromises();var t,n,i,r,o=!!this._animation;o&&(t=this.playbackRate,n=this._paused,i=this.startTime,r=this.currentTime,this._animation.cancel(),this._animation._wrapper=null,this._animation=null),(!this.effect||this.effect instanceof window.KeyframeEffect)&&(this._animation=e.newUnderlyingAnimationForKeyframeEffect(this.effect),e.bindAnimationForKeyframeEffect(this)),(this.effect instanceof window.SequenceEffect||this.effect instanceof window.GroupEffect)&&(this._animation=e.newUnderlyingAnimationForGroup(this.effect),e.bindAnimationForGroup(this)),this.effect&&this.effect._onsample&&e.bindAnimationForCustomEffect(this),o&&(1!=t&&(this.playbackRate=t),null!==i?this.startTime=i:null!==r?this.currentTime=r:null!==this._holdTime&&(this.currentTime=this._holdTime),n&&this.pause()),this._updatePromises()},_updateChildren:function(){if(this.effect&&"idle"!=this.playState){var t=this.effect._timing.delay;this._childAnimations.forEach(function(n){this._arrangeChildren(n,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(n.effect))}.bind(this))}},_setExternalAnimation:function(t){if(this.effect&&this._isGroup)for(var e=0;e\n :host {\n display: block;\n padding: 8px 0;\n\n background: var(--paper-listbox-background-color, var(--primary-background-color));\n color: var(--paper-listbox-color, var(--primary-text-color));\n\n @apply --paper-listbox;\n }\n \n\n \n"]);return a=function(){return t},t}Object(r.a)({_template:Object(o.a)(a()),is:"paper-listbox",behaviors:[i.a],hostAttributes:{role:"listbox"}})},120:function(t,e,n){"use strict";n(3),n(10);var i=n(20),r=n(53),o=n(5),a=n(6),s=n(4);function l(){var t=function(t,e){e||(e=t.slice(0));return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))}(['\n \n\n \x3c!-- the mirror sizes the input/textarea so it grows with typing --\x3e\n \x3c!-- use   instead   of to allow this element to be used in XHTML --\x3e\n \n\n \x3c!-- size the input/textarea with a div, because the textarea has intrinsic size in ff --\x3e\n
    \n \n
    \n'],['\n \n\n \x3c!-- the mirror sizes the input/textarea so it grows with typing --\x3e\n \x3c!-- use   instead   of to allow this element to be used in XHTML --\x3e\n \n\n \x3c!-- size the input/textarea with a div, because the textarea has intrinsic size in ff --\x3e\n
    \n \n
    \n']);return l=function(){return t},t}Object(o.a)({_template:Object(s.a)(l()),is:"iron-autogrow-textarea",behaviors:[r.a,i.a],properties:{value:{observer:"_valueChanged",type:String,notify:!0},bindValue:{observer:"_bindValueChanged",type:String,notify:!0},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number},label:{type:String}},listeners:{input:"_onInput"},get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(t){this.$.textarea.selectionStart=t},set selectionEnd(t){this.$.textarea.selectionEnd=t},attached:function(){navigator.userAgent.match(/iP(?:[oa]d|hone)/)&&(this.$.textarea.style.marginLeft="-3px")},validate:function(){var t=this.$.textarea.validity.valid;return t&&(this.required&&""===this.value?t=!1:this.hasValidator()&&(t=r.a.validate.call(this,this.value))),this.invalid=!t,this.fire("iron-input-validate"),t},_bindValueChanged:function(t){this.value=t},_valueChanged:function(t){var e=this.textarea;e&&(e.value!==t&&(e.value=t||0===t?t:""),this.bindValue=t,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(t){var e=Object(a.a)(t).path;this.value=e?e[0].value:t.target.value},_constrain:function(t){var e;for(t=t||[""],e=this.maxRows>0&&t.length>this.maxRows?t.slice(0,this.maxRows):t.slice(0);this.rows>0&&e.length")+" "},_valueForMirror:function(){var t=this.textarea;if(t)return this.tokens=t&&t.value?t.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(//gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)}})},121:function(t,e,n){"use strict";n(3);var i=n(5),r=n(6),o=n(4);function a(){var t=function(t,e){e||(e=t.slice(0));return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))}(['\n \n\n \n']);return a=function(){return t},t}Object(i.a)({_template:Object(o.a)(a()),is:"paper-tooltip",hostAttributes:{role:"tooltip",tabindex:-1},properties:{for:{type:String,observer:"_findTarget"},manualMode:{type:Boolean,value:!1,observer:"_manualModeChanged"},position:{type:String,value:"bottom"},fitToVisibleBounds:{type:Boolean,value:!1},offset:{type:Number,value:14},marginTop:{type:Number,value:14},animationDelay:{type:Number,value:500,observer:"_delayChange"},animationEntry:{type:String,value:""},animationExit:{type:String,value:""},animationConfig:{type:Object,value:function(){return{entry:[{name:"fade-in-animation",node:this,timing:{delay:0}}],exit:[{name:"fade-out-animation",node:this}]}}},_showing:{type:Boolean,value:!1}},listeners:{webkitAnimationEnd:"_onAnimationEnd"},get target(){var t=Object(r.a)(this).parentNode,e=Object(r.a)(this).getOwnerRoot();return this.for?Object(r.a)(e).querySelector("#"+this.for):t.nodeType==Node.DOCUMENT_FRAGMENT_NODE?e.host:t},attached:function(){this._findTarget()},detached:function(){this.manualMode||this._removeListeners()},playAnimation:function(t){"entry"===t?this.show():"exit"===t&&this.hide()},cancelAnimation:function(){this.$.tooltip.classList.add("cancel-animation")},show:function(){if(!this._showing){if(""===Object(r.a)(this).textContent.trim()){for(var t=!0,e=Object(r.a)(this).getEffectiveChildNodes(),n=0;nwindow.innerWidth?(this.style.right="0px",this.style.left="auto"):(this.style.left=Math.max(0,e)+"px",this.style.right="auto"),i.top+n+o.height>window.innerHeight?(this.style.bottom=i.height-u+t+"px",this.style.top="auto"):(this.style.top=Math.max(-i.top,n)+"px",this.style.bottom="auto")):(this.style.left=e+"px",this.style.top=n+"px")}},_addListeners:function(){this._target&&(this.listen(this._target,"mouseenter","show"),this.listen(this._target,"focus","show"),this.listen(this._target,"mouseleave","hide"),this.listen(this._target,"blur","hide"),this.listen(this._target,"tap","hide")),this.listen(this.$.tooltip,"animationend","_onAnimationEnd"),this.listen(this,"mouseenter","hide")},_findTarget:function(){this.manualMode||this._removeListeners(),this._target=this.target,this.manualMode||this._addListeners()},_delayChange:function(t){500!==t&&this.updateStyles({"--paper-tooltip-delay-in":t+"ms"})},_manualModeChanged:function(){this.manualMode?this._removeListeners():this._addListeners()},_cancelAnimation:function(){this.$.tooltip.classList.remove(this._getAnimationType("entry")),this.$.tooltip.classList.remove(this._getAnimationType("exit")),this.$.tooltip.classList.remove("cancel-animation"),this.$.tooltip.classList.add("hidden")},_onAnimationFinish:function(){this._showing&&(this.$.tooltip.classList.remove(this._getAnimationType("entry")),this.$.tooltip.classList.remove("cancel-animation"),this.$.tooltip.classList.add(this._getAnimationType("exit")))},_onAnimationEnd:function(){this._animationPlaying=!1,this._showing||(this.$.tooltip.classList.remove(this._getAnimationType("exit")),this.$.tooltip.classList.add("hidden"))},_getAnimationType:function(t){if("entry"===t&&""!==this.animationEntry)return this.animationEntry;if("exit"===t&&""!==this.animationExit)return this.animationExit;if(this.animationConfig[t]&&"string"==typeof this.animationConfig[t][0].name){if(this.animationConfig[t][0].timing&&this.animationConfig[t][0].timing.delay&&0!==this.animationConfig[t][0].timing.delay){var e=this.animationConfig[t][0].timing.delay;"entry"===t?this.updateStyles({"--paper-tooltip-delay-in":e+"ms"}):"exit"===t&&this.updateStyles({"--paper-tooltip-delay-out":e+"ms"})}return this.animationConfig[t][0].name}},_removeListeners:function(){this._target&&(this.unlisten(this._target,"mouseenter","show"),this.unlisten(this._target,"focus","show"),this.unlisten(this._target,"mouseleave","hide"),this.unlisten(this._target,"blur","hide"),this.unlisten(this._target,"tap","hide")),this.unlisten(this.$.tooltip,"animationend","_onAnimationEnd"),this.unlisten(this,"mouseenter","hide")}})},122:function(t,e,n){"use strict";n(3),n(10),n(28),n(11);var i=n(79),r=n(52),o=n(5),a=n(37),s=n(4),l=n(47);function u(){var t=function(t,e){e||(e=t.slice(0));return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))}(['\n\n \n\n
    \n
    \n
    \n
    \n\n
    \n\n ']);return u=function(){return t},t}var c=Object(s.a)(u());c.setAttribute("strip-whitespace",""),Object(o.a)({_template:c,is:"paper-toggle-button",behaviors:[i.a],hostAttributes:{role:"button","aria-pressed":"false",tabindex:0},properties:{},listeners:{track:"_ontrack"},attached:function(){Object(l.a)(this,function(){Object(a.e)(this,"pan-y")})},_ontrack:function(t){var e=t.detail;"start"===e.state?this._trackStart(e):"track"===e.state?this._trackMove(e):"end"===e.state&&this._trackEnd(e)},_trackStart:function(t){this._width=this.$.toggleBar.offsetWidth/2,this._trackChecked=this.checked,this.$.toggleButton.classList.add("dragging")},_trackMove:function(t){var e=t.dx;this._x=Math.min(this._width,Math.max(0,this._trackChecked?this._width+e:e)),this.translate3d(this._x+"px",0,0,this.$.toggleButton),this._userActivate(this._x>this._width/2)},_trackEnd:function(t){this.$.toggleButton.classList.remove("dragging"),this.transform("",this.$.toggleButton)},_createRipple:function(){this._rippleContainer=this.$.toggleButton;var t=r.a._createRipple();return t.id="ink",t.setAttribute("recenters",""),t.classList.add("circle","toggle-ink"),t}})},130:function(t,e,n){"use strict";n(3);var i=n(21),r=(n(25),n(34),n(20)),o=n(73),a=n(80),s=n(5),l=n(6),u=n(4);function c(){var t=function(t,e){e||(e=t.slice(0));return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))}(['\n \n\n
    \n \n
    \n']);return c=function(){return t},t}Object(s.a)({_template:Object(u.a)(c()),is:"iron-dropdown",behaviors:[r.a,i.a,o.a,a.a],properties:{horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},openAnimationConfig:{type:Object},closeAnimationConfig:{type:Object},focusTarget:{type:Object},noAnimations:{type:Boolean,value:!1},allowOutsideScroll:{type:Boolean,value:!1,observer:"_allowOutsideScrollChanged"}},listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},observers:["_updateOverlayPosition(positionTarget, verticalAlign, horizontalAlign, verticalOffset, horizontalOffset)"],get containedElement(){for(var t=Object(l.a)(this.$.content).getDistributedNodes(),e=0,n=t.length;e\n :host {\n display: inline-block;\n position: relative;\n padding: 8px;\n outline: none;\n\n @apply --paper-menu-button;\n }\n\n :host([disabled]) {\n cursor: auto;\n color: var(--disabled-text-color);\n\n @apply --paper-menu-button-disabled;\n }\n\n iron-dropdown {\n @apply --paper-menu-button-dropdown;\n }\n\n .dropdown-content {\n @apply --shadow-elevation-2dp;\n\n position: relative;\n border-radius: 2px;\n background-color: var(--paper-menu-button-dropdown-background, var(--primary-background-color));\n\n @apply --paper-menu-button-content;\n }\n\n :host([vertical-align="top"]) .dropdown-content {\n margin-bottom: 20px;\n margin-top: -10px;\n top: 10px;\n }\n\n :host([vertical-align="bottom"]) .dropdown-content {\n bottom: 10px;\n margin-bottom: -10px;\n margin-top: 20px;\n }\n\n #trigger {\n cursor: pointer;\n }\n \n\n
    \n \n
    \n\n \n \n \n']);return h=function(){return t},t}Object(s.a)({is:"paper-menu-grow-height-animation",behaviors:[p],configure:function(t){var e=t.node,n=e.getBoundingClientRect().height;return this._effect=new KeyframeEffect(e,[{height:n/2+"px"},{height:n+"px"}],this.timingFromConfig(t)),this._effect}}),Object(s.a)({is:"paper-menu-grow-width-animation",behaviors:[p],configure:function(t){var e=t.node,n=e.getBoundingClientRect().width;return this._effect=new KeyframeEffect(e,[{width:n/2+"px"},{width:n+"px"}],this.timingFromConfig(t)),this._effect}}),Object(s.a)({is:"paper-menu-shrink-width-animation",behaviors:[p],configure:function(t){var e=t.node,n=e.getBoundingClientRect().width;return this._effect=new KeyframeEffect(e,[{width:n+"px"},{width:n-n/20+"px"}],this.timingFromConfig(t)),this._effect}}),Object(s.a)({is:"paper-menu-shrink-height-animation",behaviors:[p],configure:function(t){var e=t.node,n=e.getBoundingClientRect().height;return this.setPrefixedProperty(e,"transformOrigin","0 0"),this._effect=new KeyframeEffect(e,[{height:n+"px",transform:"translateY(0)"},{height:n/2+"px",transform:"translateY(-20px)"}],this.timingFromConfig(t)),this._effect}});var d={ANIMATION_CUBIC_BEZIER:"cubic-bezier(.3,.95,.5,1)",MAX_ANIMATION_TIME_MS:400},f=Object(s.a)({_template:Object(u.a)(h()),is:"paper-menu-button",behaviors:[i.a,r.a],properties:{opened:{type:Boolean,value:!1,notify:!0,observer:"_openedChanged"},horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},noOverlap:{type:Boolean},noAnimations:{type:Boolean,value:!1},ignoreSelect:{type:Boolean,value:!1},closeOnActivate:{type:Boolean,value:!1},openAnimationConfig:{type:Object,value:function(){return[{name:"fade-in-animation",timing:{delay:100,duration:200}},{name:"paper-menu-grow-width-animation",timing:{delay:100,duration:150,easing:d.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-grow-height-animation",timing:{delay:100,duration:275,easing:d.ANIMATION_CUBIC_BEZIER}}]}},closeAnimationConfig:{type:Object,value:function(){return[{name:"fade-out-animation",timing:{duration:150}},{name:"paper-menu-shrink-width-animation",timing:{delay:100,duration:50,easing:d.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-shrink-height-animation",timing:{duration:200,easing:"ease-in"}}]}},allowOutsideScroll:{type:Boolean,value:!1},restoreFocusOnClose:{type:Boolean,value:!0},_dropdownContent:{type:Object}},hostAttributes:{role:"group","aria-haspopup":"true"},listeners:{"iron-activate":"_onIronActivate","iron-select":"_onIronSelect"},get contentElement(){for(var t=Object(l.a)(this.$.content).getDistributedNodes(),e=0,n=t.length;e-1&&t.preventDefault()}});Object.keys(d).forEach(function(t){f[t]=d[t]});n(86),n(55);var m=document.createElement("template");m.setAttribute("style","display: none;"),m.innerHTML='\n\n\n\n',document.head.appendChild(m.content);var g=document.createElement("template");g.setAttribute("style","display: none;"),g.innerHTML='\n \n',document.head.appendChild(g.content);var v=n(39),y=n(67),_=n(53),b=n(37);function w(){var t=function(t,e){e||(e=t.slice(0));return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))}(['\n \n\n \x3c!-- this div fulfills an a11y requirement for combobox, do not remove --\x3e\n \n \n \x3c!-- support hybrid mode: user might be using paper-menu-button 1.x which distributes via --\x3e\n \n \n \n']);return w=function(){return t},t}Object(s.a)({_template:Object(u.a)(w()),is:"paper-dropdown-menu",behaviors:[v.a,r.a,y.a,_.a],properties:{selectedItemLabel:{type:String,notify:!0,readOnly:!0},selectedItem:{type:Object,notify:!0,readOnly:!0},value:{type:String,notify:!0},label:{type:String},placeholder:{type:String},errorMessage:{type:String},opened:{type:Boolean,notify:!0,value:!1,observer:"_openedChanged"},allowOutsideScroll:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1,reflectToAttribute:!0},alwaysFloatLabel:{type:Boolean,value:!1},noAnimations:{type:Boolean,value:!1},horizontalAlign:{type:String,value:"right"},verticalAlign:{type:String,value:"top"},verticalOffset:Number,dynamicAlign:{type:Boolean},restoreFocusOnClose:{type:Boolean,value:!0}},listeners:{tap:"_onTap"},keyBindings:{"up down":"open",esc:"close"},hostAttributes:{role:"combobox","aria-autocomplete":"none","aria-haspopup":"true"},observers:["_selectedItemChanged(selectedItem)"],attached:function(){var t=this.contentElement;t&&t.selectedItem&&this._setSelectedItem(t.selectedItem)},get contentElement(){for(var t=Object(l.a)(this.$.content).getDistributedNodes(),e=0,n=t.length;e\n \n",document.head.appendChild(i.content);var r=n(5),o=n(4),a=n(39),s=n(20),l=[a.a,s.a,{hostAttributes:{role:"option",tabindex:"0"}}];function u(){var t=function(t,e){e||(e=t.slice(0));return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))}(['\n \n \n']);return u=function(){return t},t}Object(r.a)({_template:Object(o.a)(u()),is:"paper-item",behaviors:[l]})}}]); -//# sourceMappingURL=chunk.9d7374dae6137783dda4.js.map \ No newline at end of file diff --git a/hassio/api/panel/chunk.9d7374dae6137783dda4.js.gz b/hassio/api/panel/chunk.9d7374dae6137783dda4.js.gz deleted file mode 100644 index 703f1f0f6..000000000 Binary files a/hassio/api/panel/chunk.9d7374dae6137783dda4.js.gz and /dev/null differ diff --git a/hassio/api/panel/chunk.9d7374dae6137783dda4.js.map b/hassio/api/panel/chunk.9d7374dae6137783dda4.js.map deleted file mode 100644 index 478e6667a..000000000 --- a/hassio/api/panel/chunk.9d7374dae6137783dda4.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///src/scope.js","webpack:///src/timing-utilities.js","webpack:///src/normalize-keyframes.js","webpack:///src/deprecation.js","webpack:///src/web-animations-bonus-cancel-events.js","webpack:///src/web-animations-bonus-object-form-keyframes.js","webpack:///src/timeline.js","webpack:///src/web-animations-next-animation.js","webpack:///src/keyframe-effect-constructor.js","webpack:///src/effect-callback.js","webpack:///src/group-constructors.js","webpack:///../node_modules/@polymer/paper-listbox/paper-listbox.js","webpack:///../node_modules/@polymer/iron-autogrow-textarea/iron-autogrow-textarea.js","webpack:///../node_modules/@polymer/paper-tooltip/paper-tooltip.js","webpack:///../node_modules/@polymer/paper-toggle-button/paper-toggle-button.js","webpack:///../node_modules/@polymer/iron-dropdown/iron-dropdown.js","webpack:///../node_modules/@polymer/neon-animation/neon-animation-behavior.js","webpack:///../node_modules/@polymer/neon-animation/animations/fade-in-animation.js","webpack:///../node_modules/@polymer/neon-animation/animations/fade-out-animation.js","webpack:///../node_modules/@polymer/paper-menu-button/paper-menu-button-animations.js","webpack:///../node_modules/@polymer/paper-menu-button/paper-menu-button.js","webpack:///../node_modules/@polymer/paper-dropdown-menu/paper-dropdown-menu-icons.js","webpack:///../node_modules/@polymer/paper-dropdown-menu/paper-dropdown-menu-shared-styles.js","webpack:///../node_modules/@polymer/paper-dropdown-menu/paper-dropdown-menu.js","webpack:///../node_modules/@polymer/paper-item/paper-item-shared-styles.js","webpack:///../node_modules/@polymer/paper-item/paper-item-behavior.js","webpack:///../node_modules/@polymer/paper-item/paper-item.js"],"names":["webAnimationsShared","webAnimations1","webAnimationsNext","webAnimationsTesting","this","shared","testing","AnimationEffectTiming","_delay","_endDelay","_fill","_iterationStart","_iterations","_duration","_playbackRate","_direction","_easing","_easingFunction","linear","isInvalidTimingDeprecated","isDeprecated","makeTiming","timingInput","forGroup","effect","timing","fill","duration","isNaN","Object","getOwnPropertyNames","forEach","property","fills","indexOf","directions","cubic","a","b","c","d","x","f","m","start_gradient","end_gradient","start","end","mid","xEst","Math","abs","step","count","pos","stepSize","normalizeEasing","easing","styleForCleaning","document","createElement","style","animationTimingFunction","normalizedEasing","TypeError","parseEasingFunction","cubicData","cubicBezierRe","exec","apply","slice","map","Number","stepData","stepRe","Start","middle","Middle","End","presets","calculatePhase","activeDuration","localTime","PhaseNone","endTime","delay","endDelay","min","PhaseBefore","PhaseAfter","PhaseActive","split","prototype","_setMember","member","value","_effect","_timingInput","_timing","normalizeTimingInput","calculateActiveDuration","_animation","_rebuildUnderlyingAnimation","playbackRate","iterationStart","direction","iterations","ease","ease-in","ease-out","ease-in-out","step-start","step-middle","step-end","numberString","RegExp","cloneTimingInput","clone","numericTimingToObject","repeatedDuration","calculateIterationProgress","phase","activeTime","fillMode","calculateActiveTime","overallProgress","iterationDuration","calculateOverallProgress","simpleIterationProgress","Infinity","calculateSimpleIterationProgress","currentIteration","floor","calculateCurrentIteration","directedProgress","playbackDirection","currentDirection","calculateDirectedProgress","antiAlias","aliases","expandShorthandAndAntiAlias","result","lastIndexOf","isNotAnimatable","longProperties","shorthandToLonghand","i","shorthandExpanderElem","longProperty","longhandValue","convertToArrayForm","effectInput","normalizedEffectInput","values","Array","isArray","keyframe","numKeyframes","length","offset","composite","push","sort","background","border","borderBottom","borderColor","borderLeft","borderRadius","borderRight","borderTop","borderWidth","flex","font","margin","outline","padding","createElementNS","borderWidthAliases","thin","medium","thick","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","fontSize","xx-small","x-small","small","large","x-large","xx-large","fontWeight","normal","bold","outlineWidth","textShadow","none","boxShadow","normalizeKeyframes","window","Symbol","iterator","from","keyframes","originalKeyframe","memberValue","isFinite","type","DOMException","NOT_SUPPORTED_ERR","name","message","everyFrameHasOffset","previousOffset","filter","previousIndex","j","spaceKeyframes","silenced","feature","date","advice","plural","auxVerb","today","Date","expiry","setMonth","getMonth","console","warn","toDateString","deprecated","Error","animate","oncancel","performance","now","AnimationCancelEvent","target","currentTime","timelineTime","bubbles","cancelable","currentTarget","defaultPrevented","eventPhase","Event","AT_TARGET","timeStamp","originalElementAnimate","Element","options","animation","call","_cancelHandlers","originalCancel","cancel","event","handlers","concat","setTimeout","handler","originalAddEventListener","addEventListener","originalRemoveEventListener","removeEventListener","index","splice","element","documentElement","animated","testOpacity","getComputedStyle","getPropertyValue","opacity","error","scope","webAnimationsNextTick","t","timeline","_discardAnimations","_animations","ticking","requestAnimationFrame","originalRequestAnimationFrame","_updateAnimationsPromises","AnimationTimeline","getAnimations","animationsWithPromises","_updatePromises","playState","_play","Animation","restartWebAnimationsNextTick","play","remove","defineProperty","configurable","get","e","id","_id","_timeline","_sequenceNumber","sequenceNumber","_holdTime","_paused","_isGroup","_childAnimations","_callback","_oldPlayState","oldPlayState","newPlayState","_readyPromise","_rejectReadyPromise","_resolveReadyPromise","_finishedPromise","_rejectFinishedPromise","_resolveFinishedPromise","oldPlaybackRate","oldPaused","oldStartTime","oldCurrentTime","hadUnderlying","startTime","_wrapper","KeyframeEffect","newUnderlyingAnimationForKeyframeEffect","bindAnimationForKeyframeEffect","SequenceEffect","GroupEffect","newUnderlyingAnimationForGroup","bindAnimationForGroup","_onsample","bindAnimationForCustomEffect","pause","_updateChildren","childAnimation","_arrangeChildren","groupChildDuration","bind","_setExternalAnimation","children","_constructChildAnimations","_removeChildAnimations","child","finished","Promise","resolve","reject","ABORT_ERR","ready","onfinish","v","sign","MAX_VALUE","_register","_forEachChild","awaitStartTime","time","finish","reverse","wrapped","pop","KeyframeList","_frames","updatePendingGroups","updated","pendingGroups","shift","disassociate","removeMulti","effects","oldParents","_parent","_rebuild","_normalizedKeyframes","_keyframes","getFrames","onsample","callback","parent","nullTarget","keyframeEffect","groupAnimation","originalGetComputedStyle","enumerable","arguments","register","_registered","callbacks","tick","updating","left","right","effectFunction","isKeyframeEffect","last","node","constructor","_reparent","_isAncestor","newChildren","_putChild","args","isAppend","HIERARCHY_REQUEST_ERR","unshift","append","prepend","firstChild","lastChild","clonedTiming","clonedChildren","create","total","max","group","underlyingAnimation","underlyingEffect","tf","exports","Polymer","_template","html","_templateObject","is","behaviors","IronMenuBehavior","hostAttributes","role","IronValidatableBehavior","IronControlState","properties","observer","String","notify","bindValue","rows","maxRows","autocomplete","autofocus","Boolean","inputmode","placeholder","readonly","required","minlength","maxlength","label","listeners","input","textarea","$","selectionStart","selectionEnd","attached","navigator","userAgent","match","marginLeft","validate","valid","validity","hasValidator","invalid","fire","_bindValueChanged","_valueChanged","mirror","innerHTML","_valueForMirror","_onInput","eventPath","dom","path","_constrain","tokens","_tokens","join","replace","_updateCached","tabindex","for","manualMode","position","fitToVisibleBounds","marginTop","animationDelay","animationEntry","animationExit","animationConfig","entry","exit","_showing","webkitAnimationEnd","parentNode","ownerRoot","getOwnerRoot","querySelector","nodeType","Node","DOCUMENT_FRAGMENT_NODE","host","_findTarget","detached","_removeListeners","playAnimation","show","hide","cancelAnimation","tooltip","classList","add","textContent","trim","allChildrenEmpty","effectiveChildren","getEffectiveChildNodes","_getAnimationType","updatePosition","_animationPlaying","_cancelAnimation","_onAnimationFinish","_target","offsetParent","tooltipLeft","tooltipTop","parentRect","getBoundingClientRect","targetRect","thisRect","horizontalCenterOffset","width","verticalCenterOffset","height","targetLeft","targetTop","top","innerWidth","innerHeight","bottom","_addListeners","listen","_delayChange","newValue","updateStyles","--paper-tooltip-delay-in","_manualModeChanged","_onAnimationEnd","timingDelay","--paper-tooltip-delay-out","unlisten","template","setAttribute","PaperCheckedElementBehavior","aria-pressed","track","afterNextRender","setTouchAction","_ontrack","detail","state","_trackStart","_trackMove","_trackEnd","_width","toggleBar","offsetWidth","_trackChecked","checked","toggleButton","dx","_x","translate3d","_userActivate","transform","_createRipple","_rippleContainer","ripple","PaperRippleBehavior","IronA11yKeysBehavior","IronOverlayBehavior","NeonAnimationRunnerBehavior","horizontalAlign","reflectToAttribute","verticalAlign","openAnimationConfig","closeAnimationConfig","focusTarget","noAnimations","allowOutsideScroll","neon-animation-finish","observers","containedElement","nodes","content","getDistributedNodes","l","ELEMENT_NODE","scrollAction","_readied","sizingTarget","_openedChanged","opened","disabled","_updateAnimationConfig","IronOverlayBehaviorImpl","_renderOpened","open","contentWrapper","_renderClosed","close","_onNeonAnimationFinish","_finishRenderOpened","_finishRenderClosed","animationNode","animations","_updateOverlayPosition","isAttached","notifyResize","_allowOutsideScrollChanged","_applyFocus","noAutoFocus","focus","NeonAnimationBehavior","animationTiming","isNeonAnimation","created","body","timingFromConfig","config","setPrefixedProperty","prefix","prefixes","transformOrigin","complete","configure","ANIMATION_CUBIC_BEZIER","MAX_ANIMATION_TIME_MS","PaperMenuButton","paper_menu_button_templateObject","dynamicAlign","horizontalOffset","verticalOffset","noOverlap","ignoreSelect","closeOnActivate","restoreFocusOnClose","_dropdownContent","aria-haspopup","iron-activate","iron-select","contentElement","toggle","dropdown","_onIronSelect","_onIronActivate","oldOpened","_disabledChanged","__onIronOverlayCanceled","uiEvent","trigger","preventDefault","keys","key","$_documentContainer","head","appendChild","paper_dropdown_menu_templateObject","IronButtonState","IronFormElementBehavior","selectedItemLabel","readOnly","selectedItem","errorMessage","noLabelFloat","alwaysFloatLabel","tap","keyBindings","up down","esc","aria-autocomplete","_setSelectedItem","menuButton","item","_onIronDeselect","_onTap","gestures","_selectedItemChanged","getAttribute","_setSelectedItemLabel","_computeMenuVerticalOffset","opt_verticalOffset","_getValidity","_value","openState","PaperItemBehavior"],"mappings":";4EAcA,IAAIA,IACAC,EACAC,EAFAF,EAKEG,kBAAuBC,KAAvBD,GAJFF,KACAC,KCFJ,SAAUG,EAAQC,GAiBhB,SAASC,IACPH,KAAKI,OAAS,EACdJ,KAAKK,UAAY,EACjBL,KAAKM,MAAQ,OACbN,KAAKO,gBAAkB,EACvBP,KAAKQ,YAAc,EACnBR,KAAKS,UAAY,EACjBT,KAAKU,cAAgB,EACrBV,KAAKW,WAAa,SAClBX,KAAKY,QAAU,SACfZ,KAAKa,gBAAkBC,EAGzB,SAASC,IACP,OAAOd,EAAOe,aAAa,wBAAyB,aAAc,mDA8EpE,SAASC,EAAWC,EAAaC,EAAUC,GACzC,IAAIC,EAAS,IAAIlB,EACbgB,WACFE,EAAOC,KAAO,OACdD,EAAOE,SAAW,QAEM,iBAAfL,GAA4BM,MAAMN,YAElCA,GACTO,OAAOC,oBAAoBR,GAAaS,QAAQ,SAASC,GACvD,GAA6B,QAAzBV,EAAYU,GAAqB,CACnC,IAA+B,iBAApBP,EAAOO,IAAqC,YAAZA,KACL,iBAAzBV,EAAYU,IAAyBJ,MAAMN,EAAYU,KAChE,OAGJ,GAAiB,QAAZA,IAAiE,GAAzCC,EAAMC,QAAQZ,EAAYU,IACrD,OAEF,GAAiB,aAAZA,IAA2E,GAA9CG,EAAWD,QAAQZ,EAAYU,IAC/D,OAEF,GAAgB,gBAAZA,GAAwD,IAA1BV,EAAYU,IAAmB3B,EAAOe,aAAa,qCAAsC,aAAc,uCACvI,OAEFK,EAAOO,GAAYV,EAAYU,MAlBnCP,EAAOE,SAAWL,EAsBbG,EAmBT,SAASW,EAAMC,EAAGC,EAAGC,EAAGC,GACtB,OAAIH,EAAI,GAAKA,EAAI,GAAKE,EAAI,GAAKA,EAAI,EAC1BrB,EAEF,SAASuB,GAqBZ,SAASC,EAAEL,EAAGC,EAAGK,GAAK,OAAO,EAAIN,GAAK,EAAIM,IAAM,EAAIA,GAAKA,EAAI,EAAIL,GAAK,EAAIK,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EApBjG,GAAIF,GAAK,EAAG,CACV,IAAIG,EAAiB,EACjBP,SAAI,EACNO,EAAiBN,EAAID,GACbC,GAAKC,EAAI,IACjBK,EAAiBJ,EAAID,GAChBK,EAAiBH,EAE1B,GAAIA,GAAK,EAAG,CACV,IAAII,EAAe,EACfN,SAAI,EACNM,GAAgBL,EAAI,IAAMD,EAAI,GAClB,GAALA,GAAUF,EAAI,IACrBQ,GAAgBP,EAAI,IAAMD,EAAI,IACzB,EAAIQ,GAAgBJ,EAAI,GAIjC,IADA,IAAIK,EAAQ,EAAGC,EAAM,EACdD,EAAQC,GAAK,CAClB,IAAIC,GAAOF,EAAQC,GAAO,EAEtBE,EAAOP,EAAEL,EAAGE,EAAGS,GACnB,GAAIE,KAAKC,IAAIV,EAAIQ,GAAQ,KACvB,OAAOP,EAAEJ,EAAGE,EAAGQ,GAEbC,EAAOR,EACTK,EAAQE,EAERD,EAAMC,EAGV,OAAON,EAAEJ,EAAGE,EAAGQ,IAQnB,SAASI,EAAKC,EAAOC,GACnB,OAAO,SAASb,GACd,GAAIA,GAAK,EACP,OAAO,EAET,IAAIc,EAAW,EAAIF,EAEnB,OADAZ,GAAKa,EAAMC,GACAd,EAAIc,GAmBnB,SAASC,EAAgBC,GAClBC,IACHA,EAAmBC,SAASC,cAAc,OAAOC,OAEnDH,EAAiBI,wBAA0B,GAC3CJ,EAAiBI,wBAA0BL,EAC3C,IAAIM,EAAmBL,EAAiBI,wBACxC,GAAwB,IAApBC,GAA0B5C,IAC5B,MAAM,IAAI6C,UAAUP,EAAS,oCAE/B,OAAOM,EAGT,SAASE,EAAoBF,GAC3B,GAAwB,UAApBA,EACF,OAAO7C,EAET,IAAIgD,EAAYC,EAAcC,KAAKL,GACnC,GAAIG,EACF,OAAO9B,EAAMiC,MAAMjE,KAAM8D,EAAUI,MAAM,GAAGC,IAAIC,SAElD,IAAIC,EAAWC,EAAON,KAAKL,GAC3B,OAAIU,EACKrB,EAAKoB,OAAOC,EAAS,KAAM3B,MAAS6B,EAAOC,OAAUC,EAAQ9B,IAAO+B,GAAKL,EAAS,KAE9EM,EAAQhB,IAMd7C,EAoBT,SAAS8D,EAAeC,EAAgBC,EAAWzD,GAEjD,GAAiB,MAAbyD,EACF,OAAOC,EAGT,IAAIC,EAAU3D,EAAO4D,MAAQJ,EAAiBxD,EAAO6D,SACrD,OAAIJ,EAAYhC,KAAKqC,IAAI9D,EAAO4D,MAAOD,GAC9BI,EAELN,GAAahC,KAAKqC,IAAI9D,EAAO4D,MAAQJ,EAAgBG,GAChDK,EAGFC,EAlST,IAAIzD,EAAQ,+BAA+B0D,MAAM,KAC7CxD,EAAa,sCAAsCwD,MAAM,KACzDzE,EAAS,SAASuB,GAAK,OAAOA,GA8BlClC,EAAsBqF,WACpBC,WAAY,SAASC,EAAQC,GAC3B3F,KAAK,IAAM0F,GAAUC,EACjB3F,KAAK4F,UACP5F,KAAK4F,QAAQC,aAAaH,GAAUC,EACpC3F,KAAK4F,QAAQE,QAAU7F,EAAO8F,qBAAqB/F,KAAK4F,QAAQC,cAChE7F,KAAK4F,QAAQf,eAAiB5E,EAAO+F,wBAAwBhG,KAAK4F,QAAQE,SACtE9F,KAAK4F,QAAQK,YACfjG,KAAK4F,QAAQK,WAAWC,gCAI9BC,mBACE,OAAOnG,KAAKU,eAEduE,UAAUU,GACR3F,KAAKyF,WAAW,QAASE,IAE3BV,YACE,OAAOjF,KAAKI,QAEd8E,aAAaS,GACX3F,KAAKyF,WAAW,WAAYE,IAE9BT,eACE,OAAOlF,KAAKK,WAEdiB,SAASqE,GACP3F,KAAKyF,WAAW,OAAQE,IAE1BrE,WACE,OAAOtB,KAAKM,OAEd8F,mBAAmBT,GACjB,IAAKnE,MAAMmE,IAAUA,EAAQ,IAAM5E,IACjC,MAAM,IAAI6C,UAAU,2DAA6DvC,OAAO+E,gBAE1FpG,KAAKyF,WAAW,iBAAkBE,IAEpCS,qBACE,OAAOpG,KAAKO,iBAEdgB,aAAaoE,GACX,GAAa,QAATA,IAAoBnE,MAAMmE,IAAUA,EAAQ,IAAM5E,IACpD,MAAM,IAAI6C,UAAU,oDAAsD+B,GAE5E3F,KAAKyF,WAAW,WAAYE,IAE9BpE,eACE,OAAOvB,KAAKS,WAEd4F,cAAcV,GACZ3F,KAAKyF,WAAW,YAAaE,IAE/BU,gBACE,OAAOrG,KAAKW,YAEd0C,WAAWsC,GACT3F,KAAKa,gBAAkBgD,EAAoBT,EAAgBuC,IAC3D3F,KAAKyF,WAAW,SAAUE,IAE5BtC,aACE,OAAOrD,KAAKY,SAEd0F,eAAeX,GACb,IAAKnE,MAAMmE,IAAUA,EAAQ,IAAM5E,IACjC,MAAM,IAAI6C,UAAU,8CAAgD+B,GAEtE3F,KAAKyF,WAAW,aAAcE,IAEhCW,iBACE,OAAOtG,KAAKQ,cA4FhB,IAAI+D,EAAQ,EACRE,EAAS,GACTC,EAAM,EAaNC,GACF4B,KAAQvE,EAAM,IAAM,GAAK,IAAM,GAC/BwE,UAAWxE,EAAM,IAAM,EAAG,EAAG,GAC7ByE,WAAYzE,EAAM,EAAG,EAAG,IAAM,GAC9B0E,cAAe1E,EAAM,IAAM,EAAG,IAAM,GACpC2E,aAAc3D,EAAK,EAAGuB,GACtBqC,cAAe5D,EAAK,EAAGyB,GACvBoC,WAAY7D,EAAK,EAAG0B,IAGlBpB,EAAmB,KACnBwD,EAAe,qCACf/C,EAAgB,IAAIgD,OAAO,kBAAoBD,EAAe,IAAMA,EAAe,IAAMA,EAAe,IAAMA,EAAe,OAC7HxC,EAAS,gDAgDTS,EAAY,EACZK,EAAc,EACdC,EAAa,EACbC,EAAc,EA2GlBrF,EAAO+G,iBAzXP,SAA0B9F,GACxB,GAA0B,iBAAfA,EACT,OAAOA,EAET,IAAI+F,KACJ,IAAK,IAAI1E,KAAKrB,EACZ+F,EAAM1E,GAAKrB,EAAYqB,GAEzB,OAAO0E,GAkXThH,EAAOgB,WAAaA,EACpBhB,EAAOiH,sBApPP,SAA+BhG,GAQ7B,MAP0B,iBAAfA,IAEPA,EADEM,MAAMN,IACQK,SAAU,IAEVA,SAAUL,IAGvBA,GA6OTjB,EAAO8F,qBA1OP,SAA8B7E,EAAaC,GACzCD,OACOD,EADPC,EAAcjB,EAAOiH,sBAAsBhG,GACZC,IAyOjClB,EAAO+F,wBA9HP,SAAiC3E,GAC/B,OAAOyB,KAAKC,IAGd,SAA0B1B,GAExB,OAAwB,IAApBA,EAAOE,UAAwC,IAAtBF,EAAOiF,WAC3B,EAEFjF,EAAOE,SAAWF,EAAOiF,WARhBa,CAAiB9F,GAAUA,EAAO8E,eA8HpDlG,EAAOmH,2BArBP,SAAoCvC,EAAgBC,EAAWzD,GAC7D,IAAIgG,EAAQzC,EAAeC,EAAgBC,EAAWzD,GAClDiG,EA1EN,SAA6BzC,EAAgB0C,EAAUzC,EAAWuC,EAAOpC,GAEvE,OAAQoC,GACN,KAAKjC,EACH,MAAgB,aAAZmC,GAAuC,QAAZA,EACtB,EACF,KACT,KAAKjC,EACH,OAAOR,EAAYG,EACrB,KAAKI,EACH,MAAgB,YAAZkC,GAAsC,QAAZA,EACrB1C,EACF,KACT,KAAKE,EACH,OAAO,MA4DMyC,CAAoB3C,EAAgBxD,EAAOC,KAAMwD,EAAWuC,EAAOhG,EAAO4D,OAC3F,GAAmB,OAAfqC,EACF,OAAO,KAET,IAAIG,EA5DN,SAAkCC,EAAmBL,EAAOf,EAAYgB,EAAYlB,GAElF,IAAIqB,EAAkBrB,EACI,WAAtBsB,EACEL,IAAUjC,IACZqC,GAAmBnB,GAGrBmB,GAAmBH,EAAaI,EAE3BD,EAkDeE,CAAyBtG,EAAOE,SAAU8F,EAAOhG,EAAOiF,WAAYgB,EAAYjG,EAAO+E,gBACzGwB,EAhDN,SAA0CH,EAAiBrB,EAAgBiB,EAAOf,EAAYgB,EAAYI,GAGxG,IAAIE,EAA2BH,IAAoBI,IAAYzB,EAAiB,EAAIqB,EAAkB,EACtE,WAA5BG,GAAiCP,IAAUhC,GAA6B,IAAfiB,GACzC,IAAfgB,GAA0C,IAAtBI,IACvBE,EAA0B,GAErBA,EAwCuBE,CAAiCL,EAAiBpG,EAAO+E,eAAgBiB,EAAOhG,EAAOiF,WAAYgB,EAAYjG,EAAOE,UAChJwG,EAtCN,SAAmCV,EAAOf,EAAYsB,EAAyBH,GAE7E,OAAIJ,IAAUhC,GAAciB,IAAeuB,IAClCA,IAEuB,IAA5BD,EACK9E,KAAKkF,MAAMP,GAAmB,EAEhC3E,KAAKkF,MAAMP,GA8BKQ,CAA0BZ,EAAOhG,EAAOiF,WAAYsB,EAAyBH,GAChGS,EA5BN,SAAmCC,EAAmBJ,EAAkBH,GAEtE,IAAIQ,EAAmBD,EACvB,GAA0B,WAAtBA,GAAwD,YAAtBA,EAAiC,CACrE,IAAI/F,EAAI2F,EACkB,sBAAtBI,IACF/F,GAAK,GAEPgG,EAAmB,SACfhG,IAAMyF,KAAYzF,EAAI,GAAM,IAC9BgG,EAAmB,WAGvB,MAAyB,WAArBA,EACKR,EAEF,EAAIA,EAYYS,CAA0BhH,EAAOgF,UAAW0B,EAAkBH,GAIrF,OAAOvG,EAAOR,gBAAgBqH,IAShCjI,EAAO2E,eAAiBA,EACxB3E,EAAOmD,gBAAkBA,EACzBnD,EAAO4D,oBAAsBA,EAvY/B,CDAIjE,MEAJ,SAAUK,EAAQC,GAmIhB,SAASoI,EAAU1G,EAAU+D,GAC3B,OAAI/D,KAAY2G,GACPA,EAAQ3G,GAAU+D,IAEpBA,EAST,SAAS6C,EAA4B5G,EAAU+D,EAAO8C,GACpD,IAPF,SAAyB7G,GAEvB,MAAoB,YAAbA,GAAmE,IAAzCA,EAAS8G,YAAY,YAAa,IAAsD,IAA1C9G,EAAS8G,YAAY,aAAc,GAK9GC,CAAgB/G,GAApB,CAGA,IAAIgH,EAAiBC,EAAoBjH,GACzC,GAAIgH,EAEF,IAAK,IAAIE,KADTC,EAAsBtF,MAAM7B,GAAY+D,EAC1BiD,EAAgB,CAC5B,IAAII,EAAeJ,EAAeE,GAC9BG,EAAgBF,EAAsBtF,MAAMuF,GAChDP,EAAOO,GAAgBV,EAAUU,EAAcC,QAGjDR,EAAO7G,GAAY0G,EAAU1G,EAAU+D,IAI3C,SAASuD,EAAmBC,GAC1B,IAAIC,KAEJ,IAAK,IAAIxH,KAAYuH,EACnB,KAAIvH,KAAa,SAAU,SAAU,cAArC,CAIA,IAAIyH,EAASF,EAAYvH,GACpB0H,MAAMC,QAAQF,KACjBA,GAAUA,IAKZ,IAFIG,MACAC,EAAeJ,EAAOK,OACjBZ,EAAI,EAAGA,EAAIW,EAAcX,KAChCU,MAGWG,OADP,WAAYR,EACIA,EAAYQ,OACL,GAAhBF,EACS,EAEAX,GAAKW,EAAe,GAGpC,WAAYN,IACdK,EAASnG,OAAS8F,EAAY9F,QAG5B,cAAe8F,IACjBK,EAASI,UAAYT,EAAYS,WAGnCJ,EAAS5H,GAAYyH,EAAOP,GAE5BM,EAAsBS,KAAKL,GAI/BJ,SAAsBU,KAAK,SAAS7H,EAAGC,GAAK,OAAOD,EAAE0H,OAASzH,EAAEyH,SACzDP,EAzMT,IAAIP,GACFkB,YACE,kBACA,qBACA,iBACA,mBACA,uBACA,mBACA,iBACA,mBAEFC,QACE,iBACA,iBACA,iBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,kBACA,kBACA,mBAEFC,cACE,oBACA,oBACA,qBAEFC,aACE,iBACA,mBACA,oBACA,mBAEFC,YACE,kBACA,kBACA,mBAEFC,cACE,sBACA,uBACA,0BACA,0BAEFC,aACE,mBACA,mBACA,oBAEFC,WACE,iBACA,iBACA,kBAEFC,aACE,iBACA,mBACA,oBACA,mBAEFC,MACE,WACA,aACA,aAEFC,MACE,aACA,WACA,YACA,cACA,aACA,cAEFC,QACE,YACA,cACA,eACA,cAEFC,SACE,eACA,eACA,gBAEFC,SACE,aACA,eACA,gBACA,gBAIA7B,EAAwBxF,SAASsH,gBAAgB,+BAAgC,OAEjFC,GACFC,KAAM,MACNC,OAAQ,MACRC,MAAO,OAGL1C,GACF2C,kBAAmBJ,EACnBK,gBAAiBL,EACjBM,iBAAkBN,EAClBO,eAAgBP,EAChBQ,UACEC,WAAY,MACZC,UAAW,MACXC,MAAS,MACTT,OAAU,OACVU,MAAS,OACTC,UAAW,OACXC,WAAY,QAEdC,YACEC,OAAQ,MACRC,KAAM,OAERC,aAAclB,EACdmB,YACEC,KAAM,2BAERC,WACED,KAAM,gCA4KVjM,EAAOiJ,mBAAqBA,EAC5BjJ,EAAOmM,mBA/FP,SAA4BjD,GAC1B,GAAmB,MAAfA,EACF,SAGEkD,OAAOC,QAAUA,OAAOC,UAAYjD,MAAM9D,UAAUgH,MAAQrD,EAAYmD,OAAOC,YAEjFpD,EAAcG,MAAMkD,KAAKrD,IAGtBG,MAAMC,QAAQJ,KACjBA,EAAcD,EAAmBC,IA0CnC,IAvCIsD,MAAYtD,EAAYhF,IAAI,SAASuI,GACvC,IAAIlD,KACJ,IAAK,IAAI9D,KAAUgH,EAAkB,CACnC,IAAIC,EAAcD,EAAiBhH,GACnC,GAAc,UAAVA,GACF,GAAmB,MAAfiH,EAAqB,CAEvB,GADAA,EAAcvI,OAAOuI,IAChBC,SAASD,GACZ,MAAM,IAAI/I,UAAU,qCACtB,GAAI+I,EAAc,GAAKA,EAAc,EACnC,MAAM,IAAI/I,UAAU,mDAEnB,GAAc,aAAV8B,EAAuB,CAChC,GAAmB,OAAfiH,GAAuC,cAAfA,EAC1B,MACEE,KAAMC,aAAaC,kBACnBC,KAAM,oBACNC,QAAS,oCAEN,GAAmB,WAAfN,EACT,MAAM,IAAI/I,UAAU,0BAA4B+I,EAAc,UAGhEA,EADmB,UAAVjH,EACKzF,EAAOmD,gBAAgBuJ,GAEvB,GAAKA,EAErBnE,EAA4B9C,EAAQiH,EAAanD,GAMnD,aAJIA,EAASG,SACXH,EAASG,OAAS,YAChBH,EAASnG,SACXmG,EAASnG,OAAS,UACbmG,IAGL0D,KAEAC,OACKrE,EAAI,EAAGA,EAAI2D,EAAU/C,OAAQZ,IAAK,CACzC,IAAIa,EAAS8C,EAAU3D,GAAGa,OAC1B,GAAc,MAAVA,EAAgB,CAClB,GAAIA,EAASwD,EACX,MAAM,IAAIvJ,UAAU,wEAEtBuJ,EAAiBxD,OAEjBuD,KAIJT,SAAYA,EAAUW,OAAO,SAAS5D,GACpC,OAAOA,EAASG,QAAU,GAAKH,EAASG,QAAU,IAsB/CuD,GAnBL,WACE,IAAIxD,EAAS+C,EAAU/C,OACa,MAAhC+C,EAAU/C,EAAS,GAAGC,SACxB8C,EAAU/C,EAAS,GAAGC,OAAS,GAC7BD,EAAS,GAA4B,MAAvB+C,EAAU,GAAG9C,SAC7B8C,EAAU,GAAG9C,OAAS,GAIxB,IAFI0D,MAAgB,EAChBF,EAAiBV,EAAU,GAAG9C,OACzBb,EAAI,EAAGA,EAAIY,EAAQZ,IAAK,CAC/B,IAAIa,EAAS8C,EAAU3D,GAAGa,OAC1B,GAAc,MAAVA,EAAgB,CAClB,IAAK,IAAI2D,EAAI,EAAGA,EAAIxE,EAAIuE,EAAeC,IACrCb,EAAUY,EAAgBC,GAAG3D,OAASwD,GAAkBxD,EAASwD,GAAkBG,GAAKxE,EAAIuE,GAC9FA,EAAgBvE,EAChBqE,EAAiBxD,IAKrB4D,GAEKd,GAxSX,CAkTG7M,GClTH,SAAUK,GAER,IAAIuN,KAEJvN,EAAOe,aAAe,SAASyM,EAASC,EAAMC,EAAQC,GAKpD,IAAIC,EAAUD,EAAS,MAAQ,KAC3BE,EAAQ,IAAIC,KACZC,EAAS,IAAID,KAAKL,GACtBM,SAAOC,SAASD,EAAOE,WAAa,KAEhCJ,EAAQE,IACJP,KAAWD,GACfW,QAAQC,KAAK,mBAAqBX,EAAU,IAAMI,EAAU,wCAA0CG,EAAOK,eAAiB,KAAOV,GAEvIH,EAASC,MAAW,KAOxBxN,EAAOqO,WAAa,SAASb,EAASC,EAAMC,EAAQC,GAClD,IAAIC,EAAUD,EAAS,MAAQ,KAC/B,GAAI3N,EAAOe,aAAayM,EAASC,EAAMC,EAAQC,GAC7C,MAAM,IAAIW,MAAMd,EAAU,IAAMI,EAAU,yBAA2BF,IA5B3E,CAgCG/N,kgtBChCH,WAEE,YAAI2D,SAASC,cAAc,OAAOgL,YAAYC,SAA9C,CAMO,GAAIpC,OAAOqC,aAAeA,YAAYC,IAC3C,IAAIA,EAAM,WAAa,OAAOD,YAAYC,YAEtCA,EAAM,WAAa,OAAOZ,KAAKY,OAGrC,IAAIC,EAAuB,SAASC,EAAQC,EAAaC,GACvD/O,KAAK6O,OAASA,EACd7O,KAAK8O,YAAcA,EACnB9O,KAAK+O,aAAeA,EAEpB/O,KAAK6M,KAAO,SACZ7M,KAAKgP,WACLhP,KAAKiP,cACLjP,KAAKkP,cAAgBL,EACrB7O,KAAKmP,oBACLnP,KAAKoP,WAAaC,MAAMC,UACxBtP,KAAKuP,UAAYxB,KAAKY,OAGpBa,EAAyBnD,OAAOoD,QAAQjK,UAAUgJ,QACtDnC,OAAOoD,QAAQjK,UAAUgJ,QAAU,SAASrF,EAAauG,GACvD,IAAIC,EAAYH,EAAuBI,KAAK5P,KAAMmJ,EAAauG,GAE/DC,EAAUE,mBACVF,EAAUlB,SAAW,KAErB,IAAIqB,EAAiBH,EAAUI,OAC/BJ,EAAUI,OAAS,WACjBD,EAAeF,KAAK5P,MACpB,IAAIgQ,EAAQ,IAAIpB,EAAqB5O,KAAM,KAAM2O,KAC7CsB,EAAWjQ,KAAK6P,gBAAgBK,OAAOlQ,KAAKyO,UAAYzO,KAAKyO,cACjE0B,WAAW,WACTF,EAAStO,QAAQ,SAASyO,GACxBA,EAAQR,KAAKI,EAAMnB,OAAQmB,MAE5B,IAGL,IAAIK,EAA2BV,EAAUW,iBACzCX,EAAUW,iBAAmB,SAASzD,EAAMuD,GACpB,mBAAXA,GAAiC,UAARvD,EAClC7M,KAAK6P,gBAAgBhG,KAAKuG,GAE1BC,EAAyBT,KAAK5P,KAAM6M,EAAMuD,IAG9C,IAAIG,EAA8BZ,EAAUa,oBAC5Cb,SAAUa,oBAAsB,SAAS3D,EAAMuD,GAC7C,GAAY,UAARvD,EAAkB,CACpB,IAAI4D,EAAQzQ,KAAK6P,gBAAgB/N,QAAQsO,GACrCK,GAAS,GACXzQ,KAAK6P,gBAAgBa,OAAOD,EAAO,QAErCF,EAA4BX,KAAK5P,KAAM6M,EAAMuD,IAI1CT,IAlEX,GCAA,SAAU1P,GAgBR,IAAI0Q,EAAUpN,SAASqN,gBACnBjB,EAAY,KACZkB,KACJ,IACE,IACIC,EAAiC,KADfC,iBAAiBJ,GAASK,iBAAiB,WACtB,IAAM,KACjDrB,EAAYgB,EAAQnC,SAASyC,SAAYH,EAAaA,KACjDvP,SAAU,KACLuN,YAAc,EACxB+B,EAAWE,iBAAiBJ,GAASK,iBAAiB,YAAcF,EACpE,MAAOI,IAPT,QASMvB,GACFA,EAAUI,SAEd,IAAIc,EAAJ,CAIA,IAAIrB,EAAyBnD,OAAOoD,QAAQjK,UAAUgJ,QACtDnC,OAAOoD,QAAQjK,UAAUgJ,QAAU,SAASrF,EAAauG,GACnDrD,cAAOC,QAAUA,OAAOC,UAAYjD,MAAM9D,UAAUgH,MAAQrD,EAAYmD,OAAOC,YAEjFpD,EAAcG,MAAMkD,KAAKrD,IAGtBG,MAAMC,QAAQJ,IAAgC,OAAhBA,IACjCA,EAAclJ,EAAOiJ,mBAAmBC,IAGnCqG,EAAuBI,KAAK5P,KAAMmJ,EAAauG,KA9C1D,CAgDG9P,GC/CH,SAAUK,EAAQkR,EAAOjR,GA8DvB,SAASkR,EAAsBC,GAC7B,IAAIC,EAAWH,EAAMG,SACrBA,EAASxC,YAAcuC,EACvBC,EAASC,qBAC0B,GAA/BD,EAASE,YAAY9H,OACvB+H,KAEAC,sBAAsBN,GApE1B,IAAIO,EAAgCtF,OAAOqF,sBAC3CrF,OAAOqF,sBAAwB,SAASpP,GACtC,OAAOqP,EAA8B,SAAStP,GAC5C8O,EAAMG,SAASM,4BACftP,EAAED,GACF8O,EAAMG,SAASM,+BAInBT,EAAMU,kBAAoB,WACxB7R,KAAKwR,eACLxR,KAAK8O,oBAGPqC,EAAMU,kBAAkBrM,WACtBsM,cAAe,WACb9R,YAAKuR,qBACEvR,KAAKwR,YAAYtN,SAE1B0N,0BAA2B,WACzBT,EAAMY,uBAAyBZ,EAAMY,uBAAuB3E,OAAO,SAASuC,GAC1E,OAAOA,EAAUqC,qBAGrBT,mBAAoB,WAClBvR,KAAK4R,4BACL5R,KAAKwR,YAAcxR,KAAKwR,YAAYpE,OAAO,SAASuC,GAClD,MAA8B,YAAvBA,EAAUsC,WAAkD,QAAvBtC,EAAUsC,aAG1DC,MAAO,SAAS9Q,GACd,IAAIuO,EAAY,IAAIwB,EAAMgB,UAAU/Q,EAAQpB,MAC5CA,YAAKwR,YAAY3H,KAAK8F,GACtBwB,EAAMiB,+BAMNzC,EAAUqC,kBACVrC,EAAU1J,WAAWoM,OACrB1C,EAAUqC,kBACHrC,GAET0C,KAAM,SAASjR,GACTA,UACFA,EAAOkR,SAEFtS,KAAKkS,MAAM9Q,KAItB,IAAIqQ,KAEJN,EAAMiB,6BAA+B,WAC9BX,IACHA,KACAC,sBAAsBN,KAc1B,IAAIE,EAAW,IAAIH,EAAMU,kBACzBV,EAAMG,SAAWA,EAEjB,IACE7P,OAAO8Q,eAAelG,OAAO9I,SAAU,YACrCiP,gBACAC,IAAK,WAAa,OAAOnB,KAE3B,MAAOoB,IACT,IACErG,OAAO9I,SAAS+N,SAAWA,EAC3B,MAAOoB,KAnFX,CAqFG9S,EAAqBE,GCtFxB,SAAUG,EAAQkR,EAAOjR,GACvBiR,EAAMY,0BAENZ,EAAMgB,UAAY,SAAS/Q,EAAQkQ,GASjC,GARAtR,KAAK2S,GAAK,GACNvR,GAAUA,EAAOwR,MACnB5S,KAAK2S,GAAKvR,EAAOwR,KAEnB5S,KAAKoB,OAASA,EACVA,IACFA,EAAO6E,WAAajG,OAEjBsR,EACH,MAAM,IAAI/C,MAAM,iDAElBvO,KAAK6S,UAAYvB,EACjBtR,KAAK8S,gBAAkB7S,EAAO8S,iBAC9B/S,KAAKgT,UAAY,EACjBhT,KAAKiT,WACLjT,KAAKkT,YACLlT,KAAKiG,WAAa,KAClBjG,KAAKmT,oBACLnT,KAAKoT,UAAY,KACjBpT,KAAKqT,cAAgB,OACrBrT,KAAKkG,8BAELlG,KAAKiG,WAAW8J,SAChB/P,KAAKgS,mBAGPb,EAAMgB,UAAU3M,WACdwM,gBAAiB,WACf,IAAIsB,EAAetT,KAAKqT,cACpBE,EAAevT,KAAKiS,UACpBjS,YAAKwT,eAAiBD,IAAiBD,IACrB,QAAhBC,GACFvT,KAAKyT,sBACLzT,KAAKwT,sBACoB,WAAhBF,EACTtT,KAAK0T,uBACoB,WAAhBH,IACTvT,KAAKwT,uBAGLxT,KAAK2T,kBAAoBJ,IAAiBD,IACxB,QAAhBC,GACFvT,KAAK4T,yBACL5T,KAAK2T,yBACoB,YAAhBJ,EACTvT,KAAK6T,0BACoB,YAAhBP,IACTtT,KAAK2T,0BAGT3T,KAAKqT,cAAgBrT,KAAKiS,UAClBjS,KAAKwT,eAAiBxT,KAAK2T,kBAErCzN,4BAA6B,WAC3BlG,KAAKgS,kBACL,IAAI8B,EACAC,EACAC,EACAC,EACAC,IAAgBlU,KAAKiG,WACrBiO,IACFJ,EAAkB9T,KAAKmG,aACvB4N,EAAY/T,KAAKiT,QACjBe,EAAehU,KAAKmU,UACpBF,EAAiBjU,KAAK8O,YACtB9O,KAAKiG,WAAW8J,SAChB/P,KAAKiG,WAAWmO,SAAW,KAC3BpU,KAAKiG,WAAa,QAGfjG,KAAKoB,QAAUpB,KAAKoB,kBAAkBiL,OAAOgI,kBAChDrU,KAAKiG,WAAakL,EAAMmD,wCAAwCtU,KAAKoB,QACrE+P,EAAMoD,+BAA+BvU,QAEnCA,KAAKoB,kBAAkBiL,OAAOmI,gBAAkBxU,KAAKoB,kBAAkBiL,OAAOoI,eAChFzU,KAAKiG,WAAakL,EAAMuD,+BAA+B1U,KAAKoB,QAC5D+P,EAAMwD,sBAAsB3U,OAE1BA,KAAKoB,QAAUpB,KAAKoB,OAAOwT,WAC7BzD,EAAM0D,6BAA6B7U,MAEjCkU,IACqB,GAAnBJ,IACF9T,KAAKmG,aAAe2N,GAED,OAAjBE,EACFhU,KAAKmU,UAAYH,EACW,OAAnBC,EACTjU,KAAK8O,YAAcmF,EACS,OAAnBjU,KAAKgT,YACdhT,KAAK8O,YAAc9O,KAAKgT,WAEtBe,GACF/T,KAAK8U,SAGT9U,KAAKgS,mBAEP+C,gBAAiB,WACf,GAAK/U,KAAKoB,QAA4B,QAAlBpB,KAAKiS,UAAzB,CAGA,IAAItI,EAAS3J,KAAKoB,OAAO0E,QAAQb,MACjCjF,KAAKmT,iBAAiBxR,QAAQ,SAASqT,GACrChV,KAAKiV,iBAAiBD,EAAgBrL,GAClC3J,KAAKoB,kBAAkBiL,OAAOmI,iBAChC7K,GAAUwH,EAAM+D,mBAAmBF,EAAe5T,UACpD+T,KAAKnV,SAEToV,sBAAuB,SAASzF,GAC9B,GAAK3P,KAAKoB,QAAWpB,KAAKkT,SAE1B,IAAK,IAAIpK,EAAI,EAAGA,EAAI9I,KAAKoB,OAAOiU,SAAS3L,OAAQZ,IAC/C9I,KAAKoB,OAAOiU,SAASvM,GAAG7C,WAAa0J,EACrC3P,KAAKmT,iBAAiBrK,GAAGsM,sBAAsBzF,IAGnD2F,0BAA2B,WACzB,GAAKtV,KAAKoB,QAAWpB,KAAKkT,SAA1B,CAEA,IAAIvJ,EAAS3J,KAAKoB,OAAO0E,QAAQb,MACjCjF,KAAKuV,yBACLvV,KAAKoB,OAAOiU,SAAS1T,QAAQ,SAAS6T,GACpC,IAAIR,EAAiB7D,EAAMG,SAASY,MAAMsD,GAC1CxV,KAAKmT,iBAAiBtJ,KAAKmL,GAC3BA,EAAe7O,aAAenG,KAAKmG,aAC/BnG,KAAKiT,SACP+B,EAAeF,QACjBU,EAAMvP,WAAajG,KAAKoB,OAAO6E,WAE/BjG,KAAKiV,iBAAiBD,EAAgBrL,GAElC3J,KAAKoB,kBAAkBiL,OAAOmI,iBAChC7K,GAAUwH,EAAM+D,mBAAmBM,KACrCL,KAAKnV,SAETiV,iBAAkB,SAASD,EAAgBrL,GAClB,OAAnB3J,KAAKmU,UACPa,EAAelG,YAAc9O,KAAK8O,YAAcnF,EAAS3J,KAAKmG,aACrD6O,EAAeb,YAAcnU,KAAKmU,UAAYxK,EAAS3J,KAAKmG,eACrE6O,EAAeb,UAAYnU,KAAKmU,UAAYxK,EAAS3J,KAAKmG,eAG9DmL,eACE,OAAOtR,KAAK6S,WAEdZ,gBACE,OAAOjS,KAAKiG,WAAajG,KAAKiG,WAAWgM,UAAY,QAEvDwD,eACE,OAAKpJ,OAAOqJ,SAIP1V,KAAK2T,oBAC2C,GAA/CxC,EAAMY,uBAAuBjQ,QAAQ9B,OACvCmR,EAAMY,uBAAuBlI,KAAK7J,MAEpCA,KAAK2T,iBAAmB,IAAI+B,QACxB,SAASC,EAASC,GAChB5V,KAAK6T,wBAA0B,WAC7B8B,EAAQ3V,OAEVA,KAAK4T,uBAAyB,WAC5BgC,GAAQ/I,KAAMC,aAAa+I,UAAW7I,KAAM,iBAE9CmI,KAAKnV,OACW,YAAlBA,KAAKiS,WACPjS,KAAK6T,2BAGF7T,KAAK2T,mBApBVxF,QAAQC,KAAK,6DACN,OAqBX0H,YACE,OAAKzJ,OAAOqJ,SAIP1V,KAAKwT,iBAC2C,GAA/CrC,EAAMY,uBAAuBjQ,QAAQ9B,OACvCmR,EAAMY,uBAAuBlI,KAAK7J,MAEpCA,KAAKwT,cAAgB,IAAIkC,QACrB,SAASC,EAASC,GAChB5V,KAAK0T,qBAAuB,WAC1BiC,EAAQ3V,OAEVA,KAAKyT,oBAAsB,WACzBmC,GAAQ/I,KAAMC,aAAa+I,UAAW7I,KAAM,iBAE9CmI,KAAKnV,OACY,YAAnBA,KAAKiS,WACPjS,KAAK0T,wBAGF1T,KAAKwT,gBApBVrF,QAAQC,KAAK,6DACN,OAqBX2H,eACE,OAAO/V,KAAKiG,WAAW8P,UAEzBA,aAAaC,GAEThW,KAAKiG,WAAW8P,SADF,mBAALC,EACkB,SAAUtD,GACnCA,EAAE7D,OAAS7O,KACXgW,EAAEpG,KAAK5P,KAAM0S,IACZyC,KAAKnV,MAEmBgW,GAG/BvH,eACE,OAAOzO,KAAKiG,WAAWwI,UAEzBA,aAAauH,GAEThW,KAAKiG,WAAWwI,SADF,mBAALuH,EACkB,SAAUtD,GACnCA,EAAE7D,OAAS7O,KACXgW,EAAEpG,KAAK5P,KAAM0S,IACZyC,KAAKnV,MAEmBgW,GAG/BlH,kBACE9O,KAAKgS,kBACL,IAAIlD,EAAc9O,KAAKiG,WAAW6I,YAClC9O,YAAKgS,kBACElD,GAETA,gBAAgBkH,GACdhW,KAAKgS,kBACLhS,KAAKiG,WAAW6I,YAAclC,SAASoJ,GAAKA,EAAIlT,KAAKmT,KAAKD,GAAK5R,OAAO8R,UACtElW,KAAKmW,YACLnW,KAAKoW,cAAc,SAASZ,EAAO7L,GACjC6L,EAAM1G,YAAckH,EAAIrM,IAE1B3J,KAAKgS,mBAEPmC,gBACE,OAAOnU,KAAKiG,WAAWkO,WAEzBA,cAAc6B,GACZhW,KAAKgS,kBACLhS,KAAKiG,WAAWkO,UAAYvH,SAASoJ,GAAKA,EAAIlT,KAAKmT,KAAKD,GAAK5R,OAAO8R,UACpElW,KAAKmW,YACLnW,KAAKoW,cAAc,SAASZ,EAAO7L,GACjC6L,EAAMrB,UAAY6B,EAAIrM,IAExB3J,KAAKgS,mBAEP7L,mBACE,OAAOnG,KAAKiG,WAAWE,cAEzBA,iBAAiBR,GACf3F,KAAKgS,kBACL,IAAIiC,EAAiBjU,KAAK8O,YAC1B9O,KAAKiG,WAAWE,aAAeR,EAC/B3F,KAAKoW,cAAc,SAASpB,GAC1BA,EAAe7O,aAAeR,IAET,OAAnBsO,IACFjU,KAAK8O,YAAcmF,GAErBjU,KAAKgS,mBAEPK,KAAM,WACJrS,KAAKgS,kBACLhS,KAAKiT,WACLjT,KAAKiG,WAAWoM,QACiC,GAA7CrS,KAAK6S,UAAUrB,YAAY1P,QAAQ9B,OACrCA,KAAK6S,UAAUrB,YAAY3H,KAAK7J,MAElCA,KAAKmW,YACLhF,EAAMkF,eAAerW,MACrBA,KAAKoW,cAAc,SAASZ,GAC1B,IAAIc,EAAOd,EAAM1G,YACjB0G,EAAMnD,OACNmD,EAAM1G,YAAcwH,IAEtBtW,KAAKgS,mBAEP8C,MAAO,WACL9U,KAAKgS,kBACDhS,KAAK8O,cACP9O,KAAKgT,UAAYhT,KAAK8O,aAExB9O,KAAKiG,WAAW6O,QAChB9U,KAAKmW,YACLnW,KAAKoW,cAAc,SAASZ,GAC1BA,EAAMV,UAER9U,KAAKiT,WACLjT,KAAKgS,mBAEPuE,OAAQ,WACNvW,KAAKgS,kBACLhS,KAAKiG,WAAWsQ,SAChBvW,KAAKmW,YACLnW,KAAKgS,mBAEPjC,OAAQ,WACN/P,KAAKgS,kBACLhS,KAAKiG,WAAW8J,SAChB/P,KAAKmW,YACLnW,KAAKuV,yBACLvV,KAAKgS,mBAEPwE,QAAS,WACPxW,KAAKgS,kBACL,IAAIiC,EAAiBjU,KAAK8O,YAC1B9O,KAAKiG,WAAWuQ,UAChBxW,KAAKoW,cAAc,SAASpB,GAC1BA,EAAewB,YAEM,OAAnBvC,IACFjU,KAAK8O,YAAcmF,GAErBjU,KAAKgS,mBAEP1B,iBAAkB,SAASzD,EAAMuD,GAC/B,IAAIqG,EAAUrG,EACQ,mBAAXA,IACTqG,EAAU,SAAU/D,GAClBA,EAAE7D,OAAS7O,KACXoQ,EAAQR,KAAK5P,KAAM0S,IAClByC,KAAKnV,MACRoQ,EAAQgE,SAAWqC,GAErBzW,KAAKiG,WAAWqK,iBAAiBzD,EAAM4J,IAEzCjG,oBAAqB,SAAS3D,EAAMuD,GAClCpQ,KAAKiG,WAAWuK,oBAAoB3D,EAAOuD,GAAWA,EAAQgE,UAAahE,IAE7EmF,uBAAwB,WACtB,KAAOvV,KAAKmT,iBAAiBzJ,QAC3B1J,KAAKmT,iBAAiBuD,MAAM3G,UAEhCqG,cAAe,SAAS9T,GACtB,IAAIqH,EAAS,EASb,GARI3J,KAAKoB,OAAOiU,UAAYrV,KAAKmT,iBAAiBzJ,OAAS1J,KAAKoB,OAAOiU,SAAS3L,QAC9E1J,KAAKsV,4BACPtV,KAAKmT,iBAAiBxR,QAAQ,SAAS6T,GACrClT,EAAEsN,KAAK5P,KAAMwV,EAAO7L,GAChB3J,KAAKoB,kBAAkBiL,OAAOmI,iBAChC7K,GAAU6L,EAAMpU,OAAOyD,iBACzBsQ,KAAKnV,OAEe,WAAlBA,KAAKiS,UAAT,CAEA,IAAI5Q,EAASrB,KAAKoB,OAAO0E,QACrBuL,EAAIrR,KAAK8O,YACH,OAANuC,IACFA,EAAIpR,EAAOmH,2BAA2BnH,EAAO+F,wBAAwB3E,GAASgQ,EAAGhQ,KAC1E,MAALgQ,GAAa7P,MAAM6P,KACrBrR,KAAKuV,4BAIXlJ,OAAO8F,UAAYhB,EAAMgB,UA1W3B,CAgXGvS,EAAqBE,GChXvB,SAASG,EAAQkR,EAAOjR,GAqCvB,SAASyW,EAAaxN,GACpBnJ,KAAK4W,QAAU3W,EAAOmM,mBAAmBjD,GAoG3C,SAAS0N,IAEP,IADA,IAAIC,KACGC,EAAcrN,QACPqN,EAAcC,QACpBjC,kBACN+B,KAEF,OAAOA,EA/IT,IAAIG,EAAe,SAAfA,EAAwB7V,GAE1B,GADAA,EAAO6E,kBACH7E,aAAkBiL,OAAOmI,gBAAkBpT,aAAkBiL,OAAOoI,YACtE,IAAK,IAAI3L,EAAI,EAAGA,EAAI1H,EAAOiU,SAAS3L,OAAQZ,IAC1CmO,EAAa7V,EAAOiU,SAASvM,KAKnCqI,EAAM+F,YAAc,SAASC,GAE3B,IADIC,SACKtO,EAAI,EAAGA,EAAIqO,EAAQzN,OAAQZ,IAAK,CACvC,IAAI1H,EAAS+V,EAAQrO,GACjB1H,EAAOiW,UACkC,GAAvCD,EAAWtV,QAAQV,EAAOiW,UAC5BD,EAAWvN,KAAKzI,EAAOiW,SAEzBjW,EAAOiW,QAAQhC,SAAS3E,OAAOtP,EAAOiW,QAAQhC,SAASvT,QAAQV,GAAS,GACxEA,EAAOiW,QAAU,KACjBJ,EAAa7V,IACJA,EAAO6E,YAAe7E,EAAO6E,WAAW7E,QAAUA,IAC3DA,EAAO6E,WAAW8J,SAClB3O,EAAO6E,WAAW7E,OAAS,IAAIiT,eAAe,SAC1CjT,EAAO6E,WAAWmN,YACpBhS,EAAO6E,WAAWmN,UAAUnN,WAAa,MAE3C7E,EAAO6E,WAAWC,8BAClB+Q,EAAa7V,IAGjB,IAAK0H,EAAI,EAAGA,EAAIsO,EAAW1N,OAAQZ,IACjCsO,EAAWtO,GAAGwO,YAQlBnG,EAAMkD,eAAiB,SAASxF,EAAQ1F,EAAajI,EAAayR,GAChE3S,YAAK6O,OAASA,EACd7O,KAAKqX,QAAU,KAEfnW,EAAcjB,EAAOiH,sBAAsBhG,GAC3ClB,KAAK6F,aAAe5F,EAAO+G,iBAAiB9F,GAC5ClB,KAAK8F,QAAU7F,EAAO8F,qBAAqB7E,GAE3ClB,KAAKqB,OAASpB,EAAOgB,WAAWC,KAAoBlB,MACpDA,KAAKqB,OAAOuE,QAAU5F,KACI,mBAAfmJ,GACTlJ,EAAOqO,WAAW,wBAAyB,aAAc,wCACzDtO,KAAKuX,qBAAuBpO,GAE5BnJ,KAAKuX,qBAAuB,IAAIZ,EAAaxN,GAE/CnJ,KAAKwX,WAAarO,EAClBnJ,KAAK6E,eAAiB5E,EAAO+F,wBAAwBhG,KAAK8F,SAC1D9F,KAAK4S,IAAMD,EACJ3S,MAGTmR,EAAMkD,eAAe7O,WACnBiS,UAAW,WACT,MAAwC,mBAA7BzX,KAAKuX,qBACPvX,KAAKuX,qBACPvX,KAAKuX,qBAAqBX,SAEnCc,aAAaC,GACX,GAA+B,mBAApB3X,KAAKyX,YACd,MAAM,IAAIlJ,MAAM,sEAElBvO,KAAK4U,UAAY+C,EACb3X,KAAKiG,YACPjG,KAAKiG,WAAWC,+BAGpB0R,aACE,OAAO5X,KAAKqX,SAEdpQ,MAAO,WACL,GAA+B,mBAApBjH,KAAKyX,YACd,MAAM,IAAIlJ,MAAM,4CAElB,IAAItH,EAAQ,IAAIoN,eAAerU,KAAK6O,UAAY5O,EAAO+G,iBAAiBhH,KAAK6F,cAAe7F,KAAK4S,KACjG3L,SAAMsQ,qBAAuBvX,KAAKuX,qBAClCtQ,EAAMuQ,WAAaxX,KAAKwX,WACjBvQ,GAETqL,OAAQ,WACNnB,EAAM+F,aAAalX,SAIvB,IAAIwP,EAAyBC,QAAQjK,UAAUgJ,QAC/CiB,QAAQjK,UAAUgJ,QAAU,SAASrF,EAAauG,GAChD,IAAIiD,EAAK,GACLjD,UAAWA,EAAQiD,KACrBA,EAAKjD,EAAQiD,IAERxB,EAAMG,SAASY,MAAM,IAAIf,EAAMkD,eAAerU,KAAMmJ,EAAauG,EAASiD,KAGnF,IAAIkF,EAAatU,SAASsH,gBAAgB,+BAAgC,OAC1EsG,EAAMmD,wCAA0C,SAASwD,GACvD,GAAIA,EAAgB,CAClB,IAAIjJ,EAASiJ,EAAejJ,QAAUgJ,EAEd,mBADpBpL,EAAYqL,EAAeN,cAE7B/K,OAEEiD,EAAUoI,EAAejS,cACrB8M,GAAKmF,EAAelF,QAE5B,CAAI/D,EAASgJ,EAAb,IACIpL,KACAiD,EAAU,EAEhB,OAAOF,EAAuBvL,MAAM4K,GAASpC,EAAWiD,KAI1DyB,EAAMoD,+BAAiC,SAAS5E,GAC1CA,EAAUvO,QAA0D,mBAAzCuO,EAAUvO,OAAOmW,sBAC9CpG,EAAM0D,6BAA6BlF,IAIvC,IAAIoH,KACJ5F,EAAMkF,eAAiB,SAAS0B,GACG,OAA7BA,EAAe5D,WAAuB4D,EAAe7E,WAE7B,GAAxB6D,EAAcrN,QAChBgI,sBAAsBmF,GAExBE,EAAclN,KAAKkO,KAWrB,IAAIC,EAA2B3L,OAAO0E,iBACtCtP,OAAO8Q,eAAelG,OAAQ,oBAC5BmG,gBACAyF,cACAtS,MAAO,WACLwL,EAAMG,SAASM,4BACf,IAAInJ,EAASuP,EAAyB/T,MAAMjE,KAAMkY,WAC9CrB,aACFpO,EAASuP,EAAyB/T,MAAMjE,KAAMkY,YAChD/G,EAAMG,SAASM,4BACRnJ,KAIX4D,OAAOgI,eAAiBlD,EAAMkD,eAC9BhI,OAAOoD,QAAQjK,UAAUsM,cAAgB,WACvC,OAAOvO,SAAS+N,SAASQ,gBAAgB1E,OAAO,SAASuC,GACvD,OAA4B,OAArBA,EAAUvO,QAAmBuO,EAAUvO,OAAOyN,QAAU7O,MAC/DmV,KAAKnV,QArKV,CAwKCJ,EAAqBE,GCzKvB,SAAUG,EAAQkR,EAAOjR,GA6CvB,SAASiY,EAASR,GACZA,EAASS,cAEbT,EAASS,eACTC,EAAUxO,KAAK8N,GACVlG,IACHA,KACAC,sBAAsB4G,KAI1B,SAASA,EAAKjH,GACZ,IAAIkH,EAAWF,EACfA,KACAE,EAASzO,KAAK,SAAS0O,EAAMC,GAC3B,OAAOD,EAAK1F,gBAAkB2F,EAAM3F,kBAEtCyF,EAAWA,EAASnL,OAAO,SAASuK,GAClCA,IACA,IAAI1F,EAAY0F,EAAS1R,WAAa0R,EAAS1R,WAAWgM,UAAY,OAGtE,MAFiB,WAAbA,GAAuC,WAAbA,IAC5B0F,EAASS,gBACJT,EAASS,cAElBC,EAAUxO,KAAK5F,MAAMoU,EAAWE,GAE5BF,EAAU3O,QACZ+H,KACAC,sBAAsB4G,IAEtB7G,KAzEJ,IAEIsB,GAFaxP,SAASsH,gBAAgB,+BAAgC,OAErD,GACrBsG,EAAM0D,6BAA+B,SAASlF,GAC5C,IACI+I,EADA7J,EAASc,EAAUvO,OAAOyN,OAE1B8J,EAA0D,mBAAhChJ,EAAUvO,OAAOqW,YAE7CiB,EADEC,EACehJ,EAAUvO,OAAOqW,YAEjB9H,EAAUvO,OAAOwT,UAEpC,IAAIvT,EAASsO,EAAUvO,OAAOC,OAC1BuX,EAAO,KACXvX,EAASpB,EAAO8F,qBAAqB1E,GACrC,IAAIsW,EAAW,SAAXA,IACF,IAAItG,EAAIsG,EAAS1R,WAAa0R,EAAS1R,WAAW6I,YAAc,KACtD,OAANuC,IACFA,EAAIpR,EAAOmH,2BAA2BnH,EAAO+F,wBAAwB3E,GAASgQ,EAAGhQ,GAC7EG,MAAM6P,KACRA,EAAI,OAIJA,IAAMuH,IACJD,EACFD,EAAerH,EAAGxC,EAAQc,EAAUvO,QAEpCsX,EAAerH,EAAG1B,EAAUvO,OAAQuO,EAAUvO,OAAO6E,aAGzD2S,EAAOvH,GAGTsG,EAAS1R,WAAa0J,EACtBgI,EAASS,eACTT,EAAS7E,gBAAkBC,IAC3BpD,EAAUyD,UAAYuE,EACtBQ,EAASR,IAGX,IAAIU,KACA5G,KAmCJN,EAAMgB,UAAU3M,UAAU2Q,UAAY,WAChCnW,KAAKoT,WACP+E,EAASnY,KAAKoT,YAjFpB,CAoFGxT,EAAqBE,GCnFxB,SAAUG,EAAQkR,EAAOjR,GAEvB,SAASgV,EAAmB2D,GAC1B,OAAOA,EAAK/S,QAAQb,MAAQ4T,EAAKhU,eAAiBgU,EAAK/S,QAAQZ,SAGjE,SAAS4T,EAAYzD,EAAUnU,EAAayR,GAC1C3S,KAAK4S,IAAMD,EACX3S,KAAKqX,QAAU,KACfrX,KAAKqV,SAAWA,MAChBrV,KAAK+Y,UAAU/Y,KAAKqV,UACpBnU,EAAcjB,EAAOiH,sBAAsBhG,GAC3ClB,KAAK6F,aAAe5F,EAAO+G,iBAAiB9F,GAC5ClB,KAAK8F,QAAU7F,EAAO8F,qBAAqB7E,MAC3ClB,KAAKqB,OAASpB,EAAOgB,WAAWC,KAAmBlB,MACnDA,KAAKqB,OAAOuE,QAAU5F,KAEQ,SAA1BA,KAAK8F,QAAQvE,WACfvB,KAAK8F,QAAQvE,SAAWvB,KAAK6E,gBAIjCwH,OAAOmI,eAAiB,WACtBsE,EAAY7U,MAAMjE,KAAMkY,YAG1B7L,OAAOoI,YAAc,WACnBqE,EAAY7U,MAAMjE,KAAMkY,YAG1BY,EAAYtT,WACVwT,YAAa,SAAS5X,GAEpB,IADA,IAAIa,EAAIjC,KACK,OAANiC,GAAY,CACjB,GAAIA,GAAKb,EACP,SACFa,EAAIA,EAAEoV,QAER,UAEFC,SAAU,WAGR,IADA,IAAIuB,EAAO7Y,KACJ6Y,GACwB,SAAzBA,EAAKxX,OAAOE,WACdsX,EAAK/S,QAAQvE,SAAWsX,EAAKhU,gBAE/BgU,EAAOA,EAAKxB,QAEVrX,KAAKiG,YACPjG,KAAKiG,WAAWC,+BAGpB6S,UAAW,SAASE,GAClB9H,EAAM+F,YAAY+B,GAClB,IAAK,IAAInQ,EAAI,EAAGA,EAAImQ,EAAYvP,OAAQZ,IACtCmQ,EAAYnQ,GAAGuO,QAAUrX,MAG7BkZ,UAAW,SAASC,EAAMC,GAExB,IADInM,MAAUmM,EAAW,oCAAsC,qCACtDtQ,EAAI,EAAGA,EAAIqQ,EAAKzP,OAAQZ,IAC/B,GAAI9I,KAAKgZ,YAAYG,EAAKrQ,IACxB,MACE+D,KAAMC,aAAauM,sBACnBrM,KAAM,wBACNC,QAASA,GAKf,IAASnE,EAAI,EAAGA,EAAIqQ,EAAKzP,OAAQZ,IAC/BsQ,EAAWpZ,KAAKqV,SAASxL,KAAKsP,EAAKrQ,IAAM9I,KAAKqV,SAASiE,QAAQH,EAAKrQ,IAEtE9I,KAAK+Y,UAAUI,GACfnZ,KAAKsX,YAEPiC,OAAQ,WACNvZ,KAAKkZ,UAAUhB,eAEjBsB,QAAS,WACPxZ,KAAKkZ,UAAUhB,eAEjBN,aACE,OAAO5X,KAAKqX,SAEdoC,iBACE,OAAOzZ,KAAKqV,SAAS3L,OAAS1J,KAAKqV,SAAS,GAAK,MAEnDqE,gBACE,OAAO1Z,KAAKqV,SAAS3L,OAAS1J,KAAKqV,SAASrV,KAAKqV,SAAS3L,OAAS,GAAK,MAE1EzC,MAAO,WAGL,IAFI0S,MAAe1Z,EAAO+G,iBAAiBhH,KAAK6F,cAC5C+T,KACK9Q,EAAI,EAAGA,EAAI9I,KAAKqV,SAAS3L,OAAQZ,IACxC8Q,EAAe/P,KAAK7J,KAAKqV,SAASvM,GAAG7B,SAEvC,OAAQjH,gBAAgByU,YACpB,IAAIA,YAAYmF,EAAgBD,GAChC,IAAInF,eAAeoF,EAAgBD,IAEzCrH,OAAQ,WACNnB,EAAM+F,aAAalX,SAIvBqM,OAAOmI,eAAehP,UAAY/D,OAAOoY,OAAOf,EAAYtT,WAC5D/D,OAAO8Q,eACHlG,OAAOmI,eAAehP,UACtB,kBAEEiN,IAAK,WACH,IAAIqH,EAAQ,EACZ9Z,YAAKqV,SAAS1T,QAAQ,SAAS6T,GAC7BsE,GAAS5E,EAAmBM,KAEvB1S,KAAKiX,IAAID,EAAO,MAI/BzN,OAAOoI,YAAYjP,UAAY/D,OAAOoY,OAAOf,EAAYtT,WACzD/D,OAAO8Q,eACHlG,OAAOoI,YAAYjP,UACnB,kBAEEiN,IAAK,WACH,IAAIsH,EAAM,EACV/Z,YAAKqV,SAAS1T,QAAQ,SAAS6T,GAC7BuE,EAAMjX,KAAKiX,IAAIA,EAAK7E,EAAmBM,MAElCuE,KAIf5I,EAAMuD,+BAAiC,SAASsF,GAC9C,IAAIC,EACA5Y,EAAS,KAoCT6Y,EAAmB,IAAI7F,eAAe,QAAU2F,EAAMlU,QAASkU,EAAMpH,KACzEsH,SAAiBxC,SApCJ,SAASyC,GACpB,IAAIxK,EAAYsK,EAAoB7F,SACpC,GAAKzE,GAGsB,WAAvBA,EAAUsC,WAGTtC,EAAUvO,OAGf,OAAU,MAAN+Y,OACFxK,EAAU4F,yBAQF,GAAN4E,GAAWxK,EAAUxJ,aAAe,IACjC9E,IACHA,EAASpB,EAAO8F,qBAAqB4J,EAAUvO,OAAOC,SAExD8Y,EAAKla,EAAOmH,2BAA2BnH,EAAO+F,wBAAwB3E,IAAU,EAAGA,GAC/EG,MAAM2Y,IAAa,MAANA,IACfxK,EAAUyG,cAAc,SAASZ,GAC/BA,EAAM1G,aAAe,SAEvBa,EAAU4F,kCAQhB0E,EAAsB9I,EAAMG,SAASY,MAAMgI,IAI7C/I,EAAMwD,sBAAwB,SAAShF,GACrCA,EAAU1J,WAAWmO,SAAWzE,EAChCA,EAAUuD,YACV/B,EAAMkF,eAAe1G,GACrBA,EAAU2F,4BACV3F,EAAUyF,sBAAsBzF,IAGlCwB,EAAM+D,mBAAqBA,EA3L7B,CA6LGtV,EAAqBE,GV3LpBA,OAEJsa,yjBWkDAC,YAAQ,CACNC,UAAWC,YAAFC,KAgBTC,GAAI,gBACJC,UAAW,CAACC,KAGZC,eAAgB,CAACC,KAAM,42IChDzBR,YAAQ,CACNC,UAAWC,YAAFC,KAmETC,GAAI,yBACJC,UAAW,CAACI,IAAyBC,KAErCC,WAAY,CAKVrV,MAAO,CAACsV,SAAU,gBAAiBpO,KAAMqO,OAAQC,QAAQ,GAOzDC,UAAW,CAACH,SAAU,oBAAqBpO,KAAMqO,OAAQC,QAAQ,GASjEE,KAAM,CAACxO,KAAMzI,OAAQuB,MAAO,EAAGsV,SAAU,iBAUzCK,QAAS,CAACzO,KAAMzI,OAAQuB,MAAO,EAAGsV,SAAU,iBAK5CM,aAAc,CAAC1O,KAAMqO,OAAQvV,MAAO,OAKpC6V,UAAW,CAAC3O,KAAM4O,QAAS9V,OAAO,GAKlC+V,UAAW,CAAC7O,KAAMqO,QAKlBS,YAAa,CAAC9O,KAAMqO,QAKpBU,SAAU,CAAC/O,KAAMqO,QAKjBW,SAAU,CAAChP,KAAM4O,SAKjBK,UAAW,CAACjP,KAAMzI,QAKlB2X,UAAW,CAAClP,KAAMzI,QAKlB4X,MAAO,CAACnP,KAAMqO,SAIhBe,UAAW,CAACC,MAAS,YAMrBC,eACE,OAAOnc,KAAKoc,EAAED,UAOhBE,qBACE,OAAOrc,KAAKoc,EAAED,SAASE,gBAOzBC,mBACE,OAAOtc,KAAKoc,EAAED,SAASG,cAMzBD,mBAAmB1W,GACjB3F,KAAKoc,EAAED,SAASE,eAAiB1W,GAMnC2W,iBAAiB3W,GACf3F,KAAKoc,EAAED,SAASG,aAAe3W,GAGjC4W,SAAU,WAMKC,UAAUC,UAAUC,MAAM,sBAErC1c,KAAKoc,EAAED,SAAS1Y,MAAMkZ,WAAa,SAUvCC,SAAU,WAER,IAAIC,EAAQ7c,KAAKoc,EAAED,SAASW,SAASD,MAcrC,OAXIA,IAEE7c,KAAK6b,UAA2B,KAAf7b,KAAK2F,MACxBkX,GAAQ,EACC7c,KAAK+c,iBACdF,EAAQ/B,IAAwB8B,SAAShN,KAAK5P,KAAMA,KAAK2F,SAI7D3F,KAAKgd,SAAWH,EAChB7c,KAAKid,KAAK,uBACHJ,GAGTK,kBAAmB,SAAS9B,GAC1Bpb,KAAK2F,MAAQyV,GAGf+B,cAAe,SAASxX,GACtB,IAAIwW,EAAWnc,KAAKmc,SACfA,IAQDA,EAASxW,QAAUA,IACrBwW,EAASxW,MAAUA,GAAmB,IAAVA,EAAoBA,EAAL,IAG7C3F,KAAKob,UAAYzV,EACjB3F,KAAKoc,EAAEgB,OAAOC,UAAYrd,KAAKsd,kBAI/Btd,KAAKid,KAAK,qBAAsB,CAACtX,MAAO3F,KAAKob,cAG/CmC,SAAU,SAASvN,GACjB,IAAIwN,EAAYC,YAAIzN,GAAO0N,KAC3B1d,KAAK2F,MAAQ6X,EAAYA,EAAU,GAAG7X,MAAQqK,EAAMnB,OAAOlJ,OAG7DgY,WAAY,SAASC,GACnB,IAAIC,EASJ,IARAD,EAASA,GAAU,CAAC,IAIlBC,EADE7d,KAAKsb,QAAU,GAAKsC,EAAOlU,OAAS1J,KAAKsb,QACjCsC,EAAO1Z,MAAM,EAAGlE,KAAKsb,SAErBsC,EAAO1Z,MAAM,GAElBlE,KAAKqb,KAAO,GAAKwC,EAAQnU,OAAS1J,KAAKqb,MAC5CwC,EAAQhU,KAAK,IAGf,OAAOgU,EAAQC,KAAK,SAAW,UAGjCR,gBAAiB,WACf,IAAIpB,EAAQlc,KAAKmc,SACjB,GAAKD,EAUL,OAPAlc,KAAK4d,OAAU1B,GAASA,EAAMvW,MAASuW,EAAMvW,MAAMoY,QAAQ,MAAO,SACtBA,QAAQ,MAAO,UACfA,QAAQ,MAAO,SACfA,QAAQ,MAAO,QACfA,QAAQ,MAAO,QACfxY,MAAM,MACX,CAAC,IACjCvF,KAAK2d,WAAW3d,KAAK4d,SAG9BI,cAAe,WACbhe,KAAKoc,EAAEgB,OAAOC,UAAYrd,KAAK2d,WAAW3d,KAAK4d,kqKCvRnDvD,YAAQ,CACNC,UAAWC,YAAFC,KAiLTC,GAAI,gBACJG,eAAgB,CAACC,KAAM,UAAWoD,UAAW,GAE7CjD,WAAY,CAMVkD,IAAK,CAACrR,KAAMqO,OAAQD,SAAU,eAK9BkD,WAAY,CAACtR,KAAM4O,QAAS9V,OAAO,EAAOsV,SAAU,sBAIpDmD,SAAU,CAACvR,KAAMqO,OAAQvV,MAAO,UAIhC0Y,mBAAoB,CAACxR,KAAM4O,QAAS9V,OAAO,GAK3CgE,OAAQ,CAACkD,KAAMzI,OAAQuB,MAAO,IAO9B2Y,UAAW,CAACzR,KAAMzI,OAAQuB,MAAO,IAKjC4Y,eAAgB,CAAC1R,KAAMzI,OAAQuB,MAAO,IAAKsV,SAAU,gBAOrDuD,eAAgB,CAAC3R,KAAMqO,OAAQvV,MAAO,IAOtC8Y,cAAe,CAAC5R,KAAMqO,OAAQvV,MAAO,IAYrC+Y,gBAAiB,CACf7R,KAAMpL,OACNkE,MAAO,WACL,MAAO,CACLgZ,MACI,CAAC,CAAC3R,KAAM,oBAAqB6L,KAAM7Y,KAAMqB,OAAQ,CAAC4D,MAAO,KACzD2Z,KAAQ,CAAC,CAAC5R,KAAM,qBAAsB6L,KAAM7Y,UAItD6e,SAAU,CAAChS,KAAM4O,QAAS9V,OAAO,IAGnCsW,UAAW,CACT6C,mBAAsB,mBAUxBjQ,aACE,IAAIkQ,EAAatB,YAAIzd,MAAM+e,WAEvBC,EAAYvB,YAAIzd,MAAMif,eAS1B,OAPIjf,KAAKke,IACET,YAAIuB,GAAWE,cAAc,IAAMlf,KAAKke,KAExCa,EAAWI,UAAYC,KAAKC,uBACjCL,EAAUM,KACVP,GAQRxC,SAAU,WACRvc,KAAKuf,eAMPC,SAAU,WACHxf,KAAKme,YACRne,KAAKyf,oBAQTC,cAAe,SAAS7S,GACT,UAATA,EACF7M,KAAK2f,OACa,SAAT9S,GACT7M,KAAK4f,QAOTC,gBAAiB,WAEf7f,KAAKoc,EAAE0D,QAAQC,UAAUC,IAAI,qBAO/BL,KAAM,WAEJ,IAAI3f,KAAK6e,SAAT,CAGA,GAAqC,KAAjCpB,YAAIzd,MAAMigB,YAAYC,OAAe,CAIvC,IAFA,IAAIC,GAAmB,EACnBC,EAAoB3C,YAAIzd,MAAMqgB,yBACzBvX,EAAI,EAAGA,EAAIsX,EAAkB1W,OAAQZ,IAC5C,GAAgD,KAA5CsX,EAAkBtX,GAAGmX,YAAYC,OAAe,CAClDC,GAAmB,EACnB,MAGJ,GAAIA,EACF,OAIJngB,KAAK6e,UAAW,EAChB7e,KAAKoc,EAAE0D,QAAQC,UAAUzN,OAAO,UAChCtS,KAAKoc,EAAE0D,QAAQC,UAAUzN,OAAO,oBAChCtS,KAAKoc,EAAE0D,QAAQC,UAAUzN,OAAOtS,KAAKsgB,kBAAkB,SACvDtgB,KAAKugB,iBACLvgB,KAAKwgB,mBAAoB,EACzBxgB,KAAKoc,EAAE0D,QAAQC,UAAUC,IAAIhgB,KAAKsgB,kBAAkB,YAOtDV,KAAM,WAEJ,GAAK5f,KAAK6e,SAAV,CAMA,GAAI7e,KAAKwgB,kBAGP,OAFAxgB,KAAK6e,UAAW,OAChB7e,KAAKygB,mBAILzgB,KAAK0gB,qBAGP1gB,KAAK6e,UAAW,EAChB7e,KAAKwgB,mBAAoB,IAM3BD,eAAgB,WACd,GAAKvgB,KAAK2gB,SAAY3gB,KAAK4gB,aAA3B,CAEA,IAAIjX,EAAS3J,KAAK2J,OAEI,IAAlB3J,KAAKse,WAAkC,IAAfte,KAAK2J,SAC/BA,EAAS3J,KAAKse,WAChB,IAOIuC,EAAaC,EAPbC,EAAa/gB,KAAK4gB,aAAaI,wBAC/BC,EAAajhB,KAAK2gB,QAAQK,wBAC1BE,EAAWlhB,KAAKghB,wBAChBG,GAA0BF,EAAWG,MAAQF,EAASE,OAAS,EAC/DC,GAAwBJ,EAAWK,OAASJ,EAASI,QAAU,EAC/DC,EAAaN,EAAWzI,KAAOuI,EAAWvI,KAC1CgJ,EAAYP,EAAWQ,IAAMV,EAAWU,IAE5C,OAAQzhB,KAAKoe,UACX,IAAK,MACHyC,EAAcU,EAAaJ,EAC3BL,EAAaU,EAAYN,EAASI,OAAS3X,EAC3C,MACF,IAAK,SACHkX,EAAcU,EAAaJ,EAC3BL,EAAaU,EAAYP,EAAWK,OAAS3X,EAC7C,MACF,IAAK,OACHkX,EAAcU,EAAaL,EAASE,MAAQzX,EAC5CmX,EAAaU,EAAYH,EACzB,MACF,IAAK,QACHR,EAAcU,EAAaN,EAAWG,MAAQzX,EAC9CmX,EAAaU,EAAYH,EAIzBrhB,KAAKqe,oBAEH0C,EAAWvI,KAAOqI,EAAcK,EAASE,MAAQ/U,OAAOqV,YAC1D1hB,KAAKyD,MAAMgV,MAAQ,MACnBzY,KAAKyD,MAAM+U,KAAO,SAElBxY,KAAKyD,MAAM+U,KAAO1V,KAAKiX,IAAI,EAAG8G,GAAe,KAC7C7gB,KAAKyD,MAAMgV,MAAQ,QAGjBsI,EAAWU,IAAMX,EAAaI,EAASI,OAASjV,OAAOsV,aACzD3hB,KAAKyD,MAAMme,OAAUb,EAAWO,OAASE,EAAY7X,EAAU,KAC/D3J,KAAKyD,MAAMge,IAAM,SAEjBzhB,KAAKyD,MAAMge,IAAM3e,KAAKiX,KAAKgH,EAAWU,IAAKX,GAAc,KACzD9gB,KAAKyD,MAAMme,OAAS,UAGtB5hB,KAAKyD,MAAM+U,KAAOqI,EAAc,KAChC7gB,KAAKyD,MAAMge,IAAMX,EAAa,QAIlCe,cAAe,WACT7hB,KAAK2gB,UACP3gB,KAAK8hB,OAAO9hB,KAAK2gB,QAAS,aAAc,QACxC3gB,KAAK8hB,OAAO9hB,KAAK2gB,QAAS,QAAS,QACnC3gB,KAAK8hB,OAAO9hB,KAAK2gB,QAAS,aAAc,QACxC3gB,KAAK8hB,OAAO9hB,KAAK2gB,QAAS,OAAQ,QAClC3gB,KAAK8hB,OAAO9hB,KAAK2gB,QAAS,MAAO,SAEnC3gB,KAAK8hB,OAAO9hB,KAAKoc,EAAE0D,QAAS,eAAgB,mBAC5C9f,KAAK8hB,OAAO9hB,KAAM,aAAc,SAGlCuf,YAAa,WACNvf,KAAKme,YACRne,KAAKyf,mBACPzf,KAAK2gB,QAAU3gB,KAAK6O,OACf7O,KAAKme,YACRne,KAAK6hB,iBAGTE,aAAc,SAASC,GAEJ,MAAbA,GACFhiB,KAAKiiB,aAAa,CAACC,2BAA4BF,EAAW,QAI9DG,mBAAoB,WACdniB,KAAKme,WACPne,KAAKyf,mBAELzf,KAAK6hB,iBAGTpB,iBAAkB,WAEhBzgB,KAAKoc,EAAE0D,QAAQC,UAAUzN,OAAOtS,KAAKsgB,kBAAkB,UACvDtgB,KAAKoc,EAAE0D,QAAQC,UAAUzN,OAAOtS,KAAKsgB,kBAAkB,SACvDtgB,KAAKoc,EAAE0D,QAAQC,UAAUzN,OAAO,oBAChCtS,KAAKoc,EAAE0D,QAAQC,UAAUC,IAAI,WAG/BU,mBAAoB,WACd1gB,KAAK6e,WACP7e,KAAKoc,EAAE0D,QAAQC,UAAUzN,OAAOtS,KAAKsgB,kBAAkB,UACvDtgB,KAAKoc,EAAE0D,QAAQC,UAAUzN,OAAO,oBAChCtS,KAAKoc,EAAE0D,QAAQC,UAAUC,IAAIhgB,KAAKsgB,kBAAkB,WAIxD8B,gBAAiB,WAEfpiB,KAAKwgB,mBAAoB,EACpBxgB,KAAK6e,WACR7e,KAAKoc,EAAE0D,QAAQC,UAAUzN,OAAOtS,KAAKsgB,kBAAkB,SACvDtgB,KAAKoc,EAAE0D,QAAQC,UAAUC,IAAI,YAIjCM,kBAAmB,SAASzT,GAE1B,GAAc,UAATA,GAA8C,KAAxB7M,KAAKwe,eAC9B,OAAOxe,KAAKwe,eAEd,GAAc,SAAT3R,GAA4C,KAAvB7M,KAAKye,cAC7B,OAAOze,KAAKye,cAGd,GAAIze,KAAK0e,gBAAgB7R,IACyB,iBAAvC7M,KAAK0e,gBAAgB7R,GAAM,GAAGG,KAAmB,CAE1D,GAAIhN,KAAK0e,gBAAgB7R,GAAM,GAAGxL,QAC9BrB,KAAK0e,gBAAgB7R,GAAM,GAAGxL,OAAO4D,OACU,IAA/CjF,KAAK0e,gBAAgB7R,GAAM,GAAGxL,OAAO4D,MAAa,CACpD,IAAIod,EAAcriB,KAAK0e,gBAAgB7R,GAAM,GAAGxL,OAAO4D,MAE1C,UAAT4H,EACF7M,KAAKiiB,aAAa,CAACC,2BAA4BG,EAAc,OAC3C,SAATxV,GACT7M,KAAKiiB,aAAa,CAACK,4BAA6BD,EAAc,OAGlE,OAAOriB,KAAK0e,gBAAgB7R,GAAM,GAAGG,OAIzCyS,iBAAkB,WACZzf,KAAK2gB,UACP3gB,KAAKuiB,SAASviB,KAAK2gB,QAAS,aAAc,QAC1C3gB,KAAKuiB,SAASviB,KAAK2gB,QAAS,QAAS,QACrC3gB,KAAKuiB,SAASviB,KAAK2gB,QAAS,aAAc,QAC1C3gB,KAAKuiB,SAASviB,KAAK2gB,QAAS,OAAQ,QACpC3gB,KAAKuiB,SAASviB,KAAK2gB,QAAS,MAAO,SAErC3gB,KAAKuiB,SAASviB,KAAKoc,EAAE0D,QAAS,eAAgB,mBAC9C9f,KAAKuiB,SAASviB,KAAM,aAAc,kwICpjBtC,IAAMwiB,EAAWjI,YAAHC,KA8IdgI,EAASC,aAAa,mBAAoB,IA2C1CpI,YAAQ,CACNC,UAAWkI,EAEX/H,GAAI,sBAEJC,UAAW,CAACgI,KAGZ9H,eAAgB,CAACC,KAAM,SAAU8H,eAAgB,QAAS1E,SAAU,GAEpEjD,WAAY,GAaZiB,UAAW,CAAC2G,MAAO,YAEnBrG,SAAU,WACRsG,YAAgB7iB,KAAM,WACpB8iB,YAAe9iB,KAAM,YAIzB+iB,SAAU,SAAS/S,GACjB,IAAI4S,EAAQ5S,EAAMgT,OACE,UAAhBJ,EAAMK,MACRjjB,KAAKkjB,YAAYN,GACQ,UAAhBA,EAAMK,MACfjjB,KAAKmjB,WAAWP,GACS,QAAhBA,EAAMK,OACfjjB,KAAKojB,UAAUR,IAInBM,YAAa,SAASN,GACpB5iB,KAAKqjB,OAASrjB,KAAKoc,EAAEkH,UAAUC,YAAc,EAK7CvjB,KAAKwjB,cAAgBxjB,KAAKyjB,QAC1BzjB,KAAKoc,EAAEsH,aAAa3D,UAAUC,IAAI,aAGpCmD,WAAY,SAASP,GACnB,IAAIe,EAAKf,EAAMe,GACf3jB,KAAK4jB,GAAK9gB,KAAKqC,IACXnF,KAAKqjB,OAAQvgB,KAAKiX,IAAI,EAAG/Z,KAAKwjB,cAAgBxjB,KAAKqjB,OAASM,EAAKA,IACrE3jB,KAAK6jB,YAAY7jB,KAAK4jB,GAAK,KAAM,EAAG,EAAG5jB,KAAKoc,EAAEsH,cAC9C1jB,KAAK8jB,cAAc9jB,KAAK4jB,GAAM5jB,KAAKqjB,OAAS,IAG9CD,UAAW,SAASR,GAClB5iB,KAAKoc,EAAEsH,aAAa3D,UAAUzN,OAAO,YACrCtS,KAAK+jB,UAAU,GAAI/jB,KAAKoc,EAAEsH,eAI5BM,cAAe,WACbhkB,KAAKikB,iBAAmBjkB,KAAKoc,EAAEsH,aAC/B,IAAIQ,EAASC,IAAoBH,gBAIjC,OAHAE,EAAOvR,GAAK,MACZuR,EAAOzB,aAAa,YAAa,IACjCyB,EAAOnE,UAAUC,IAAI,SAAU,cACxBkE,kpBCzOX7J,YAAQ,CACNC,UAAWC,YAAFC,KAqBTC,GAAI,gBAEJC,UAAW,CACTK,IACAqJ,IACAC,IACAC,KAGFtJ,WAAY,CAMVuJ,gBAAiB,CAAC1X,KAAMqO,OAAQvV,MAAO,OAAQ6e,oBAAoB,GAOnEC,cAAe,CAAC5X,KAAMqO,OAAQvV,MAAO,MAAO6e,oBAAoB,GAQhEE,oBAAqB,CAAC7X,KAAMpL,QAQ5BkjB,qBAAsB,CAAC9X,KAAMpL,QAM7BmjB,YAAa,CAAC/X,KAAMpL,QAMpBojB,aAAc,CAAChY,KAAM4O,QAAS9V,OAAO,GAUrCmf,mBACI,CAACjY,KAAM4O,QAAS9V,OAAO,EAAOsV,SAAU,+BAG9CgB,UAAW,CAAC8I,wBAAyB,0BAErCC,UAAW,CACT,4GAMFC,uBAGE,IADA,IAAIC,EAAQzH,YAAIzd,KAAKoc,EAAE+I,SAASC,sBACvBtc,EAAI,EAAGuc,EAAIH,EAAMxb,OAAQZ,EAAIuc,EAAGvc,IACvC,GAAIoc,EAAMpc,GAAGqW,WAAaC,KAAKkG,aAC7B,OAAOJ,EAAMpc,IAKnBgN,MAAO,WAEA9V,KAAKulB,eACRvlB,KAAKulB,aAAevlB,KAAK8kB,mBAAqB,QAAU,QAE1D9kB,KAAKwlB,UAAW,GAGlBjJ,SAAU,WACHvc,KAAKylB,cAAgBzlB,KAAKylB,eAAiBzlB,OAC9CA,KAAKylB,aAAezlB,KAAKilB,kBAAoBjlB,OAIjDwf,SAAU,WACRxf,KAAK6f,mBAOP6F,eAAgB,WACV1lB,KAAK2lB,QAAU3lB,KAAK4lB,SACtB5lB,KAAK+P,UAEL/P,KAAK6f,kBACL7f,KAAK6lB,yBACLC,IAAwBJ,eAAezhB,MAAMjE,KAAMkY,aAOvD6N,cAAe,YACR/lB,KAAK6kB,cAAgB7kB,KAAK0e,gBAAgBsH,MAC7ChmB,KAAKoc,EAAE6J,eAAelG,UAAUC,IAAI,aACpChgB,KAAK0f,cAAc,SAEnBoG,IAAwBC,cAAc9hB,MAAMjE,KAAMkY,YAOtDgO,cAAe,YACRlmB,KAAK6kB,cAAgB7kB,KAAK0e,gBAAgByH,OAC7CnmB,KAAKoc,EAAE6J,eAAelG,UAAUC,IAAI,aACpChgB,KAAK0f,cAAc,UAEnBoG,IAAwBI,cAAcjiB,MAAMjE,KAAMkY,YAUtDkO,uBAAwB,WACtBpmB,KAAKoc,EAAE6J,eAAelG,UAAUzN,OAAO,aACnCtS,KAAK2lB,OACP3lB,KAAKqmB,sBAELrmB,KAAKsmB,uBAQTT,uBAAwB,WAKtB,IAHA,IAAIU,EAAgBvmB,KAAKilB,iBACrBuB,EAAa,GAAGtW,OAAOlQ,KAAK0kB,qBAAuB,IACjCxU,OAAOlQ,KAAK2kB,sBAAwB,IACjD7b,EAAI,EAAGA,EAAI0d,EAAW9c,OAAQZ,IACrC0d,EAAW1d,GAAG+P,KAAO0N,EAEvBvmB,KAAK0e,gBAAkB,CACrBsH,KAAMhmB,KAAK0kB,oBACXyB,MAAOnmB,KAAK2kB,uBAQhB8B,uBAAwB,WAClBzmB,KAAK0mB,YAGP1mB,KAAK2mB,gBAQTC,2BAA4B,SAAS9B,GAE9B9kB,KAAKwlB,WAGLV,EAEO9kB,KAAKulB,cAAsC,SAAtBvlB,KAAKulB,eACpCvlB,KAAKulB,aAAe,SAFpBvlB,KAAKulB,aAAe,SASxBsB,YAAa,WACX,IAAIjC,EAAc5kB,KAAK4kB,aAAe5kB,KAAKilB,iBACvCL,GAAe5kB,KAAK2lB,SAAW3lB,KAAK8mB,YACtClC,EAAYmC,QAEZjB,IAAwBe,YAAY5iB,MAAMjE,KAAMkY,cCnQ/C,IAAM8O,EAAwB,CAEnChM,WAAY,CAKViM,gBAAiB,CACfpa,KAAMpL,OACNkE,MAAO,WACL,MAAO,CACLpE,SAAU,IAAK8B,OAAQ,+BAAgC/B,KAAM,WAUrE4lB,iBAAiB,EAQjBC,QAAS,WACF5jB,SAAS6jB,KAAK5Y,SACjBL,QAAQC,KACJ,kGASRiZ,iBAAkB,SAASC,GACzB,GAAIA,EAAOjmB,OACT,IAAK,IAAIO,KAAY0lB,EAAOjmB,OAC1BrB,KAAKinB,gBAAgBrlB,GAAY0lB,EAAOjmB,OAAOO,GAGnD,OAAO5B,KAAKinB,iBAOdM,oBAAqB,SAAS1O,EAAMjX,EAAU+D,GAM5C,IALA,IAKS6hB,EADLC,EAJM,CACR1D,UAAa,CAAC,mBACd2D,gBAAmB,CAAC,qBAAsB,0BAEzB9lB,GACF6O,EAAQ,EAAG+W,EAASC,EAAShX,GAAQA,IACpDoI,EAAKpV,MAAM+jB,GAAU7hB,EAEvBkT,EAAKpV,MAAM7B,GAAY+D,GAMzBgiB,SAAU,SAASL,MC3DrBjN,YAAQ,CAENI,GAAI,oBAEJC,UAAW,CAACsM,GAEZY,UAAW,SAASN,GAClB,IAAIzO,EAAOyO,EAAOzO,KAKlB,OAJA7Y,KAAK4F,QAAU,IAAIyO,eACfwE,EACA,CAAC,CAAC5H,QAAW,KAAM,CAACA,QAAW,MAC/BjR,KAAKqnB,iBAAiBC,IACnBtnB,KAAK4F,WCZhByU,YAAQ,CAENI,GAAI,qBAEJC,UAAW,CAACsM,GAEZY,UAAW,SAASN,GAClB,IAAIzO,EAAOyO,EAAOzO,KAQlB,OAPA7Y,KAAK4F,QAAU,IAAIyO,eACfwE,EACA,CACE,CAAC5H,QAAW,KACZ,CAACA,QAAW,MAEdjR,KAAKqnB,iBAAiBC,IACnBtnB,KAAK4F,6jEC3BhByU,YAAQ,CACNI,GAAI,mCAEJC,UAAW,CAACsM,GAEZY,UAAW,SAASN,GAClB,IAAIzO,EAAOyO,EAAOzO,KAEdyI,EADOzI,EAAKmI,wBACEM,OAOlB,OALAthB,KAAK4F,QAAU,IAAIyO,eACfwE,EACA,CAAC,CAACyI,OAASA,EAAS,EAAK,MAAO,CAACA,OAAQA,EAAS,OAClDthB,KAAKqnB,iBAAiBC,IAEnBtnB,KAAK4F,WAIhByU,YAAQ,CACNI,GAAI,kCAEJC,UAAW,CAACsM,GAEZY,UAAW,SAASN,GAClB,IAAIzO,EAAOyO,EAAOzO,KAEduI,EADOvI,EAAKmI,wBACCI,MAOjB,OALAphB,KAAK4F,QAAU,IAAIyO,eACfwE,EACA,CAAC,CAACuI,MAAQA,EAAQ,EAAK,MAAO,CAACA,MAAOA,EAAQ,OAC9CphB,KAAKqnB,iBAAiBC,IAEnBtnB,KAAK4F,WAIhByU,YAAQ,CACNI,GAAI,oCAEJC,UAAW,CAACsM,GAEZY,UAAW,SAASN,GAClB,IAAIzO,EAAOyO,EAAOzO,KAEduI,EADOvI,EAAKmI,wBACCI,MAOjB,OALAphB,KAAK4F,QAAU,IAAIyO,eACfwE,EACA,CAAC,CAACuI,MAAOA,EAAQ,MAAO,CAACA,MAAOA,EAASA,EAAQ,GAAM,OACvDphB,KAAKqnB,iBAAiBC,IAEnBtnB,KAAK4F,WAIhByU,YAAQ,CACNI,GAAI,qCAEJC,UAAW,CAACsM,GAEZY,UAAW,SAASN,GAClB,IAAIzO,EAAOyO,EAAOzO,KAEdyI,EADOzI,EAAKmI,wBACEM,OAYlB,OAVAthB,KAAKunB,oBAAoB1O,EAAM,kBAAmB,OAElD7Y,KAAK4F,QAAU,IAAIyO,eACfwE,EACA,CACE,CAACyI,OAAQA,EAAS,KAAMyC,UAAW,iBACnC,CAACzC,OAAQA,EAAS,EAAI,KAAMyC,UAAW,sBAEzC/jB,KAAKqnB,iBAAiBC,IAEnBtnB,KAAK4F,WCnEhB,IAAI0hB,EAAS,CACXO,uBAAwB,4BACxBC,sBAAuB,KA6CZC,EAAkB1N,YAAQ,CACrCC,UAAWC,YAAFyN,KA4DTvN,GAAI,oBAcJC,UAAW,CAAC0J,IAAsBrJ,KAElCC,WAAY,CAIV2K,OACI,CAAC9Y,KAAM4O,QAAS9V,OAAO,EAAOwV,QAAQ,EAAMF,SAAU,kBAM1DsJ,gBAAiB,CAAC1X,KAAMqO,OAAQvV,MAAO,OAAQ6e,oBAAoB,GAMnEC,cAAe,CAAC5X,KAAMqO,OAAQvV,MAAO,MAAO6e,oBAAoB,GAQhEyD,aAAc,CAACpb,KAAM4O,SAOrByM,iBAAkB,CAACrb,KAAMzI,OAAQuB,MAAO,EAAGwV,QAAQ,GAOnDgN,eAAgB,CAACtb,KAAMzI,OAAQuB,MAAO,EAAGwV,QAAQ,GAMjDiN,UAAW,CAACvb,KAAM4O,SAMlBoJ,aAAc,CAAChY,KAAM4O,QAAS9V,OAAO,GAMrC0iB,aAAc,CAACxb,KAAM4O,QAAS9V,OAAO,GAMrC2iB,gBAAiB,CAACzb,KAAM4O,QAAS9V,OAAO,GAMxC+e,oBAAqB,CACnB7X,KAAMpL,OACNkE,MAAO,WACL,MAAO,CACL,CAACqH,KAAM,oBAAqB3L,OAAQ,CAAC4D,MAAO,IAAK1D,SAAU,MAC3D,CACEyL,KAAM,kCACN3L,OAAQ,CACN4D,MAAO,IACP1D,SAAU,IACV8B,OAAQikB,EAAOO,yBAGnB,CACE7a,KAAM,mCACN3L,OAAQ,CACN4D,MAAO,IACP1D,SAAU,IACV8B,OAAQikB,EAAOO,4BAWzBlD,qBAAsB,CACpB9X,KAAMpL,OACNkE,MAAO,WACL,MAAO,CACL,CAACqH,KAAM,qBAAsB3L,OAAQ,CAACE,SAAU,MAChD,CACEyL,KAAM,oCACN3L,OAAQ,CACN4D,MAAO,IACP1D,SAAU,GACV8B,OAAQikB,EAAOO,yBAGnB,CACE7a,KAAM,qCACN3L,OAAQ,CAACE,SAAU,IAAK8B,OAAQ,eAYxCyhB,mBAAoB,CAACjY,KAAM4O,QAAS9V,OAAO,GAK3C4iB,oBAAqB,CAAC1b,KAAM4O,QAAS9V,OAAO,GAM5C6iB,iBAAkB,CAAC3b,KAAMpL,SAG3BmZ,eAAgB,CAACC,KAAM,QAAS4N,gBAAiB,QAEjDxM,UACI,CAACyM,gBAAiB,kBAAmBC,cAAe,iBAKxDC,qBAGE,IADA,IAAI1D,EAAQzH,YAAIzd,KAAKoc,EAAE+I,SAASC,sBACvBtc,EAAI,EAAGuc,EAAIH,EAAMxb,OAAQZ,EAAIuc,EAAGvc,IACvC,GAAIoc,EAAMpc,GAAGqW,WAAaC,KAAKkG,aAC7B,OAAOJ,EAAMpc,IAQnB+f,OAAQ,WACF7oB,KAAK2lB,OACP3lB,KAAKmmB,QAELnmB,KAAKgmB,QAQTA,KAAM,WACAhmB,KAAK4lB,UAIT5lB,KAAKoc,EAAE0M,SAAS9C,QAMlBG,MAAO,WACLnmB,KAAKoc,EAAE0M,SAAS3C,SAUlB4C,cAAe,SAAS/Y,GACjBhQ,KAAKqoB,cACRroB,KAAKmmB,SAUT6C,gBAAiB,SAAShZ,GACpBhQ,KAAKsoB,iBACPtoB,KAAKmmB,SAWTT,eAAgB,SAASC,EAAQsD,GAC3BtD,GAMF3lB,KAAKwoB,iBAAmBxoB,KAAK4oB,eAC7B5oB,KAAKid,KAAK,wBACY,MAAbgM,GACTjpB,KAAKid,KAAK,yBAUdiM,iBAAkB,SAAStD,GACzB7K,IAAiBmO,iBAAiBjlB,MAAMjE,KAAMkY,WAC1C0N,GAAY5lB,KAAK2lB,QACnB3lB,KAAKmmB,SAITgD,wBAAyB,SAASnZ,GAChC,IAAIoZ,EAAUpZ,EAAMgT,OAChBqG,EAAUrpB,KAAKoc,EAAEiN,QACV5L,YAAI2L,GAAS1L,KAEf5b,QAAQunB,IAAY,GAC3BrZ,EAAMsZ,oBAKZ7nB,OAAO8nB,KAAKjC,GAAQ3lB,QAAQ,SAAS6nB,GACnCzB,EAAgByB,GAAOlC,EAAOkC,qBC3Y1BC,EAAsBlmB,SAASC,cAAc,YACnDimB,EAAoBhH,aAAa,QAAS,kBAE1CgH,EAAoBpM,UAApB,yKAOA9Z,SAASmmB,KAAKC,YAAYF,EAAoBtE,SCV9C,IAAMsE,EAAsBlmB,SAASC,cAAc,YACnDimB,EAAoBhH,aAAa,QAAS,kBAE1CgH,EAAoBpM,UAApB,88CAoEA9Z,SAASmmB,KAAKC,YAAYF,EAAoBtE,6wDCI9C9K,YAAQ,CACNC,UAAWC,YAAFqP,KAmBTnP,GAAI,sBAEJC,UAAW,CACTmP,IACA9O,IACA+O,IACAhP,KAGFE,WAAY,CAMV+O,kBAAmB,CAACld,KAAMqO,OAAQC,QAAQ,EAAM6O,UAAU,GAS1DC,aAAc,CAACpd,KAAMpL,OAAQ0Z,QAAQ,EAAM6O,UAAU,GAOrDrkB,MAAO,CACLkH,KAAMqO,OACNC,QAAQ,GAMVa,MAAO,CAACnP,KAAMqO,QAKdS,YAAa,CAAC9O,KAAMqO,QAKpBgP,aAAc,CAACrd,KAAMqO,QAKrByK,OACI,CAAC9Y,KAAM4O,QAASN,QAAQ,EAAMxV,OAAO,EAAOsV,SAAU,kBAQ1D6J,mBAAoB,CAACjY,KAAM4O,QAAS9V,OAAO,GAM3CwkB,aAAc,CAACtd,KAAM4O,QAAS9V,OAAO,EAAO6e,oBAAoB,GAMhE4F,iBAAkB,CAACvd,KAAM4O,QAAS9V,OAAO,GAMzCkf,aAAc,CAAChY,KAAM4O,QAAS9V,OAAO,GAMrC4e,gBAAiB,CAAC1X,KAAMqO,OAAQvV,MAAO,SAMvC8e,cAAe,CAAC5X,KAAMqO,OAAQvV,MAAO,OAMrCwiB,eAAgB/jB,OAQhB6jB,aAAc,CAACpb,KAAM4O,SAKrB8M,oBAAqB,CAAC1b,KAAM4O,QAAS9V,OAAO,IAG9CsW,UAAW,CAACoO,IAAO,UAKnBC,YAAa,CAACC,UAAW,OAAQC,IAAO,SAExC5P,eACI,CAACC,KAAM,WAAY4P,oBAAqB,OAAQhC,gBAAiB,QAErEzD,UAAW,CAAC,sCAEZzI,SAAU,WAKR,IAAIqM,EAAiB5oB,KAAK4oB,eACtBA,GAAkBA,EAAeqB,cACnCjqB,KAAK0qB,iBAAiB9B,EAAeqB,eAOzCrB,qBAGE,IADA,IAAI1D,EAAQzH,YAAIzd,KAAKoc,EAAE+I,SAASC,sBACvBtc,EAAI,EAAGuc,EAAIH,EAAMxb,OAAQZ,EAAIuc,EAAGvc,IACvC,GAAIoc,EAAMpc,GAAGqW,WAAaC,KAAKkG,aAC7B,OAAOJ,EAAMpc,IAQnBkd,KAAM,WACJhmB,KAAKoc,EAAEuO,WAAW3E,QAMpBG,MAAO,WACLnmB,KAAKoc,EAAEuO,WAAWxE,SAQpB4C,cAAe,SAAS/Y,GACtBhQ,KAAK0qB,iBAAiB1a,EAAMgT,OAAO4H,OAQrCC,gBAAiB,SAAS7a,GACxBhQ,KAAK0qB,iBAAiB,OAQxBI,OAAQ,SAAS9a,GACX+a,IAA4B/a,KAAWhQ,MACzCA,KAAKgmB,QAUTgF,qBAAsB,SAASf,GAC7B,IAAItkB,EAAQ,GAIVA,EAHGskB,EAGKA,EAAajO,OAASiO,EAAagB,aAAa,UACpDhB,EAAahK,YAAYC,OAHrB,GAMVlgB,KAAK2F,MAAQA,EACb3F,KAAKkrB,sBAAsBvlB,IAW7BwlB,2BAA4B,SAAShB,EAAciB,GAEjD,OAAIA,IAQGjB,GAAgB,EAAI,IAU7BkB,aAAc,SAASC,GACrB,OAAOtrB,KAAK4lB,WAAa5lB,KAAK6b,UAAa7b,KAAK6b,YAAc7b,KAAK2F,OAGrE+f,eAAgB,WACd,IAAI6F,EAAYvrB,KAAK2lB,OAAS,OAAS,QACnCjT,EAAI1S,KAAK4oB,eACTlW,GACFA,EAAE+P,aAAa,gBAAiB8I,yECrVhC9B,EAAsBlmB,SAASC,cAAc,YACnDimB,EAAoBhH,aAAa,QAAS,kBAE1CgH,EAAoBpM,UAApB,40CAwDA9Z,SAASmmB,KAAKC,YAAYF,EAAoBtE,2CC/CjCqG,EACT,CAAC3B,IAAiB9O,IANe,CACnCH,eAAgB,CAACC,KAAM,SAAUoD,SAAU,waCsE7C5D,YAAQ,CACNC,UAAWC,YAAFC,KAaTC,GAAI,aACJC,UAAW,CAAC8Q","file":"chunk.9d7374dae6137783dda4.js","sourcesContent":["// Copyright 2014 Google Inc. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n!function(a,b){var c={},d={},e={};!function(a,b){function c(a){if(\"number\"==typeof a)return a;var b={};for(var c in a)b[c]=a[c];return b}function d(){this._delay=0,this._endDelay=0,this._fill=\"none\",this._iterationStart=0,this._iterations=1,this._duration=0,this._playbackRate=1,this._direction=\"normal\",this._easing=\"linear\",this._easingFunction=x}function e(){return a.isDeprecated(\"Invalid timing inputs\",\"2016-03-02\",\"TypeError exceptions will be thrown instead.\",!0)}function f(b,c,e){var f=new d;return c&&(f.fill=\"both\",f.duration=\"auto\"),\"number\"!=typeof b||isNaN(b)?void 0!==b&&Object.getOwnPropertyNames(b).forEach(function(c){if(\"auto\"!=b[c]){if((\"number\"==typeof f[c]||\"duration\"==c)&&(\"number\"!=typeof b[c]||isNaN(b[c])))return;if(\"fill\"==c&&-1==v.indexOf(b[c]))return;if(\"direction\"==c&&-1==w.indexOf(b[c]))return;if(\"playbackRate\"==c&&1!==b[c]&&a.isDeprecated(\"AnimationEffectTiming.playbackRate\",\"2014-11-28\",\"Use Animation.playbackRate instead.\"))return;f[c]=b[c]}}):f.duration=b,f}function g(a){return\"number\"==typeof a&&(a=isNaN(a)?{duration:0}:{duration:a}),a}function h(b,c){return b=a.numericTimingToObject(b),f(b,c)}function i(a,b,c,d){return a<0||a>1||c<0||c>1?x:function(e){function f(a,b,c){return 3*a*(1-c)*(1-c)*c+3*b*(1-c)*c*c+c*c*c}if(e<=0){var g=0;return a>0?g=b/a:!b&&c>0&&(g=d/c),g*e}if(e>=1){var h=0;return c<1?h=(d-1)/(c-1):1==c&&a<1&&(h=(b-1)/(a-1)),1+h*(e-1)}for(var i=0,j=1;i=1)return 1;var d=1/a;return(c+=b*d)-c%d}}function k(a){C||(C=document.createElement(\"div\").style),C.animationTimingFunction=\"\",C.animationTimingFunction=a;var b=C.animationTimingFunction;if(\"\"==b&&e())throw new TypeError(a+\" is not a valid value for easing\");return b}function l(a){if(\"linear\"==a)return x;var b=E.exec(a);if(b)return i.apply(this,b.slice(1).map(Number));var c=F.exec(a);return c?j(Number(c[1]),{start:y,middle:z,end:A}[c[2]]):B[a]||x}function m(a){return Math.abs(n(a)/a.playbackRate)}function n(a){return 0===a.duration||0===a.iterations?0:a.duration*a.iterations}function o(a,b,c){if(null==b)return G;var d=c.delay+a+c.endDelay;return b=Math.min(c.delay+a,d)?I:J}function p(a,b,c,d,e){switch(d){case H:return\"backwards\"==b||\"both\"==b?0:null;case J:return c-e;case I:return\"forwards\"==b||\"both\"==b?a:null;case G:return null}}function q(a,b,c,d,e){var f=e;return 0===a?b!==H&&(f+=c):f+=d/a,f}function r(a,b,c,d,e,f){var g=a===1/0?b%1:a%1;return 0!==g||c!==I||0===d||0===e&&0!==f||(g=1),g}function s(a,b,c,d){return a===I&&b===1/0?1/0:1===c?Math.floor(d)-1:Math.floor(d)}function t(a,b,c){var d=a;if(\"normal\"!==a&&\"reverse\"!==a){var e=b;\"alternate-reverse\"===a&&(e+=1),d=\"normal\",e!==1/0&&e%2!=0&&(d=\"reverse\")}return\"normal\"===d?c:1-c}function u(a,b,c){var d=o(a,b,c),e=p(a,c.fill,b,d,c.delay);if(null===e)return null;var f=q(c.duration,d,c.iterations,e,c.iterationStart),g=r(f,c.iterationStart,d,c.iterations,e,c.duration),h=s(d,c.iterations,g,f),i=t(c.direction,h,g);return c._easingFunction(i)}var v=\"backwards|forwards|both|none\".split(\"|\"),w=\"reverse|alternate|alternate-reverse\".split(\"|\"),x=function(a){return a};d.prototype={_setMember:function(b,c){this[\"_\"+b]=c,this._effect&&(this._effect._timingInput[b]=c,this._effect._timing=a.normalizeTimingInput(this._effect._timingInput),this._effect.activeDuration=a.calculateActiveDuration(this._effect._timing),this._effect._animation&&this._effect._animation._rebuildUnderlyingAnimation())},get playbackRate(){return this._playbackRate},set delay(a){this._setMember(\"delay\",a)},get delay(){return this._delay},set endDelay(a){this._setMember(\"endDelay\",a)},get endDelay(){return this._endDelay},set fill(a){this._setMember(\"fill\",a)},get fill(){return this._fill},set iterationStart(a){if((isNaN(a)||a<0)&&e())throw new TypeError(\"iterationStart must be a non-negative number, received: \"+timing.iterationStart);this._setMember(\"iterationStart\",a)},get iterationStart(){return this._iterationStart},set duration(a){if(\"auto\"!=a&&(isNaN(a)||a<0)&&e())throw new TypeError(\"duration must be non-negative or auto, received: \"+a);this._setMember(\"duration\",a)},get duration(){return this._duration},set direction(a){this._setMember(\"direction\",a)},get direction(){return this._direction},set easing(a){this._easingFunction=l(k(a)),this._setMember(\"easing\",a)},get easing(){return this._easing},set iterations(a){if((isNaN(a)||a<0)&&e())throw new TypeError(\"iterations must be non-negative, received: \"+a);this._setMember(\"iterations\",a)},get iterations(){return this._iterations}};var y=1,z=.5,A=0,B={ease:i(.25,.1,.25,1),\"ease-in\":i(.42,0,1,1),\"ease-out\":i(0,0,.58,1),\"ease-in-out\":i(.42,0,.58,1),\"step-start\":j(1,y),\"step-middle\":j(1,z),\"step-end\":j(1,A)},C=null,D=\"\\\\s*(-?\\\\d+\\\\.?\\\\d*|-?\\\\.\\\\d+)\\\\s*\",E=new RegExp(\"cubic-bezier\\\\(\"+D+\",\"+D+\",\"+D+\",\"+D+\"\\\\)\"),F=/steps\\(\\s*(\\d+)\\s*,\\s*(start|middle|end)\\s*\\)/,G=0,H=1,I=2,J=3;a.cloneTimingInput=c,a.makeTiming=f,a.numericTimingToObject=g,a.normalizeTimingInput=h,a.calculateActiveDuration=m,a.calculateIterationProgress=u,a.calculatePhase=o,a.normalizeEasing=k,a.parseEasingFunction=l}(c),function(a,b){function c(a,b){return a in k?k[a][b]||b:b}function d(a){return\"display\"===a||0===a.lastIndexOf(\"animation\",0)||0===a.lastIndexOf(\"transition\",0)}function e(a,b,e){if(!d(a)){var f=h[a];if(f){i.style[a]=b;for(var g in f){var j=f[g],k=i.style[j];e[j]=c(j,k)}}else e[a]=c(a,b)}}function f(a){var b=[];for(var c in a)if(!(c in[\"easing\",\"offset\",\"composite\"])){var d=a[c];Array.isArray(d)||(d=[d]);for(var e,f=d.length,g=0;g1&&null==d[0].offset&&(d[0].offset=0);for(var b=0,c=d[0].offset,e=1;e1)throw new TypeError(\"Keyframe offsets must be between 0 and 1.\")}}else if(\"composite\"==d){if(\"add\"==f||\"accumulate\"==f)throw{type:DOMException.NOT_SUPPORTED_ERR,name:\"NotSupportedError\",message:\"add compositing is not supported\"};if(\"replace\"!=f)throw new TypeError(\"Invalid composite mode \"+f+\".\")}else f=\"easing\"==d?a.normalizeEasing(f):\"\"+f;e(d,f,c)}return void 0==c.offset&&(c.offset=null),void 0==c.easing&&(c.easing=\"linear\"),c}),g=!0,h=-1/0,i=0;i=0&&a.offset<=1}),g||c(),d}var h={background:[\"backgroundImage\",\"backgroundPosition\",\"backgroundSize\",\"backgroundRepeat\",\"backgroundAttachment\",\"backgroundOrigin\",\"backgroundClip\",\"backgroundColor\"],border:[\"borderTopColor\",\"borderTopStyle\",\"borderTopWidth\",\"borderRightColor\",\"borderRightStyle\",\"borderRightWidth\",\"borderBottomColor\",\"borderBottomStyle\",\"borderBottomWidth\",\"borderLeftColor\",\"borderLeftStyle\",\"borderLeftWidth\"],borderBottom:[\"borderBottomWidth\",\"borderBottomStyle\",\"borderBottomColor\"],borderColor:[\"borderTopColor\",\"borderRightColor\",\"borderBottomColor\",\"borderLeftColor\"],borderLeft:[\"borderLeftWidth\",\"borderLeftStyle\",\"borderLeftColor\"],borderRadius:[\"borderTopLeftRadius\",\"borderTopRightRadius\",\"borderBottomRightRadius\",\"borderBottomLeftRadius\"],borderRight:[\"borderRightWidth\",\"borderRightStyle\",\"borderRightColor\"],borderTop:[\"borderTopWidth\",\"borderTopStyle\",\"borderTopColor\"],borderWidth:[\"borderTopWidth\",\"borderRightWidth\",\"borderBottomWidth\",\"borderLeftWidth\"],flex:[\"flexGrow\",\"flexShrink\",\"flexBasis\"],font:[\"fontFamily\",\"fontSize\",\"fontStyle\",\"fontVariant\",\"fontWeight\",\"lineHeight\"],margin:[\"marginTop\",\"marginRight\",\"marginBottom\",\"marginLeft\"],outline:[\"outlineColor\",\"outlineStyle\",\"outlineWidth\"],padding:[\"paddingTop\",\"paddingRight\",\"paddingBottom\",\"paddingLeft\"]},i=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"div\"),j={thin:\"1px\",medium:\"3px\",thick:\"5px\"},k={borderBottomWidth:j,borderLeftWidth:j,borderRightWidth:j,borderTopWidth:j,fontSize:{\"xx-small\":\"60%\",\"x-small\":\"75%\",small:\"89%\",medium:\"100%\",large:\"120%\",\"x-large\":\"150%\",\"xx-large\":\"200%\"},fontWeight:{normal:\"400\",bold:\"700\"},outlineWidth:j,textShadow:{none:\"0px 0px 0px transparent\"},boxShadow:{none:\"0px 0px 0px 0px transparent\"}};a.convertToArrayForm=f,a.normalizeKeyframes=g}(c),function(a){var b={};a.isDeprecated=function(a,c,d,e){var f=e?\"are\":\"is\",g=new Date,h=new Date(c);return h.setMonth(h.getMonth()+3),!(g=a.applyFrom&&c0?this._totalDuration:0),this._ensureAlive())},get currentTime(){return this._idle||this._currentTimePending?null:this._currentTime},set currentTime(a){a=+a,isNaN(a)||(b.restart(),this._paused||null==this._startTime||(this._startTime=this._timeline.currentTime-a/this._playbackRate),this._currentTimePending=!1,this._currentTime!=a&&(this._idle&&(this._idle=!1,this._paused=!0),this._tickCurrentTime(a,!0),b.applyDirtiedAnimation(this)))},get startTime(){return this._startTime},set startTime(a){a=+a,isNaN(a)||this._paused||this._idle||(this._startTime=a,this._tickCurrentTime((this._timeline.currentTime-this._startTime)*this.playbackRate),b.applyDirtiedAnimation(this))},get playbackRate(){return this._playbackRate},set playbackRate(a){if(a!=this._playbackRate){var c=this.currentTime;this._playbackRate=a,this._startTime=null,\"paused\"!=this.playState&&\"idle\"!=this.playState&&(this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),b.applyDirtiedAnimation(this)),null!=c&&(this.currentTime=c)}},get _isFinished(){return!this._idle&&(this._playbackRate>0&&this._currentTime>=this._totalDuration||this._playbackRate<0&&this._currentTime<=0)},get _totalDuration(){return this._effect._totalDuration},get playState(){return this._idle?\"idle\":null==this._startTime&&!this._paused&&0!=this.playbackRate||this._currentTimePending?\"pending\":this._paused?\"paused\":this._isFinished?\"finished\":\"running\"},_rewind:function(){if(this._playbackRate>=0)this._currentTime=0;else{if(!(this._totalDuration<1/0))throw new DOMException(\"Unable to rewind negative playback rate animation with infinite duration\",\"InvalidStateError\");this._currentTime=this._totalDuration}},play:function(){this._paused=!1,(this._isFinished||this._idle)&&(this._rewind(),this._startTime=null),this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),b.applyDirtiedAnimation(this)},pause:function(){this._isFinished||this._paused||this._idle?this._idle&&(this._rewind(),this._idle=!1):this._currentTimePending=!0,this._startTime=null,this._paused=!0},finish:function(){this._idle||(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this._currentTimePending=!1,b.applyDirtiedAnimation(this))},cancel:function(){this._inEffect&&(this._inEffect=!1,this._idle=!0,this._paused=!1,this._isFinished=!0,this._finishedFlag=!0,this._currentTime=0,this._startTime=null,this._effect._update(null),b.applyDirtiedAnimation(this))},reverse:function(){this.playbackRate*=-1,this.play()},addEventListener:function(a,b){\"function\"==typeof b&&\"finish\"==a&&this._finishHandlers.push(b)},removeEventListener:function(a,b){if(\"finish\"==a){var c=this._finishHandlers.indexOf(b);c>=0&&this._finishHandlers.splice(c,1)}},_fireEvents:function(a){if(this._isFinished){if(!this._finishedFlag){var b=new d(this,this._currentTime,a),c=this._finishHandlers.concat(this.onfinish?[this.onfinish]:[]);setTimeout(function(){c.forEach(function(a){a.call(b.target,b)})},0),this._finishedFlag=!0}}else this._finishedFlag=!1},_tick:function(a,b){this._idle||this._paused||(null==this._startTime?b&&(this.startTime=a-this._currentTime/this.playbackRate):this._isFinished||this._tickCurrentTime((a-this._startTime)*this.playbackRate)),b&&(this._currentTimePending=!1,this._fireEvents(a))},get _needsTick(){return this.playState in{pending:1,running:1}||!this._finishedFlag},_targetAnimations:function(){var a=this._effect._target;return a._activeAnimations||(a._activeAnimations=[]),a._activeAnimations},_markTarget:function(){var a=this._targetAnimations();-1===a.indexOf(this)&&a.push(this)},_unmarkTarget:function(){var a=this._targetAnimations(),b=a.indexOf(this);-1!==b&&a.splice(b,1)}}}(c,d),function(a,b,c){function d(a){var b=j;j=[],ad?c%=d:d%=c;return c=a*b/(c+d)}function g(a){return function(b){var c=a(b);return c&&(c[0]=void 0),c}}function h(a,b){return function(c){return a(c)||[b,c]}}function i(b,c){for(var d=[],e=0;e=1?b:\"visible\"}]}a.addPropertiesHandler(String,c,[\"visibility\"])}(d),function(a,b){function c(a){a=a.trim(),f.fillStyle=\"#000\",f.fillStyle=a;var b=f.fillStyle;if(f.fillStyle=\"#fff\",f.fillStyle=a,b==f.fillStyle){f.fillRect(0,0,1,1);var c=f.getImageData(0,0,1,1).data;f.clearRect(0,0,1,1);var d=c[3]/255;return[c[0]*d,c[1]*d,c[2]*d,d]}}function d(b,c){return[b,c,function(b){function c(a){return Math.max(0,Math.min(255,a))}if(b[3])for(var d=0;d<3;d++)b[d]=Math.round(c(b[d]/b[3]));return b[3]=a.numberToString(a.clamp(0,1,b[3])),\"rgba(\"+b.join(\",\")+\")\"}]}var e=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"canvas\");e.width=e.height=1;var f=e.getContext(\"2d\");a.addPropertiesHandler(c,d,[\"background-color\",\"border-bottom-color\",\"border-left-color\",\"border-right-color\",\"border-top-color\",\"color\",\"fill\",\"flood-color\",\"lighting-color\",\"outline-color\",\"stop-color\",\"stroke\",\"text-decoration-color\"]),a.consumeColor=a.consumeParenthesised.bind(null,c),a.mergeColors=d}(d),function(a,b){function c(a){function b(){var b=h.exec(a);g=b?b[0]:void 0}function c(){var a=Number(g);return b(),a}function d(){if(\"(\"!==g)return c();b();var a=f();return\")\"!==g?NaN:(b(),a)}function e(){for(var a=d();\"*\"===g||\"/\"===g;){var c=g;b();var e=d();\"*\"===c?a*=e:a/=e}return a}function f(){for(var a=e();\"+\"===g||\"-\"===g;){var c=g;b();var d=e();\"+\"===c?a+=d:a-=d}return a}var g,h=/([\\+\\-\\w\\.]+|[\\(\\)\\*\\/])/g;return b(),f()}function d(a,b){if(\"0\"==(b=b.trim().toLowerCase())&&\"px\".search(a)>=0)return{px:0};if(/^[^(]*$|^calc/.test(b)){b=b.replace(/calc\\(/g,\"(\");var d={};b=b.replace(a,function(a){return d[a]=null,\"U\"+a});for(var e=\"U(\"+a.source+\")\",f=b.replace(/[-+]?(\\d*\\.)?\\d+([Ee][-+]?\\d+)?/g,\"N\").replace(new RegExp(\"N\"+e,\"g\"),\"D\").replace(/\\s[+-]\\s/g,\"O\").replace(/\\s/g,\"\"),g=[/N\\*(D)/g,/(N|D)[*\\/]N/g,/(N|D)O\\1/g,/\\((N|D)\\)/g],h=0;h1?\"calc(\"+c+\")\":c}]}var g=\"px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc\",h=d.bind(null,new RegExp(g,\"g\")),i=d.bind(null,new RegExp(g+\"|%\",\"g\")),j=d.bind(null,/deg|rad|grad|turn/g);a.parseLength=h,a.parseLengthOrPercent=i,a.consumeLengthOrPercent=a.consumeParenthesised.bind(null,i),a.parseAngle=j,a.mergeDimensions=f;var k=a.consumeParenthesised.bind(null,h),l=a.consumeRepeated.bind(void 0,k,/^/),m=a.consumeRepeated.bind(void 0,l,/^,/);a.consumeSizePairList=m;var n=function(a){var b=m(a);if(b&&\"\"==b[1])return b[0]},o=a.mergeNestedRepeated.bind(void 0,e,\" \"),p=a.mergeNestedRepeated.bind(void 0,o,\",\");a.mergeNonNegativeSizePair=o,a.addPropertiesHandler(n,p,[\"background-size\"]),a.addPropertiesHandler(i,e,[\"border-bottom-width\",\"border-image-width\",\"border-left-width\",\"border-right-width\",\"border-top-width\",\"flex-basis\",\"font-size\",\"height\",\"line-height\",\"max-height\",\"max-width\",\"outline-width\",\"width\"]),a.addPropertiesHandler(i,f,[\"border-bottom-left-radius\",\"border-bottom-right-radius\",\"border-top-left-radius\",\"border-top-right-radius\",\"bottom\",\"left\",\"letter-spacing\",\"margin-bottom\",\"margin-left\",\"margin-right\",\"margin-top\",\"min-height\",\"min-width\",\"outline-offset\",\"padding-bottom\",\"padding-left\",\"padding-right\",\"padding-top\",\"perspective\",\"right\",\"shape-margin\",\"stroke-dashoffset\",\"text-indent\",\"top\",\"vertical-align\",\"word-spacing\"])}(d),function(a,b){function c(b){return a.consumeLengthOrPercent(b)||a.consumeToken(/^auto/,b)}function d(b){var d=a.consumeList([a.ignore(a.consumeToken.bind(null,/^rect/)),a.ignore(a.consumeToken.bind(null,/^\\(/)),a.consumeRepeated.bind(null,c,/^,/),a.ignore(a.consumeToken.bind(null,/^\\)/))],b);if(d&&4==d[0].length)return d[0]}function e(b,c){return\"auto\"==b||\"auto\"==c?[!0,!1,function(d){var e=d?b:c;if(\"auto\"==e)return\"auto\";var f=a.mergeDimensions(e,e);return f[2](f[0])}]:a.mergeDimensions(b,c)}function f(a){return\"rect(\"+a+\")\"}var g=a.mergeWrappedNestedRepeated.bind(null,f,e,\", \");a.parseBox=d,a.mergeBoxes=g,a.addPropertiesHandler(d,g,[\"clip\"])}(d),function(a,b){function c(a){return function(b){var c=0;return a.map(function(a){return a===k?b[c++]:a})}}function d(a){return a}function e(b){if(\"none\"==(b=b.toLowerCase().trim()))return[];for(var c,d=/\\s*(\\w+)\\(([^)]*)\\)/g,e=[],f=0;c=d.exec(b);){if(c.index!=f)return;f=c.index+c[0].length;var g=c[1],h=n[g];if(!h)return;var i=c[2].split(\",\"),j=h[0];if(j.length=0&&this._cancelHandlers.splice(c,1)}else i.call(this,a,b)},f}}}(),function(a){var b=document.documentElement,c=null,d=!1;try{var e=getComputedStyle(b).getPropertyValue(\"opacity\"),f=\"0\"==e?\"1\":\"0\";c=b.animate({opacity:[f,f]},{duration:1}),c.currentTime=0,d=getComputedStyle(b).getPropertyValue(\"opacity\")==f}catch(a){}finally{c&&c.cancel()}if(!d){var g=window.Element.prototype.animate;window.Element.prototype.animate=function(b,c){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&b[Symbol.iterator]&&(b=Array.from(b)),Array.isArray(b)||null===b||(b=a.convertToArrayForm(b)),g.call(this,b,c)}}}(c),function(a,b,c){function d(a){var c=b.timeline;c.currentTime=a,c._discardAnimations(),0==c._animations.length?f=!1:requestAnimationFrame(d)}var e=window.requestAnimationFrame;window.requestAnimationFrame=function(a){return e(function(c){b.timeline._updateAnimationsPromises(),a(c),b.timeline._updateAnimationsPromises()})},b.AnimationTimeline=function(){this._animations=[],this.currentTime=void 0},b.AnimationTimeline.prototype={getAnimations:function(){return this._discardAnimations(),this._animations.slice()},_updateAnimationsPromises:function(){b.animationsWithPromises=b.animationsWithPromises.filter(function(a){return a._updatePromises()})},_discardAnimations:function(){this._updateAnimationsPromises(),this._animations=this._animations.filter(function(a){return\"finished\"!=a.playState&&\"idle\"!=a.playState})},_play:function(a){var c=new b.Animation(a,this);return this._animations.push(c),b.restartWebAnimationsNextTick(),c._updatePromises(),c._animation.play(),c._updatePromises(),c},play:function(a){return a&&a.remove(),this._play(a)}};var f=!1;b.restartWebAnimationsNextTick=function(){f||(f=!0,requestAnimationFrame(d))};var g=new b.AnimationTimeline;b.timeline=g;try{Object.defineProperty(window.document,\"timeline\",{configurable:!0,get:function(){return g}})}catch(a){}try{window.document.timeline=g}catch(a){}}(0,e),function(a,b,c){b.animationsWithPromises=[],b.Animation=function(b,c){if(this.id=\"\",b&&b._id&&(this.id=b._id),this.effect=b,b&&(b._animation=this),!c)throw new Error(\"Animation with null timeline is not supported\");this._timeline=c,this._sequenceNumber=a.sequenceNumber++,this._holdTime=0,this._paused=!1,this._isGroup=!1,this._animation=null,this._childAnimations=[],this._callback=null,this._oldPlayState=\"idle\",this._rebuildUnderlyingAnimation(),this._animation.cancel(),this._updatePromises()},b.Animation.prototype={_updatePromises:function(){var a=this._oldPlayState,b=this.playState;return this._readyPromise&&b!==a&&(\"idle\"==b?(this._rejectReadyPromise(),this._readyPromise=void 0):\"pending\"==a?this._resolveReadyPromise():\"pending\"==b&&(this._readyPromise=void 0)),this._finishedPromise&&b!==a&&(\"idle\"==b?(this._rejectFinishedPromise(),this._finishedPromise=void 0):\"finished\"==b?this._resolveFinishedPromise():\"finished\"==a&&(this._finishedPromise=void 0)),this._oldPlayState=this.playState,this._readyPromise||this._finishedPromise},_rebuildUnderlyingAnimation:function(){this._updatePromises();var a,c,d,e,f=!!this._animation;f&&(a=this.playbackRate,c=this._paused,d=this.startTime,e=this.currentTime,this._animation.cancel(),this._animation._wrapper=null,this._animation=null),(!this.effect||this.effect instanceof window.KeyframeEffect)&&(this._animation=b.newUnderlyingAnimationForKeyframeEffect(this.effect),b.bindAnimationForKeyframeEffect(this)),(this.effect instanceof window.SequenceEffect||this.effect instanceof window.GroupEffect)&&(this._animation=b.newUnderlyingAnimationForGroup(this.effect),b.bindAnimationForGroup(this)),this.effect&&this.effect._onsample&&b.bindAnimationForCustomEffect(this),f&&(1!=a&&(this.playbackRate=a),null!==d?this.startTime=d:null!==e?this.currentTime=e:null!==this._holdTime&&(this.currentTime=this._holdTime),c&&this.pause()),this._updatePromises()},_updateChildren:function(){if(this.effect&&\"idle\"!=this.playState){var a=this.effect._timing.delay;this._childAnimations.forEach(function(c){this._arrangeChildren(c,a),this.effect instanceof window.SequenceEffect&&(a+=b.groupChildDuration(c.effect))}.bind(this))}},_setExternalAnimation:function(a){if(this.effect&&this._isGroup)for(var b=0;b` implements an accessible listbox control with Material Design\nstyling. The focused item is highlighted, and the selected item has bolded text.\n\n \n Item 1\n Item 2\n \n\nAn initial selection can be specified with the `selected` attribute.\n\n \n Item 1\n Item 2\n \n\nMake a multi-select listbox with the `multi` attribute. Items in a multi-select\nlistbox can be deselected, and multiple item can be selected.\n\n \n Item 1\n Item 2\n \n\n### Styling\n\nThe following custom properties and mixins are available for styling:\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--paper-listbox-background-color` | Menu background color |\n`--primary-background-color`\n`--paper-listbox-color` | Menu foreground color |\n`--primary-text-color`\n`--paper-listbox` | Mixin applied to the listbox | `{}`\n\n### Accessibility\n\n`` has `role=\"listbox\"` by default. A multi-select listbox will\nalso have `aria-multiselectable` set. It implements key bindings to navigate\nthrough the listbox with the up and down arrow keys, esc to exit the listbox,\nand enter to activate a listbox item. Typing the first letter of a listbox item\nwill also focus it.\n\n@group Paper Elements\n@element paper-listbox\n@demo demo/index.html\n*/\nPolymer({\n _template: html`\n \n\n \n`,\n\n is: 'paper-listbox',\n behaviors: [IronMenuBehavior],\n\n /** @private */\n hostAttributes: {role: 'listbox'}\n});\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/iron-flex-layout/iron-flex-layout.js';\n\nimport {IronControlState} from '@polymer/iron-behaviors/iron-control-state.js';\nimport {IronValidatableBehavior} from '@polymer/iron-validatable-behavior/iron-validatable-behavior.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\n\n/**\n`iron-autogrow-textarea` is an element containing a textarea that grows in\nheight as more lines of input are entered. Unless an explicit height or the\n`maxRows` property is set, it will never scroll.\n\nExample:\n\n \n\n### Styling\n\nThe following custom properties and mixins are available for styling:\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--iron-autogrow-textarea` | Mixin applied to the textarea | `{}`\n`--iron-autogrow-textarea-placeholder` | Mixin applied to the textarea placeholder | `{}`\n\n@group Iron Elements\n@hero hero.svg\n@demo demo/index.html\n*/\nPolymer({\n _template: html`\n \n\n \n \n
     
    \n\n \n
    \n \n
    \n`,\n\n is: 'iron-autogrow-textarea',\n behaviors: [IronValidatableBehavior, IronControlState],\n\n properties: {\n /**\n * Use this property instead of `bind-value` for two-way data binding.\n * @type {string|number}\n */\n value: {observer: '_valueChanged', type: String, notify: true},\n\n /**\n * This property is deprecated, and just mirrors `value`. Use `value`\n * instead.\n * @type {string|number}\n */\n bindValue: {observer: '_bindValueChanged', type: String, notify: true},\n\n /**\n * The initial number of rows.\n *\n * @attribute rows\n * @type number\n * @default 1\n */\n rows: {type: Number, value: 1, observer: '_updateCached'},\n\n /**\n * The maximum number of rows this element can grow to until it\n * scrolls. 0 means no maximum.\n *\n * @attribute maxRows\n * @type number\n * @default 0\n */\n maxRows: {type: Number, value: 0, observer: '_updateCached'},\n\n /**\n * Bound to the textarea's `autocomplete` attribute.\n */\n autocomplete: {type: String, value: 'off'},\n\n /**\n * Bound to the textarea's `autofocus` attribute.\n */\n autofocus: {type: Boolean, value: false},\n\n /**\n * Bound to the textarea's `inputmode` attribute.\n */\n inputmode: {type: String},\n\n /**\n * Bound to the textarea's `placeholder` attribute.\n */\n placeholder: {type: String},\n\n /**\n * Bound to the textarea's `readonly` attribute.\n */\n readonly: {type: String},\n\n /**\n * Set to true to mark the textarea as required.\n */\n required: {type: Boolean},\n\n /**\n * The minimum length of the input value.\n */\n minlength: {type: Number},\n\n /**\n * The maximum length of the input value.\n */\n maxlength: {type: Number},\n\n /**\n * Bound to the textarea's `aria-label` attribute.\n */\n label: {type: String}\n\n },\n\n listeners: {'input': '_onInput'},\n\n /**\n * Returns the underlying textarea.\n * @return {!HTMLTextAreaElement}\n */\n get textarea() {\n return this.$.textarea;\n },\n\n /**\n * Returns textarea's selection start.\n * @return {number}\n */\n get selectionStart() {\n return this.$.textarea.selectionStart;\n },\n\n /**\n * Returns textarea's selection end.\n * @return {number}\n */\n get selectionEnd() {\n return this.$.textarea.selectionEnd;\n },\n\n /**\n * Sets the textarea's selection start.\n */\n set selectionStart(value) {\n this.$.textarea.selectionStart = value;\n },\n\n /**\n * Sets the textarea's selection end.\n */\n set selectionEnd(value) {\n this.$.textarea.selectionEnd = value;\n },\n\n attached: function() {\n /* iOS has an arbitrary left margin of 3px that isn't present\n * in any other browser, and means that the paper-textarea's cursor\n * overlaps the label.\n * See https://github.com/PolymerElements/paper-input/issues/468.\n */\n var IS_IOS = navigator.userAgent.match(/iP(?:[oa]d|hone)/);\n if (IS_IOS) {\n this.$.textarea.style.marginLeft = '-3px';\n }\n },\n\n /**\n * Returns true if `value` is valid. The validator provided in `validator`\n * will be used first, if it exists; otherwise, the `textarea`'s validity\n * is used.\n * @return {boolean} True if the value is valid.\n */\n validate: function() {\n // Use the nested input's native validity.\n var valid = this.$.textarea.validity.valid;\n\n // Only do extra checking if the browser thought this was valid.\n if (valid) {\n // Empty, required input is invalid\n if (this.required && this.value === '') {\n valid = false;\n } else if (this.hasValidator()) {\n valid = IronValidatableBehavior.validate.call(this, this.value);\n }\n }\n\n this.invalid = !valid;\n this.fire('iron-input-validate');\n return valid;\n },\n\n _bindValueChanged: function(bindValue) {\n this.value = bindValue;\n },\n\n _valueChanged: function(value) {\n var textarea = this.textarea;\n if (!textarea) {\n return;\n }\n\n // If the bindValue changed manually, then we need to also update\n // the underlying textarea's value. Otherwise this change was probably\n // generated from the _onInput handler, and the two values are already\n // the same.\n if (textarea.value !== value) {\n textarea.value = !(value || value === 0) ? '' : value;\n }\n\n this.bindValue = value;\n this.$.mirror.innerHTML = this._valueForMirror();\n\n // Manually notify because we don't want to notify until after setting\n // value.\n this.fire('bind-value-changed', {value: this.bindValue});\n },\n\n _onInput: function(event) {\n var eventPath = dom(event).path;\n this.value = eventPath ? eventPath[0].value : event.target.value;\n },\n\n _constrain: function(tokens) {\n var _tokens;\n tokens = tokens || [''];\n // Enforce the min and max heights for a multiline input to avoid\n // measurement\n if (this.maxRows > 0 && tokens.length > this.maxRows) {\n _tokens = tokens.slice(0, this.maxRows);\n } else {\n _tokens = tokens.slice(0);\n }\n while (this.rows > 0 && _tokens.length < this.rows) {\n _tokens.push('');\n }\n // Use   instead   of to allow this element to be used in XHTML.\n return _tokens.join('
    ') + ' ';\n },\n\n _valueForMirror: function() {\n var input = this.textarea;\n if (!input) {\n return;\n }\n this.tokens = (input && input.value) ? input.value.replace(/&/gm, '&')\n .replace(/\"/gm, '"')\n .replace(/'/gm, ''')\n .replace(//gm, '>')\n .split('\\n') :\n [''];\n return this._constrain(this.tokens);\n },\n\n _updateCached: function() {\n this.$.mirror.innerHTML = this._constrain(this.tokens);\n }\n});\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\n\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\n\n/**\nMaterial design:\n[Tooltips](https://www.google.com/design/spec/components/tooltips.html)\n`` is a label that appears on hover and focus when the user\nhovers over an element with the cursor or with the keyboard. It will be centered\nto an anchor element specified in the `for` attribute, or, if that doesn't\nexist, centered to the parent node containing it.\nExample:\n
    \n \n Tooltip text\n
    \n
    \n \n Tooltip text\n
    \nThe tooltip can be positioned on the top|bottom|left|right of the anchor using\nthe `position` attribute. The default position is bottom.\n Tooltip text\n Tooltip text\n\n### Styling\nThe following custom properties and mixins are available for styling:\nCustom property | Description | Default\n----------------|-------------|----------\n`--paper-tooltip-background` | The background color of the tooltip | `#616161`\n`--paper-tooltip-opacity` | The opacity of the tooltip | `0.9`\n`--paper-tooltip-text-color` | The text color of the tooltip | `white`\n`--paper-tooltip` | Mixin applied to the tooltip | `{}`\n`--paper-tooltip-delay-in` | Delay before tooltip starts to fade in | `500`\n`--paper-tooltip-delay-out` | Delay before tooltip starts to fade out | `0`\n`--paper-tooltip-duration-in` | Timing for animation when showing tooltip | `500`\n`--paper-tooltip-duration-out` | Timing for animation when hiding tooltip | `0`\n`--paper-tooltip-animation` | Mixin applied to the tooltip animation | `{}`\n@group Paper Elements\n@element paper-tooltip\n@demo demo/index.html\n*/\nPolymer({\n _template: html`\n \n\n
    \n \n
    \n`,\n\n is: 'paper-tooltip',\n hostAttributes: {role: 'tooltip', tabindex: -1},\n\n properties: {\n /**\n * The id of the element that the tooltip is anchored to. This element\n * must be a sibling of the tooltip. If this property is not set,\n * then the tooltip will be centered to the parent node containing it.\n */\n for: {type: String, observer: '_findTarget'},\n /**\n * Set this to true if you want to manually control when the tooltip\n * is shown or hidden.\n */\n manualMode: {type: Boolean, value: false, observer: '_manualModeChanged'},\n /**\n * Positions the tooltip to the top, right, bottom, left of its content.\n */\n position: {type: String, value: 'bottom'},\n /**\n * If true, no parts of the tooltip will ever be shown offscreen.\n */\n fitToVisibleBounds: {type: Boolean, value: false},\n /**\n * The spacing between the top of the tooltip and the element it is\n * anchored to.\n */\n offset: {type: Number, value: 14},\n /**\n * This property is deprecated, but left over so that it doesn't\n * break exiting code. Please use `offset` instead. If both `offset` and\n * `marginTop` are provided, `marginTop` will be ignored.\n * @deprecated since version 1.0.3\n */\n marginTop: {type: Number, value: 14},\n /**\n * The delay that will be applied before the `entry` animation is\n * played when showing the tooltip.\n */\n animationDelay: {type: Number, value: 500, observer: '_delayChange'},\n /**\n * The animation that will be played on entry. This replaces the\n * deprecated animationConfig. Entries here will override the\n * animationConfig settings. You can enter your own animation\n * by setting it to the css class name.\n */\n animationEntry: {type: String, value: ''},\n /**\n * The animation that will be played on exit. This replaces the\n * deprecated animationConfig. Entries here will override the\n * animationConfig settings. You can enter your own animation\n * by setting it to the css class name.\n */\n animationExit: {type: String, value: ''},\n /**\n * This property is deprecated. Use --paper-tooltip-animation to change the\n * animation. The entry and exit animations that will be played when showing\n * and hiding the tooltip. If you want to override this, you must ensure\n * that your animationConfig has the exact format below.\n * @deprecated since version\n *\n * The entry and exit animations that will be played when showing and\n * hiding the tooltip. If you want to override this, you must ensure\n * that your animationConfig has the exact format below.\n */\n animationConfig: {\n type: Object,\n value: function() {\n return {\n 'entry':\n [{name: 'fade-in-animation', node: this, timing: {delay: 0}}],\n 'exit': [{name: 'fade-out-animation', node: this}]\n }\n }\n },\n _showing: {type: Boolean, value: false}\n },\n\n listeners: {\n 'webkitAnimationEnd': '_onAnimationEnd',\n },\n\n /**\n * Returns the target element that this tooltip is anchored to. It is\n * either the element given by the `for` attribute, or the immediate parent\n * of the tooltip.\n *\n * @type {Node}\n */\n get target() {\n var parentNode = dom(this).parentNode;\n // If the parentNode is a document fragment, then we need to use the host.\n var ownerRoot = dom(this).getOwnerRoot();\n var target;\n if (this.for) {\n target = dom(ownerRoot).querySelector('#' + this.for);\n } else {\n target = parentNode.nodeType == Node.DOCUMENT_FRAGMENT_NODE ?\n ownerRoot.host :\n parentNode;\n }\n return target;\n },\n\n /**\n * @return {void}\n */\n attached: function() {\n this._findTarget();\n },\n\n /**\n * @return {void}\n */\n detached: function() {\n if (!this.manualMode)\n this._removeListeners();\n },\n\n /**\n * Replaces Neon-Animation playAnimation - just calls show and hide.\n * @deprecated Use show and hide instead.\n * @param {string} type Either `entry` or `exit`\n */\n playAnimation: function(type) {\n if (type === 'entry') {\n this.show();\n } else if (type === 'exit') {\n this.hide();\n }\n },\n\n /**\n * Cancels the animation and either fully shows or fully hides tooltip\n */\n cancelAnimation: function() {\n // Short-cut and cancel all animations and hide\n this.$.tooltip.classList.add('cancel-animation');\n },\n\n /**\n * Shows the tooltip programatically\n * @return {void}\n */\n show: function() {\n // If the tooltip is already showing, there's nothing to do.\n if (this._showing)\n return;\n\n if (dom(this).textContent.trim() === '') {\n // Check if effective children are also empty\n var allChildrenEmpty = true;\n var effectiveChildren = dom(this).getEffectiveChildNodes();\n for (var i = 0; i < effectiveChildren.length; i++) {\n if (effectiveChildren[i].textContent.trim() !== '') {\n allChildrenEmpty = false;\n break;\n }\n }\n if (allChildrenEmpty) {\n return;\n }\n }\n\n this._showing = true;\n this.$.tooltip.classList.remove('hidden');\n this.$.tooltip.classList.remove('cancel-animation');\n this.$.tooltip.classList.remove(this._getAnimationType('exit'));\n this.updatePosition();\n this._animationPlaying = true;\n this.$.tooltip.classList.add(this._getAnimationType('entry'));\n },\n\n /**\n * Hides the tooltip programatically\n * @return {void}\n */\n hide: function() {\n // If the tooltip is already hidden, there's nothing to do.\n if (!this._showing) {\n return;\n }\n\n // If the entry animation is still playing, don't try to play the exit\n // animation since this will reset the opacity to 1. Just end the animation.\n if (this._animationPlaying) {\n this._showing = false;\n this._cancelAnimation();\n return;\n } else {\n // Play Exit Animation\n this._onAnimationFinish();\n }\n\n this._showing = false;\n this._animationPlaying = true;\n },\n\n /**\n * @return {void}\n */\n updatePosition: function() {\n if (!this._target || !this.offsetParent)\n return;\n var offset = this.offset;\n // If a marginTop has been provided by the user (pre 1.0.3), use it.\n if (this.marginTop != 14 && this.offset == 14)\n offset = this.marginTop;\n var parentRect = this.offsetParent.getBoundingClientRect();\n var targetRect = this._target.getBoundingClientRect();\n var thisRect = this.getBoundingClientRect();\n var horizontalCenterOffset = (targetRect.width - thisRect.width) / 2;\n var verticalCenterOffset = (targetRect.height - thisRect.height) / 2;\n var targetLeft = targetRect.left - parentRect.left;\n var targetTop = targetRect.top - parentRect.top;\n var tooltipLeft, tooltipTop;\n switch (this.position) {\n case 'top':\n tooltipLeft = targetLeft + horizontalCenterOffset;\n tooltipTop = targetTop - thisRect.height - offset;\n break;\n case 'bottom':\n tooltipLeft = targetLeft + horizontalCenterOffset;\n tooltipTop = targetTop + targetRect.height + offset;\n break;\n case 'left':\n tooltipLeft = targetLeft - thisRect.width - offset;\n tooltipTop = targetTop + verticalCenterOffset;\n break;\n case 'right':\n tooltipLeft = targetLeft + targetRect.width + offset;\n tooltipTop = targetTop + verticalCenterOffset;\n break;\n }\n // TODO(noms): This should use IronFitBehavior if possible.\n if (this.fitToVisibleBounds) {\n // Clip the left/right side\n if (parentRect.left + tooltipLeft + thisRect.width > window.innerWidth) {\n this.style.right = '0px';\n this.style.left = 'auto';\n } else {\n this.style.left = Math.max(0, tooltipLeft) + 'px';\n this.style.right = 'auto';\n }\n // Clip the top/bottom side.\n if (parentRect.top + tooltipTop + thisRect.height > window.innerHeight) {\n this.style.bottom = (parentRect.height - targetTop + offset) + 'px';\n this.style.top = 'auto';\n } else {\n this.style.top = Math.max(-parentRect.top, tooltipTop) + 'px';\n this.style.bottom = 'auto';\n }\n } else {\n this.style.left = tooltipLeft + 'px';\n this.style.top = tooltipTop + 'px';\n }\n },\n\n _addListeners: function() {\n if (this._target) {\n this.listen(this._target, 'mouseenter', 'show');\n this.listen(this._target, 'focus', 'show');\n this.listen(this._target, 'mouseleave', 'hide');\n this.listen(this._target, 'blur', 'hide');\n this.listen(this._target, 'tap', 'hide');\n }\n this.listen(this.$.tooltip, 'animationend', '_onAnimationEnd');\n this.listen(this, 'mouseenter', 'hide');\n },\n\n _findTarget: function() {\n if (!this.manualMode)\n this._removeListeners();\n this._target = this.target;\n if (!this.manualMode)\n this._addListeners();\n },\n\n _delayChange: function(newValue) {\n // Only Update delay if different value set\n if (newValue !== 500) {\n this.updateStyles({'--paper-tooltip-delay-in': newValue + 'ms'});\n }\n },\n\n _manualModeChanged: function() {\n if (this.manualMode)\n this._removeListeners();\n else\n this._addListeners();\n },\n\n _cancelAnimation: function() {\n // Short-cut and cancel all animations and hide\n this.$.tooltip.classList.remove(this._getAnimationType('entry'));\n this.$.tooltip.classList.remove(this._getAnimationType('exit'));\n this.$.tooltip.classList.remove('cancel-animation');\n this.$.tooltip.classList.add('hidden');\n },\n\n _onAnimationFinish: function() {\n if (this._showing) {\n this.$.tooltip.classList.remove(this._getAnimationType('entry'));\n this.$.tooltip.classList.remove('cancel-animation');\n this.$.tooltip.classList.add(this._getAnimationType('exit'));\n }\n },\n\n _onAnimationEnd: function() {\n // If no longer showing add class hidden to completely hide tooltip\n this._animationPlaying = false;\n if (!this._showing) {\n this.$.tooltip.classList.remove(this._getAnimationType('exit'));\n this.$.tooltip.classList.add('hidden');\n }\n },\n\n _getAnimationType: function(type) {\n // These properties have priority over animationConfig values\n if ((type === 'entry') && (this.animationEntry !== '')) {\n return this.animationEntry;\n }\n if ((type === 'exit') && (this.animationExit !== '')) {\n return this.animationExit;\n }\n // If no results then return the legacy value from animationConfig\n if (this.animationConfig[type] &&\n typeof this.animationConfig[type][0].name === 'string') {\n // Checking Timing and Update if necessary - Legacy for animationConfig\n if (this.animationConfig[type][0].timing &&\n this.animationConfig[type][0].timing.delay &&\n this.animationConfig[type][0].timing.delay !== 0) {\n var timingDelay = this.animationConfig[type][0].timing.delay;\n // Has Timing Change - Update CSS\n if (type === 'entry') {\n this.updateStyles({'--paper-tooltip-delay-in': timingDelay + 'ms'});\n } else if (type === 'exit') {\n this.updateStyles({'--paper-tooltip-delay-out': timingDelay + 'ms'});\n }\n }\n return this.animationConfig[type][0].name;\n }\n },\n\n _removeListeners: function() {\n if (this._target) {\n this.unlisten(this._target, 'mouseenter', 'show');\n this.unlisten(this._target, 'focus', 'show');\n this.unlisten(this._target, 'mouseleave', 'hide');\n this.unlisten(this._target, 'blur', 'hide');\n this.unlisten(this._target, 'tap', 'hide');\n }\n this.unlisten(this.$.tooltip, 'animationend', '_onAnimationEnd');\n this.unlisten(this, 'mouseenter', 'hide');\n }\n});\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/iron-flex-layout/iron-flex-layout.js';\nimport '@polymer/paper-styles/color.js';\nimport '@polymer/paper-styles/default-theme.js';\n\nimport {PaperCheckedElementBehavior} from '@polymer/paper-behaviors/paper-checked-element-behavior.js';\nimport {PaperRippleBehavior} from '@polymer/paper-behaviors/paper-ripple-behavior.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {setTouchAction} from '@polymer/polymer/lib/utils/gestures.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\nimport {afterNextRender} from '@polymer/polymer/lib/utils/render-status.js';\n\nconst template = html`\n\n \n\n
    \n
    \n
    \n
    \n\n
    \n\n `;\ntemplate.setAttribute('strip-whitespace', '');\n\n/**\nMaterial design: [Switch](https://www.google.com/design/spec/components/selection-controls.html#selection-controls-switch)\n\n`paper-toggle-button` provides a ON/OFF switch that user can toggle the state\nby tapping or by dragging the switch.\n\nExample:\n\n \n\n### Styling\n\nThe following custom properties and mixins are available for styling:\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--paper-toggle-button-unchecked-bar-color` | Slider color when the input is not checked | `#000000`\n`--paper-toggle-button-unchecked-button-color` | Button color when the input is not checked | `--paper-grey-50`\n`--paper-toggle-button-unchecked-ink-color` | Selected/focus ripple color when the input is not checked | `--dark-primary-color`\n`--paper-toggle-button-checked-bar-color` | Slider button color when the input is checked | `--primary-color`\n`--paper-toggle-button-checked-button-color` | Button color when the input is checked | `--primary-color`\n`--paper-toggle-button-checked-ink-color` | Selected/focus ripple color when the input is checked | `--primary-color`\n`--paper-toggle-button-invalid-bar-color` | Slider button color when the input is invalid | `--error-color`\n`--paper-toggle-button-invalid-button-color` | Button color when the input is invalid | `--error-color`\n`--paper-toggle-button-invalid-ink-color` | Selected/focus ripple color when the input is invalid | `--error-color`\n`--paper-toggle-button-unchecked-bar` | Mixin applied to the slider when the input is not checked | `{}`\n`--paper-toggle-button-unchecked-button` | Mixin applied to the slider button when the input is not checked | `{}`\n`--paper-toggle-button-unchecked-ink` | Mixin applied to the ripple when the input is not checked | `{}`\n`--paper-toggle-button-checked-bar` | Mixin applied to the slider when the input is checked | `{}`\n`--paper-toggle-button-checked-button` | Mixin applied to the slider button when the input is checked | `{}`\n`--paper-toggle-button-checked-ink` | Mixin applied to the ripple when the input is checked | `{}`\n`--paper-toggle-button-label-color` | Label color | `--primary-text-color`\n`--paper-toggle-button-label-spacing` | Spacing between the label and the button | `8px`\n\nThis element applies the mixin `--paper-font-common-base` but does not import `paper-styles/typography.html`.\nIn order to apply the `Roboto` font to this element, make sure you've imported `paper-styles/typography.html`.\n\n@group Paper Elements\n@element paper-toggle-button\n@demo demo/index.html\n*/\nPolymer({\n _template: template,\n\n is: 'paper-toggle-button',\n\n behaviors: [PaperCheckedElementBehavior],\n\n /** @private */\n hostAttributes: {role: 'button', 'aria-pressed': 'false', tabindex: 0},\n\n properties: {\n /**\n * Fired when the checked state changes due to user interaction.\n *\n * @event change\n */\n /**\n * Fired when the checked state changes.\n *\n * @event iron-change\n */\n },\n\n listeners: {track: '_ontrack'},\n\n attached: function() {\n afterNextRender(this, function() {\n setTouchAction(this, 'pan-y');\n });\n },\n\n _ontrack: function(event) {\n var track = event.detail;\n if (track.state === 'start') {\n this._trackStart(track);\n } else if (track.state === 'track') {\n this._trackMove(track);\n } else if (track.state === 'end') {\n this._trackEnd(track);\n }\n },\n\n _trackStart: function(track) {\n this._width = this.$.toggleBar.offsetWidth / 2;\n /*\n * keep an track-only check state to keep the dragging behavior smooth\n * while toggling activations\n */\n this._trackChecked = this.checked;\n this.$.toggleButton.classList.add('dragging');\n },\n\n _trackMove: function(track) {\n var dx = track.dx;\n this._x = Math.min(\n this._width, Math.max(0, this._trackChecked ? this._width + dx : dx));\n this.translate3d(this._x + 'px', 0, 0, this.$.toggleButton);\n this._userActivate(this._x > (this._width / 2));\n },\n\n _trackEnd: function(track) {\n this.$.toggleButton.classList.remove('dragging');\n this.transform('', this.$.toggleButton);\n },\n\n // customize the element's ripple\n _createRipple: function() {\n this._rippleContainer = this.$.toggleButton;\n var ripple = PaperRippleBehavior._createRipple();\n ripple.id = 'ink';\n ripple.setAttribute('recenters', '');\n ripple.classList.add('circle', 'toggle-ink');\n return ripple;\n }\n\n});\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\n\nimport {IronA11yKeysBehavior} from '@polymer/iron-a11y-keys-behavior/iron-a11y-keys-behavior.js';\nimport {IronControlState} from '@polymer/iron-behaviors/iron-control-state.js';\nimport {IronOverlayBehavior, IronOverlayBehaviorImpl} from '@polymer/iron-overlay-behavior/iron-overlay-behavior.js';\nimport {NeonAnimationRunnerBehavior} from '@polymer/neon-animation/neon-animation-runner-behavior.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\n\n/**\n`` is a generalized element that is useful when you have\nhidden content (`dropdown-content`) that is revealed due to some change in\nstate that should cause it to do so.\n\nNote that this is a low-level element intended to be used as part of other\ncomposite elements that cause dropdowns to be revealed.\n\nExamples of elements that might be implemented using an `iron-dropdown`\ninclude comboboxes, menubuttons, selects. The list goes on.\n\nThe `` element exposes attributes that allow the position\nof the `dropdown-content` relative to the `dropdown-trigger` to be\nconfigured.\n\n \n
    Hello!
    \n
    \n\nIn the above example, the `
    ` assigned to the `dropdown-content` slot will\nbe hidden until the dropdown element has `opened` set to true, or when the\n`open` method is called on the element.\n\n@demo demo/index.html\n*/\nPolymer({\n _template: html`\n \n\n
    \n \n
    \n`,\n\n is: 'iron-dropdown',\n\n behaviors: [\n IronControlState,\n IronA11yKeysBehavior,\n IronOverlayBehavior,\n NeonAnimationRunnerBehavior\n ],\n\n properties: {\n /**\n * The orientation against which to align the dropdown content\n * horizontally relative to the dropdown trigger.\n * Overridden from `Polymer.IronFitBehavior`.\n */\n horizontalAlign: {type: String, value: 'left', reflectToAttribute: true},\n\n /**\n * The orientation against which to align the dropdown content\n * vertically relative to the dropdown trigger.\n * Overridden from `Polymer.IronFitBehavior`.\n */\n verticalAlign: {type: String, value: 'top', reflectToAttribute: true},\n\n /**\n * An animation config. If provided, this will be used to animate the\n * opening of the dropdown. Pass an Array for multiple animations.\n * See `neon-animation` documentation for more animation configuration\n * details.\n */\n openAnimationConfig: {type: Object},\n\n /**\n * An animation config. If provided, this will be used to animate the\n * closing of the dropdown. Pass an Array for multiple animations.\n * See `neon-animation` documentation for more animation configuration\n * details.\n */\n closeAnimationConfig: {type: Object},\n\n /**\n * If provided, this will be the element that will be focused when\n * the dropdown opens.\n */\n focusTarget: {type: Object},\n\n /**\n * Set to true to disable animations when opening and closing the\n * dropdown.\n */\n noAnimations: {type: Boolean, value: false},\n\n /**\n * By default, the dropdown will constrain scrolling on the page\n * to itself when opened.\n * Set to true in order to prevent scroll from being constrained\n * to the dropdown when it opens.\n * This property is a shortcut to set `scrollAction` to lock or refit.\n * Prefer directly setting the `scrollAction` property.\n */\n allowOutsideScroll:\n {type: Boolean, value: false, observer: '_allowOutsideScrollChanged'}\n },\n\n listeners: {'neon-animation-finish': '_onNeonAnimationFinish'},\n\n observers: [\n '_updateOverlayPosition(positionTarget, verticalAlign, horizontalAlign, verticalOffset, horizontalOffset)'\n ],\n\n /**\n * The element that is contained by the dropdown, if any.\n */\n get containedElement() {\n // Polymer 2.x returns slot.assignedNodes which can contain text nodes.\n var nodes = dom(this.$.content).getDistributedNodes();\n for (var i = 0, l = nodes.length; i < l; i++) {\n if (nodes[i].nodeType === Node.ELEMENT_NODE) {\n return nodes[i];\n }\n }\n },\n\n ready: function() {\n // Ensure scrollAction is set.\n if (!this.scrollAction) {\n this.scrollAction = this.allowOutsideScroll ? 'refit' : 'lock';\n }\n this._readied = true;\n },\n\n attached: function() {\n if (!this.sizingTarget || this.sizingTarget === this) {\n this.sizingTarget = this.containedElement || this;\n }\n },\n\n detached: function() {\n this.cancelAnimation();\n },\n\n /**\n * Called when the value of `opened` changes.\n * Overridden from `IronOverlayBehavior`\n */\n _openedChanged: function() {\n if (this.opened && this.disabled) {\n this.cancel();\n } else {\n this.cancelAnimation();\n this._updateAnimationConfig();\n IronOverlayBehaviorImpl._openedChanged.apply(this, arguments);\n }\n },\n\n /**\n * Overridden from `IronOverlayBehavior`.\n */\n _renderOpened: function() {\n if (!this.noAnimations && this.animationConfig.open) {\n this.$.contentWrapper.classList.add('animating');\n this.playAnimation('open');\n } else {\n IronOverlayBehaviorImpl._renderOpened.apply(this, arguments);\n }\n },\n\n /**\n * Overridden from `IronOverlayBehavior`.\n */\n _renderClosed: function() {\n if (!this.noAnimations && this.animationConfig.close) {\n this.$.contentWrapper.classList.add('animating');\n this.playAnimation('close');\n } else {\n IronOverlayBehaviorImpl._renderClosed.apply(this, arguments);\n }\n },\n\n /**\n * Called when animation finishes on the dropdown (when opening or\n * closing). Responsible for \"completing\" the process of opening or\n * closing the dropdown by positioning it or setting its display to\n * none.\n */\n _onNeonAnimationFinish: function() {\n this.$.contentWrapper.classList.remove('animating');\n if (this.opened) {\n this._finishRenderOpened();\n } else {\n this._finishRenderClosed();\n }\n },\n\n /**\n * Constructs the final animation config from different properties used\n * to configure specific parts of the opening and closing animations.\n */\n _updateAnimationConfig: function() {\n // Update the animation node to be the containedElement.\n var animationNode = this.containedElement;\n var animations = [].concat(this.openAnimationConfig || [])\n .concat(this.closeAnimationConfig || []);\n for (var i = 0; i < animations.length; i++) {\n animations[i].node = animationNode;\n }\n this.animationConfig = {\n open: this.openAnimationConfig,\n close: this.closeAnimationConfig\n };\n },\n\n /**\n * Updates the overlay position based on configured horizontal\n * and vertical alignment.\n */\n _updateOverlayPosition: function() {\n if (this.isAttached) {\n // This triggers iron-resize, and iron-overlay-behavior will call refit if\n // needed.\n this.notifyResize();\n }\n },\n\n /**\n * Sets scrollAction according to the value of allowOutsideScroll.\n * Prefer setting directly scrollAction.\n */\n _allowOutsideScrollChanged: function(allowOutsideScroll) {\n // Wait until initial values are all set.\n if (!this._readied) {\n return;\n }\n if (!allowOutsideScroll) {\n this.scrollAction = 'lock';\n } else if (!this.scrollAction || this.scrollAction === 'lock') {\n this.scrollAction = 'refit';\n }\n },\n\n /**\n * Apply focus to focusTarget or containedElement\n */\n _applyFocus: function() {\n var focusTarget = this.focusTarget || this.containedElement;\n if (focusTarget && this.opened && !this.noAutoFocus) {\n focusTarget.focus();\n } else {\n IronOverlayBehaviorImpl._applyFocus.apply(this, arguments);\n }\n }\n});\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\n\n/**\n * Use `NeonAnimationBehavior` to implement an animation.\n * @polymerBehavior\n */\nexport const NeonAnimationBehavior = {\n\n properties: {\n\n /**\n * Defines the animation timing.\n */\n animationTiming: {\n type: Object,\n value: function() {\n return {\n duration: 500, easing: 'cubic-bezier(0.4, 0, 0.2, 1)', fill: 'both'\n }\n }\n }\n\n },\n\n /**\n * Can be used to determine that elements implement this behavior.\n */\n isNeonAnimation: true,\n\n /**\n * Do any animation configuration here.\n */\n // configure: function(config) {\n // },\n\n created: function() {\n if (!document.body.animate) {\n console.warn(\n 'No web animations detected. This element will not' +\n ' function without a web animations polyfill.');\n }\n },\n\n /**\n * Returns the animation timing by mixing in properties from `config` to the\n * defaults defined by the animation.\n */\n timingFromConfig: function(config) {\n if (config.timing) {\n for (var property in config.timing) {\n this.animationTiming[property] = config.timing[property];\n }\n }\n return this.animationTiming;\n },\n\n /**\n * Sets `transform` and `transformOrigin` properties along with the prefixed\n * versions.\n */\n setPrefixedProperty: function(node, property, value) {\n var map = {\n 'transform': ['webkitTransform'],\n 'transformOrigin': ['mozTransformOrigin', 'webkitTransformOrigin']\n };\n var prefixes = map[property];\n for (var prefix, index = 0; prefix = prefixes[index]; index++) {\n node.style[prefix] = value;\n }\n node.style[property] = value;\n },\n\n /**\n * Called when the animation finishes.\n */\n complete: function(config) {}\n\n};\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\n\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {NeonAnimationBehavior} from '../neon-animation-behavior.js';\n/*\n`` animates the opacity of an element from 0 to 1.\n\nConfiguration:\n```\n{\n name: 'fade-in-animation',\n node: \n timing: \n}\n```\n*/\nPolymer({\n\n is: 'fade-in-animation',\n\n behaviors: [NeonAnimationBehavior],\n\n configure: function(config) {\n var node = config.node;\n this._effect = new KeyframeEffect(\n node,\n [{'opacity': '0'}, {'opacity': '1'}],\n this.timingFromConfig(config));\n return this._effect;\n }\n\n});\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\n\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {NeonAnimationBehavior} from '../neon-animation-behavior.js';\n/*\n`` animates the opacity of an element from 1 to 0.\n\nConfiguration:\n```\n{\n name: 'fade-out-animation',\n node: \n timing: \n}\n```\n*/\nPolymer({\n\n is: 'fade-out-animation',\n\n behaviors: [NeonAnimationBehavior],\n\n configure: function(config) {\n var node = config.node;\n this._effect = new KeyframeEffect(\n node,\n [\n {'opacity': '1'},\n {'opacity': '0'},\n ],\n this.timingFromConfig(config));\n return this._effect;\n }\n\n});\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\n\nimport {NeonAnimationBehavior} from '@polymer/neon-animation/neon-animation-behavior.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nPolymer({\n is: 'paper-menu-grow-height-animation',\n\n behaviors: [NeonAnimationBehavior],\n\n configure: function(config) {\n var node = config.node;\n var rect = node.getBoundingClientRect();\n var height = rect.height;\n\n this._effect = new KeyframeEffect(\n node,\n [{height: (height / 2) + 'px'}, {height: height + 'px'}],\n this.timingFromConfig(config));\n\n return this._effect;\n }\n});\n\nPolymer({\n is: 'paper-menu-grow-width-animation',\n\n behaviors: [NeonAnimationBehavior],\n\n configure: function(config) {\n var node = config.node;\n var rect = node.getBoundingClientRect();\n var width = rect.width;\n\n this._effect = new KeyframeEffect(\n node,\n [{width: (width / 2) + 'px'}, {width: width + 'px'}],\n this.timingFromConfig(config));\n\n return this._effect;\n }\n});\n\nPolymer({\n is: 'paper-menu-shrink-width-animation',\n\n behaviors: [NeonAnimationBehavior],\n\n configure: function(config) {\n var node = config.node;\n var rect = node.getBoundingClientRect();\n var width = rect.width;\n\n this._effect = new KeyframeEffect(\n node,\n [{width: width + 'px'}, {width: width - (width / 20) + 'px'}],\n this.timingFromConfig(config));\n\n return this._effect;\n }\n});\n\nPolymer({\n is: 'paper-menu-shrink-height-animation',\n\n behaviors: [NeonAnimationBehavior],\n\n configure: function(config) {\n var node = config.node;\n var rect = node.getBoundingClientRect();\n var height = rect.height;\n\n this.setPrefixedProperty(node, 'transformOrigin', '0 0');\n\n this._effect = new KeyframeEffect(\n node,\n [\n {height: height + 'px', transform: 'translateY(0)'},\n {height: height / 2 + 'px', transform: 'translateY(-20px)'}\n ],\n this.timingFromConfig(config));\n\n return this._effect;\n }\n});\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/iron-dropdown/iron-dropdown.js';\nimport '@polymer/neon-animation/animations/fade-in-animation.js';\nimport '@polymer/neon-animation/animations/fade-out-animation.js';\nimport '@polymer/paper-styles/default-theme.js';\nimport '@polymer/paper-styles/shadow.js';\nimport './paper-menu-button-animations.js';\n\nimport {IronA11yKeysBehavior} from '@polymer/iron-a11y-keys-behavior/iron-a11y-keys-behavior.js';\nimport {IronControlState} from '@polymer/iron-behaviors/iron-control-state.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\n\nvar config = {\n ANIMATION_CUBIC_BEZIER: 'cubic-bezier(.3,.95,.5,1)',\n MAX_ANIMATION_TIME_MS: 400\n};\n\n/**\nMaterial design: [Dropdown\nbuttons](https://www.google.com/design/spec/components/buttons.html#buttons-dropdown-buttons)\n\n`paper-menu-button` allows one to compose a designated \"trigger\" element with\nanother element that represents \"content\", to create a dropdown menu that\ndisplays the \"content\" when the \"trigger\" is clicked.\n\nThe child element assigned to the `dropdown-trigger` slot will be used as the\n\"trigger\" element. The child element assigned to the `dropdown-content` slot\nwill be used as the \"content\" element.\n\nThe `paper-menu-button` is sensitive to its content's `iron-select` events. If\nthe \"content\" element triggers an `iron-select` event, the `paper-menu-button`\nwill close automatically.\n\nExample:\n\n \n Share\n Settings\n Help\n \n \n\n### Styling\n\nThe following custom properties and mixins are also available for styling:\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--paper-menu-button-dropdown-background` | Background color of the paper-menu-button dropdown | `--primary-background-color`\n`--paper-menu-button` | Mixin applied to the paper-menu-button | `{}`\n`--paper-menu-button-disabled` | Mixin applied to the paper-menu-button when disabled | `{}`\n`--paper-menu-button-dropdown` | Mixin applied to the paper-menu-button dropdown | `{}`\n`--paper-menu-button-content` | Mixin applied to the paper-menu-button content | `{}`\n\n@hero hero.svg\n@demo demo/index.html\n*/\nexport const PaperMenuButton = Polymer({\n _template: html`\n \n\n
    \n \n
    \n\n \n
    \n \n
    \n
    \n`,\n\n is: 'paper-menu-button',\n\n /**\n * Fired when the dropdown opens.\n *\n * @event paper-dropdown-open\n */\n\n /**\n * Fired when the dropdown closes.\n *\n * @event paper-dropdown-close\n */\n\n behaviors: [IronA11yKeysBehavior, IronControlState],\n\n properties: {\n /**\n * True if the content is currently displayed.\n */\n opened:\n {type: Boolean, value: false, notify: true, observer: '_openedChanged'},\n\n /**\n * The orientation against which to align the menu dropdown\n * horizontally relative to the dropdown trigger.\n */\n horizontalAlign: {type: String, value: 'left', reflectToAttribute: true},\n\n /**\n * The orientation against which to align the menu dropdown\n * vertically relative to the dropdown trigger.\n */\n verticalAlign: {type: String, value: 'top', reflectToAttribute: true},\n\n /**\n * If true, the `horizontalAlign` and `verticalAlign` properties will\n * be considered preferences instead of strict requirements when\n * positioning the dropdown and may be changed if doing so reduces\n * the area of the dropdown falling outside of `fitInto`.\n */\n dynamicAlign: {type: Boolean},\n\n /**\n * A pixel value that will be added to the position calculated for the\n * given `horizontalAlign`. Use a negative value to offset to the\n * left, or a positive value to offset to the right.\n */\n horizontalOffset: {type: Number, value: 0, notify: true},\n\n /**\n * A pixel value that will be added to the position calculated for the\n * given `verticalAlign`. Use a negative value to offset towards the\n * top, or a positive value to offset towards the bottom.\n */\n verticalOffset: {type: Number, value: 0, notify: true},\n\n /**\n * If true, the dropdown will be positioned so that it doesn't overlap\n * the button.\n */\n noOverlap: {type: Boolean},\n\n /**\n * Set to true to disable animations when opening and closing the\n * dropdown.\n */\n noAnimations: {type: Boolean, value: false},\n\n /**\n * Set to true to disable automatically closing the dropdown after\n * a selection has been made.\n */\n ignoreSelect: {type: Boolean, value: false},\n\n /**\n * Set to true to enable automatically closing the dropdown after an\n * item has been activated, even if the selection did not change.\n */\n closeOnActivate: {type: Boolean, value: false},\n\n /**\n * An animation config. If provided, this will be used to animate the\n * opening of the dropdown.\n */\n openAnimationConfig: {\n type: Object,\n value: function() {\n return [\n {name: 'fade-in-animation', timing: {delay: 100, duration: 200}},\n {\n name: 'paper-menu-grow-width-animation',\n timing: {\n delay: 100,\n duration: 150,\n easing: config.ANIMATION_CUBIC_BEZIER\n }\n },\n {\n name: 'paper-menu-grow-height-animation',\n timing: {\n delay: 100,\n duration: 275,\n easing: config.ANIMATION_CUBIC_BEZIER\n }\n }\n ];\n }\n },\n\n /**\n * An animation config. If provided, this will be used to animate the\n * closing of the dropdown.\n */\n closeAnimationConfig: {\n type: Object,\n value: function() {\n return [\n {name: 'fade-out-animation', timing: {duration: 150}},\n {\n name: 'paper-menu-shrink-width-animation',\n timing: {\n delay: 100,\n duration: 50,\n easing: config.ANIMATION_CUBIC_BEZIER\n }\n },\n {\n name: 'paper-menu-shrink-height-animation',\n timing: {duration: 200, easing: 'ease-in'}\n }\n ];\n }\n },\n\n /**\n * By default, the dropdown will constrain scrolling on the page\n * to itself when opened.\n * Set to true in order to prevent scroll from being constrained\n * to the dropdown when it opens.\n */\n allowOutsideScroll: {type: Boolean, value: false},\n\n /**\n * Whether focus should be restored to the button when the menu closes.\n */\n restoreFocusOnClose: {type: Boolean, value: true},\n\n /**\n * This is the element intended to be bound as the focus target\n * for the `iron-dropdown` contained by `paper-menu-button`.\n */\n _dropdownContent: {type: Object}\n },\n\n hostAttributes: {role: 'group', 'aria-haspopup': 'true'},\n\n listeners:\n {'iron-activate': '_onIronActivate', 'iron-select': '_onIronSelect'},\n\n /**\n * The content element that is contained by the menu button, if any.\n */\n get contentElement() {\n // Polymer 2.x returns slot.assignedNodes which can contain text nodes.\n var nodes = dom(this.$.content).getDistributedNodes();\n for (var i = 0, l = nodes.length; i < l; i++) {\n if (nodes[i].nodeType === Node.ELEMENT_NODE) {\n return nodes[i];\n }\n }\n },\n\n /**\n * Toggles the dropdown content between opened and closed.\n */\n toggle: function() {\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n },\n\n /**\n * Make the dropdown content appear as an overlay positioned relative\n * to the dropdown trigger.\n */\n open: function() {\n if (this.disabled) {\n return;\n }\n\n this.$.dropdown.open();\n },\n\n /**\n * Hide the dropdown content.\n */\n close: function() {\n this.$.dropdown.close();\n },\n\n /**\n * When an `iron-select` event is received, the dropdown should\n * automatically close on the assumption that a value has been chosen.\n *\n * @param {CustomEvent} event A CustomEvent instance with type\n * set to `\"iron-select\"`.\n */\n _onIronSelect: function(event) {\n if (!this.ignoreSelect) {\n this.close();\n }\n },\n\n /**\n * Closes the dropdown when an `iron-activate` event is received if\n * `closeOnActivate` is true.\n *\n * @param {CustomEvent} event A CustomEvent of type 'iron-activate'.\n */\n _onIronActivate: function(event) {\n if (this.closeOnActivate) {\n this.close();\n }\n },\n\n /**\n * When the dropdown opens, the `paper-menu-button` fires `paper-open`.\n * When the dropdown closes, the `paper-menu-button` fires `paper-close`.\n *\n * @param {boolean} opened True if the dropdown is opened, otherwise false.\n * @param {boolean} oldOpened The previous value of `opened`.\n */\n _openedChanged: function(opened, oldOpened) {\n if (opened) {\n // TODO(cdata): Update this when we can measure changes in distributed\n // children in an idiomatic way.\n // We poke this property in case the element has changed. This will\n // cause the focus target for the `iron-dropdown` to be updated as\n // necessary:\n this._dropdownContent = this.contentElement;\n this.fire('paper-dropdown-open');\n } else if (oldOpened != null) {\n this.fire('paper-dropdown-close');\n }\n },\n\n /**\n * If the dropdown is open when disabled becomes true, close the\n * dropdown.\n *\n * @param {boolean} disabled True if disabled, otherwise false.\n */\n _disabledChanged: function(disabled) {\n IronControlState._disabledChanged.apply(this, arguments);\n if (disabled && this.opened) {\n this.close();\n }\n },\n\n __onIronOverlayCanceled: function(event) {\n var uiEvent = event.detail;\n var trigger = this.$.trigger;\n var path = dom(uiEvent).path;\n\n if (path.indexOf(trigger) > -1) {\n event.preventDefault();\n }\n }\n});\n\nObject.keys(config).forEach(function(key) {\n PaperMenuButton[key] = config[key];\n});\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/iron-iconset-svg/iron-iconset-svg.js';\nconst $_documentContainer = document.createElement('template');\n$_documentContainer.setAttribute('style', 'display: none;');\n\n$_documentContainer.innerHTML =\n `\n\n\n\n`;\n\ndocument.head.appendChild($_documentContainer.content);\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/paper-styles/default-theme.js';\nconst $_documentContainer = document.createElement('template');\n$_documentContainer.setAttribute('style', 'display: none;');\n\n$_documentContainer.innerHTML =\n `\n \n`;\n\ndocument.head.appendChild($_documentContainer.content);\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/iron-a11y-keys-behavior/iron-a11y-keys-behavior.js';\nimport '@polymer/iron-icon/iron-icon.js';\nimport '@polymer/paper-input/paper-input.js';\nimport '@polymer/paper-menu-button/paper-menu-button.js';\nimport '@polymer/paper-ripple/paper-ripple.js';\nimport '@polymer/paper-styles/default-theme.js';\nimport './paper-dropdown-menu-icons.js';\nimport './paper-dropdown-menu-shared-styles.js';\n\nimport {IronButtonState} from '@polymer/iron-behaviors/iron-button-state.js';\nimport {IronControlState} from '@polymer/iron-behaviors/iron-control-state.js';\nimport {IronFormElementBehavior} from '@polymer/iron-form-element-behavior/iron-form-element-behavior.js';\nimport {IronValidatableBehavior} from '@polymer/iron-validatable-behavior/iron-validatable-behavior.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js';\nimport * as gestures from '@polymer/polymer/lib/utils/gestures.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\n\n/**\nMaterial design: [Dropdown\nmenus](https://www.google.com/design/spec/components/buttons.html#buttons-dropdown-buttons)\n\n`paper-dropdown-menu` is similar to a native browser select element.\n`paper-dropdown-menu` works with selectable content. The currently selected\nitem is displayed in the control. If no item is selected, the `label` is\ndisplayed instead.\n\nExample:\n\n \n \n Croissant\n Donut\n Financier\n Madeleine\n \n \n\nThis example renders a dropdown menu with 4 options.\n\nThe child element with the slot `dropdown-content` is used as the dropdown\nmenu. This can be a [`paper-listbox`](paper-listbox), or any other or\nelement that acts like an [`iron-selector`](iron-selector).\n\nSpecifically, the menu child must fire an\n[`iron-select`](iron-selector#event-iron-select) event when one of its\nchildren is selected, and an\n[`iron-deselect`](iron-selector#event-iron-deselect) event when a child is\ndeselected. The selected or deselected item must be passed as the event's\n`detail.item` property.\n\nApplications can listen for the `iron-select` and `iron-deselect` events\nto react when options are selected and deselected.\n\n### Styling\n\nThe following custom properties and mixins are also available for styling:\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--paper-dropdown-menu` | A mixin that is applied to the element host | `{}`\n`--paper-dropdown-menu-disabled` | A mixin that is applied to the element host when disabled | `{}`\n`--paper-dropdown-menu-ripple` | A mixin that is applied to the internal ripple | `{}`\n`--paper-dropdown-menu-button` | A mixin that is applied to the internal menu button | `{}`\n`--paper-dropdown-menu-input` | A mixin that is applied to the internal paper input | `{}`\n`--paper-dropdown-menu-icon` | A mixin that is applied to the internal icon | `{}`\n\nYou can also use any of the `paper-input-container` and `paper-menu-button`\nstyle mixins and custom properties to style the internal input and menu button\nrespectively.\n\n@group Paper Elements\n@element paper-dropdown-menu\n@demo demo/index.html\n*/\nPolymer({\n _template: html`\n \n\n \n \n \n \n
    \n \n \n \n \n \n \n
    \n \n
    \n`,\n\n is: 'paper-dropdown-menu',\n\n behaviors: [\n IronButtonState,\n IronControlState,\n IronFormElementBehavior,\n IronValidatableBehavior\n ],\n\n properties: {\n /**\n * The derived \"label\" of the currently selected item. This value\n * is the `label` property on the selected item if set, or else the\n * trimmed text content of the selected item.\n */\n selectedItemLabel: {type: String, notify: true, readOnly: true},\n\n /**\n * The last selected item. An item is selected if the dropdown menu has\n * a child with slot `dropdown-content`, and that child triggers an\n * `iron-select` event with the selected `item` in the `detail`.\n *\n * @type {?Object}\n */\n selectedItem: {type: Object, notify: true, readOnly: true},\n\n /**\n * The value for this element that will be used when submitting in\n * a form. It reflects the value of `selectedItemLabel`. If set directly,\n * it will not update the `selectedItemLabel` value.\n */\n value: {\n type: String,\n notify: true,\n },\n\n /**\n * The label for the dropdown.\n */\n label: {type: String},\n\n /**\n * The placeholder for the dropdown.\n */\n placeholder: {type: String},\n\n /**\n * The error message to display when invalid.\n */\n errorMessage: {type: String},\n\n /**\n * True if the dropdown is open. Otherwise, false.\n */\n opened:\n {type: Boolean, notify: true, value: false, observer: '_openedChanged'},\n\n /**\n * By default, the dropdown will constrain scrolling on the page\n * to itself when opened.\n * Set to true in order to prevent scroll from being constrained\n * to the dropdown when it opens.\n */\n allowOutsideScroll: {type: Boolean, value: false},\n\n /**\n * Set to true to disable the floating label. Bind this to the\n * ``'s `noLabelFloat` property.\n */\n noLabelFloat: {type: Boolean, value: false, reflectToAttribute: true},\n\n /**\n * Set to true to always float the label. Bind this to the\n * ``'s `alwaysFloatLabel` property.\n */\n alwaysFloatLabel: {type: Boolean, value: false},\n\n /**\n * Set to true to disable animations when opening and closing the\n * dropdown.\n */\n noAnimations: {type: Boolean, value: false},\n\n /**\n * The orientation against which to align the menu dropdown\n * horizontally relative to the dropdown trigger.\n */\n horizontalAlign: {type: String, value: 'right'},\n\n /**\n * The orientation against which to align the menu dropdown\n * vertically relative to the dropdown trigger.\n */\n verticalAlign: {type: String, value: 'top'},\n\n /**\n * Overrides the vertical offset computed in\n * _computeMenuVerticalOffset.\n */\n verticalOffset: Number,\n\n /**\n * If true, the `horizontalAlign` and `verticalAlign` properties will\n * be considered preferences instead of strict requirements when\n * positioning the dropdown and may be changed if doing so reduces\n * the area of the dropdown falling outside of `fitInto`.\n */\n dynamicAlign: {type: Boolean},\n\n /**\n * Whether focus should be restored to the dropdown when the menu closes.\n */\n restoreFocusOnClose: {type: Boolean, value: true},\n },\n\n listeners: {'tap': '_onTap'},\n\n /**\n * @type {!Object}\n */\n keyBindings: {'up down': 'open', 'esc': 'close'},\n\n hostAttributes:\n {role: 'combobox', 'aria-autocomplete': 'none', 'aria-haspopup': 'true'},\n\n observers: ['_selectedItemChanged(selectedItem)'],\n\n attached: function() {\n // NOTE(cdata): Due to timing, a preselected value in a `IronSelectable`\n // child will cause an `iron-select` event to fire while the element is\n // still in a `DocumentFragment`. This has the effect of causing\n // handlers not to fire. So, we double check this value on attached:\n var contentElement = this.contentElement;\n if (contentElement && contentElement.selectedItem) {\n this._setSelectedItem(contentElement.selectedItem);\n }\n },\n\n /**\n * The content element that is contained by the dropdown menu, if any.\n */\n get contentElement() {\n // Polymer 2.x returns slot.assignedNodes which can contain text nodes.\n var nodes = dom(this.$.content).getDistributedNodes();\n for (var i = 0, l = nodes.length; i < l; i++) {\n if (nodes[i].nodeType === Node.ELEMENT_NODE) {\n return nodes[i];\n }\n }\n },\n\n /**\n * Show the dropdown content.\n */\n open: function() {\n this.$.menuButton.open();\n },\n\n /**\n * Hide the dropdown content.\n */\n close: function() {\n this.$.menuButton.close();\n },\n\n /**\n * A handler that is called when `iron-select` is fired.\n *\n * @param {CustomEvent} event An `iron-select` event.\n */\n _onIronSelect: function(event) {\n this._setSelectedItem(event.detail.item);\n },\n\n /**\n * A handler that is called when `iron-deselect` is fired.\n *\n * @param {CustomEvent} event An `iron-deselect` event.\n */\n _onIronDeselect: function(event) {\n this._setSelectedItem(null);\n },\n\n /**\n * A handler that is called when the dropdown is tapped.\n *\n * @param {CustomEvent} event A tap event.\n */\n _onTap: function(event) {\n if (gestures.findOriginalTarget(event) === this) {\n this.open();\n }\n },\n\n /**\n * Compute the label for the dropdown given a selected item.\n *\n * @param {Element} selectedItem A selected Element item, with an\n * optional `label` property.\n */\n _selectedItemChanged: function(selectedItem) {\n var value = '';\n if (!selectedItem) {\n value = '';\n } else {\n value = selectedItem.label || selectedItem.getAttribute('label') ||\n selectedItem.textContent.trim();\n }\n\n this.value = value;\n this._setSelectedItemLabel(value);\n },\n\n /**\n * Compute the vertical offset of the menu based on the value of\n * `noLabelFloat`.\n *\n * @param {boolean} noLabelFloat True if the label should not float\n * @param {number=} opt_verticalOffset Optional offset from the user\n * above the input, otherwise false.\n */\n _computeMenuVerticalOffset: function(noLabelFloat, opt_verticalOffset) {\n // Override offset if it's passed from the user.\n if (opt_verticalOffset) {\n return opt_verticalOffset;\n }\n\n // NOTE(cdata): These numbers are somewhat magical because they are\n // derived from the metrics of elements internal to `paper-input`'s\n // template. The metrics will change depending on whether or not the\n // input has a floating label.\n return noLabelFloat ? -4 : 8;\n },\n\n /**\n * Returns false if the element is required and does not have a selection,\n * and true otherwise.\n * @param {*=} _value Ignored.\n * @return {boolean} true if `required` is false, or if `required` is true\n * and the element has a valid selection.\n */\n _getValidity: function(_value) {\n return this.disabled || !this.required || (this.required && !!this.value);\n },\n\n _openedChanged: function() {\n var openState = this.opened ? 'true' : 'false';\n var e = this.contentElement;\n if (e) {\n e.setAttribute('aria-expanded', openState);\n }\n }\n});\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/iron-flex-layout/iron-flex-layout.js';\nimport '@polymer/paper-styles/color.js';\nimport '@polymer/paper-styles/default-theme.js';\nimport '@polymer/paper-styles/typography.js';\nconst $_documentContainer = document.createElement('template');\n$_documentContainer.setAttribute('style', 'display: none;');\n\n$_documentContainer.innerHTML = `\n \n`;\n\ndocument.head.appendChild($_documentContainer.content);\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\n\nimport {IronButtonState} from '@polymer/iron-behaviors/iron-button-state.js';\nimport {IronControlState} from '@polymer/iron-behaviors/iron-control-state.js';\n\n/*\n`PaperItemBehavior` is a convenience behavior shared by and\n that manages the shared control states and attributes of\nthe items.\n*/\n/** @polymerBehavior PaperItemBehavior */\nexport const PaperItemBehaviorImpl = {\n hostAttributes: {role: 'option', tabindex: '0'}\n};\n\n/** @polymerBehavior */\nexport const PaperItemBehavior =\n [IronButtonState, IronControlState, PaperItemBehaviorImpl];\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/iron-flex-layout/iron-flex-layout.js';\nimport './paper-item-shared-styles.js';\n\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\n\nimport {PaperItemBehavior} from './paper-item-behavior.js';\n\n/**\nMaterial design:\n[Lists](https://www.google.com/design/spec/components/lists.html)\n\n`` is an interactive list item. By default, it is a horizontal\nflexbox.\n\n Item\n\nUse this element with `` to make Material Design styled\ntwo-line and three-line items.\n\n \n \n
    Show your status
    \n
    Your status is visible to everyone
    \n
    \n \n
    \n\nTo use `paper-item` as a link, wrap it in an anchor tag. Since `paper-item` will\nalready receive focus, you may want to prevent the anchor tag from receiving\nfocus as well by setting its tabindex to -1.\n\n \n Polymer Project\n \n\nIf you are concerned about performance and want to use `paper-item` in a\n`paper-listbox` with many items, you can just use a native `button` with the\n`paper-item` class applied (provided you have correctly included the shared\nstyles):\n\n \n\n \n \n \n \n \n\n### Styling\n\nThe following custom properties and mixins are available for styling:\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--paper-item-min-height` | Minimum height of the item | `48px`\n`--paper-item` | Mixin applied to the item | `{}`\n`--paper-item-selected-weight` | The font weight of a selected item | `bold`\n`--paper-item-selected` | Mixin applied to selected paper-items | `{}`\n`--paper-item-disabled-color` | The color for disabled paper-items | `--disabled-text-color`\n`--paper-item-disabled` | Mixin applied to disabled paper-items | `{}`\n`--paper-item-focused` | Mixin applied to focused paper-items | `{}`\n`--paper-item-focused-before` | Mixin applied to :before focused paper-items | `{}`\n\n### Accessibility\n\nThis element has `role=\"listitem\"` by default. Depending on usage, it may be\nmore appropriate to set `role=\"menuitem\"`, `role=\"menuitemcheckbox\"` or\n`role=\"menuitemradio\"`.\n\n \n \n Show your status\n \n \n \n\n@group Paper Elements\n@element paper-item\n@demo demo/index.html\n*/\nPolymer({\n _template: html`\n \n \n`,\n\n is: 'paper-item',\n behaviors: [PaperItemBehavior]\n});\n"],"sourceRoot":""} \ No newline at end of file diff --git a/hassio/api/panel/chunk.a1b6b616fc89c412f5b6.js b/hassio/api/panel/chunk.a1b6b616fc89c412f5b6.js new file mode 100644 index 000000000..16507fddc --- /dev/null +++ b/hassio/api/panel/chunk.a1b6b616fc89c412f5b6.js @@ -0,0 +1,2 @@ +(self.webpackJsonp=self.webpackJsonp||[]).push([[5],{2:function(t,e,L){"use strict";L.r(e);L(57);function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function H(t,e){for(var L=0;L this.fire(\"iron-iconset-added\", this, { node: window }));\n }\n\n /**\n *\n * When name is changed, register iconset metadata\n *\n */\n _nameChanged() {\n this._meta.value = null;\n this._meta.key = this.name;\n this._meta.value = this;\n if (this.ownerDocument && this.ownerDocument.readyState === \"loading\") {\n // Document still loading. It could be that not all icons in the iconset are parsed yet.\n this.ownerDocument.addEventListener(\"DOMContentLoaded\", () => {\n this._fireIronIconsetAdded();\n });\n } else {\n this._fireIronIconsetAdded();\n }\n }\n}\n\ncustomElements.define(\"ha-iconset-svg\", HaIconset);\n","export default \"\";","import \"../../../src/components/ha-iconset-svg\";\nimport iconSetContent from \"../../hassio-icons.html\";\n\nconst documentContainer = document.createElement(\"template\");\ndocumentContainer.setAttribute(\"style\", \"display: none;\");\ndocumentContainer.innerHTML = iconSetContent;\ndocument.head.appendChild(documentContainer.content);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/hassio/api/panel/chunk.a4f9950b101883805252.js b/hassio/api/panel/chunk.a4f9950b101883805252.js new file mode 100644 index 000000000..3637fff57 --- /dev/null +++ b/hassio/api/panel/chunk.a4f9950b101883805252.js @@ -0,0 +1,2 @@ +(self.webpackJsonp=self.webpackJsonp||[]).push([[7],{1:function(e,t,r){"use strict";r.r(t);var n=r(4),i=(r(22),r(113),r(110),r(9)),o=document.createElement("template");o.setAttribute("style","display: none;"),o.innerHTML='\n \n\n \n\n \n\n \n"),document.head.appendChild(o.content);var a=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e._themes||(e._themes={});var i=t.default_theme;("default"===r||r&&t.themes[r])&&(i=r);var o=Object.assign({},e._themes);if("default"!==i){var a=t.themes[i];Object.keys(a).forEach(function(t){var r="--".concat(t);if(e._themes[r]="",o[r]=a[t],!t.startsWith("rgb")){var n="rgb-".concat(t);if(void 0===a[n]){var i="--".concat(n);e._themes[i]="";var s,c,l,u=(s=a[t],c=s.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(e,t,r,n){return t+t+r+r+n+n}),(l=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(c))?"".concat(parseInt(l[1],16),", ").concat(parseInt(l[2],16),", ").concat(parseInt(l[3],16)):null);null!==u&&(o[i]=u)}}})}if(e.updateStyles?e.updateStyles(o):window.ShadyCSS&&window.ShadyCSS.styleSubtree(e,o),n){var s=document.querySelector("meta[name=theme-color]");if(s){s.hasAttribute("default-content")||s.setAttribute("default-content",s.getAttribute("content"));var c=o["--primary-color"]||s.getAttribute("default-content");s.setAttribute("content",c)}}},s=r(14);r(16),r(91);function c(e){return(c="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)}function l(){var e=d(["\n .content {\n height: calc(100% - 64px);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n }\n "]);return l=function(){return e},e}function u(){var e=d(['\n \n
    \n

    ',"

    \n \n go back\n \n
    \n
    \n "]);return u=function(){return e},e}function d(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function f(e){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function m(e){var t,r=w(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function y(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function v(e){return e.decorators&&e.decorators.length}function b(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function g(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function w(e){var t=function(e,t){if("object"!==c(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===c(t)?t:String(t)}(function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!v(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n \n
    \n You don\'t have any add-ons installed yet. Head over to\n \n
    Add-ons
    \n ',"\n
    \n "]);return ee=function(){return e},e}function te(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function re(e){return(re=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ne(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function ie(e,t){return(ie=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function oe(e){var t,r=ue(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function ae(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function se(e){return e.decorators&&e.decorators.length}function ce(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function le(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function ue(e){var t=function(e,t){if("object"!==K(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==K(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===K(t)?t:String(t)}(function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!se(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;at.name?1:-1}).map(function(t){return Object(n.e)(X(),t,e._addonTapped,e.hass,t.name,t.description,t.available,e._computeIcon(t),e._computeIconTitle(t),e._computeIconClass(t))}):Object(n.e)(Z(),this._openStore))}},{kind:"get",static:!0,key:"styles",value:function(){return[i.a,$.a,Object(n.c)(Q())]}},{kind:"method",key:"_computeIcon",value:function(e){return e.installed!==e.version?"hassio:arrow-up-bold-circle":"hassio:puzzle"}},{kind:"method",key:"_computeIconTitle",value:function(e){return e.installed!==e.version?"New version available":"started"===e.state?"Add-on is running":"Add-on is stopped"}},{kind:"method",key:"_computeIconClass",value:function(e){return e.installed!==e.version?"update":"started"===e.state?"running":""}},{kind:"method",key:"_addonTapped",value:function(e){Object(k.a)(this,"/hassio/addon/".concat(e.currentTarget.addon.slug))}},{kind:"method",key:"_openStore",value:function(){Object(k.a)(this,"/hassio/store")}}]}},n.a),r(20),r(45);function de(){var e=ge(["\n :host {\n width: 33%;\n }\n paper-card {\n display: inline-block;\n margin-bottom: 32px;\n }\n .icon {\n --iron-icon-height: 48px;\n --iron-icon-width: 48px;\n float: right;\n margin: 0 0 2px 10px;\n }\n .update-heading {\n font-size: var(--paper-font-subhead_-_font-size);\n font-weight: 500;\n margin-bottom: 0.5em;\n }\n .warning {\n color: var(--secondary-text-color);\n }\n .card-actions {\n text-align: right;\n }\n .errors {\n color: var(--google-red-500);\n padding: 16px;\n }\n a {\n text-decoration: none;\n }\n "]);return de=function(){return e},e}function fe(e){return(fe="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)}function pe(){var e=ge(['\n
    \n \n
    \n ']);return pe=function(){return e},e}function he(){var e=ge(['\n \n
    \n ','\n
    '," ",'
    \n
    \n You are currently running version ','\n
    \n
    \n
    \n "]);return ye=function(){return e},e}function ve(){var e=ge(['\n
    \n ','\n
    \n
    \n ',"\n
    \n ","\n ","\n ","\n
    \n
    \n "]);return ve=function(){return e},e}function be(){var e=ge([""]);return be=function(){return e},e}function ge(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function we(e){return(we=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ke(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Ee(e,t){return(Ee=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Oe(e){var t,r=Se(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function je(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Pe(e){return e.decorators&&e.decorators.length}function xe(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function _e(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function Se(e){var t=function(e,t){if("object"!==fe(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==fe(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===fe(t)?t:String(t)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!Pe(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a1?"Updates Available 🎉":"Update Available 🎉",this._renderUpdateCard("Home Assistant",this.hassInfo.version,this.hassInfo.last_version,"hassio/homeassistant/update","https://".concat(this.hassInfo.last_version.includes("b")?"rc":"www",".home-assistant.io/latest-release-notes/"),"hassio:home-assistant"),this._renderUpdateCard("Hass.io Supervisor",this.supervisorInfo.version,this.supervisorInfo.last_version,"hassio/supervisor/update","https://github.com//home-assistant/hassio/releases/tag/".concat(this.supervisorInfo.last_version)),this.hassOsInfo?this._renderUpdateCard("HassOS",this.hassOsInfo.version,this.hassOsInfo.version_latest,"hassio/hassos/update","https://github.com//home-assistant/hassos/releases/tag/".concat(this.hassOsInfo.version_latest)):""):Object(n.e)(be())}},{kind:"method",key:"_renderUpdateCard",value:function(e,t,r,i,o,a){return r===t?Object(n.e)(me()):Object(n.e)(he(),a?Object(n.e)(pe(),a):"",e,r,t,o,this.hass,i,this._apiCalled)}},{kind:"method",key:"_apiCalled",value:function(e){if(e.detail.success)this._error="";else{var t=e.detail.response;"object"===fe(t.body)?this._error=t.body.message||"Unknown error":this._error=t.body}}},{kind:"get",static:!0,key:"styles",value:function(){return[i.a,$.a,Object(n.c)(de())]}}]}},n.a);function Ce(e){return(Ce="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)}function De(){var e=Ae(["\n .content {\n margin: 0 auto;\n }\n "]);return De=function(){return e},e}function Te(){var e=Ae(['\n
    \n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n
    \n \n
    \n \n ']);return qe=function(){return e},e}function We(){var e=Ze(['\n \n
    \n You don\'t have any snapshots yet.\n
    \n
    \n ']);return We=function(){return e},e}function Je(){var e=Ze(['\n

    ',"

    \n "]);return Je=function(){return e},e}function Ye(){var e=Ze(['\n \n
    \n
    \n Create snapshot\n
    \n Snapshots allow you to easily backup and restore all data of your\n Hass.io instance.\n
    \n
    \n \n
    \n \n Type:\n \n \n Full snapshot\n \n \n Partial snapshot\n \n \n ','\n Security:\n \n
    \n \n Create\n \n
    \n \n
    \n\n
    \n
    Available snapshots
    \n ',"\n
    \n
    \n "]);return Xe=function(){return e},e}function Ze(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function et(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function tt(e,t){return(tt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function rt(e){var t,r=st(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function nt(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function it(e){return e.decorators&&e.decorators.length}function ot(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function at(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function st(e){var t=function(e,t){if("object"!==Ge(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Ge(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Ge(t)?t:String(t)}function ct(e,t,r){return(ct="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=lt(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(r):i.value}})(e,t,r||e)}function lt(e){return(lt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!it(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n \n
    \n ','\n
    \n Maintained by ','
    \n ',"\n
    \n
    \n\n ","\n
    \n "]);return ht=function(){return e},e}function mt(){var e=yt(['\n
    \n
    \n
    \n No results found in "','"\n
    \n
    \n
    \n ']);return mt=function(){return e},e}function yt(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function vt(e){return(vt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function bt(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function gt(e,t){return(gt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function wt(e){var t,r=Pt(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function kt(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Et(e){return e.decorators&&e.decorators.length}function Ot(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function jt(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function Pt(e){var t=function(e,t){if("object"!==dt(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==dt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===dt(t)?t:String(t)}var xt=function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!Et(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n
    \n \n
    \n
    \n \n Remove\n \n
    \n \n ']);return Dt=function(){return e},e}function Tt(){var e=At(['\n
    \n
    \n Repositories\n
    \n Configure which add-on repositories to fetch data from:\n
    \n
    \n ','\n\n \n
    \n \n \n
    \n
    \n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n "]);return Wt=function(){return e},e}function Jt(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Yt(e){return(Yt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function $t(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Kt(e,t){return(Kt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Qt(e){var t,r=rr(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function Xt(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Zt(e){return e.decorators&&e.decorators.length}function er(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function tr(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function rr(e){var t=function(e,t){if("object"!==Vt(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Vt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Vt(t)?t:String(t)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!Zt(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n ']);return or=function(){return e},e}function ar(){var e=sr(['\n
    \n \n \n ',"\n \n
    \n "]);return ar=function(){return e},e}function sr(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function cr(e){return(cr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function lr(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function ur(e,t){return(ur=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function dr(e){var t,r=yr(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function fr(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function pr(e){return e.decorators&&e.decorators.length}function hr(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function mr(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function yr(e){var t=function(e,t){if("object"!==nr(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==nr(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===nr(t)?t:String(t)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!pr(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n "]);return gr=function(){return e},e}function wr(){var e=Er(["\n \n\n \n\n ","\n "]);return wr=function(){return e},e}function kr(){var e=Er(["\n \n "]);return kr=function(){return e},e}function Er(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Or(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function jr(e,t){return(jr=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Pr(e){var t,r=Dr(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function xr(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function _r(e){return e.decorators&&e.decorators.length}function Sr(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Cr(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function Dr(e){var t=function(e,t){if("object"!==vr(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==vr(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===vr(t)?t:String(t)}function Tr(e,t,r){return(Tr="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=Ar(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(r):i.value}})(e,t,r||e)}function Ar(e){return(Ar=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var zr=function(e,t){return"local"===e.slug?-1:"local"===t.slug?1:"core"===e.slug?-1:"core"===t.slug?1:e.name.toUpperCase()=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;aUpdate
    \n ']);return Hr=function(){return e},e}function Ur(){var e=Jr(['\n Import from USB\n ']);return Ur=function(){return e},e}function Br(){var e=Jr(['\n Shutdown\n ']);return Br=function(){return e},e}function Mr(){var e=Jr(['\n Reboot\n ']);return Mr=function(){return e},e}function Gr(){var e=Jr(['\n
    Error: ',"
    \n "]);return Gr=function(){return e},e}function Vr(){var e=Jr(["\n \n Change hostname\n \n ']);return Vr=function(){return e},e}function qr(){var e=Jr(["\n \n Deployment\n ","\n \n "]);return qr=function(){return e},e}function Wr(){var e=Jr(['\n \n
    \n

    Host system

    \n \n \n \n \n \n \n \n \n \n \n ","\n \n
    Hostname',"
    System","
    \n \n Hardware\n \n ',"\n ",'\n
    \n
    \n ',"\n ","\n ","\n ","\n
    \n
    \n "]);return Wr=function(){return e},e}function Jr(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Yr(e){return(Yr=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function $r(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Kr(e,t){return(Kr=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Qr(e){var t,r=rn(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function Xr(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Zr(e){return e.decorators&&e.decorators.length}function en(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function tn(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function rn(e){var t=function(e,t){if("object"!==Lr(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Lr(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Lr(t)?t:String(t)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!Zr(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:"",n="";return Object.keys(e).forEach(function(i){"object"!==Lr(e[i])?n+="".concat(r,"- ").concat(i,": ").concat(e[i],"\n"):(n+="".concat(r,"- ").concat(i,":\n"),Array.isArray(e[i])?e[i].length&&(n+="".concat(r," - ")+e[i].join("\n".concat(r," - "))+"\n"):n+=t._objectToMarkdown(e[i]," ".concat(r)))}),n}},{kind:"method",key:"_changeHostnameClicked",value:function(){var e=this.hostInfo.hostname,t=prompt("Please enter a new hostname:",e);t&&t!==e&&this.hass.callApi("POST","hassio/host/options",{hostname:t})}}]}},n.a);function nn(e){return(nn="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)}function on(){var e=fn(["\n paper-card {\n display: inline-block;\n width: 400px;\n }\n .card-content {\n height: 200px;\n color: var(--primary-text-color);\n }\n @media screen and (max-width: 830px) {\n paper-card {\n width: 100%;\n }\n .card-content {\n height: auto;\n }\n }\n .info {\n width: 100%;\n }\n .info td:nth-child(2) {\n text-align: right;\n }\n .errors {\n color: var(--google-red-500);\n margin-top: 16px;\n }\n "]);return on=function(){return e},e}function an(){var e=fn(["\n Join beta channel\n ']);return an=function(){return e},e}function sn(){var e=fn(["\n Update\n ']);return cn=function(){return e},e}function ln(){var e=fn(['\n
    Error: ',"
    \n "]);return ln=function(){return e},e}function un(){var e=fn(["\n \n Channel\n ","\n \n "]);return un=function(){return e},e}function dn(){var e=fn(['\n \n
    \n

    Hass.io supervisor

    \n \n \n \n \n \n \n \n \n \n \n ","\n \n
    Version',"
    Latest version","
    \n ",'\n
    \n
    \n Reload\n ',"\n ","\n ","\n
    \n
    \n "]);return dn=function(){return e},e}function fn(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function pn(e){return(pn=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function hn(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function mn(e,t){return(mn=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function yn(e){var t,r=kn(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function vn(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function bn(e){return e.decorators&&e.decorators.length}function gn(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function wn(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function kn(e){var t=function(e,t){if("object"!==nn(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==nn(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===nn(t)?t:String(t)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!bn(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a',"
    \n "]);return Pn=function(){return e},e}function xn(){var e=_n(["\n \n ",'\n
    \n
    \n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n
    Information
    \n \n
    System log
    \n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n \n \n \n \n Dashboard\n Snapshots\n Add-on store\n System\n \n \n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a200?n.scrollTop=0:t._currentAnimationId===i&&(n.scrollTop=(r=c,-s*(r/=200)*(r-2)+a),requestAnimationFrame(e.bind(t)))}.call(t)}},{kind:"method",key:"refreshClicked",value:function(){"snapshots"===this._page?this.shadowRoot.querySelector("hassio-snapshots").refreshData():this.shadowRoot.querySelector("hassio-addon-store").refreshData()}},{kind:"get",key:"_page",value:function(){return this.route.path.substr(1)}},{kind:"get",static:!0,key:"styles",value:function(){return[i.a,Object(n.c)(ci())]}}]}},n.a);function Ei(e){return(Ei="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)}function Oi(e,t){return zi(e)||function(e,t){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var r=[],n=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(c){i=!0,o=c}finally{try{n||null==s.return||s.return()}finally{if(i)throw o}}return r}(e,t)||Ai()}function ji(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Pi(e,t){return(Pi=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function xi(e){var t,r=Ti(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function _i(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Si(e){return e.decorators&&e.decorators.length}function Ci(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Di(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function Ti(e){var t=function(e,t){if("object"!==Ei(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Ei(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Ei(t)?t:String(t)}function Ai(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function zi(e){if(Array.isArray(e))return e}function Ri(e,t,r){return(Ri="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=Ii(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(r):i.value}})(e,t,r||e)}function Ii(e){return(Ii=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}customElements.get("paper-icon-button").prototype._keyBindings={};var Fi;!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!Si(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n \n"),document.head.appendChild(o.content)},14:function(e,t,r){"use strict";r.d(t,"a",function(){return n});var n=function(e,t,r,n){n=n||{},r=null==r?{}:r;var i=new Event(t,{bubbles:void 0===n.bubbles||n.bubbles,cancelable:Boolean(n.cancelable),composed:void 0===n.composed||n.composed});return i.detail=r,e.dispatchEvent(i),i}},25:function(e,t,r){"use strict";r.d(t,"f",function(){return i}),r.d(t,"d",function(){return o}),r.d(t,"b",function(){return a}),r.d(t,"a",function(){return s}),r.d(t,"c",function(){return c}),r.d(t,"g",function(){return l}),r.d(t,"h",function(){return u}),r.d(t,"e",function(){return d}),r.d(t,"i",function(){return f});var n=r(42),i=function(e){return regeneratorRuntime.async(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,regeneratorRuntime.awrap(e.callApi("POST","hassio/addons/reload"));case 2:case"end":return t.stop()}})},o=function(e){return regeneratorRuntime.async(function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=n.a,t.next=3,regeneratorRuntime.awrap(e.callApi("GET","hassio/addons"));case 3:return t.t1=t.sent,t.abrupt("return",(0,t.t0)(t.t1));case 5:case"end":return t.stop()}})},a=function(e,t){return regeneratorRuntime.async(function(r){for(;;)switch(r.prev=r.next){case 0:return r.t0=n.a,r.next=3,regeneratorRuntime.awrap(e.callApi("GET","hassio/addons/".concat(t,"/info")));case 3:return r.t1=r.sent,r.abrupt("return",(0,r.t0)(r.t1));case 5:case"end":return r.stop()}})},s=function(e,t){return regeneratorRuntime.async(function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",e.callApi("GET","hassio/addons/".concat(t,"/changelog")));case 1:case"end":return r.stop()}})},c=function(e,t){return regeneratorRuntime.async(function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",e.callApi("GET","hassio/addons/".concat(t,"/logs")));case 1:case"end":return r.stop()}})},l=function(e,t,r){return regeneratorRuntime.async(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,regeneratorRuntime.awrap(e.callApi("POST","hassio/addons/".concat(t,"/options"),r));case 2:case"end":return n.stop()}})},u=function(e,t,r){return regeneratorRuntime.async(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,regeneratorRuntime.awrap(e.callApi("POST","hassio/addons/".concat(t,"/security"),r));case 2:case"end":return n.stop()}})},d=function(e,t){return regeneratorRuntime.async(function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",e.callApi("POST","hassio/addons/".concat(t,"/install")));case 1:case"end":return r.stop()}})},f=function(e,t){return regeneratorRuntime.async(function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,regeneratorRuntime.awrap(e.callApi("POST","hassio/addons/".concat(t,"/uninstall")));case 2:case"end":return r.stop()}})}},33:function(e,t,r){"use strict";r.d(t,"a",function(){return i});var n=r(14),i=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];r?history.replaceState(null,"",t):history.pushState(null,"",t),Object(n.a)(window,"location-changed",{replace:r})}},34:function(e,t,r){"use strict";var n=r(4),i=(r(20),r(7)),o=r(31),a=[60,60,24,7],s=["second","minute","hour","day"];var c=r(15);function l(e){return(l="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)}function u(e,t){for(var r=0;r2&&void 0!==arguments[2]?arguments[2]:{},i=((n.compareTime||new Date).getTime()-e.getTime())/1e3,o=i>=0?"past":"future";i=Math.abs(i);for(var c=0;c\n
    \n
    ','
    \n
    \n ',"\n ","\n ","\n
    \n
    \n "]);return x=function(){return e},e}function _(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function S(e){return(S=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function C(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function D(e,t){return(D=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function T(e){var t,r=F(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function A(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function z(e){return e.decorators&&e.decorators.length}function R(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function I(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function F(e){var t=function(e,t){if("object"!==O(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==O(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===O(t)?t:String(t)}customElements.define("ha-relative-time",E);!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!z(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n .container {\n position: relative;\n display: inline-block;\n }\n\n mwc-button {\n transition: all 1s;\n }\n\n .success mwc-button {\n --mdc-theme-primary: white;\n background-color: var(--google-green-500);\n transition: none;\n }\n\n .error mwc-button {\n --mdc-theme-primary: white;\n background-color: var(--google-red-500);\n transition: none;\n }\n\n .progress {\n @apply --layout;\n @apply --layout-center-center;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n \n
    \n \n \n \n \n
    \n ']);return s=function(){return e},e}function c(e,t){for(var r=0;r\n ']);return y=function(){return e},e}function v(e,t){return!t||"object"!==m(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function b(e){return(b=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function g(e,t){for(var r=0;r
    \n ']);return u=function(){return e},e}function d(){var e=f(["\n \n ","\n "]);return d=function(){return e},e}function f(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function m(e){var t,r=w(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function y(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function v(e){return e.decorators&&e.decorators.length}function b(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function g(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function w(e){var t=function(e,t){if("object"!==c(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===c(t)?t:String(t)}function k(e,t,r){return(k="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=E(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(r):i.value}})(e,t,r||e)}function E(e){return(E=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!v(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a0},Object(o.a)("_ntf",a,s,e,t))}},{kind:"method",key:"_toggleMenu",value:function(){Object(i.a)(this,"hass-toggle-menu")}},{kind:"get",static:!0,key:"styles",value:function(){return Object(n.c)(l())}}]}},n.a)},88:function(e,t){},9:function(e,t,r){"use strict";r.d(t,"a",function(){return s}),r.d(t,"b",function(){return c});var n=r(4);function i(){var e=a(["\n /* prevent clipping of positioned elements */\n paper-dialog-scrollable {\n --paper-dialog-scrollable: {\n -webkit-overflow-scrolling: auto;\n }\n }\n\n /* force smooth scrolling for iOS 10 */\n paper-dialog-scrollable.can-scroll {\n --paper-dialog-scrollable: {\n -webkit-overflow-scrolling: touch;\n }\n }\n\n .paper-dialog-buttons {\n align-items: flex-end;\n padding: 8px;\n }\n\n .paper-dialog-buttons .warning {\n --mdc-theme-primary: var(--google-red-500);\n }\n\n @media all and (max-width: 450px), all and (max-height: 500px) {\n paper-dialog,\n ha-paper-dialog {\n margin: 0;\n width: 100% !important;\n max-height: calc(100% - 64px);\n\n position: fixed !important;\n bottom: 0px;\n left: 0px;\n right: 0px;\n overflow: scroll;\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n }\n }\n"]);return i=function(){return e},e}function o(){var e=a(["\n :host {\n @apply --paper-font-body1;\n }\n\n app-header-layout,\n ha-app-layout {\n background-color: var(--primary-background-color);\n }\n\n app-header,\n app-toolbar {\n background-color: var(--app-header-background-color);\n font-weight: 400;\n color: var(--app-header-text-color, white);\n }\n\n app-toolbar ha-menu-button + [main-title],\n app-toolbar ha-paper-icon-button-arrow-prev + [main-title],\n app-toolbar paper-icon-button + [main-title] {\n margin-left: 24px;\n }\n\n h1 {\n @apply --paper-font-title;\n }\n\n button.link {\n background: none;\n color: inherit;\n border: none;\n padding: 0;\n font: inherit;\n text-align: left;\n text-decoration: underline;\n cursor: pointer;\n }\n\n .card-actions a {\n text-decoration: none;\n }\n\n .card-actions .warning {\n --mdc-theme-primary: var(--google-red-500);\n }\n"]);return o=function(){return e},e}function a(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var s=Object(n.c)(o()),c=Object(n.c)(i())},91:function(e,t,r){"use strict";var n=r(4),i=(r(78),r(92),r(53));function o(e){return(o="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)}function a(){var e=c(['\n :host {\n display: block;\n height: 100%;\n background-color: var(--primary-background-color);\n }\n\n .toolbar {\n display: flex;\n align-items: center;\n font-size: 20px;\n height: 64px;\n padding: 0 16px;\n pointer-events: none;\n background-color: var(--app-header-background-color);\n font-weight: 400;\n color: var(--app-header-text-color, white);\n }\n\n ha-menu-button,\n ha-paper-icon-button-arrow-prev,\n ::slotted([slot="toolbar-icon"]) {\n pointer-events: auto;\n }\n\n ha-paper-icon-button-arrow-prev.hidden {\n visibility: hidden;\n }\n\n [main-title] {\n margin: 0 0 0 24px;\n line-height: 20px;\n flex-grow: 1;\n }\n\n .content {\n position: relative;\n width: 100%;\n height: calc(100% - 64px);\n overflow-y: auto;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n ']);return a=function(){return e},e}function s(){var e=c(['\n
    \n \n \n
    \n
    \n ']);return s=function(){return e},e}function c(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function u(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function d(e,t){return(d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function f(e){var t,r=v(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function p(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function h(e){return e.decorators&&e.decorators.length}function m(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function y(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function v(e){var t=function(e,t){if("object"!==o(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===o(t)?t:String(t)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!h(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n "]);return s=function(){return e},e}function c(){var e=u(["\n \n "]);return c=function(){return e},e}function l(){var e=u(["\n \n ",'\n \n
    \n \n
    \n ']);return l=function(){return e},e}function u(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function d(e){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function f(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e){var t,r=g(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function m(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function y(e){return e.decorators&&e.decorators.length}function v(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function b(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function g(e){var t=function(e,t){if("object"!==o(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===o(t)?t:String(t)}!function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!y(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n \n\n \n\n \n\n \n`;\n\ndocument.head.appendChild(documentContainer.content);\n","const hexToRgb = (hex: string): string | null => {\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n const checkHex = hex.replace(shorthandRegex, (_m, r, g, b) => {\n return r + r + g + g + b + b;\n });\n\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(checkHex);\n return result\n ? `${parseInt(result[1], 16)}, ${parseInt(result[2], 16)}, ${parseInt(\n result[3],\n 16\n )}`\n : null;\n};\n\n/**\n * Apply a theme to an element by setting the CSS variables on it.\n *\n * element: Element to apply theme on.\n * themes: HASS Theme information\n * localTheme: selected theme.\n * updateMeta: boolean if we should update the theme-color meta element.\n */\nexport const applyThemesOnElement = (\n element,\n themes,\n localTheme,\n updateMeta = false\n) => {\n if (!element._themes) {\n element._themes = {};\n }\n let themeName = themes.default_theme;\n if (localTheme === \"default\" || (localTheme && themes.themes[localTheme])) {\n themeName = localTheme;\n }\n const styles = { ...element._themes };\n if (themeName !== \"default\") {\n const theme = themes.themes[themeName];\n Object.keys(theme).forEach((key) => {\n const prefixedKey = `--${key}`;\n element._themes[prefixedKey] = \"\";\n styles[prefixedKey] = theme[key];\n if (key.startsWith(\"rgb\")) {\n return;\n }\n const rgbKey = `rgb-${key}`;\n if (theme[rgbKey] !== undefined) {\n return;\n }\n const prefixedRgbKey = `--${rgbKey}`;\n element._themes[prefixedRgbKey] = \"\";\n const rgbValue = hexToRgb(theme[key]);\n if (rgbValue !== null) {\n styles[prefixedRgbKey] = rgbValue;\n }\n });\n }\n if (element.updateStyles) {\n element.updateStyles(styles);\n } else if (window.ShadyCSS) {\n // implement updateStyles() method of Polymer elements\n window.ShadyCSS.styleSubtree(/** @type {!HTMLElement} */ element, styles);\n }\n\n if (!updateMeta) {\n return;\n }\n\n const meta = document.querySelector(\"meta[name=theme-color]\");\n if (meta) {\n if (!meta.hasAttribute(\"default-content\")) {\n meta.setAttribute(\"default-content\", meta.getAttribute(\"content\")!);\n }\n const themeColor =\n styles[\"--primary-color\"] || meta.getAttribute(\"default-content\");\n meta.setAttribute(\"content\", themeColor);\n }\n};\n","import {\n LitElement,\n CSSResultArray,\n css,\n TemplateResult,\n html,\n property,\n customElement,\n} from \"lit-element\";\nimport \"@material/mwc-button\";\nimport \"./hass-subpage\";\n\n@customElement(\"hass-error-screen\")\nclass HassErrorScreen extends LitElement {\n @property()\n public error?: string;\n\n protected render(): TemplateResult {\n return html`\n \n
    \n

    ${this.error}

    \n \n go back\n \n
    \n
    \n `;\n }\n\n private _backTapped(): void {\n history.back();\n }\n\n static get styles(): CSSResultArray {\n return [\n css`\n .content {\n height: calc(100% - 64px);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hass-error-screen\": HassErrorScreen;\n }\n}\n","import { UpdatingElement, property, PropertyValues } from \"lit-element\";\nimport \"./hass-error-screen\";\nimport \"./hass-loading-screen\";\nimport { Route } from \"../types\";\nimport { navigate } from \"../common/navigate\";\nimport memoizeOne from \"memoize-one\";\n\nconst extractPage = (path: string, defaultPage: string) => {\n if (path === \"\") {\n return defaultPage;\n }\n const subpathStart = path.indexOf(\"/\", 1);\n return subpathStart === -1\n ? path.substr(1)\n : path.substr(1, subpathStart - 1);\n};\n\nexport interface RouteOptions {\n // HTML tag of the route page.\n tag: string;\n // Function to load the page.\n load?: () => Promise;\n cache?: boolean;\n}\n\nexport interface RouterOptions {\n // The default route to show if path does not define a page.\n defaultPage?: string;\n // If all routes should be preloaded\n preloadAll?: boolean;\n // If a route has been shown, should we keep the element in memory\n cacheAll?: boolean;\n // Should we show a loading spinner while we load the element for the route\n showLoading?: boolean;\n // Promise that resolves when the initial data is loaded which is needed to show any route.\n initialLoad?: () => Promise;\n // Hook that is called before rendering a new route. Allowing redirects.\n // If string returned, that page will be rendered instead.\n beforeRender?: (page: string) => string | undefined;\n routes: {\n // If it's a string, it is another route whose options should be adopted.\n [route: string]: RouteOptions | string;\n };\n}\n\n// Time to wait for code to load before we show loading screen.\nconst LOADING_SCREEN_THRESHOLD = 400; // ms\n\nexport class HassRouterPage extends UpdatingElement {\n @property() public route?: Route;\n\n protected routerOptions!: RouterOptions;\n\n protected _currentPage = \"\";\n private _currentLoadProm?: Promise;\n private _cache = {};\n private _initialLoadDone = false;\n private _computeTail = memoizeOne((route: Route) => {\n const dividerPos = route.path.indexOf(\"/\", 1);\n return dividerPos === -1\n ? {\n prefix: route.prefix + route.path,\n path: \"\",\n }\n : {\n prefix: route.prefix + route.path.substr(0, dividerPos),\n path: route.path.substr(dividerPos),\n };\n });\n\n protected update(changedProps: PropertyValues) {\n super.update(changedProps);\n\n const routerOptions = this.routerOptions || { routes: {} };\n\n if (routerOptions && routerOptions.initialLoad && !this._initialLoadDone) {\n return;\n }\n\n if (!changedProps.has(\"route\")) {\n // Do not update if we have a currentLoadProm, because that means\n // that there is still an old panel shown and we're moving to a new one.\n if (this.lastChild && !this._currentLoadProm) {\n this.updatePageEl(this.lastChild, changedProps);\n }\n return;\n }\n\n const route = this.route;\n const defaultPage = routerOptions.defaultPage;\n\n if (route && route.path === \"\" && defaultPage !== undefined) {\n navigate(this, `${route.prefix}/${defaultPage}`, true);\n }\n\n let newPage = route\n ? extractPage(route.path, defaultPage || \"\")\n : \"not_found\";\n let routeOptions = routerOptions.routes[newPage];\n\n // Handle redirects\n while (typeof routeOptions === \"string\") {\n newPage = routeOptions;\n routeOptions = routerOptions.routes[newPage];\n }\n\n if (routerOptions.beforeRender) {\n const result = routerOptions.beforeRender(newPage);\n if (result !== undefined) {\n newPage = result;\n routeOptions = routerOptions.routes[newPage];\n\n // Handle redirects\n while (typeof routeOptions === \"string\") {\n newPage = routeOptions;\n routeOptions = routerOptions.routes[newPage];\n }\n\n // Update the url if we know where we're mounted.\n if (route) {\n navigate(this, `${route.prefix}/${result}`, true);\n }\n }\n }\n\n if (this._currentPage === newPage) {\n if (this.lastChild) {\n this.updatePageEl(this.lastChild, changedProps);\n }\n return;\n }\n\n if (!routeOptions) {\n this._currentPage = \"\";\n if (this.lastChild) {\n this.removeChild(this.lastChild);\n }\n return;\n }\n\n this._currentPage = newPage;\n const loadProm = routeOptions.load\n ? routeOptions.load()\n : Promise.resolve();\n\n // Check when loading the page source failed.\n loadProm.catch((err) => {\n // tslint:disable-next-line\n console.error(\"Error loading page\", newPage, err);\n\n // Verify that we're still trying to show the same page.\n if (this._currentPage !== newPage) {\n return;\n }\n\n // Removes either loading screen or the panel\n this.removeChild(this.lastChild!);\n\n // Show error screen\n const errorEl = document.createElement(\"hass-error-screen\");\n errorEl.error = `Error while loading page ${newPage}.`;\n this.appendChild(errorEl);\n });\n\n // If we don't show loading screen, just show the panel.\n // It will be automatically upgraded when loading done.\n if (!routerOptions.showLoading) {\n this._createPanel(routerOptions, newPage, routeOptions);\n return;\n }\n\n // We are only going to show the loading screen after some time.\n // That way we won't have a double fast flash on fast connections.\n let created = false;\n\n setTimeout(() => {\n if (created || this._currentPage !== newPage) {\n return;\n }\n\n // Show a loading screen.\n if (this.lastChild) {\n this.removeChild(this.lastChild);\n }\n this.appendChild(this.createLoadingScreen());\n }, LOADING_SCREEN_THRESHOLD);\n\n this._currentLoadProm = loadProm.then(\n () => {\n this._currentLoadProm = undefined;\n // Check if we're still trying to show the same page.\n if (this._currentPage !== newPage) {\n return;\n }\n\n created = true;\n this._createPanel(\n routerOptions,\n newPage,\n // @ts-ignore TS forgot this is not a string.\n routeOptions\n );\n },\n () => {\n this._currentLoadProm = undefined;\n }\n );\n }\n\n protected firstUpdated(changedProps: PropertyValues) {\n super.firstUpdated(changedProps);\n\n const options = this.routerOptions;\n\n if (!options) {\n return;\n }\n\n if (options.preloadAll) {\n Object.values(options.routes).forEach(\n (route) => typeof route === \"object\" && route.load && route.load()\n );\n }\n\n if (options.initialLoad) {\n setTimeout(() => {\n if (!this._initialLoadDone) {\n this.appendChild(this.createLoadingScreen());\n }\n }, LOADING_SCREEN_THRESHOLD);\n\n options.initialLoad().then(() => {\n this._initialLoadDone = true;\n this.requestUpdate(\"route\");\n });\n }\n }\n\n protected createLoadingScreen() {\n return document.createElement(\"hass-loading-screen\");\n }\n\n /**\n * Rebuild the current panel.\n *\n * Promise will resolve when rebuilding is done and DOM updated.\n */\n protected async rebuild(): Promise {\n const oldRoute = this.route;\n\n if (oldRoute === undefined) {\n return;\n }\n\n this.route = undefined;\n await this.updateComplete;\n // Make sure that the parent didn't override this in the meanwhile.\n if (this.route === undefined) {\n this.route = oldRoute;\n }\n }\n\n /**\n * Promise that resolves when the page has rendered.\n */\n protected get pageRendered(): Promise {\n return this.updateComplete.then(() => this._currentLoadProm);\n }\n\n protected createElement(tag: string) {\n return document.createElement(tag);\n }\n\n protected updatePageEl(_pageEl, _changedProps?: PropertyValues) {\n // default we do nothing\n }\n\n protected get routeTail(): Route {\n return this._computeTail(this.route!);\n }\n\n private _createPanel(\n routerOptions: RouterOptions,\n page: string,\n routeOptions: RouteOptions\n ) {\n if (this.lastChild) {\n this.removeChild(this.lastChild);\n }\n\n const panelEl = this._cache[page] || this.createElement(routeOptions.tag);\n this.updatePageEl(panelEl);\n this.appendChild(panelEl);\n\n if (routerOptions.cacheAll || routeOptions.cache) {\n this._cache[page] = panelEl;\n }\n }\n}\n","import { HomeAssistant } from \"../../types\";\nimport { HassioResponse, hassioApiResultExtractor } from \"./common\";\n\nexport type HassioHostInfo = any;\n\nexport interface HassioHassOSInfo {\n version: string;\n version_cli: string;\n version_latest: string;\n version_cli_latest: string;\n board: \"ova\" | \"rpi\";\n}\n\nexport const fetchHassioHostInfo = async (hass: HomeAssistant) => {\n const response = await hass.callApi>(\n \"GET\",\n \"hassio/host/info\"\n );\n return hassioApiResultExtractor(response);\n};\n\nexport const fetchHassioHassOsInfo = async (hass: HomeAssistant) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\n \"GET\",\n \"hassio/hassos/info\"\n )\n );\n};\n","import { HASSDomEvent, ValidHassDomEvent } from \"../common/dom/fire_event\";\nimport { ProvideHassElement } from \"../mixins/provide-hass-lit-mixin\";\n\ndeclare global {\n // for fire event\n interface HASSDomEvents {\n \"show-dialog\": ShowDialogParams;\n \"close-dialog\": undefined;\n }\n // for add event listener\n interface HTMLElementEventMap {\n \"show-dialog\": HASSDomEvent>;\n }\n}\n\ninterface HassDialog extends HTMLElement {\n showDialog(params: T);\n}\n\ninterface ShowDialogParams {\n dialogTag: keyof HTMLElementTagNameMap;\n dialogImport: () => Promise;\n dialogParams: T;\n}\n\nconst LOADED = {};\n\nexport const showDialog = async (\n element: HTMLElement & ProvideHassElement,\n root: ShadowRoot | HTMLElement,\n dialogImport: () => Promise,\n dialogTag: string,\n dialogParams: unknown\n) => {\n if (!(dialogTag in LOADED)) {\n LOADED[dialogTag] = dialogImport().then(() => {\n const dialogEl = document.createElement(dialogTag) as HassDialog;\n element.provideHass(dialogEl);\n root.appendChild(dialogEl);\n return dialogEl;\n });\n }\n const dialogElement = await LOADED[dialogTag];\n dialogElement.showDialog(dialogParams);\n};\n\nexport const makeDialogManager = (\n element: HTMLElement & ProvideHassElement,\n root: ShadowRoot | HTMLElement\n) => {\n element.addEventListener(\n \"show-dialog\",\n async (e: HASSDomEvent>) => {\n const { dialogTag, dialogImport, dialogParams } = e.detail;\n showDialog(element, root, dialogImport, dialogTag, dialogParams);\n }\n );\n};\n","import { UpdatingElement, PropertyValues } from \"lit-element\";\nimport { HomeAssistant, Constructor } from \"../types\";\n\nexport interface ProvideHassElement {\n provideHass(element: HTMLElement);\n}\n\n/* tslint:disable-next-line:variable-name */\nexport const ProvideHassLitMixin = >(\n superClass: T\n) =>\n class extends superClass {\n protected hass!: HomeAssistant;\n /* tslint:disable-next-line:variable-name */\n private __provideHass: HTMLElement[] = [];\n\n public provideHass(el) {\n this.__provideHass.push(el);\n el.hass = this.hass;\n }\n\n protected updated(changedProps: PropertyValues) {\n super.updated(changedProps);\n\n if (changedProps.has(\"hass\")) {\n this.__provideHass.forEach((el) => {\n (el as any).hass = this.hass;\n });\n }\n }\n };\n","import \"@polymer/paper-card/paper-card\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n} from \"lit-element\";\n\nimport { HomeAssistant } from \"../../../src/types\";\nimport { HassioAddonInfo } from \"../../../src/data/hassio/addon\";\nimport { navigate } from \"../../../src/common/navigate\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\nimport \"../components/hassio-card-content\";\n\n@customElement(\"hassio-addons\")\nclass HassioAddons extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public addons?: HassioAddonInfo[];\n\n protected render(): TemplateResult {\n return html`\n
    \n
    Add-ons
    \n ${!this.addons\n ? html`\n \n
    \n You don't have any add-ons installed yet. Head over to\n the add-on store to\n get started!\n
    \n
    \n `\n : this.addons\n .sort((a, b) => (a.name > b.name ? 1 : -1))\n .map(\n (addon) => html`\n \n
    \n \n
    \n
    \n `\n )}\n
    \n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n paper-card {\n cursor: pointer;\n }\n `,\n ];\n }\n\n private _computeIcon(addon: HassioAddonInfo): string {\n return addon.installed !== addon.version\n ? \"hassio:arrow-up-bold-circle\"\n : \"hassio:puzzle\";\n }\n\n private _computeIconTitle(addon: HassioAddonInfo): string {\n if (addon.installed !== addon.version) {\n return \"New version available\";\n }\n return addon.state === \"started\"\n ? \"Add-on is running\"\n : \"Add-on is stopped\";\n }\n\n private _computeIconClass(addon: HassioAddonInfo): string {\n if (addon.installed !== addon.version) {\n return \"update\";\n }\n return addon.state === \"started\" ? \"running\" : \"\";\n }\n\n private _addonTapped(ev: any): void {\n navigate(this, `/hassio/addon/${ev.currentTarget.addon.slug}`);\n }\n\n private _openStore(): void {\n navigate(this, \"/hassio/store\");\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-addons\": HassioAddons;\n }\n}\n","import {\n LitElement,\n TemplateResult,\n html,\n CSSResult,\n css,\n property,\n customElement,\n} from \"lit-element\";\nimport \"@polymer/iron-icon/iron-icon\";\n\nimport { HomeAssistant } from \"../../../src/types\";\nimport { HassioHassOSInfo } from \"../../../src/data/hassio/host\";\nimport {\n HassioHomeAssistantInfo,\n HassioSupervisorInfo,\n} from \"../../../src/data/hassio/supervisor\";\n\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\n\nimport \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport \"../../../src/components/buttons/ha-call-api-button\";\nimport \"../components/hassio-card-content\";\n\n@customElement(\"hassio-update\")\nexport class HassioUpdate extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public hassInfo: HassioHomeAssistantInfo;\n @property() public hassOsInfo?: HassioHassOSInfo;\n @property() public supervisorInfo: HassioSupervisorInfo;\n @property() private _error?: string;\n\n protected render(): TemplateResult {\n const updatesAvailable: number = [\n this.hassInfo,\n this.supervisorInfo,\n this.hassOsInfo,\n ].filter((value) => {\n return !!value && value.version !== value.last_version;\n }).length;\n\n if (!updatesAvailable) {\n return html``;\n }\n\n return html`\n
    \n ${this._error\n ? html`\n
    Error: ${this._error}
    \n `\n : \"\"}\n
    \n
    \n ${updatesAvailable > 1\n ? \"Updates Available 🎉\"\n : \"Update Available 🎉\"}\n
    \n ${this._renderUpdateCard(\n \"Home Assistant\",\n this.hassInfo.version,\n this.hassInfo.last_version,\n \"hassio/homeassistant/update\",\n `https://${\n this.hassInfo.last_version.includes(\"b\") ? \"rc\" : \"www\"\n }.home-assistant.io/latest-release-notes/`,\n \"hassio:home-assistant\"\n )}\n ${this._renderUpdateCard(\n \"Hass.io Supervisor\",\n this.supervisorInfo.version,\n this.supervisorInfo.last_version,\n \"hassio/supervisor/update\",\n `https://github.com//home-assistant/hassio/releases/tag/${this.supervisorInfo.last_version}`\n )}\n ${this.hassOsInfo\n ? this._renderUpdateCard(\n \"HassOS\",\n this.hassOsInfo.version,\n this.hassOsInfo.version_latest,\n \"hassio/hassos/update\",\n `https://github.com//home-assistant/hassos/releases/tag/${this.hassOsInfo.version_latest}`\n )\n : \"\"}\n
    \n
    \n `;\n }\n\n private _renderUpdateCard(\n name: string,\n curVersion: string,\n lastVersion: string,\n apiPath: string,\n releaseNotesUrl: string,\n icon?: string\n ): TemplateResult {\n if (lastVersion === curVersion) {\n return html``;\n }\n return html`\n \n
    \n ${icon\n ? html`\n
    \n \n
    \n `\n : \"\"}\n
    ${name} ${lastVersion}
    \n
    \n You are currently running version ${curVersion}\n
    \n
    \n
    \n \n Release notes\n \n \n Update\n \n
    \n
    \n `;\n }\n\n private _apiCalled(ev) {\n if (ev.detail.success) {\n this._error = \"\";\n return;\n }\n\n const response = ev.detail.response;\n\n typeof response.body === \"object\"\n ? (this._error = response.body.message || \"Unknown error\")\n : (this._error = response.body);\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n :host {\n width: 33%;\n }\n paper-card {\n display: inline-block;\n margin-bottom: 32px;\n }\n .icon {\n --iron-icon-height: 48px;\n --iron-icon-width: 48px;\n float: right;\n margin: 0 0 2px 10px;\n }\n .update-heading {\n font-size: var(--paper-font-subhead_-_font-size);\n font-weight: 500;\n margin-bottom: 0.5em;\n }\n .warning {\n color: var(--secondary-text-color);\n }\n .card-actions {\n text-align: right;\n }\n .errors {\n color: var(--google-red-500);\n padding: 16px;\n }\n a {\n text-decoration: none;\n }\n `,\n ];\n }\n}\n","import {\n LitElement,\n TemplateResult,\n html,\n CSSResult,\n css,\n property,\n customElement,\n} from \"lit-element\";\nimport \"./hassio-addons\";\nimport \"./hassio-update\";\nimport { haStyle } from \"../../../src/resources/styles\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport { HassioHassOSInfo } from \"../../../src/data/hassio/host\";\nimport {\n HassioSupervisorInfo,\n HassioHomeAssistantInfo,\n} from \"../../../src/data/hassio/supervisor\";\n\n@customElement(\"hassio-dashboard\")\nclass HassioDashboard extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public supervisorInfo!: HassioSupervisorInfo;\n @property() public hassInfo!: HassioHomeAssistantInfo;\n @property() public hassOsInfo!: HassioHassOSInfo;\n\n protected render(): TemplateResult {\n return html`\n
    \n \n \n
    \n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n css`\n .content {\n margin: 0 auto;\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-dashboard\": HassioDashboard;\n }\n}\n","import {\n LitElement,\n TemplateResult,\n html,\n CSSResultArray,\n css,\n property,\n PropertyValues,\n customElement,\n} from \"lit-element\";\nimport \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport \"@polymer/paper-checkbox/paper-checkbox\";\nimport \"@polymer/paper-input/paper-input\";\nimport \"@polymer/paper-radio-button/paper-radio-button\";\nimport \"@polymer/paper-radio-group/paper-radio-group\";\n\nimport \"../components/hassio-card-content\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\n\nimport { showHassioSnapshotDialog } from \"../dialogs/snapshot/show-dialog-hassio-snapshot\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport {\n HassioSnapshot,\n fetchHassioSnapshots,\n reloadHassioSnapshots,\n HassioFullSnapshotCreateParams,\n HassioPartialSnapshotCreateParams,\n createHassioFullSnapshot,\n createHassioPartialSnapshot,\n} from \"../../../src/data/hassio/snapshot\";\nimport { HassioSupervisorInfo } from \"../../../src/data/hassio/supervisor\";\nimport { PolymerChangedEvent } from \"../../../src/polymer-types\";\nimport { fireEvent } from \"../../../src/common/dom/fire_event\";\n\n// Not duplicate, used for typing\n// tslint:disable-next-line\nimport { PaperInputElement } from \"@polymer/paper-input/paper-input\";\n// tslint:disable-next-line\nimport { PaperRadioGroupElement } from \"@polymer/paper-radio-group/paper-radio-group\";\n// tslint:disable-next-line\nimport { PaperCheckboxElement } from \"@polymer/paper-checkbox/paper-checkbox\";\n\ninterface CheckboxItem {\n slug: string;\n name: string;\n checked: boolean;\n}\n\n@customElement(\"hassio-snapshots\")\nclass HassioSnapshots extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public supervisorInfo!: HassioSupervisorInfo;\n @property() private _snapshotName = \"\";\n @property() private _snapshotPassword = \"\";\n @property() private _snapshotHasPassword = false;\n @property() private _snapshotType: HassioSnapshot[\"type\"] = \"full\";\n @property() private _snapshots?: HassioSnapshot[] = [];\n @property() private _addonList: CheckboxItem[] = [];\n @property() private _folderList: CheckboxItem[] = [\n {\n slug: \"homeassistant\",\n name: \"Home Assistant configuration\",\n checked: true,\n },\n { slug: \"ssl\", name: \"SSL\", checked: true },\n { slug: \"share\", name: \"Share\", checked: true },\n { slug: \"addons/local\", name: \"Local add-ons\", checked: true },\n ];\n @property() private _creatingSnapshot = false;\n @property() private _error = \"\";\n\n public async refreshData() {\n await reloadHassioSnapshots(this.hass);\n await this._updateSnapshots();\n }\n\n protected render(): TemplateResult {\n return html`\n
    \n
    \n
    \n Create snapshot\n
    \n Snapshots allow you to easily backup and restore all data of your\n Hass.io instance.\n
    \n
    \n \n
    \n \n Type:\n \n \n Full snapshot\n \n \n Partial snapshot\n \n \n ${this._snapshotType === \"full\"\n ? undefined\n : html`\n Folders:\n ${this._folderList.map(\n (folder, idx) => html`\n \n ${folder.name}\n \n `\n )}\n Add-ons:\n ${this._addonList.map(\n (addon, idx) => html`\n \n ${addon.name}\n \n `\n )}\n `}\n Security:\n \n Password protection\n \n ${this._snapshotHasPassword\n ? html`\n \n `\n : undefined}\n ${this._error !== \"\"\n ? html`\n

    ${this._error}

    \n `\n : undefined}\n
    \n
    \n \n Create\n \n
    \n
    \n
    \n\n
    \n
    Available snapshots
    \n ${this._snapshots === undefined\n ? undefined\n : this._snapshots.length === 0\n ? html`\n \n
    \n You don't have any snapshots yet.\n
    \n
    \n `\n : this._snapshots.map(\n (snapshot) => html`\n \n
    \n \n
    \n \n `\n )}\n
    \n
    \n `;\n }\n\n protected firstUpdated(changedProps: PropertyValues) {\n super.firstUpdated(changedProps);\n this._updateSnapshots();\n }\n\n protected updated(changedProps: PropertyValues) {\n if (changedProps.has(\"supervisorInfo\")) {\n this._addonList = this.supervisorInfo.addons\n .map((addon) => ({\n slug: addon.slug,\n name: addon.name,\n checked: true,\n }))\n .sort((a, b) => (a.name < b.name ? -1 : 1));\n }\n }\n\n private _handleTextValueChanged(ev: PolymerChangedEvent) {\n const input = ev.currentTarget as PaperInputElement;\n this[`_${input.name}`] = ev.detail.value;\n }\n\n private _handleCheckboxValueChanged(ev) {\n const input = ev.currentTarget as PaperCheckboxElement;\n this[`_${input.name}`] = input.checked;\n }\n\n private _handleRadioValueChanged(ev: PolymerChangedEvent) {\n const input = ev.currentTarget as PaperRadioGroupElement;\n this[`_${input.getAttribute(\"name\")}`] = ev.detail.value;\n }\n\n private _folderChecked(ev) {\n const { idx, checked } = ev.currentTarget!;\n this._folderList = this._folderList.map((folder, curIdx) =>\n curIdx === idx ? { ...folder, checked } : folder\n );\n }\n\n private _addonChecked(ev) {\n const { idx, checked } = ev.currentTarget!;\n this._addonList = this._addonList.map((addon, curIdx) =>\n curIdx === idx ? { ...addon, checked } : addon\n );\n }\n\n private async _updateSnapshots() {\n try {\n this._snapshots = await fetchHassioSnapshots(this.hass);\n this._snapshots.sort((a, b) => (a.date < b.date ? 1 : -1));\n } catch (err) {\n this._error = err.message;\n }\n }\n\n private async _createSnapshot() {\n this._error = \"\";\n if (this._snapshotHasPassword && !this._snapshotPassword.length) {\n this._error = \"Please enter a password.\";\n return;\n }\n this._creatingSnapshot = true;\n await this.updateComplete;\n\n const name =\n this._snapshotName ||\n new Date().toLocaleDateString(navigator.language, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n\n try {\n if (this._snapshotType === \"full\") {\n const data: HassioFullSnapshotCreateParams = { name };\n if (this._snapshotHasPassword) {\n data.password = this._snapshotPassword;\n }\n await createHassioFullSnapshot(this.hass, data);\n } else {\n const addons = this._addonList\n .filter((addon) => addon.checked)\n .map((addon) => addon.slug);\n const folders = this._folderList\n .filter((folder) => folder.checked)\n .map((folder) => folder.slug);\n\n const data: HassioPartialSnapshotCreateParams = {\n name,\n folders,\n addons,\n };\n if (this._snapshotHasPassword) {\n data.password = this._snapshotPassword;\n }\n await createHassioPartialSnapshot(this.hass, data);\n }\n this._updateSnapshots();\n fireEvent(this, \"hass-api-called\", { success: true, response: null });\n } catch (err) {\n this._error = err.message;\n } finally {\n this._creatingSnapshot = false;\n }\n }\n\n private _computeDetails(snapshot: HassioSnapshot) {\n const type =\n snapshot.type === \"full\" ? \"Full snapshot\" : \"Partial snapshot\";\n return snapshot.protected ? `${type}, password protected` : type;\n }\n\n private _snapshotClicked(ev) {\n showHassioSnapshotDialog(this, {\n slug: ev.currentTarget!.snapshot.slug,\n onDelete: () => this._updateSnapshots(),\n });\n }\n\n static get styles(): CSSResultArray {\n return [\n haStyle,\n hassioStyle,\n css`\n paper-radio-group {\n display: block;\n }\n paper-radio-button {\n padding: 0 0 2px 2px;\n }\n paper-radio-button,\n paper-checkbox,\n paper-input[type=\"password\"] {\n display: block;\n margin: 4px 0 4px 48px;\n }\n .pointer {\n cursor: pointer;\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-snapshots\": HassioSnapshots;\n }\n}\n","import { fireEvent } from \"../../../../src/common/dom/fire_event\";\n\nexport interface HassioSnapshotDialogParams {\n slug: string;\n onDelete: () => void;\n}\n\nexport const showHassioSnapshotDialog = (\n element: HTMLElement,\n dialogParams: HassioSnapshotDialogParams\n): void => {\n fireEvent(element, \"show-dialog\", {\n dialogTag: \"dialog-hassio-snapshot\",\n dialogImport: () =>\n import(\n /* webpackChunkName: \"dialog-hassio-snapshot\" */ \"./dialog-hassio-snapshot\"\n ),\n dialogParams,\n });\n};\n","import {\n css,\n TemplateResult,\n html,\n LitElement,\n property,\n CSSResultArray,\n} from \"lit-element\";\nimport \"@polymer/paper-card/paper-card\";\nimport memoizeOne from \"memoize-one\";\n\nimport \"../components/hassio-card-content\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport {\n HassioAddonInfo,\n HassioAddonRepository,\n} from \"../../../src/data/hassio/addon\";\nimport { navigate } from \"../../../src/common/navigate\";\nimport { filterAndSort } from \"../components/hassio-filter-addons\";\n\nclass HassioAddonRepositoryEl extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public repo!: HassioAddonRepository;\n @property() public addons!: HassioAddonInfo[];\n @property() public filter!: string;\n\n private _getAddons = memoizeOne(\n (addons: HassioAddonInfo[], filter?: string) => {\n if (filter) {\n return filterAndSort(addons, filter);\n }\n return addons.sort((a, b) =>\n a.name.toUpperCase() < b.name.toUpperCase() ? -1 : 1\n );\n }\n );\n\n protected render(): TemplateResult {\n const repo = this.repo;\n const addons = this._getAddons(this.addons, this.filter);\n\n if (this.filter && addons.length < 1) {\n return html`\n
    \n
    \n
    \n No results found in \"${repo.name}\"\n
    \n
    \n
    \n `;\n }\n return html`\n
    \n
    \n ${repo.name}\n
    \n Maintained by ${repo.maintainer}
    \n ${repo.url}\n
    \n
    \n\n ${addons.map(\n (addon) => html`\n \n
    \n \n
    \n \n `\n )}\n
    \n `;\n }\n\n private computeIcon(addon) {\n return addon.installed && addon.installed !== addon.version\n ? \"hassio:arrow-up-bold-circle\"\n : \"hassio:puzzle\";\n }\n\n private computeIconTitle(addon) {\n if (addon.installed) {\n return addon.installed !== addon.version\n ? \"New version available\"\n : \"Add-on is installed\";\n }\n return addon.available\n ? \"Add-on is not installed\"\n : \"Add-on is not available on your system\";\n }\n\n private computeIconClass(addon) {\n if (addon.installed) {\n return addon.installed !== addon.version ? \"update\" : \"installed\";\n }\n return !addon.available ? \"not_available\" : \"\";\n }\n\n private addonTapped(ev) {\n navigate(this, `/hassio/addon/${ev.currentTarget.addon.slug}`);\n }\n\n static get styles(): CSSResultArray {\n return [\n hassioStyle,\n css`\n paper-card {\n cursor: pointer;\n }\n .not_available {\n opacity: 0.6;\n }\n a.repo {\n color: var(--primary-text-color);\n }\n `,\n ];\n }\n}\n\ncustomElements.define(\"hassio-addon-repository\", HassioAddonRepositoryEl);\n","import { HassioAddonInfo } from \"../../../src/data/hassio/addon\";\nimport * as Fuse from \"fuse.js\";\n\nexport function filterAndSort(addons: HassioAddonInfo[], filter: string) {\n const options: Fuse.FuseOptions = {\n keys: [\"name\", \"description\", \"slug\"],\n caseSensitive: false,\n minMatchCharLength: 2,\n threshold: 0.2,\n };\n const fuse = new Fuse(addons, options);\n return fuse.search(filter);\n}\n","import {\n LitElement,\n html,\n CSSResultArray,\n css,\n property,\n TemplateResult,\n customElement,\n PropertyValues,\n} from \"lit-element\";\nimport \"@polymer/iron-icon/iron-icon\";\nimport \"@polymer/paper-card/paper-card\";\nimport \"@polymer/paper-input/paper-input\";\nimport memoizeOne from \"memoize-one\";\n\nimport \"../../../src/components/buttons/ha-call-api-button\";\nimport \"../components/hassio-card-content\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport { HassioAddonRepository } from \"../../../src/data/hassio/addon\";\nimport { PolymerChangedEvent } from \"../../../src/polymer-types\";\nimport { repeat } from \"lit-html/directives/repeat\";\n\n@customElement(\"hassio-repositories-editor\")\nclass HassioRepositoriesEditor extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public repos!: HassioAddonRepository[];\n @property() private _repoUrl = \"\";\n\n private _sortedRepos = memoizeOne((repos: HassioAddonRepository[]) =>\n repos\n .filter((repo) => repo.slug !== \"core\" && repo.slug !== \"local\")\n .sort((a, b) => (a.name < b.name ? -1 : 1))\n );\n\n protected render(): TemplateResult {\n const repos = this._sortedRepos(this.repos);\n return html`\n
    \n
    \n Repositories\n
    \n Configure which add-on repositories to fetch data from:\n
    \n
    \n ${// Use repeat so that the fade-out from call-service-api-button\n // stays with the correct repo after we add/delete one.\n repeat(\n repos,\n (repo) => repo.slug,\n (repo) => html`\n \n
    \n \n
    \n
    \n \n Remove\n \n
    \n
    \n `\n )}\n\n \n
    \n \n \n
    \n
    \n \n Add\n \n
    \n
    \n
    \n `;\n }\n\n protected updated(changedProps: PropertyValues) {\n super.updated(changedProps);\n\n if (changedProps.has(\"repos\")) {\n this._repoUrl = \"\";\n }\n }\n\n private _urlChanged(ev: PolymerChangedEvent) {\n this._repoUrl = ev.detail.value;\n }\n\n private computeRemoveRepoData(repoList, url) {\n const list = repoList\n .filter((repo) => repo.url !== url)\n .map((repo) => repo.source);\n return { addons_repositories: list };\n }\n\n private computeAddRepoData(repoList, url) {\n const list = repoList ? repoList.map((repo) => repo.source) : [];\n list.push(url);\n return { addons_repositories: list };\n }\n\n static get styles(): CSSResultArray {\n return [\n hassioStyle,\n css`\n .add {\n padding: 12px 16px;\n }\n iron-icon {\n color: var(--secondary-text-color);\n margin-right: 16px;\n display: inline-block;\n }\n paper-input {\n width: calc(100% - 49px);\n display: inline-block;\n margin-top: -4px;\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-repositories-editor\": HassioRepositoriesEditor;\n }\n}\n","import \"@polymer/paper-spinner/paper-spinner-lite\";\nimport {\n LitElement,\n TemplateResult,\n html,\n css,\n customElement,\n CSSResult,\n} from \"lit-element\";\n\n@customElement(\"loading-screen\")\nclass LoadingScreen extends LitElement {\n protected render(): TemplateResult {\n return html`\n \n `;\n }\n\n static get styles(): CSSResult {\n return css`\n :host {\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"loading-screen\": LoadingScreen;\n }\n}\n","import { TemplateResult, html } from \"lit-html\";\nimport {\n css,\n CSSResult,\n customElement,\n LitElement,\n property,\n} from \"lit-element\";\nimport { fireEvent } from \"../../../src/common/dom/fire_event\";\nimport \"@polymer/iron-icon/iron-icon\";\nimport \"@polymer/paper-input/paper-input\";\nimport \"@polymer/paper-icon-button/paper-icon-button\";\nimport \"@material/mwc-button\";\n\n@customElement(\"hassio-search-input\")\nclass HassioSearchInput extends LitElement {\n @property() private filter?: string;\n\n protected render(): TemplateResult {\n return html`\n
    \n \n \n ${this.filter &&\n html`\n \n `}\n \n
    \n `;\n }\n\n private async _filterChanged(value: string) {\n fireEvent(this, \"value-changed\", { value: String(value) });\n }\n\n private async _filterInputChanged(e) {\n this._filterChanged(e.target.value);\n }\n\n private async _clearSearch() {\n this._filterChanged(\"\");\n }\n\n static get styles(): CSSResult {\n return css`\n paper-input {\n flex: 1 1 auto;\n margin: 0 16px;\n }\n .search-container {\n display: inline-flex;\n width: 100%;\n align-items: center;\n }\n .prefix {\n margin: 8px;\n }\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-search-input\": HassioSearchInput;\n }\n}\n","import \"./hassio-addon-repository\";\nimport \"./hassio-repositories-editor\";\nimport { TemplateResult, html } from \"lit-html\";\nimport {\n LitElement,\n CSSResult,\n css,\n property,\n PropertyValues,\n} from \"lit-element\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport {\n HassioAddonRepository,\n HassioAddonInfo,\n fetchHassioAddonsInfo,\n reloadHassioAddons,\n} from \"../../../src/data/hassio/addon\";\nimport \"../../../src/layouts/loading-screen\";\nimport \"../components/hassio-search-input\";\n\nconst sortRepos = (a: HassioAddonRepository, b: HassioAddonRepository) => {\n if (a.slug === \"local\") {\n return -1;\n }\n if (b.slug === \"local\") {\n return 1;\n }\n if (a.slug === \"core\") {\n return -1;\n }\n if (b.slug === \"core\") {\n return 1;\n }\n return a.name.toUpperCase() < b.name.toUpperCase() ? -1 : 1;\n};\n\nclass HassioAddonStore extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() private _addons?: HassioAddonInfo[];\n @property() private _repos?: HassioAddonRepository[];\n @property() private _filter?: string;\n\n public async refreshData() {\n this._repos = undefined;\n this._addons = undefined;\n this._filter = undefined;\n await reloadHassioAddons(this.hass);\n await this._loadData();\n }\n\n protected render(): TemplateResult {\n if (!this._addons || !this._repos) {\n return html`\n \n `;\n }\n const repos: TemplateResult[] = [];\n\n for (const repo of this._repos) {\n const addons = this._addons!.filter(\n (addon) => addon.repository === repo.slug\n );\n\n if (addons.length === 0) {\n continue;\n }\n\n repos.push(html`\n \n `);\n }\n\n return html`\n \n\n \n\n ${repos}\n `;\n }\n\n protected firstUpdated(changedProps: PropertyValues) {\n super.firstUpdated(changedProps);\n this.addEventListener(\"hass-api-called\", (ev) => this.apiCalled(ev));\n this._loadData();\n }\n\n private apiCalled(ev) {\n if (ev.detail.success) {\n this._loadData();\n }\n }\n\n private async _loadData() {\n try {\n const addonsInfo = await fetchHassioAddonsInfo(this.hass);\n this._repos = addonsInfo.repositories;\n this._repos.sort(sortRepos);\n this._addons = addonsInfo.addons;\n } catch (err) {\n alert(\"Failed to fetch add-on info\");\n }\n }\n\n private async _filterChanged(e) {\n this._filter = e.detail.value;\n }\n\n static get styles(): CSSResult {\n return css`\n hassio-addon-repository {\n margin-top: 24px;\n }\n `;\n }\n}\n\ncustomElements.define(\"hassio-addon-store\", HassioAddonStore);\n","import \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n} from \"lit-element\";\n\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\nimport {\n HassioHostInfo as HassioHostInfoType,\n HassioHassOSInfo,\n} from \"../../../src/data/hassio/host\";\nimport { fetchHassioHardwareInfo } from \"../../../src/data/hassio/hardware\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport { showHassioMarkdownDialog } from \"../dialogs/markdown/show-dialog-hassio-markdown\";\n\nimport \"../../../src/components/buttons/ha-call-api-button\";\n\n@customElement(\"hassio-host-info\")\nclass HassioHostInfo extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public hostInfo!: HassioHostInfoType;\n @property() public hassOsInfo!: HassioHassOSInfo;\n @property() private _errors?: string;\n\n public render(): TemplateResult | void {\n return html`\n \n
    \n

    Host system

    \n \n \n \n \n \n \n \n \n \n \n ${this.hostInfo.deployment\n ? html`\n \n \n \n \n `\n : \"\"}\n \n
    Hostname${this.hostInfo.hostname}
    System${this.hostInfo.operating_system}
    Deployment${this.hostInfo.deployment}
    \n \n Hardware\n \n ${this.hostInfo.features.includes(\"hostname\")\n ? html`\n \n Change hostname\n \n `\n : \"\"}\n ${this._errors\n ? html`\n
    Error: ${this._errors}
    \n `\n : \"\"}\n
    \n
    \n ${this.hostInfo.features.includes(\"reboot\")\n ? html`\n Reboot\n `\n : \"\"}\n ${this.hostInfo.features.includes(\"shutdown\")\n ? html`\n Shutdown\n `\n : \"\"}\n ${this.hostInfo.features.includes(\"hassos\")\n ? html`\n Import from USB\n `\n : \"\"}\n ${this.hostInfo.version !== this.hostInfo.version_latest\n ? html`\n Update\n `\n : \"\"}\n
    \n
    \n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n paper-card {\n display: inline-block;\n width: 400px;\n margin-left: 8px;\n }\n .card-content {\n height: 200px;\n color: var(--primary-text-color);\n }\n @media screen and (max-width: 830px) {\n paper-card {\n margin-top: 8px;\n margin-left: 0;\n width: 100%;\n }\n .card-content {\n height: auto;\n }\n }\n .info {\n width: 100%;\n }\n .info td:nth-child(2) {\n text-align: right;\n }\n .errors {\n color: var(--google-red-500);\n margin-top: 16px;\n }\n mwc-button.info {\n max-width: calc(50% - 12px);\n }\n table.info {\n margin-bottom: 10px;\n }\n .warning {\n --mdc-theme-primary: var(--google-red-500);\n }\n `,\n ];\n }\n\n protected firstUpdated(): void {\n this.addEventListener(\"hass-api-called\", (ev) => this._apiCalled(ev));\n }\n\n private _apiCalled(ev): void {\n if (ev.detail.success) {\n this._errors = undefined;\n return;\n }\n\n const response = ev.detail.response;\n\n this._errors =\n typeof response.body === \"object\"\n ? response.body.message || \"Unknown error\"\n : response.body;\n }\n\n private async _showHardware(): Promise {\n try {\n const content = this._objectToMarkdown(\n await fetchHassioHardwareInfo(this.hass)\n );\n showHassioMarkdownDialog(this, {\n title: \"Hardware\",\n content,\n });\n } catch (err) {\n showHassioMarkdownDialog(this, {\n title: \"Hardware\",\n content: \"Error getting hardware info\",\n });\n }\n }\n\n private _objectToMarkdown(obj, indent = \"\"): string {\n let data = \"\";\n Object.keys(obj).forEach((key) => {\n if (typeof obj[key] !== \"object\") {\n data += `${indent}- ${key}: ${obj[key]}\\n`;\n } else {\n data += `${indent}- ${key}:\\n`;\n if (Array.isArray(obj[key])) {\n if (obj[key].length) {\n data +=\n `${indent} - ` + obj[key].join(`\\n${indent} - `) + \"\\n\";\n }\n } else {\n data += this._objectToMarkdown(obj[key], ` ${indent}`);\n }\n }\n });\n\n return data;\n }\n\n private _changeHostnameClicked(): void {\n const curHostname = this.hostInfo.hostname;\n const hostname = prompt(\"Please enter a new hostname:\", curHostname);\n if (hostname && hostname !== curHostname) {\n this.hass.callApi(\"POST\", \"hassio/host/options\", { hostname });\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-host-info\": HassioHostInfo;\n }\n}\n","import \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n} from \"lit-element\";\n\nimport { fireEvent } from \"../../../src/common/dom/fire_event\";\nimport {\n HassioSupervisorInfo as HassioSupervisorInfoType,\n setSupervisorOption,\n SupervisorOptions,\n} from \"../../../src/data/hassio/supervisor\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\n\nimport \"../../../src/components/buttons/ha-call-api-button\";\n\n@customElement(\"hassio-supervisor-info\")\nclass HassioSupervisorInfo extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public supervisorInfo!: HassioSupervisorInfoType;\n @property() private _errors?: string;\n\n public render(): TemplateResult | void {\n return html`\n \n
    \n

    Hass.io supervisor

    \n \n \n \n \n \n \n \n \n \n \n ${this.supervisorInfo.channel !== \"stable\"\n ? html`\n \n \n \n \n `\n : \"\"}\n \n
    Version${this.supervisorInfo.version}
    Latest version${this.supervisorInfo.last_version}
    Channel${this.supervisorInfo.channel}
    \n ${this._errors\n ? html`\n
    Error: ${this._errors}
    \n `\n : \"\"}\n
    \n
    \n Reload\n ${this.supervisorInfo.version !== this.supervisorInfo.last_version\n ? html`\n Update\n `\n : \"\"}\n ${this.supervisorInfo.channel === \"beta\"\n ? html`\n Leave beta channel\n `\n : \"\"}\n ${this.supervisorInfo.channel === \"stable\"\n ? html`\n Join beta channel\n `\n : \"\"}\n
    \n
    \n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n paper-card {\n display: inline-block;\n width: 400px;\n }\n .card-content {\n height: 200px;\n color: var(--primary-text-color);\n }\n @media screen and (max-width: 830px) {\n paper-card {\n width: 100%;\n }\n .card-content {\n height: auto;\n }\n }\n .info {\n width: 100%;\n }\n .info td:nth-child(2) {\n text-align: right;\n }\n .errors {\n color: var(--google-red-500);\n margin-top: 16px;\n }\n `,\n ];\n }\n\n protected firstUpdated(): void {\n this.addEventListener(\"hass-api-called\", (ev) => this._apiCalled(ev));\n }\n\n private _apiCalled(ev): void {\n if (ev.detail.success) {\n this._errors = undefined;\n return;\n }\n\n const response = ev.detail.response;\n\n this._errors =\n typeof response.body === \"object\"\n ? response.body.message || \"Unknown error\"\n : response.body;\n }\n\n private async _joinBeta() {\n if (\n !confirm(`WARNING:\nBeta releases are for testers and early adopters and can contain unstable code changes. Make sure you have backups of your data before you activate this feature.\n\nThis inludes beta releases for:\n- Home Assistant (Release Candidates)\n- Hass.io supervisor\n- Host system`)\n ) {\n return;\n }\n try {\n const data: SupervisorOptions = { channel: \"beta\" };\n await setSupervisorOption(this.hass, data);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"option\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._errors = `Error joining beta channel, ${err.body?.message || err}`;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-supervisor-info\": HassioSupervisorInfo;\n }\n}\n","import \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n query,\n} from \"lit-element\";\n\nimport { ANSI_HTML_STYLE, parseTextToColoredPre } from \"../ansi-to-html\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport { fetchSupervisorLogs } from \"../../../src/data/hassio/supervisor\";\n\n@customElement(\"hassio-supervisor-log\")\nclass HassioSupervisorLog extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() private _error?: string;\n @query(\"#content\") private _logContent!: HTMLDivElement;\n\n public async connectedCallback(): Promise {\n super.connectedCallback();\n await this._loadData();\n }\n\n public render(): TemplateResult | void {\n return html`\n \n ${this._error\n ? html`\n
    ${this._error}
    \n `\n : \"\"}\n
    \n
    \n Refresh\n
    \n
    \n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n ANSI_HTML_STYLE,\n css`\n pre {\n white-space: pre-wrap;\n }\n .errors {\n color: var(--google-red-500);\n margin-bottom: 16px;\n }\n `,\n ];\n }\n\n private async _loadData(): Promise {\n this._error = undefined;\n try {\n const content = await fetchSupervisorLogs(this.hass);\n while (this._logContent.lastChild) {\n this._logContent.removeChild(this._logContent.lastChild as Node);\n }\n this._logContent.appendChild(parseTextToColoredPre(content));\n } catch (err) {\n this._error = `Failed to get supervisor logs, ${err.body?.message ||\n err}`;\n }\n }\n\n private async _refresh(): Promise {\n await this._loadData();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-supervisor-log\": HassioSupervisorLog;\n }\n}\n","import \"@polymer/paper-menu-button/paper-menu-button\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n} from \"lit-element\";\n\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\nimport {\n HassioHostInfo,\n HassioHassOSInfo,\n} from \"../../../src/data/hassio/host\";\nimport { HassioSupervisorInfo } from \"../../../src/data/hassio/supervisor\";\nimport { HomeAssistant } from \"../../../src/types\";\n\nimport \"./hassio-host-info\";\nimport \"./hassio-supervisor-info\";\nimport \"./hassio-supervisor-log\";\n\n@customElement(\"hassio-system\")\nclass HassioSystem extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public supervisorInfo!: HassioSupervisorInfo;\n @property() public hostInfo!: HassioHostInfo;\n @property() public hassOsInfo!: HassioHassOSInfo;\n\n public render(): TemplateResult | void {\n return html`\n
    \n
    Information
    \n \n \n
    System log
    \n \n
    \n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n .content {\n margin: 4px;\n color: var(--primary-text-color);\n }\n .title {\n margin-top: 24px;\n color: var(--primary-text-color);\n font-size: 2em;\n padding-left: 8px;\n margin-bottom: 8px;\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-system\": HassioSystem;\n }\n}\n","import {\n HassRouterPage,\n RouterOptions,\n} from \"../../src/layouts/hass-router-page\";\nimport { customElement, property } from \"lit-element\";\nimport { PolymerElement } from \"@polymer/polymer\";\nimport { HomeAssistant } from \"../../src/types\";\n// Don't codesplit it, that way the dashboard always loads fast.\nimport \"./dashboard/hassio-dashboard\";\n// Don't codesplit the others, because it breaks the UI when pushed to a Pi\nimport \"./snapshots/hassio-snapshots\";\nimport \"./addon-store/hassio-addon-store\";\nimport \"./system/hassio-system\";\nimport { HassioHostInfo, HassioHassOSInfo } from \"../../src/data/hassio/host\";\nimport {\n HassioSupervisorInfo,\n HassioHomeAssistantInfo,\n} from \"../../src/data/hassio/supervisor\";\n\n@customElement(\"hassio-tabs-router\")\nclass HassioTabsRouter extends HassRouterPage {\n @property() public hass!: HomeAssistant;\n @property() public supervisorInfo: HassioSupervisorInfo;\n @property() public hostInfo: HassioHostInfo;\n @property() public hassInfo: HassioHomeAssistantInfo;\n @property() public hassOsInfo!: HassioHassOSInfo;\n\n protected routerOptions: RouterOptions = {\n routes: {\n dashboard: {\n tag: \"hassio-dashboard\",\n },\n snapshots: {\n tag: \"hassio-snapshots\",\n },\n store: {\n tag: \"hassio-addon-store\",\n },\n system: {\n tag: \"hassio-system\",\n },\n },\n };\n\n protected updatePageEl(el) {\n if (\"setProperties\" in el) {\n // As long as we have Polymer pages\n (el as PolymerElement).setProperties({\n hass: this.hass,\n supervisorInfo: this.supervisorInfo,\n hostInfo: this.hostInfo,\n hassInfo: this.hassInfo,\n hassOsInfo: this.hassOsInfo,\n });\n } else {\n el.hass = this.hass;\n el.supervisorInfo = this.supervisorInfo;\n el.hostInfo = this.hostInfo;\n el.hassInfo = this.hassInfo;\n el.hassOsInfo = this.hassOsInfo;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-tabs-router\": HassioTabsRouter;\n }\n}\n","import {\n LitElement,\n TemplateResult,\n html,\n CSSResultArray,\n css,\n customElement,\n property,\n} from \"lit-element\";\nimport \"@polymer/app-layout/app-header-layout/app-header-layout\";\nimport \"@polymer/app-layout/app-header/app-header\";\nimport \"@polymer/app-layout/app-toolbar/app-toolbar\";\nimport \"@polymer/paper-icon-button/paper-icon-button\";\nimport \"@polymer/paper-tabs/paper-tab\";\nimport \"@polymer/paper-tabs/paper-tabs\";\n\nimport \"../../src/components/ha-menu-button\";\nimport \"../../src/resources/ha-style\";\nimport \"./hassio-tabs-router\";\n\nimport scrollToTarget from \"../../src/common/dom/scroll-to-target\";\n\nimport { haStyle } from \"../../src/resources/styles\";\nimport { HomeAssistant, Route } from \"../../src/types\";\nimport { navigate } from \"../../src/common/navigate\";\nimport { HassioHostInfo, HassioHassOSInfo } from \"../../src/data/hassio/host\";\nimport {\n HassioSupervisorInfo,\n HassioHomeAssistantInfo,\n} from \"../../src/data/hassio/supervisor\";\n\nconst HAS_REFRESH_BUTTON = [\"store\", \"snapshots\"];\n\n@customElement(\"hassio-pages-with-tabs\")\nclass HassioPagesWithTabs extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public narrow!: boolean;\n @property() public route!: Route;\n @property() public supervisorInfo!: HassioSupervisorInfo;\n @property() public hostInfo!: HassioHostInfo;\n @property() public hassInfo!: HassioHomeAssistantInfo;\n @property() public hassOsInfo!: HassioHassOSInfo;\n\n protected render(): TemplateResult {\n const page = this._page;\n return html`\n \n \n \n \n
    Hass.io
    \n ${HAS_REFRESH_BUTTON.includes(page)\n ? html`\n \n `\n : undefined}\n
    \n \n Dashboard\n Snapshots\n Add-on store\n System\n \n
    \n \n
    \n `;\n }\n\n private handlePageSelected(ev) {\n const newPage = ev.detail.item.getAttribute(\"page-name\");\n if (newPage !== this._page) {\n navigate(this, `/hassio/${newPage}`);\n }\n\n scrollToTarget(\n this,\n // @ts-ignore\n this.shadowRoot!.querySelector(\"app-header-layout\").header.scrollTarget\n );\n }\n\n private refreshClicked() {\n if (this._page === \"snapshots\") {\n // @ts-ignore\n this.shadowRoot.querySelector(\"hassio-snapshots\").refreshData();\n } else {\n // @ts-ignore\n this.shadowRoot.querySelector(\"hassio-addon-store\").refreshData();\n }\n }\n\n private get _page() {\n return this.route.path.substr(1);\n }\n\n static get styles(): CSSResultArray {\n return [\n haStyle,\n css`\n :host {\n color: var(--primary-text-color);\n --paper-card-header-color: var(--primary-text-color);\n }\n paper-tabs {\n margin-left: 12px;\n --paper-tabs-selection-bar-color: #fff;\n text-transform: uppercase;\n }\n app-header,\n app-toolbar {\n background-color: var(--primary-color);\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-pages-with-tabs\": HassioPagesWithTabs;\n }\n}\n","/**\n * Scroll to a specific y coordinate.\n *\n * Copied from paper-scroll-header-panel.\n *\n * @method scroll\n * @param {number} top The coordinate to scroll to, along the y-axis.\n * @param {boolean} smooth true if the scroll position should be smoothly adjusted.\n */\nexport default function scrollToTarget(element, target) {\n // the scroll event will trigger _updateScrollState directly,\n // However, _updateScrollState relies on the previous `scrollTop` to update the states.\n // Calling _updateScrollState will ensure that the states are synced correctly.\n const top = 0;\n const scroller = target;\n const easingFn = function easeOutQuad(t, b, c, d) {\n /* eslint-disable no-param-reassign, space-infix-ops, no-mixed-operators */\n t /= d;\n return -c * t * (t - 2) + b;\n /* eslint-enable no-param-reassign, space-infix-ops, no-mixed-operators */\n };\n const animationId = Math.random();\n const duration = 200;\n const startTime = Date.now();\n const currentScrollTop = scroller.scrollTop;\n const deltaScrollTop = top - currentScrollTop;\n element._currentAnimationId = animationId;\n (function updateFrame() {\n const now = Date.now();\n const elapsedTime = now - startTime;\n if (elapsedTime > duration) {\n scroller.scrollTop = top;\n } else if (element._currentAnimationId === animationId) {\n scroller.scrollTop = easingFn(\n elapsedTime,\n currentScrollTop,\n deltaScrollTop,\n duration\n );\n requestAnimationFrame(updateFrame.bind(element));\n }\n }.call(element));\n}\n","import { customElement, PropertyValues, property } from \"lit-element\";\nimport { PolymerElement } from \"@polymer/polymer\";\nimport \"@polymer/paper-icon-button\";\n\nimport \"../../src/resources/ha-style\";\nimport { applyThemesOnElement } from \"../../src/common/dom/apply_themes_on_element\";\nimport { fireEvent } from \"../../src/common/dom/fire_event\";\nimport {\n HassRouterPage,\n RouterOptions,\n} from \"../../src/layouts/hass-router-page\";\nimport { HomeAssistant } from \"../../src/types\";\nimport {\n fetchHassioSupervisorInfo,\n fetchHassioHomeAssistantInfo,\n HassioSupervisorInfo,\n HassioHomeAssistantInfo,\n createHassioSession,\n HassioPanelInfo,\n} from \"../../src/data/hassio/supervisor\";\nimport {\n fetchHassioHostInfo,\n fetchHassioHassOsInfo,\n HassioHostInfo,\n HassioHassOSInfo,\n} from \"../../src/data/hassio/host\";\nimport { fetchHassioAddonInfo } from \"../../src/data/hassio/addon\";\nimport { makeDialogManager } from \"../../src/dialogs/make-dialog-manager\";\nimport { ProvideHassLitMixin } from \"../../src/mixins/provide-hass-lit-mixin\";\n// Don't codesplit it, that way the dashboard always loads fast.\nimport \"./hassio-pages-with-tabs\";\nimport { navigate } from \"../../src/common/navigate\";\n\n// The register callback of the IronA11yKeysBehavior inside paper-icon-button\n// is not called, causing _keyBindings to be uninitiliazed for paper-icon-button,\n// causing an exception when added to DOM. When transpiled to ES5, this will\n// break the build.\ncustomElements.get(\"paper-icon-button\").prototype._keyBindings = {};\n\n@customElement(\"hassio-main\")\nclass HassioMain extends ProvideHassLitMixin(HassRouterPage) {\n @property() public hass!: HomeAssistant;\n @property() public panel!: HassioPanelInfo;\n @property() public narrow!: boolean;\n\n protected routerOptions: RouterOptions = {\n // Hass.io has a page with tabs, so we route all non-matching routes to it.\n defaultPage: \"dashboard\",\n initialLoad: () => this._fetchData(),\n showLoading: true,\n routes: {\n dashboard: {\n tag: \"hassio-pages-with-tabs\",\n cache: true,\n },\n snapshots: \"dashboard\",\n store: \"dashboard\",\n system: \"dashboard\",\n addon: {\n tag: \"hassio-addon-view\",\n load: () =>\n import(\n /* webpackChunkName: \"hassio-addon-view\" */ \"./addon-view/hassio-addon-view\"\n ),\n },\n ingress: {\n tag: \"hassio-ingress-view\",\n load: () =>\n import(\n /* webpackChunkName: \"hassio-ingress-view\" */ \"./ingress-view/hassio-ingress-view\"\n ),\n },\n },\n };\n\n @property() private _supervisorInfo: HassioSupervisorInfo;\n @property() private _hostInfo: HassioHostInfo;\n @property() private _hassOsInfo?: HassioHassOSInfo;\n @property() private _hassInfo: HassioHomeAssistantInfo;\n\n protected firstUpdated(changedProps: PropertyValues) {\n super.firstUpdated(changedProps);\n\n applyThemesOnElement(this, this.hass.themes, this.hass.selectedTheme, true);\n this.addEventListener(\"hass-api-called\", (ev) => this._apiCalled(ev));\n // Paulus - March 17, 2019\n // We went to a single hass-toggle-menu event in HA 0.90. However, the\n // supervisor UI can also run under older versions of Home Assistant.\n // So here we are going to translate toggle events into the appropriate\n // open and close events. These events are a no-op in newer versions of\n // Home Assistant.\n this.addEventListener(\"hass-toggle-menu\", () => {\n fireEvent(\n (window.parent as any).customPanel,\n // @ts-ignore\n this.hass.dockedSidebar ? \"hass-close-menu\" : \"hass-open-menu\"\n );\n });\n // Paulus - March 19, 2019\n // We changed the navigate event to fire directly on the window, as that's\n // where we are listening for it. However, the older panel_custom will\n // listen on this element for navigation events, so we need to forward them.\n window.addEventListener(\"location-changed\", (ev) =>\n // @ts-ignore\n fireEvent(this, ev.type, ev.detail, {\n bubbles: false,\n })\n );\n\n makeDialogManager(this, document.body);\n }\n\n protected updatePageEl(el) {\n // the tabs page does its own routing so needs full route.\n const route =\n el.nodeName === \"HASSIO-PAGES-WITH-TABS\" ? this.route : this.routeTail;\n\n if (\"setProperties\" in el) {\n // As long as we have Polymer pages\n (el as PolymerElement).setProperties({\n hass: this.hass,\n narrow: this.narrow,\n supervisorInfo: this._supervisorInfo,\n hostInfo: this._hostInfo,\n hassInfo: this._hassInfo,\n hassOsInfo: this._hassOsInfo,\n route,\n });\n } else {\n el.hass = this.hass;\n el.narrow = this.narrow;\n el.supervisorInfo = this._supervisorInfo;\n el.hostInfo = this._hostInfo;\n el.hassInfo = this._hassInfo;\n el.hassOsInfo = this._hassOsInfo;\n el.route = route;\n }\n }\n\n private async _fetchData() {\n if (this.panel.config && this.panel.config.ingress) {\n await this._redirectIngress(this.panel.config.ingress);\n return;\n }\n\n const [supervisorInfo, hostInfo, hassInfo] = await Promise.all([\n fetchHassioSupervisorInfo(this.hass),\n fetchHassioHostInfo(this.hass),\n fetchHassioHomeAssistantInfo(this.hass),\n ]);\n this._supervisorInfo = supervisorInfo;\n this._hostInfo = hostInfo;\n this._hassInfo = hassInfo;\n\n if (this._hostInfo.features && this._hostInfo.features.includes(\"hassos\")) {\n this._hassOsInfo = await fetchHassioHassOsInfo(this.hass);\n }\n }\n\n private async _redirectIngress(addonSlug: string) {\n try {\n const [addon] = await Promise.all([\n fetchHassioAddonInfo(this.hass, addonSlug).catch(() => {\n throw new Error(\"Failed to fetch add-on info\");\n }),\n createHassioSession(this.hass).catch(() => {\n throw new Error(\"Failed to create an ingress session\");\n }),\n ]);\n if (!addon.ingress_url) {\n alert(\"Add-on does not support Ingress\");\n return;\n }\n if (addon.state !== \"started\") {\n alert(\"Add-on is not running. Please start it first\");\n navigate(this, `/hassio/addon/${addon.slug}`, true);\n return;\n }\n location.assign(addon.ingress_url);\n // await a promise that doesn't resolve, so we show the loading screen\n // while we load the next page.\n await new Promise(() => undefined);\n } catch (err) {\n alert(\"Unable to open ingress connection\");\n }\n }\n\n private _apiCalled(ev) {\n if (!ev.detail.success) {\n return;\n }\n\n let tries = 1;\n\n const tryUpdate = () => {\n this._fetchData().catch(() => {\n tries += 1;\n setTimeout(tryUpdate, Math.min(tries, 5) * 1000);\n });\n };\n\n tryUpdate();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-main\": HassioMain;\n }\n}\n","import { HomeAssistant } from \"../../types\";\nimport { HassioResponse, hassioApiResultExtractor } from \"./common\";\n\nexport interface HassioSnapshot {\n slug: string;\n date: string;\n name: string;\n type: \"full\" | \"partial\";\n protected: boolean;\n}\n\nexport interface HassioSnapshotDetail extends HassioSnapshot {\n size: number;\n homeassistant: string;\n addons: Array<{\n slug: \"ADDON_SLUG\";\n name: \"NAME\";\n version: \"INSTALLED_VERSION\";\n size: \"SIZE_IN_MB\";\n }>;\n repositories: string[];\n folders: string[];\n}\n\nexport interface HassioFullSnapshotCreateParams {\n name: string;\n password?: string;\n}\nexport interface HassioPartialSnapshotCreateParams {\n name: string;\n folders: string[];\n addons: string[];\n password?: string;\n}\n\nexport const fetchHassioSnapshots = async (hass: HomeAssistant) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\n \"GET\",\n \"hassio/snapshots\"\n )\n ).snapshots;\n};\n\nexport const fetchHassioSnapshotInfo = async (\n hass: HomeAssistant,\n snapshot: string\n) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\n \"GET\",\n `hassio/snapshots/${snapshot}/info`\n )\n );\n};\n\nexport const reloadHassioSnapshots = async (hass: HomeAssistant) => {\n await hass.callApi>(\"POST\", `hassio/snapshots/reload`);\n};\n\nexport const createHassioFullSnapshot = async (\n hass: HomeAssistant,\n data: HassioFullSnapshotCreateParams\n) => {\n await hass.callApi>(\n \"POST\",\n `hassio/snapshots/new/full`,\n data\n );\n};\n\nexport const createHassioPartialSnapshot = async (\n hass: HomeAssistant,\n data: HassioFullSnapshotCreateParams\n) => {\n await hass.callApi>(\n \"POST\",\n `hassio/snapshots/new/partial`,\n data\n );\n};\n","import { HomeAssistant } from \"../../types\";\nimport { HassioResponse, hassioApiResultExtractor } from \"./common\";\n\nexport interface HassioHardwareAudioDevice {\n device?: string;\n name: string;\n}\n\ninterface HassioHardwareAudioList {\n audio: { input: any; output: any };\n}\n\nexport interface HassioHardwareInfo {\n serial: string[];\n input: string[];\n disk: string[];\n gpio: string[];\n audio: object;\n}\n\nexport const fetchHassioHardwareAudio = async (hass: HomeAssistant) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\n \"GET\",\n \"hassio/hardware/audio\"\n )\n );\n};\n\nexport const fetchHassioHardwareInfo = async (hass: HomeAssistant) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\n \"GET\",\n \"hassio/hardware/info\"\n )\n );\n};\n","import { fireEvent } from \"../../../../src/common/dom/fire_event\";\n\nexport interface HassioMarkdownDialogParams {\n title: string;\n content: string;\n}\n\nexport const showHassioMarkdownDialog = (\n element: HTMLElement,\n dialogParams: HassioMarkdownDialogParams\n): void => {\n fireEvent(element, \"show-dialog\", {\n dialogTag: \"dialog-hassio-markdown\",\n dialogImport: () =>\n import(\n /* webpackChunkName: \"dialog-hassio-markdown\" */ \"./dialog-hassio-markdown\"\n ),\n dialogParams,\n });\n};\n","import { css } from \"lit-element\";\n\ninterface State {\n bold: boolean;\n italic: boolean;\n underline: boolean;\n strikethrough: boolean;\n foregroundColor: null | string;\n backgroundColor: null | string;\n}\n\nexport const ANSI_HTML_STYLE = css`\n .bold {\n font-weight: bold;\n }\n .italic {\n font-style: italic;\n }\n .underline {\n text-decoration: underline;\n }\n .strikethrough {\n text-decoration: line-through;\n }\n .underline.strikethrough {\n text-decoration: underline line-through;\n }\n .fg-red {\n color: rgb(222, 56, 43);\n }\n .fg-green {\n color: rgb(57, 181, 74);\n }\n .fg-yellow {\n color: rgb(255, 199, 6);\n }\n .fg-blue {\n color: rgb(0, 111, 184);\n }\n .fg-magenta {\n color: rgb(118, 38, 113);\n }\n .fg-cyan {\n color: rgb(44, 181, 233);\n }\n .fg-white {\n color: rgb(204, 204, 204);\n }\n .bg-black {\n background-color: rgb(0, 0, 0);\n }\n .bg-red {\n background-color: rgb(222, 56, 43);\n }\n .bg-green {\n background-color: rgb(57, 181, 74);\n }\n .bg-yellow {\n background-color: rgb(255, 199, 6);\n }\n .bg-blue {\n background-color: rgb(0, 111, 184);\n }\n .bg-magenta {\n background-color: rgb(118, 38, 113);\n }\n .bg-cyan {\n background-color: rgb(44, 181, 233);\n }\n .bg-white {\n background-color: rgb(204, 204, 204);\n }\n`;\n\nexport function parseTextToColoredPre(text) {\n const pre = document.createElement(\"pre\");\n const re = /\\033(?:\\[(.*?)[@-~]|\\].*?(?:\\007|\\033\\\\))/g;\n let i = 0;\n\n const state: State = {\n bold: false,\n italic: false,\n underline: false,\n strikethrough: false,\n foregroundColor: null,\n backgroundColor: null,\n };\n\n const addSpan = (content) => {\n const span = document.createElement(\"span\");\n if (state.bold) {\n span.classList.add(\"bold\");\n }\n if (state.italic) {\n span.classList.add(\"italic\");\n }\n if (state.underline) {\n span.classList.add(\"underline\");\n }\n if (state.strikethrough) {\n span.classList.add(\"strikethrough\");\n }\n if (state.foregroundColor !== null) {\n span.classList.add(`fg-${state.foregroundColor}`);\n }\n if (state.backgroundColor !== null) {\n span.classList.add(`bg-${state.backgroundColor}`);\n }\n span.appendChild(document.createTextNode(content));\n pre.appendChild(span);\n };\n\n /* eslint-disable no-cond-assign */\n let match;\n // tslint:disable-next-line\n while ((match = re.exec(text)) !== null) {\n const j = match!.index;\n addSpan(text.substring(i, j));\n i = j + match[0].length;\n\n if (match[1] === undefined) {\n continue;\n }\n\n match[1].split(\";\").forEach((colorCode: string) => {\n switch (parseInt(colorCode, 10)) {\n case 0:\n // reset\n state.bold = false;\n state.italic = false;\n state.underline = false;\n state.strikethrough = false;\n state.foregroundColor = null;\n state.backgroundColor = null;\n break;\n case 1:\n state.bold = true;\n break;\n case 3:\n state.italic = true;\n break;\n case 4:\n state.underline = true;\n break;\n case 9:\n state.strikethrough = true;\n break;\n case 22:\n state.bold = false;\n break;\n case 23:\n state.italic = false;\n break;\n case 24:\n state.underline = false;\n break;\n case 29:\n state.strikethrough = false;\n break;\n case 30:\n // foreground black\n state.foregroundColor = null;\n break;\n case 31:\n state.foregroundColor = \"red\";\n break;\n case 32:\n state.foregroundColor = \"green\";\n break;\n case 33:\n state.foregroundColor = \"yellow\";\n break;\n case 34:\n state.foregroundColor = \"blue\";\n break;\n case 35:\n state.foregroundColor = \"magenta\";\n break;\n case 36:\n state.foregroundColor = \"cyan\";\n break;\n case 37:\n state.foregroundColor = \"white\";\n break;\n case 39:\n // foreground reset\n state.foregroundColor = null;\n break;\n case 40:\n state.backgroundColor = \"black\";\n break;\n case 41:\n state.backgroundColor = \"red\";\n break;\n case 42:\n state.backgroundColor = \"green\";\n break;\n case 43:\n state.backgroundColor = \"yellow\";\n break;\n case 44:\n state.backgroundColor = \"blue\";\n break;\n case 45:\n state.backgroundColor = \"magenta\";\n break;\n case 46:\n state.backgroundColor = \"cyan\";\n break;\n case 47:\n state.backgroundColor = \"white\";\n break;\n case 49:\n // background reset\n state.backgroundColor = null;\n break;\n }\n });\n }\n addSpan(text.substring(i));\n\n return pre;\n}\n","import { css } from \"lit-element\";\n\nconst documentContainer = document.createElement(\"template\");\ndocumentContainer.setAttribute(\"style\", \"display: none;\");\n\nexport const hassioStyle = css`\n .card-group {\n margin-top: 24px;\n }\n .card-group .title {\n color: var(--primary-text-color);\n font-size: 2em;\n padding-left: 8px;\n margin-bottom: 8px;\n }\n .card-group .description {\n font-size: 0.5em;\n font-weight: 500;\n margin-top: 4px;\n }\n .card-group paper-card {\n --card-group-columns: 4;\n width: calc(\n (100% - 12px * var(--card-group-columns)) / var(--card-group-columns)\n );\n margin: 4px;\n vertical-align: top;\n }\n @media screen and (max-width: 1200px) and (min-width: 901px) {\n .card-group paper-card {\n --card-group-columns: 3;\n }\n }\n @media screen and (max-width: 900px) and (min-width: 601px) {\n .card-group paper-card {\n --card-group-columns: 2;\n }\n }\n @media screen and (max-width: 600px) and (min-width: 0) {\n .card-group paper-card {\n width: 100%;\n margin: 4px 0;\n }\n .content {\n padding: 0;\n }\n }\n ha-call-api-button {\n font-weight: 500;\n color: var(--primary-color);\n }\n .error {\n color: var(--google-red-500);\n margin-top: 16px;\n }\n`;\n\ndocumentContainer.innerHTML = `\n \n`;\n\ndocument.head.appendChild(documentContainer.content);\n","// Polymer legacy event helpers used courtesy of the Polymer project.\n//\n// Copyright (c) 2017 The Polymer Authors. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\ndeclare global {\n // tslint:disable-next-line\n interface HASSDomEvents {}\n}\n\nexport type ValidHassDomEvent = keyof HASSDomEvents;\n\nexport interface HASSDomEvent extends Event {\n detail: T;\n}\n\n/**\n * Dispatches a custom event with an optional detail value.\n *\n * @param {string} type Name of event type.\n * @param {*=} detail Detail value containing event-specific\n * payload.\n * @param {{ bubbles: (boolean|undefined),\n * cancelable: (boolean|undefined),\n * composed: (boolean|undefined) }=}\n * options Object specifying options. These may include:\n * `bubbles` (boolean, defaults to `true`),\n * `cancelable` (boolean, defaults to false), and\n * `node` on which to fire the event (HTMLElement, defaults to `this`).\n * @return {Event} The new event that was fired.\n */\nexport const fireEvent = (\n node: HTMLElement | Window,\n type: HassEvent,\n detail?: HASSDomEvents[HassEvent],\n options?: {\n bubbles?: boolean;\n cancelable?: boolean;\n composed?: boolean;\n }\n) => {\n options = options || {};\n // @ts-ignore\n detail = detail === null || detail === undefined ? {} : detail;\n const event = new Event(type, {\n bubbles: options.bubbles === undefined ? true : options.bubbles,\n cancelable: Boolean(options.cancelable),\n composed: options.composed === undefined ? true : options.composed,\n });\n (event as any).detail = detail;\n node.dispatchEvent(event);\n return event;\n};\n","import { HomeAssistant } from \"../../types\";\nimport { HassioResponse, hassioApiResultExtractor } from \"./common\";\n\nexport interface HassioAddonInfo {\n name: string;\n slug: string;\n description: string;\n repository: \"core\" | \"local\" | string;\n version: string;\n state: \"none\" | \"started\" | \"stopped\";\n installed: string | undefined;\n detached: boolean;\n available: boolean;\n build: boolean;\n url: string | null;\n icon: boolean;\n logo: boolean;\n}\n\nexport interface HassioAddonDetails extends HassioAddonInfo {\n name: string;\n slug: string;\n description: string;\n long_description: null | string;\n auto_update: boolean;\n url: null | string;\n detached: boolean;\n available: boolean;\n arch: \"armhf\" | \"aarch64\" | \"i386\" | \"amd64\";\n machine: any;\n homeassistant: string;\n last_version: string;\n boot: \"auto\" | \"manual\";\n build: boolean;\n options: object;\n network: null | object;\n network_description: null | object;\n host_network: boolean;\n host_pid: boolean;\n host_ipc: boolean;\n host_dbus: boolean;\n privileged: any;\n apparmor: \"disable\" | \"default\" | \"profile\";\n devices: string[];\n auto_uart: boolean;\n icon: boolean;\n logo: boolean;\n changelog: boolean;\n hassio_api: boolean;\n hassio_role: \"default\" | \"homeassistant\" | \"manager\" | \"admin\";\n homeassistant_api: boolean;\n auth_api: boolean;\n full_access: boolean;\n protected: boolean;\n rating: \"1-6\";\n stdin: boolean;\n webui: null | string;\n gpio: boolean;\n kernel_modules: boolean;\n devicetree: boolean;\n docker_api: boolean;\n audio: boolean;\n audio_input: null | string;\n audio_output: null | string;\n services_role: string[];\n discovery: string[];\n ip_address: string;\n ingress: boolean;\n ingress_panel: boolean;\n ingress_entry: null | string;\n ingress_url: null | string;\n}\n\nexport interface HassioAddonsInfo {\n addons: HassioAddonInfo[];\n repositories: HassioAddonRepository[];\n}\n\nexport interface HassioAddonSetSecurityParams {\n protected?: boolean;\n}\n\nexport interface HassioAddonRepository {\n slug: string;\n name: string;\n source: string;\n url: string;\n maintainer: string;\n}\n\nexport interface HassioAddonSetOptionParams {\n audio_input?: string | null;\n audio_output?: string | null;\n options?: object | null;\n boot?: \"auto\" | \"manual\";\n auto_update?: boolean;\n ingress_panel?: boolean;\n network?: object | null;\n}\n\nexport const reloadHassioAddons = async (hass: HomeAssistant) => {\n await hass.callApi>(\"POST\", `hassio/addons/reload`);\n};\n\nexport const fetchHassioAddonsInfo = async (hass: HomeAssistant) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\"GET\", `hassio/addons`)\n );\n};\n\nexport const fetchHassioAddonInfo = async (\n hass: HomeAssistant,\n slug: string\n) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\n \"GET\",\n `hassio/addons/${slug}/info`\n )\n );\n};\n\nexport const fetchHassioAddonChangelog = async (\n hass: HomeAssistant,\n slug: string\n) => {\n return hass.callApi(\"GET\", `hassio/addons/${slug}/changelog`);\n};\n\nexport const fetchHassioAddonLogs = async (\n hass: HomeAssistant,\n slug: string\n) => {\n return hass.callApi(\"GET\", `hassio/addons/${slug}/logs`);\n};\n\nexport const setHassioAddonOption = async (\n hass: HomeAssistant,\n slug: string,\n data: HassioAddonSetOptionParams\n) => {\n await hass.callApi>(\n \"POST\",\n `hassio/addons/${slug}/options`,\n data\n );\n};\n\nexport const setHassioAddonSecurity = async (\n hass: HomeAssistant,\n slug: string,\n data: HassioAddonSetSecurityParams\n) => {\n await hass.callApi>(\n \"POST\",\n `hassio/addons/${slug}/security`,\n data\n );\n};\n\nexport const installHassioAddon = async (hass: HomeAssistant, slug: string) => {\n return hass.callApi>(\n \"POST\",\n `hassio/addons/${slug}/install`\n );\n};\n\nexport const uninstallHassioAddon = async (\n hass: HomeAssistant,\n slug: string\n) => {\n await hass.callApi>(\n \"POST\",\n `hassio/addons/${slug}/uninstall`\n );\n};\n","import { fireEvent } from \"./dom/fire_event\";\n\ndeclare global {\n // for fire event\n interface HASSDomEvents {\n \"location-changed\": {\n replace: boolean;\n };\n }\n}\n\nexport const navigate = (\n _node: any,\n path: string,\n replace: boolean = false\n) => {\n if (__DEMO__) {\n if (replace) {\n history.replaceState(null, \"\", `${location.pathname}#${path}`);\n } else {\n window.location.hash = path;\n }\n } else {\n if (replace) {\n history.replaceState(null, \"\", path);\n } else {\n history.pushState(null, \"\", path);\n }\n }\n fireEvent(window, \"location-changed\", {\n replace,\n });\n};\n","import { LocalizeFunc } from \"../translations/localize\";\n\n/**\n * Calculate a string representing a date object as relative time from now.\n *\n * Example output: 5 minutes ago, in 3 days.\n */\nconst tests = [60, 60, 24, 7];\nconst langKey = [\"second\", \"minute\", \"hour\", \"day\"];\n\nexport default function relativeTime(\n dateObj: Date,\n localize: LocalizeFunc,\n options: {\n compareTime?: Date;\n includeTense?: boolean;\n } = {}\n): string {\n const compareTime = options.compareTime || new Date();\n let delta = (compareTime.getTime() - dateObj.getTime()) / 1000;\n const tense = delta >= 0 ? \"past\" : \"future\";\n delta = Math.abs(delta);\n\n let timeDesc;\n\n for (let i = 0; i < tests.length; i++) {\n if (delta < tests[i]) {\n delta = Math.floor(delta);\n timeDesc = localize(\n `ui.components.relative_time.duration.${langKey[i]}`,\n \"count\",\n delta\n );\n break;\n }\n\n delta /= tests[i];\n }\n\n if (timeDesc === undefined) {\n delta = Math.floor(delta);\n timeDesc = localize(\n \"ui.components.relative_time.duration.week\",\n \"count\",\n delta\n );\n }\n\n return options.includeTense === false\n ? timeDesc\n : localize(`ui.components.relative_time.${tense}`, \"time\", timeDesc);\n}\n","import { dedupingMixin } from \"@polymer/polymer/lib/utils/mixin\";\n/**\n * Polymer Mixin to enable a localize function powered by language/resources from hass object.\n *\n * @polymerMixin\n */\nexport default dedupingMixin(\n (superClass) =>\n class extends superClass {\n static get properties() {\n return {\n hass: Object,\n\n /**\n * Translates a string to the current `language`. Any parameters to the\n * string should be passed in order, as follows:\n * `localize(stringKey, param1Name, param1Value, param2Name, param2Value)`\n */\n localize: {\n type: Function,\n computed: \"__computeLocalize(hass.localize)\",\n },\n };\n }\n\n __computeLocalize(localize) {\n return localize;\n }\n }\n);\n","import { dom } from \"@polymer/polymer/lib/legacy/polymer.dom\";\nimport { PolymerElement } from \"@polymer/polymer/polymer-element\";\n\nimport relativeTime from \"../common/datetime/relative_time\";\n\nimport LocalizeMixin from \"../mixins/localize-mixin\";\n\n/*\n * @appliesMixin LocalizeMixin\n */\nclass HaRelativeTime extends LocalizeMixin(PolymerElement) {\n static get properties() {\n return {\n hass: Object,\n datetime: {\n type: String,\n observer: \"datetimeChanged\",\n },\n\n datetimeObj: {\n type: Object,\n observer: \"datetimeObjChanged\",\n },\n\n parsedDateTime: Object,\n };\n }\n\n constructor() {\n super();\n this.updateRelative = this.updateRelative.bind(this);\n }\n\n connectedCallback() {\n super.connectedCallback();\n // update every 60 seconds\n this.updateInterval = setInterval(this.updateRelative, 60000);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n clearInterval(this.updateInterval);\n }\n\n datetimeChanged(newVal) {\n this.parsedDateTime = newVal ? new Date(newVal) : null;\n\n this.updateRelative();\n }\n\n datetimeObjChanged(newVal) {\n this.parsedDateTime = newVal;\n\n this.updateRelative();\n }\n\n updateRelative() {\n const root = dom(this);\n if (!this.parsedDateTime) {\n root.innerHTML = this.localize(\"ui.components.relative_time.never\");\n } else {\n root.innerHTML = relativeTime(this.parsedDateTime, this.localize);\n }\n }\n}\n\ncustomElements.define(\"ha-relative-time\", HaRelativeTime);\n","import {\n LitElement,\n TemplateResult,\n html,\n CSSResult,\n css,\n property,\n customElement,\n} from \"lit-element\";\nimport \"@polymer/iron-icon/iron-icon\";\n\nimport \"../../../src/components/ha-relative-time\";\nimport { HomeAssistant } from \"../../../src/types\";\n\n@customElement(\"hassio-card-content\")\nclass HassioCardContent extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public title!: string;\n @property() public description?: string;\n @property({ type: Boolean }) public available?: boolean;\n @property() public datetime?: string;\n @property() public iconTitle?: string;\n @property() public iconClass?: string;\n @property() public icon = \"hass:help-circle\";\n\n protected render(): TemplateResult {\n return html`\n \n
    \n
    ${this.title}
    \n
    \n ${this.description}\n ${/* treat as available when undefined */\n this.available === false ? \" (Not available)\" : \"\"}\n ${this.datetime\n ? html`\n \n `\n : undefined}\n
    \n
    \n `;\n }\n\n static get styles(): CSSResult {\n return css`\n iron-icon {\n margin-right: 16px;\n margin-top: 16px;\n float: left;\n color: var(--secondary-text-color);\n }\n iron-icon.update {\n color: var(--paper-orange-400);\n }\n iron-icon.running,\n iron-icon.installed {\n color: var(--paper-green-400);\n }\n iron-icon.hassupdate,\n iron-icon.snapshot {\n color: var(--paper-item-icon-color);\n }\n iron-icon.not_available {\n color: var(--google-red-500);\n }\n .title {\n color: var(--primary-text-color);\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n .addition {\n color: var(--secondary-text-color);\n overflow: hidden;\n position: relative;\n height: 2.4em;\n line-height: 1.2em;\n }\n ha-relative-time {\n display: block;\n }\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-card-content\": HassioCardContent;\n }\n}\n","export interface HassioResponse {\n data: T;\n result: \"ok\";\n}\n\nexport const hassioApiResultExtractor = (response: HassioResponse) =>\n response.data;\n","import \"@material/mwc-button\";\nimport \"@polymer/paper-spinner/paper-spinner\";\nimport { html } from \"@polymer/polymer/lib/utils/html-tag\";\nimport { PolymerElement } from \"@polymer/polymer/polymer-element\";\n\nclass HaProgressButton extends PolymerElement {\n static get template() {\n return html`\n \n
    \n \n \n \n \n
    \n `;\n }\n\n static get properties() {\n return {\n hass: {\n type: Object,\n },\n\n progress: {\n type: Boolean,\n value: false,\n },\n\n disabled: {\n type: Boolean,\n value: false,\n },\n };\n }\n\n tempClass(className) {\n var classList = this.$.container.classList;\n classList.add(className);\n setTimeout(() => {\n classList.remove(className);\n }, 1000);\n }\n\n ready() {\n super.ready();\n this.addEventListener(\"click\", (ev) => this.buttonTapped(ev));\n }\n\n buttonTapped(ev) {\n if (this.progress) ev.stopPropagation();\n }\n\n actionSuccess() {\n this.tempClass(\"success\");\n }\n\n actionError() {\n this.tempClass(\"error\");\n }\n\n computeDisabled(disabled, progress) {\n return disabled || progress;\n }\n}\n\ncustomElements.define(\"ha-progress-button\", HaProgressButton);\n","import { LitElement, html } from \"lit-element\";\n\nimport \"./ha-progress-button\";\nimport { fireEvent } from \"../../common/dom/fire_event\";\n\nclass HaCallApiButton extends LitElement {\n render() {\n return html`\n \n `;\n }\n\n constructor() {\n super();\n this.method = \"POST\";\n this.data = {};\n this.disabled = false;\n this.progress = false;\n }\n\n static get properties() {\n return {\n hass: {},\n progress: Boolean,\n path: String,\n method: String,\n data: {},\n disabled: Boolean,\n };\n }\n\n get progressButton() {\n return this.renderRoot.querySelector(\"ha-progress-button\");\n }\n\n async _buttonTapped() {\n this.progress = true;\n const eventData = {\n method: this.method,\n path: this.path,\n data: this.data,\n };\n\n try {\n const resp = await this.hass.callApi(this.method, this.path, this.data);\n this.progress = false;\n this.progressButton.actionSuccess();\n eventData.success = true;\n eventData.response = resp;\n } catch (err) {\n this.progress = false;\n this.progressButton.actionError();\n eventData.success = false;\n eventData.response = err;\n }\n\n fireEvent(this, \"hass-api-called\", eventData);\n }\n}\n\ncustomElements.define(\"ha-call-api-button\", HaCallApiButton);\n","import { HomeAssistant, PanelInfo } from \"../../types\";\nimport { HassioResponse, hassioApiResultExtractor } from \"./common\";\n\nexport type HassioHomeAssistantInfo = any;\nexport type HassioSupervisorInfo = any;\n\nexport type HassioPanelInfo = PanelInfo<\n | undefined\n | {\n ingress?: string;\n }\n>;\n\nexport interface CreateSessionResponse {\n session: string;\n}\n\nexport interface SupervisorOptions {\n channel: \"beta\" | \"dev\" | \"stable\";\n}\n\nexport const fetchHassioHomeAssistantInfo = async (hass: HomeAssistant) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\n \"GET\",\n \"hassio/homeassistant/info\"\n )\n );\n};\n\nexport const fetchHassioSupervisorInfo = async (hass: HomeAssistant) => {\n return hassioApiResultExtractor(\n await hass.callApi>(\n \"GET\",\n \"hassio/supervisor/info\"\n )\n );\n};\n\nexport const fetchSupervisorLogs = async (hass: HomeAssistant) => {\n return hass.callApi(\"GET\", \"hassio/supervisor/logs\");\n};\n\nexport const createHassioSession = async (hass: HomeAssistant) => {\n const response = await hass.callApi>(\n \"POST\",\n \"hassio/ingress/session\"\n );\n document.cookie = `ingress_session=${response.data.session};path=/api/hassio_ingress/`;\n};\n\nexport const setSupervisorOption = async (\n hass: HomeAssistant,\n data: SupervisorOptions\n) => {\n await hass.callApi>(\n \"POST\",\n \"hassio/supervisor/options\",\n data\n );\n};\n","import {\n createCollection,\n Connection,\n HassEntity,\n} from \"home-assistant-js-websocket\";\n\nexport interface PersitentNotificationEntity extends HassEntity {\n notification_id?: string;\n created_at?: string;\n title?: string;\n message?: string;\n}\n\nexport interface PersistentNotification {\n created_at: string;\n message: string;\n notification_id: string;\n title: string;\n status: \"read\" | \"unread\";\n}\n\nconst fetchNotifications = (conn) =>\n conn.sendMessagePromise({\n type: \"persistent_notification/get\",\n });\n\nconst subscribeUpdates = (conn, store) =>\n conn.subscribeEvents(\n () => fetchNotifications(conn).then((ntf) => store.setState(ntf, true)),\n \"persistent_notifications_updated\"\n );\n\nexport const subscribeNotifications = (\n conn: Connection,\n onChange: (notifications: PersistentNotification[]) => void\n) =>\n createCollection(\n \"_ntf\",\n fetchNotifications,\n subscribeUpdates,\n conn,\n onChange\n );\n","import \"@polymer/paper-icon-button/paper-icon-button\";\nimport {\n property,\n TemplateResult,\n LitElement,\n html,\n customElement,\n CSSResult,\n css,\n} from \"lit-element\";\n\nimport { fireEvent } from \"../common/dom/fire_event\";\nimport { HomeAssistant } from \"../types\";\nimport { UnsubscribeFunc } from \"home-assistant-js-websocket\";\nimport { subscribeNotifications } from \"../data/persistent_notification\";\nimport { computeDomain } from \"../common/entity/compute_domain\";\n\n@customElement(\"ha-menu-button\")\nclass HaMenuButton extends LitElement {\n @property({ type: Boolean }) public hassio = false;\n @property() public narrow!: boolean;\n @property() public hass!: HomeAssistant;\n @property() private _hasNotifications = false;\n private _alwaysVisible = false;\n private _attachNotifOnConnect = false;\n private _unsubNotifications?: UnsubscribeFunc;\n\n public connectedCallback() {\n super.connectedCallback();\n if (this._attachNotifOnConnect) {\n this._attachNotifOnConnect = false;\n this._subscribeNotifications();\n }\n }\n\n public disconnectedCallback() {\n super.disconnectedCallback();\n if (this._unsubNotifications) {\n this._attachNotifOnConnect = true;\n this._unsubNotifications();\n this._unsubNotifications = undefined;\n }\n }\n\n protected render(): TemplateResult {\n const hasNotifications =\n (this.narrow || this.hass.dockedSidebar === \"always_hidden\") &&\n (this._hasNotifications ||\n Object.keys(this.hass.states).some(\n (entityId) => computeDomain(entityId) === \"configurator\"\n ));\n return html`\n \n ${hasNotifications\n ? html`\n
    \n `\n : \"\"}\n `;\n }\n\n protected firstUpdated(changedProps) {\n super.firstUpdated(changedProps);\n if (!this.hassio) {\n return;\n }\n // This component is used on Hass.io too, but Hass.io might run the UI\n // on older frontends too, that don't have an always visible menu button\n // in the sidebar.\n this._alwaysVisible =\n (Number((window.parent as any).frontendVersion) || 0) < 20190710;\n }\n\n protected updated(changedProps) {\n super.updated(changedProps);\n\n if (!changedProps.has(\"narrow\") && !changedProps.has(\"hass\")) {\n return;\n }\n\n const oldHass = changedProps.get(\"hass\") as HomeAssistant | undefined;\n const oldNarrow =\n changedProps.get(\"narrow\") ||\n (oldHass && oldHass.dockedSidebar === \"always_hidden\");\n const newNarrow =\n this.narrow || this.hass.dockedSidebar === \"always_hidden\";\n\n if (oldNarrow === newNarrow) {\n return;\n }\n\n this.style.visibility =\n newNarrow || this._alwaysVisible ? \"initial\" : \"hidden\";\n\n if (!newNarrow) {\n this._hasNotifications = false;\n if (this._unsubNotifications) {\n this._unsubNotifications();\n this._unsubNotifications = undefined;\n }\n return;\n }\n\n this._subscribeNotifications();\n }\n\n private _subscribeNotifications() {\n this._unsubNotifications = subscribeNotifications(\n this.hass.connection,\n (notifications) => {\n this._hasNotifications = notifications.length > 0;\n }\n );\n }\n\n private _toggleMenu(): void {\n fireEvent(this, \"hass-toggle-menu\");\n }\n\n static get styles(): CSSResult {\n return css`\n :host {\n position: relative;\n }\n .dot {\n pointer-events: none;\n position: absolute;\n background-color: var(--accent-color);\n width: 12px;\n height: 12px;\n top: 5px;\n right: 2px;\n border-radius: 50%;\n border: 2px solid var(--primary-color);\n }\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-menu-button\": HaMenuButton;\n }\n}\n","export const computeDomain = (entityId: string): string => {\n return entityId.substr(0, entityId.indexOf(\".\"));\n};\n","import { css } from \"lit-element\";\n\nexport const haStyle = css`\n :host {\n @apply --paper-font-body1;\n }\n\n app-header-layout,\n ha-app-layout {\n background-color: var(--primary-background-color);\n }\n\n app-header,\n app-toolbar {\n background-color: var(--app-header-background-color);\n font-weight: 400;\n color: var(--app-header-text-color, white);\n }\n\n app-toolbar ha-menu-button + [main-title],\n app-toolbar ha-paper-icon-button-arrow-prev + [main-title],\n app-toolbar paper-icon-button + [main-title] {\n margin-left: 24px;\n }\n\n h1 {\n @apply --paper-font-title;\n }\n\n button.link {\n background: none;\n color: inherit;\n border: none;\n padding: 0;\n font: inherit;\n text-align: left;\n text-decoration: underline;\n cursor: pointer;\n }\n\n .card-actions a {\n text-decoration: none;\n }\n\n .card-actions .warning {\n --mdc-theme-primary: var(--google-red-500);\n }\n`;\n\nexport const haStyleDialog = css`\n /* prevent clipping of positioned elements */\n paper-dialog-scrollable {\n --paper-dialog-scrollable: {\n -webkit-overflow-scrolling: auto;\n }\n }\n\n /* force smooth scrolling for iOS 10 */\n paper-dialog-scrollable.can-scroll {\n --paper-dialog-scrollable: {\n -webkit-overflow-scrolling: touch;\n }\n }\n\n .paper-dialog-buttons {\n align-items: flex-end;\n padding: 8px;\n }\n\n .paper-dialog-buttons .warning {\n --mdc-theme-primary: var(--google-red-500);\n }\n\n @media all and (max-width: 450px), all and (max-height: 500px) {\n paper-dialog,\n ha-paper-dialog {\n margin: 0;\n width: 100% !important;\n max-height: calc(100% - 64px);\n\n position: fixed !important;\n bottom: 0px;\n left: 0px;\n right: 0px;\n overflow: scroll;\n border-bottom-left-radius: 0px;\n border-bottom-right-radius: 0px;\n }\n }\n`;\n","import {\n LitElement,\n property,\n TemplateResult,\n html,\n customElement,\n css,\n CSSResult,\n} from \"lit-element\";\nimport \"../components/ha-menu-button\";\nimport \"../components/ha-paper-icon-button-arrow-prev\";\nimport { classMap } from \"lit-html/directives/class-map\";\n\n@customElement(\"hass-subpage\")\nclass HassSubpage extends LitElement {\n @property()\n public header?: string;\n @property({ type: Boolean })\n public showBackButton = true;\n @property({ type: Boolean })\n public hassio = false;\n\n protected render(): TemplateResult {\n return html`\n
    \n \n\n
    ${this.header}
    \n \n
    \n
    \n `;\n }\n\n private _backTapped(): void {\n history.back();\n }\n\n static get styles(): CSSResult {\n return css`\n :host {\n display: block;\n height: 100%;\n background-color: var(--primary-background-color);\n }\n\n .toolbar {\n display: flex;\n align-items: center;\n font-size: 20px;\n height: 64px;\n padding: 0 16px;\n pointer-events: none;\n background-color: var(--app-header-background-color);\n font-weight: 400;\n color: var(--app-header-text-color, white);\n }\n\n ha-menu-button,\n ha-paper-icon-button-arrow-prev,\n ::slotted([slot=\"toolbar-icon\"]) {\n pointer-events: auto;\n }\n\n ha-paper-icon-button-arrow-prev.hidden {\n visibility: hidden;\n }\n\n [main-title] {\n margin: 0 0 0 24px;\n line-height: 20px;\n flex-grow: 1;\n }\n\n .content {\n position: relative;\n width: 100%;\n height: calc(100% - 64px);\n overflow-y: auto;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hass-subpage\": HassSubpage;\n }\n}\n","import \"@polymer/paper-icon-button/paper-icon-button\";\nimport { Constructor } from \"../types\";\n// Not duplicate, this is for typing.\n// tslint:disable-next-line\nimport { PaperIconButtonElement } from \"@polymer/paper-icon-button/paper-icon-button\";\n\nconst paperIconButtonClass = customElements.get(\n \"paper-icon-button\"\n) as Constructor;\n\nexport class HaPaperIconButtonArrowPrev extends paperIconButtonClass {\n public hassio?: boolean;\n\n public connectedCallback() {\n super.connectedCallback();\n\n // wait to check for direction since otherwise direction is wrong even though top level is RTL\n setTimeout(() => {\n this.icon =\n window.getComputedStyle(this).direction === \"ltr\"\n ? this.hassio\n ? \"hassio:arrow-left\"\n : \"hass:arrow-left\"\n : this.hassio\n ? \"hassio:arrow-right\"\n : \"hass:arrow-right\";\n }, 100);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-paper-icon-button-arrow-prev\": HaPaperIconButtonArrowPrev;\n }\n}\n\ncustomElements.define(\n \"ha-paper-icon-button-arrow-prev\",\n HaPaperIconButtonArrowPrev\n);\n","import \"@polymer/app-layout/app-toolbar/app-toolbar\";\nimport \"@polymer/paper-spinner/paper-spinner-lite\";\nimport {\n LitElement,\n TemplateResult,\n html,\n CSSResultArray,\n css,\n customElement,\n property,\n} from \"lit-element\";\nimport \"../components/ha-menu-button\";\nimport \"../components/ha-paper-icon-button-arrow-prev\";\nimport { haStyle } from \"../resources/styles\";\nimport { HomeAssistant } from \"../types\";\n\n@customElement(\"hass-loading-screen\")\nclass HassLoadingScreen extends LitElement {\n @property({ type: Boolean }) public rootnav? = false;\n @property() public hass?: HomeAssistant;\n @property() public narrow?: boolean;\n\n protected render(): TemplateResult {\n return html`\n \n ${this.rootnav\n ? html`\n \n `\n : html`\n \n `}\n \n
    \n \n
    \n `;\n }\n\n private _handleBack() {\n history.back();\n }\n\n static get styles(): CSSResultArray {\n return [\n haStyle,\n css`\n .content {\n height: calc(100% - 64px);\n display: flex;\n align-items: center;\n justify-content: center;\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hass-loading-screen\": HassLoadingScreen;\n }\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/hassio/api/panel/chunk.af7784dbf07df8e24819.js b/hassio/api/panel/chunk.af7784dbf07df8e24819.js deleted file mode 100644 index 2bd7e2dab..000000000 --- a/hassio/api/panel/chunk.af7784dbf07df8e24819.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see chunk.af7784dbf07df8e24819.js.LICENSE */ -(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{123:function(e,t,n){"use strict";n.r(t);n(41),n(70),n(19);var r=n(4),o=n(9),i=(n(69),n(26),n(74),n(7));function a(e){return(a="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)}function s(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n \n \n \n
    [[title]]
    \n
    \n \n \n \n
    \n ']);return s=function(){return e},e}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function c(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function d(e){var t,n=y(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var r={kind:"field"===e.kind?"field":"method",key:n,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(r.decorators=e.decorators),"field"===e.kind&&(r.initializer=e.value),r}function u(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function f(e){return e.decorators&&e.decorators.length}function h(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function m(e,t){var n=e[t];if(void 0!==n&&"function"!=typeof n)throw new TypeError("Expected '"+t+"' to be a function");return n}function y(e){var t=function(e,t){if("object"!==a(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==a(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===a(t)?t:String(t)}!function(e,t,n,r){var o=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(n){t.forEach(function(t){t.kind===n&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var n=e.prototype;["method","field"].forEach(function(r){t.forEach(function(t){var o=t.placement;if(t.kind===r&&("static"===o||"prototype"===o)){var i="static"===o?e:n;this.defineClassElement(i,t)}},this)},this)},defineClassElement:function(e,t){var n=t.descriptor;if("field"===t.kind){var r=t.initializer;n={enumerable:n.enumerable,writable:n.writable,configurable:n.configurable,value:void 0===r?void 0:r.call(e)}}Object.defineProperty(e,t.key,n)},decorateClass:function(e,t){var n=[],r=[],o={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,o)},this),e.forEach(function(e){if(!f(e))return n.push(e);var t=this.decorateElement(e,o);n.push(t.element),n.push.apply(n,t.extras),r.push.apply(r,t.finishers)},this),!t)return{elements:n,finishers:r};var i=this.decorateConstructor(n,t);return r.push.apply(r,i.finishers),i.finishers=r,i},addElementPlacement:function(e,t,n){var r=t[e.placement];if(!n&&-1!==r.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");r.push(e.key)},decorateElement:function(e,t){for(var n=[],r=[],o=e.decorators,i=o.length-1;i>=0;i--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),l=this.toElementFinisherExtras((0,o[i])(s)||s);e=l.element,this.addElementPlacement(e,t),l.finisher&&r.push(l.finisher);var c=l.extras;if(c){for(var p=0;p=0;r--){var o=this.fromClassDescriptor(e),i=this.toClassDescriptor((0,t[r])(o)||o);if(void 0!==i.finisher&&n.push(i.finisher),void 0!==i.elements){e=i.elements;for(var a=0;a=0?t:null}:null}),e._resize();for(var t=document.createTreeWalker(e,1,null,!1);t.nextNode();){var n=t.currentNode;"A"===n.tagName&&n.host!==document.location.host?n.target="_blank":"IMG"===n.tagName&&n.addEventListener("load",e._resize)}}else 2===e._scriptLoaded&&(e.innerText=e.content)}))}}])&&a(i.prototype,f),h&&a(i,h),t}();customElements.define("ha-markdown",f)},70:function(e,t,n){"use strict";n(3),n(10),n(11);var r=n(44),o=n(5),i=n(4);function a(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n\n
    \n \n
    \n']);return a=function(){return e},e}Object(o.a)({_template:Object(i.a)(a()),is:"paper-dialog-scrollable",properties:{dialogElement:{type:Object}},get scrollTarget(){return this.$.scrollable},ready:function(){this._ensureTarget(),this.classList.add("no-padding")},attached:function(){this._ensureTarget(),requestAnimationFrame(this.updateScrollState.bind(this))},updateScrollState:function(){this.toggleClass("is-scrolled",this.scrollTarget.scrollTop>0),this.toggleClass("can-scroll",this.scrollTarget.offsetHeight=this.scrollTarget.scrollHeight)},_ensureTarget:function(){this.dialogElement=this.dialogElement||this.parentElement,this.dialogElement&&this.dialogElement.behaviors&&this.dialogElement.behaviors.indexOf(r.b)>=0?(this.dialogElement.sizingTarget=this.scrollTarget,this.scrollTarget.classList.remove("fit")):this.dialogElement&&this.scrollTarget.classList.add("fit")}})},74:function(e,t,n){"use strict";n(3),n(10),n(11),n(30),n(40);var r=document.createElement("template");r.setAttribute("style","display: none;"),r.innerHTML='\n \n',document.head.appendChild(r.content);var o=n(80),i=n(44),a=n(5),s=n(4);function l(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n \n']);return l=function(){return e},e}Object(a.a)({_template:Object(s.a)(l()),is:"paper-dialog",behaviors:[i.a,o.a],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_renderOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderClosed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimationFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderClosed()}});var c=n(60),p=n(6),d=n(68),u={getTabbableNodes:function(e){var t=[];return this._collectTabbableNodes(e,t)?d.a._sortByTabIndex(t):t},_collectTabbableNodes:function(e,t){if(e.nodeType!==Node.ELEMENT_NODE||!d.a._isVisible(e))return!1;var n,r=e,o=d.a._normalizedTabIndex(r),i=o>0;o>=0&&t.push(r),n="content"===r.localName||"slot"===r.localName?Object(p.a)(r).getDistributedNodes():Object(p.a)(r.shadowRoot||r.root||r).children;for(var a=0;a\n ha-paper-dialog {\n min-width: 350px;\n font-size: 14px;\n border-radius: 2px;\n }\n app-toolbar {\n margin: 0;\n padding: 0 16px;\n color: var(--primary-text-color);\n background-color: var(--secondary-background-color);\n }\n app-toolbar [main-title] {\n margin-left: 16px;\n }\n paper-checkbox {\n display: block;\n margin: 4px;\n }\n @media all and (max-width: 450px), all and (max-height: 500px) {\n ha-paper-dialog {\n max-height: 100%;\n }\n ha-paper-dialog::before {\n content: \"\";\n position: fixed;\n z-index: -1;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n background-color: inherit;\n }\n app-toolbar {\n color: var(--text-primary-color);\n background-color: var(--primary-color);\n }\n }\n \n \n \n \n
    [[title]]
    \n
    \n \n \n \n
    \n `;\n }\n\n static get properties() {\n return {\n title: String,\n content: String,\n };\n }\n\n public showDialog(params) {\n this.setProperties(params);\n (this.$.dialog as PaperDialogElement).open();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"dialog-hassio-markdown\": HassioMarkdownDialog;\n }\n}\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\n\nimport {IronOverlayBehavior} from '@polymer/iron-overlay-behavior/iron-overlay-behavior.js';\nimport {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js';\n\n/**\n Use `Polymer.PaperDialogBehavior` and `paper-dialog-shared-styles.html` to\n implement a Material Design dialog.\n\n For example, if `` implements this behavior:\n\n \n

    Header

    \n
    Dialog body
    \n
    \n Cancel\n Accept\n
    \n
    \n\n `paper-dialog-shared-styles.html` provide styles for a header, content area,\n and an action area for buttons. Use the `

    ` tag for the header and the\n `buttons` class for the action area. You can use the `paper-dialog-scrollable`\n element (in its own repository) if you need a scrolling content area.\n\n Use the `dialog-dismiss` and `dialog-confirm` attributes on interactive\n controls to close the dialog. If the user dismisses the dialog with\n `dialog-confirm`, the `closingReason` will update to include `confirmed:\n true`.\n\n ### Accessibility\n\n This element has `role=\"dialog\"` by default. Depending on the context, it may\n be more appropriate to override this attribute with `role=\"alertdialog\"`.\n\n If `modal` is set, the element will prevent the focus from exiting the\n element. It will also ensure that focus remains in the dialog.\n\n @hero hero.svg\n @demo demo/index.html\n @polymerBehavior PaperDialogBehavior\n */\nexport const PaperDialogBehaviorImpl = {\n\n hostAttributes: {'role': 'dialog', 'tabindex': '-1'},\n\n properties: {\n\n /**\n * If `modal` is true, this implies `no-cancel-on-outside-click`,\n * `no-cancel-on-esc-key` and `with-backdrop`.\n */\n modal: {type: Boolean, value: false},\n\n __readied: {type: Boolean, value: false}\n\n },\n\n observers: ['_modalChanged(modal, __readied)'],\n\n listeners: {'tap': '_onDialogClick'},\n\n /**\n * @return {void}\n */\n ready: function() {\n // Only now these properties can be read.\n this.__prevNoCancelOnOutsideClick = this.noCancelOnOutsideClick;\n this.__prevNoCancelOnEscKey = this.noCancelOnEscKey;\n this.__prevWithBackdrop = this.withBackdrop;\n this.__readied = true;\n },\n\n _modalChanged: function(modal, readied) {\n // modal implies noCancelOnOutsideClick, noCancelOnEscKey and withBackdrop.\n // We need to wait for the element to be ready before we can read the\n // properties values.\n if (!readied) {\n return;\n }\n\n if (modal) {\n this.__prevNoCancelOnOutsideClick = this.noCancelOnOutsideClick;\n this.__prevNoCancelOnEscKey = this.noCancelOnEscKey;\n this.__prevWithBackdrop = this.withBackdrop;\n this.noCancelOnOutsideClick = true;\n this.noCancelOnEscKey = true;\n this.withBackdrop = true;\n } else {\n // If the value was changed to false, let it false.\n this.noCancelOnOutsideClick =\n this.noCancelOnOutsideClick && this.__prevNoCancelOnOutsideClick;\n this.noCancelOnEscKey =\n this.noCancelOnEscKey && this.__prevNoCancelOnEscKey;\n this.withBackdrop = this.withBackdrop && this.__prevWithBackdrop;\n }\n },\n\n _updateClosingReasonConfirmed: function(confirmed) {\n this.closingReason = this.closingReason || {};\n this.closingReason.confirmed = confirmed;\n },\n\n /**\n * Will dismiss the dialog if user clicked on an element with dialog-dismiss\n * or dialog-confirm attribute.\n */\n _onDialogClick: function(event) {\n // Search for the element with dialog-confirm or dialog-dismiss,\n // from the root target until this (excluded).\n var path = dom(event).path;\n for (var i = 0, l = path.indexOf(this); i < l; i++) {\n var target = path[i];\n if (target.hasAttribute &&\n (target.hasAttribute('dialog-dismiss') ||\n target.hasAttribute('dialog-confirm'))) {\n this._updateClosingReasonConfirmed(\n target.hasAttribute('dialog-confirm'));\n this.close();\n event.stopPropagation();\n break;\n }\n }\n }\n\n};\n\n/** @polymerBehavior */\nexport const PaperDialogBehavior =\n [IronOverlayBehavior, PaperDialogBehaviorImpl];\n","import { PolymerElement } from \"@polymer/polymer/polymer-element\";\nimport { EventsMixin } from \"../mixins/events-mixin\";\n\nlet loaded = null;\n\n/**\n * White list allowed svg tag.\n * Only put in the tag used in QR code, can be extend in future.\n */\nconst svgWhiteList = [\"svg\", \"path\"];\n\n/*\n * @appliesMixin EventsMixin\n */\nclass HaMarkdown extends EventsMixin(PolymerElement) {\n static get properties() {\n return {\n content: {\n type: String,\n observer: \"_render\",\n },\n allowSvg: {\n type: Boolean,\n value: false,\n },\n };\n }\n\n connectedCallback() {\n super.connectedCallback();\n // 0 = not loaded, 1 = success, 2 = error\n this._scriptLoaded = 0;\n this._renderScheduled = false;\n this._resize = () => this.fire(\"iron-resize\");\n\n if (!loaded) {\n loaded = import(/* webpackChunkName: \"load_markdown\" */ \"../resources/load_markdown\");\n }\n loaded\n .then(\n ({ marked, filterXSS }) => {\n this.marked = marked;\n this.filterXSS = filterXSS;\n this._scriptLoaded = 1;\n },\n () => {\n this._scriptLoaded = 2;\n }\n )\n .then(() => this._render());\n }\n\n _render() {\n if (this._scriptLoaded === 0 || this._renderScheduled) return;\n\n this._renderScheduled = true;\n\n // debounce it to next microtask.\n Promise.resolve().then(() => {\n this._renderScheduled = false;\n\n if (this._scriptLoaded === 1) {\n this.innerHTML = this.filterXSS(\n this.marked(this.content, {\n gfm: true,\n tables: true,\n breaks: true,\n }),\n {\n onIgnoreTag: this.allowSvg\n ? (tag, html) => (svgWhiteList.indexOf(tag) >= 0 ? html : null)\n : null,\n }\n );\n this._resize();\n\n const walker = document.createTreeWalker(\n this,\n 1 /* SHOW_ELEMENT */,\n null,\n false\n );\n\n while (walker.nextNode()) {\n const node = walker.currentNode;\n\n // Open external links in a new window\n if (node.tagName === \"A\" && node.host !== document.location.host) {\n node.target = \"_blank\";\n\n // Fire a resize event when images loaded to notify content resized\n } else if (node.tagName === \"IMG\") {\n node.addEventListener(\"load\", this._resize);\n }\n }\n } else if (this._scriptLoaded === 2) {\n this.innerText = this.content;\n }\n });\n }\n}\n\ncustomElements.define(\"ha-markdown\", HaMarkdown);\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/iron-flex-layout/iron-flex-layout.js';\nimport '@polymer/paper-styles/default-theme.js';\n\nimport {PaperDialogBehaviorImpl} from '@polymer/paper-dialog-behavior/paper-dialog-behavior.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\n\n/**\nMaterial design:\n[Dialogs](https://www.google.com/design/spec/components/dialogs.html)\n\n`paper-dialog-scrollable` implements a scrolling area used in a Material Design\ndialog. It shows a divider at the top and/or bottom indicating more content,\ndepending on scroll position. Use this together with elements implementing\n`Polymer.PaperDialogBehavior`.\n\n \n

    Header

    \n \n Lorem ipsum...\n \n
    \n OK\n
    \n
    \n\nIt shows a top divider after scrolling if it is not the first child in its\nparent container, indicating there is more content above. It shows a bottom\ndivider if it is scrollable and it is not the last child in its parent\ncontainer, indicating there is more content below. The bottom divider is hidden\nif it is scrolled to the bottom.\n\nIf `paper-dialog-scrollable` is not a direct child of the element implementing\n`Polymer.PaperDialogBehavior`, remember to set the `dialogElement`:\n\n \n

    Header

    \n
    \n

    Sub-header

    \n \n Lorem ipsum...\n \n
    \n
    \n OK\n
    \n
    \n\n \n\n### Styling\nThe following custom properties and mixins are available for styling:\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--paper-dialog-scrollable` | Mixin for the scrollable content | {}\n\n@group Paper Elements\n@element paper-dialog-scrollable\n@demo demo/index.html\n@hero hero.svg\n*/\nPolymer({\n _template: html`\n \n\n
    \n \n
    \n`,\n\n is: 'paper-dialog-scrollable',\n\n properties: {\n\n /**\n * The dialog element that implements `Polymer.PaperDialogBehavior`\n * containing this element.\n * @type {?Node}\n */\n dialogElement: {type: Object}\n\n },\n\n /**\n * Returns the scrolling element.\n */\n get scrollTarget() {\n return this.$.scrollable;\n },\n\n ready: function() {\n this._ensureTarget();\n this.classList.add('no-padding');\n },\n\n attached: function() {\n this._ensureTarget();\n requestAnimationFrame(this.updateScrollState.bind(this));\n },\n\n updateScrollState: function() {\n this.toggleClass('is-scrolled', this.scrollTarget.scrollTop > 0);\n this.toggleClass(\n 'can-scroll',\n this.scrollTarget.offsetHeight < this.scrollTarget.scrollHeight);\n this.toggleClass(\n 'scrolled-to-bottom',\n this.scrollTarget.scrollTop + this.scrollTarget.offsetHeight >=\n this.scrollTarget.scrollHeight);\n },\n\n _ensureTarget: function() {\n // Read parentElement instead of parentNode in order to skip shadowRoots.\n this.dialogElement = this.dialogElement || this.parentElement;\n // Check if dialog implements paper-dialog-behavior. If not, fit\n // scrollTarget to host.\n if (this.dialogElement && this.dialogElement.behaviors &&\n this.dialogElement.behaviors.indexOf(PaperDialogBehaviorImpl) >= 0) {\n this.dialogElement.sizingTarget = this.scrollTarget;\n this.scrollTarget.classList.remove('fit');\n } else if (this.dialogElement) {\n this.scrollTarget.classList.add('fit');\n }\n }\n});\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\n/*\n### Styling\n\nThe following custom properties and mixins are available for styling.\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--paper-dialog-background-color` | Dialog background color | `--primary-background-color`\n`--paper-dialog-color` | Dialog foreground color | `--primary-text-color`\n`--paper-dialog` | Mixin applied to the dialog | `{}`\n`--paper-dialog-title` | Mixin applied to the title (`

    `) element | `{}`\n`--paper-dialog-button-color` | Button area foreground color | `--default-primary-color`\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/iron-flex-layout/iron-flex-layout.js';\nimport '@polymer/paper-styles/default-theme.js';\nimport '@polymer/paper-styles/typography.js';\nimport '@polymer/paper-styles/shadow.js';\nconst $_documentContainer = document.createElement('template');\n$_documentContainer.setAttribute('style', 'display: none;');\n\n$_documentContainer.innerHTML = `\n \n`;\n\ndocument.head.appendChild($_documentContainer.content);\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/paper-dialog-behavior/paper-dialog-shared-styles.js';\n\nimport {NeonAnimationRunnerBehavior} from '@polymer/neon-animation/neon-animation-runner-behavior.js';\nimport {PaperDialogBehavior} from '@polymer/paper-dialog-behavior/paper-dialog-behavior.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\n\n/**\nMaterial design:\n[Dialogs](https://www.google.com/design/spec/components/dialogs.html)\n\n`` is a dialog with Material Design styling and optional\nanimations when it is opened or closed. It provides styles for a header, content\narea, and an action area for buttons. You can use the\n`` element (in its own repository) if you need a\nscrolling content area. To autofocus a specific child element after opening the\ndialog, give it the `autofocus` attribute. See `Polymer.PaperDialogBehavior` and\n`Polymer.IronOverlayBehavior` for specifics.\n\nFor example, the following code implements a dialog with a header, scrolling\ncontent area and buttons. Focus will be given to the `dialog-confirm` button\nwhen the dialog is opened.\n\n \n

    Header

    \n \n Lorem ipsum...\n \n
    \n Cancel\n Accept\n
    \n
    \n\n### Styling\n\nSee the docs for `Polymer.PaperDialogBehavior` for the custom properties\navailable for styling this element.\n\n### Animations\n\nSet the `entry-animation` and/or `exit-animation` attributes to add an animation\nwhen the dialog is opened or closed. See the documentation in\n[PolymerElements/neon-animation](https://github.com/PolymerElements/neon-animation)\nfor more info.\n\nFor example:\n\n \n\n \n

    Header

    \n
    Dialog body
    \n
    \n\n### Accessibility\n\nSee the docs for `Polymer.PaperDialogBehavior` for accessibility features\nimplemented by this element.\n\n@group Paper Elements\n@element paper-dialog\n@hero hero.svg\n@demo demo/index.html\n*/\nPolymer({\n _template: html`\n \n \n`,\n\n is: 'paper-dialog',\n behaviors: [PaperDialogBehavior, NeonAnimationRunnerBehavior],\n listeners: {'neon-animation-finish': '_onNeonAnimationFinish'},\n\n _renderOpened: function() {\n this.cancelAnimation();\n this.playAnimation('entry');\n },\n\n _renderClosed: function() {\n this.cancelAnimation();\n this.playAnimation('exit');\n },\n\n _onNeonAnimationFinish: function() {\n if (this.opened) {\n this._finishRenderOpened();\n } else {\n this._finishRenderClosed();\n }\n }\n});\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\n/*\n Fixes issue with not using shadow dom properly in iron-overlay-behavior/icon-focusables-helper.js\n*/\nimport { dom } from \"@polymer/polymer/lib/legacy/polymer.dom.js\";\n\nimport { IronFocusablesHelper } from \"@polymer/iron-overlay-behavior/iron-focusables-helper.js\";\n\nexport const HaIronFocusablesHelper = {\n /**\n * Returns a sorted array of tabbable nodes, including the root node.\n * It searches the tabbable nodes in the light and shadow dom of the chidren,\n * sorting the result by tabindex.\n * @param {!Node} node\n * @return {!Array}\n */\n getTabbableNodes: function(node) {\n var result = [];\n // If there is at least one element with tabindex > 0, we need to sort\n // the final array by tabindex.\n var needsSortByTabIndex = this._collectTabbableNodes(node, result);\n if (needsSortByTabIndex) {\n return IronFocusablesHelper._sortByTabIndex(result);\n }\n return result;\n },\n\n /**\n * Searches for nodes that are tabbable and adds them to the `result` array.\n * Returns if the `result` array needs to be sorted by tabindex.\n * @param {!Node} node The starting point for the search; added to `result`\n * if tabbable.\n * @param {!Array} result\n * @return {boolean}\n * @private\n */\n _collectTabbableNodes: function(node, result) {\n // If not an element or not visible, no need to explore children.\n if (\n node.nodeType !== Node.ELEMENT_NODE ||\n !IronFocusablesHelper._isVisible(node)\n ) {\n return false;\n }\n var element = /** @type {!HTMLElement} */ (node);\n var tabIndex = IronFocusablesHelper._normalizedTabIndex(element);\n var needsSort = tabIndex > 0;\n if (tabIndex >= 0) {\n result.push(element);\n }\n\n // In ShadowDOM v1, tab order is affected by the order of distrubution.\n // E.g. getTabbableNodes(#root) in ShadowDOM v1 should return [#A, #B];\n // in ShadowDOM v0 tab order is not affected by the distrubution order,\n // in fact getTabbableNodes(#root) returns [#B, #A].\n //
    \n // \n // \n // \n // \n // \n // \n //
    \n // TODO(valdrin) support ShadowDOM v1 when upgrading to Polymer v2.0.\n var children;\n if (element.localName === \"content\" || element.localName === \"slot\") {\n children = dom(element).getDistributedNodes();\n } else {\n // /////////////////////////\n // Use shadow root if possible, will check for distributed nodes.\n // THIS IS THE CHANGED LINE\n children = dom(element.shadowRoot || element.root || element).children;\n // /////////////////////////\n }\n for (var i = 0; i < children.length; i++) {\n // Ensure method is always invoked to collect tabbable children.\n needsSort = this._collectTabbableNodes(children[i], result) || needsSort;\n }\n return needsSort;\n },\n};\n","import \"@polymer/paper-dialog/paper-dialog\";\nimport { mixinBehaviors } from \"@polymer/polymer/lib/legacy/class\";\nimport { HaIronFocusablesHelper } from \"./ha-iron-focusables-helper.js\";\n// tslint:disable-next-line\nimport { PaperDialogElement } from \"@polymer/paper-dialog/paper-dialog\";\n\nconst paperDialogClass = customElements.get(\"paper-dialog\");\n\n// behavior that will override existing iron-overlay-behavior and call the fixed implementation\nconst haTabFixBehaviorImpl = {\n get _focusableNodes() {\n return HaIronFocusablesHelper.getTabbableNodes(this);\n },\n};\n\n// paper-dialog that uses the haTabFixBehaviorImpl behvaior\n// export class HaPaperDialog extends paperDialogClass {}\n// @ts-ignore\nexport class HaPaperDialog\n extends mixinBehaviors([haTabFixBehaviorImpl], paperDialogClass)\n implements PaperDialogElement {}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-paper-dialog\": HaPaperDialog;\n }\n}\ncustomElements.define(\"ha-paper-dialog\", HaPaperDialog);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/hassio/api/panel/chunk.b15efbd4fb2c8cac0ad4.js b/hassio/api/panel/chunk.b15efbd4fb2c8cac0ad4.js deleted file mode 100644 index 9fc7938a5..000000000 --- a/hassio/api/panel/chunk.b15efbd4fb2c8cac0ad4.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see chunk.b15efbd4fb2c8cac0ad4.js.LICENSE */ -(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{135:function(e,t,n){"use strict";n.r(t);n(41),n(14),n(97),n(70),n(19),n(34);var o=n(4),r=n(9),i=("".concat(location.protocol,"//").concat(location.host),n(26),n(74),n(7)),a=n(43);function s(e){return(s="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)}function l(e,t,n,o,r,i,a){try{var s=e[i](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(o,r)}function c(e){return function(){var t=this,n=arguments;return new Promise(function(o,r){var i=e.apply(t,n);function a(e){l(i,o,r,a,s,"next",e)}function s(e){l(i,o,r,a,s,"throw",e)}a(void 0)})}}function d(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n \n \n \n
    [[_computeName(snapshot)]]
    \n
    \n
    \n [[_computeType(snapshot.type)]] ([[_computeSize(snapshot.size)]])
    \n [[_formatDatetime(snapshot.date)]]\n
    \n
    Home Assistant:
    \n \n Home Assistant [[snapshot.homeassistant]]\n \n \n \n \n \n
    \n \n \n Restore selected\n \n
    \n \n ']);return d=function(){return e},e}function p(e){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function u(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function f(e){var t,n=v(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var o={kind:"field"===e.kind?"field":"method",key:n,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(o.decorators=e.decorators),"field"===e.kind&&(o.initializer=e.value),o}function m(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function y(e){return e.decorators&&e.decorators.length}function g(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function b(e,t){var n=e[t];if(void 0!==n&&"function"!=typeof n)throw new TypeError("Expected '"+t+"' to be a function");return n}function v(e){var t=function(e,t){if("object"!==s(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!==s(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===s(t)?t:String(t)}!function(e,t,n,o){var r=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(n){t.forEach(function(t){t.kind===n&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var n=e.prototype;["method","field"].forEach(function(o){t.forEach(function(t){var r=t.placement;if(t.kind===o&&("static"===r||"prototype"===r)){var i="static"===r?e:n;this.defineClassElement(i,t)}},this)},this)},defineClassElement:function(e,t){var n=t.descriptor;if("field"===t.kind){var o=t.initializer;n={enumerable:n.enumerable,writable:n.writable,configurable:n.configurable,value:void 0===o?void 0:o.call(e)}}Object.defineProperty(e,t.key,n)},decorateClass:function(e,t){var n=[],o=[],r={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,r)},this),e.forEach(function(e){if(!y(e))return n.push(e);var t=this.decorateElement(e,r);n.push(t.element),n.push.apply(n,t.extras),o.push.apply(o,t.finishers)},this),!t)return{elements:n,finishers:o};var i=this.decorateConstructor(n,t);return o.push.apply(o,i.finishers),i.finishers=o,i},addElementPlacement:function(e,t,n){var o=t[e.placement];if(!n&&-1!==o.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");o.push(e.key)},decorateElement:function(e,t){for(var n=[],o=[],r=e.decorators,i=r.length-1;i>=0;i--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),l=this.toElementFinisherExtras((0,r[i])(s)||s);e=l.element,this.addElementPlacement(e,t),l.finisher&&o.push(l.finisher);var c=l.extras;if(c){for(var d=0;d=0;o--){var r=this.fromClassDescriptor(e),i=this.toClassDescriptor((0,t[o])(r)||r);if(void 0!==i.finisher&&n.push(i.finisher),void 0!==i.elements){e=i.elements;for(var a=0;a\n\n :host {\n display: block;\n @apply --layout-relative;\n }\n\n :host(.is-scrolled:not(:first-child))::before {\n content: \'\';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 1px;\n background: var(--divider-color);\n }\n\n :host(.can-scroll:not(.scrolled-to-bottom):not(:last-child))::after {\n content: \'\';\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 1px;\n background: var(--divider-color);\n }\n\n .scrollable {\n padding: 0 24px;\n\n @apply --layout-scroll;\n @apply --paper-dialog-scrollable;\n }\n\n .fit {\n @apply --layout-fit;\n }\n \n\n
    \n \n
    \n']);return a=function(){return e},e}Object(r.a)({_template:Object(i.a)(a()),is:"paper-dialog-scrollable",properties:{dialogElement:{type:Object}},get scrollTarget(){return this.$.scrollable},ready:function(){this._ensureTarget(),this.classList.add("no-padding")},attached:function(){this._ensureTarget(),requestAnimationFrame(this.updateScrollState.bind(this))},updateScrollState:function(){this.toggleClass("is-scrolled",this.scrollTarget.scrollTop>0),this.toggleClass("can-scroll",this.scrollTarget.offsetHeight=this.scrollTarget.scrollHeight)},_ensureTarget:function(){this.dialogElement=this.dialogElement||this.parentElement,this.dialogElement&&this.dialogElement.behaviors&&this.dialogElement.behaviors.indexOf(o.b)>=0?(this.dialogElement.sizingTarget=this.scrollTarget,this.scrollTarget.classList.remove("fit")):this.dialogElement&&this.scrollTarget.classList.add("fit")}})},74:function(e,t,n){"use strict";n(3),n(10),n(11),n(30),n(40);var o=document.createElement("template");o.setAttribute("style","display: none;"),o.innerHTML='\n \n',document.head.appendChild(o.content);var r=n(80),i=n(44),a=n(5),s=n(4);function l(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n \n']);return l=function(){return e},e}Object(a.a)({_template:Object(s.a)(l()),is:"paper-dialog",behaviors:[i.a,r.a],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_renderOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderClosed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimationFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderClosed()}});var c=n(60),d=n(6),p=n(68),u={getTabbableNodes:function(e){var t=[];return this._collectTabbableNodes(e,t)?p.a._sortByTabIndex(t):t},_collectTabbableNodes:function(e,t){if(e.nodeType!==Node.ELEMENT_NODE||!p.a._isVisible(e))return!1;var n,o=e,r=p.a._normalizedTabIndex(o),i=r>0;r>=0&&t.push(o),n="content"===o.localName||"slot"===o.localName?Object(d.a)(o).getDistributedNodes():Object(d.a)(o.shadowRoot||o.root||o).children;for(var a=0;a => hass.callWS({ type: \"auth/sign_path\", path });\n\nexport const fetchAuthProviders = () =>\n fetch(\"/auth/providers\", {\n credentials: \"same-origin\",\n });\n","import \"@polymer/app-layout/app-toolbar/app-toolbar\";\nimport \"@material/mwc-button\";\nimport \"@polymer/paper-checkbox/paper-checkbox\";\nimport \"@polymer/paper-dialog-scrollable/paper-dialog-scrollable\";\nimport \"@polymer/paper-icon-button/paper-icon-button\";\nimport \"@polymer/paper-input/paper-input\";\nimport { html } from \"@polymer/polymer/lib/utils/html-tag\";\nimport { PolymerElement } from \"@polymer/polymer/polymer-element\";\nimport { getSignedPath } from \"../../../../src/data/auth\";\n\nimport \"../../../../src/resources/ha-style\";\nimport \"../../../../src/components/dialog/ha-paper-dialog\";\nimport { customElement } from \"lit-element\";\nimport { PaperDialogElement } from \"@polymer/paper-dialog\";\nimport { HassioSnapshotDialogParams } from \"./show-dialog-hassio-snapshot\";\nimport { fetchHassioSnapshotInfo } from \"../../../../src/data/hassio\";\n\nconst _computeFolders = (folders) => {\n const list: Array<{ slug: string; name: string; checked: boolean }> = [];\n if (folders.includes(\"homeassistant\")) {\n list.push({\n slug: \"homeassistant\",\n name: \"Home Assistant configuration\",\n checked: true,\n });\n }\n if (folders.includes(\"ssl\")) {\n list.push({ slug: \"ssl\", name: \"SSL\", checked: true });\n }\n if (folders.includes(\"share\")) {\n list.push({ slug: \"share\", name: \"Share\", checked: true });\n }\n if (folders.includes(\"addons/local\")) {\n list.push({ slug: \"addons/local\", name: \"Local add-ons\", checked: true });\n }\n return list;\n};\n\nconst _computeAddons = (addons) => {\n return addons.map((addon) => ({\n slug: addon.slug,\n name: addon.name,\n version: addon.version,\n checked: true,\n }));\n};\n\n@customElement(\"dialog-hassio-snapshot\")\nclass HassioSnapshotDialog extends PolymerElement {\n // Commented out because it breaks Polymer! Kept around for when we migrate\n // to Lit. Now just putting ts-ignore everywhere because we need this out.\n // Sorry future developer.\n // public hass!: HomeAssistant;\n // protected error?: string;\n // private snapshot?: any;\n // private dialogParams?: HassioSnapshotDialogParams;\n // private restoreHass!: boolean;\n // private snapshotPassword!: string;\n\n static get template() {\n return html`\n \n \n \n \n
    [[_computeName(snapshot)]]
    \n
    \n
    \n [[_computeType(snapshot.type)]] ([[_computeSize(snapshot.size)]])
    \n [[_formatDatetime(snapshot.date)]]\n
    \n
    Home Assistant:
    \n \n Home Assistant [[snapshot.homeassistant]]\n \n \n \n \n \n
    \n \n \n Restore selected\n \n
    \n \n `;\n }\n\n static get properties() {\n return {\n hass: Object,\n dialogParams: Object,\n snapshot: Object,\n _folders: Object,\n _addons: Object,\n restoreHass: {\n type: Boolean,\n value: true,\n },\n snapshotPassword: String,\n error: String,\n };\n }\n\n public async showDialog(params: HassioSnapshotDialogParams) {\n // @ts-ignore\n const snapshot = await fetchHassioSnapshotInfo(this.hass, params.slug);\n this.setProperties({\n dialogParams: params,\n snapshot,\n _folders: _computeFolders(snapshot.folders),\n _addons: _computeAddons(snapshot.addons),\n });\n (this.$.dialog as PaperDialogElement).open();\n }\n\n protected _isFullSnapshot(type) {\n return type === \"full\";\n }\n\n protected _partialRestoreClicked() {\n if (!confirm(\"Are you sure you want to restore this snapshot?\")) {\n return;\n }\n // @ts-ignore\n const addons = this._addons\n .filter((addon) => addon.checked)\n .map((addon) => addon.slug);\n // @ts-ignore\n const folders = this._folders\n .filter((folder) => folder.checked)\n .map((folder) => folder.slug);\n\n const data = {\n // @ts-ignore\n homeassistant: this.restoreHass,\n addons,\n folders,\n };\n // @ts-ignore\n if (this.snapshot.protected) {\n // @ts-ignore\n data.password = this.snapshotPassword;\n }\n\n // @ts-ignore\n this.hass\n .callApi(\n \"POST\",\n // @ts-ignore\n `hassio/snapshots/${this.dialogParams!.slug}/restore/partial`,\n data\n )\n .then(\n () => {\n alert(\"Snapshot restored!\");\n (this.$.dialog as PaperDialogElement).close();\n },\n (error) => {\n // @ts-ignore\n this.error = error.body.message;\n }\n );\n }\n\n protected _fullRestoreClicked() {\n if (!confirm(\"Are you sure you want to restore this snapshot?\")) {\n return;\n }\n // @ts-ignore\n const data = this.snapshot.protected\n ? {\n password:\n // @ts-ignore\n this.snapshotPassword,\n }\n : undefined;\n // @ts-ignore\n this.hass\n .callApi(\n \"POST\",\n // @ts-ignore\n `hassio/snapshots/${this.dialogParams!.slug}/restore/full`,\n data\n )\n .then(\n () => {\n alert(\"Snapshot restored!\");\n (this.$.dialog as PaperDialogElement).close();\n },\n (error) => {\n // @ts-ignore\n this.error = error.body.message;\n }\n );\n }\n\n protected _deleteClicked() {\n if (!confirm(\"Are you sure you want to delete this snapshot?\")) {\n return;\n }\n // @ts-ignore\n this.hass\n // @ts-ignore\n .callApi(\"POST\", `hassio/snapshots/${this.dialogParams!.slug}/remove`)\n .then(\n () => {\n (this.$.dialog as PaperDialogElement).close();\n // @ts-ignore\n this.dialogParams!.onDelete();\n },\n (error) => {\n // @ts-ignore\n this.error = error.body.message;\n }\n );\n }\n\n protected async _downloadClicked() {\n let signedPath;\n try {\n signedPath = await getSignedPath(\n // @ts-ignore\n this.hass,\n // @ts-ignore\n `/api/hassio/snapshots/${this.dialogParams!.slug}/download`\n );\n } catch (err) {\n alert(`Error: ${err.message}`);\n return;\n }\n // @ts-ignore\n const name = this._computeName(this.snapshot).replace(/[^a-z0-9]+/gi, \"_\");\n const a = document.createElement(\"a\");\n a.href = signedPath.path;\n a.download = `Hass_io_${name}.tar`;\n this.$.dialog.appendChild(a);\n a.click();\n this.$.dialog.removeChild(a);\n }\n\n protected _computeName(snapshot) {\n return snapshot ? snapshot.name || snapshot.slug : \"Unnamed snapshot\";\n }\n\n protected _computeType(type) {\n return type === \"full\" ? \"Full snapshot\" : \"Partial snapshot\";\n }\n\n protected _computeSize(size) {\n return Math.ceil(size * 10) / 10 + \" MB\";\n }\n\n protected _sortAddons(a, b) {\n return a.name < b.name ? -1 : 1;\n }\n\n protected _formatDatetime(datetime) {\n return new Date(datetime).toLocaleDateString(navigator.language, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"2-digit\",\n });\n }\n\n protected _dialogClosed() {\n this.setProperties({\n dialogParams: undefined,\n snapshot: undefined,\n _addons: [],\n _folders: [],\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"dialog-hassio-snapshot\": HassioSnapshotDialog;\n }\n}\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\n\nimport {IronOverlayBehavior} from '@polymer/iron-overlay-behavior/iron-overlay-behavior.js';\nimport {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js';\n\n/**\n Use `Polymer.PaperDialogBehavior` and `paper-dialog-shared-styles.html` to\n implement a Material Design dialog.\n\n For example, if `` implements this behavior:\n\n \n

    Header

    \n
    Dialog body
    \n
    \n Cancel\n Accept\n
    \n
    \n\n `paper-dialog-shared-styles.html` provide styles for a header, content area,\n and an action area for buttons. Use the `

    ` tag for the header and the\n `buttons` class for the action area. You can use the `paper-dialog-scrollable`\n element (in its own repository) if you need a scrolling content area.\n\n Use the `dialog-dismiss` and `dialog-confirm` attributes on interactive\n controls to close the dialog. If the user dismisses the dialog with\n `dialog-confirm`, the `closingReason` will update to include `confirmed:\n true`.\n\n ### Accessibility\n\n This element has `role=\"dialog\"` by default. Depending on the context, it may\n be more appropriate to override this attribute with `role=\"alertdialog\"`.\n\n If `modal` is set, the element will prevent the focus from exiting the\n element. It will also ensure that focus remains in the dialog.\n\n @hero hero.svg\n @demo demo/index.html\n @polymerBehavior PaperDialogBehavior\n */\nexport const PaperDialogBehaviorImpl = {\n\n hostAttributes: {'role': 'dialog', 'tabindex': '-1'},\n\n properties: {\n\n /**\n * If `modal` is true, this implies `no-cancel-on-outside-click`,\n * `no-cancel-on-esc-key` and `with-backdrop`.\n */\n modal: {type: Boolean, value: false},\n\n __readied: {type: Boolean, value: false}\n\n },\n\n observers: ['_modalChanged(modal, __readied)'],\n\n listeners: {'tap': '_onDialogClick'},\n\n /**\n * @return {void}\n */\n ready: function() {\n // Only now these properties can be read.\n this.__prevNoCancelOnOutsideClick = this.noCancelOnOutsideClick;\n this.__prevNoCancelOnEscKey = this.noCancelOnEscKey;\n this.__prevWithBackdrop = this.withBackdrop;\n this.__readied = true;\n },\n\n _modalChanged: function(modal, readied) {\n // modal implies noCancelOnOutsideClick, noCancelOnEscKey and withBackdrop.\n // We need to wait for the element to be ready before we can read the\n // properties values.\n if (!readied) {\n return;\n }\n\n if (modal) {\n this.__prevNoCancelOnOutsideClick = this.noCancelOnOutsideClick;\n this.__prevNoCancelOnEscKey = this.noCancelOnEscKey;\n this.__prevWithBackdrop = this.withBackdrop;\n this.noCancelOnOutsideClick = true;\n this.noCancelOnEscKey = true;\n this.withBackdrop = true;\n } else {\n // If the value was changed to false, let it false.\n this.noCancelOnOutsideClick =\n this.noCancelOnOutsideClick && this.__prevNoCancelOnOutsideClick;\n this.noCancelOnEscKey =\n this.noCancelOnEscKey && this.__prevNoCancelOnEscKey;\n this.withBackdrop = this.withBackdrop && this.__prevWithBackdrop;\n }\n },\n\n _updateClosingReasonConfirmed: function(confirmed) {\n this.closingReason = this.closingReason || {};\n this.closingReason.confirmed = confirmed;\n },\n\n /**\n * Will dismiss the dialog if user clicked on an element with dialog-dismiss\n * or dialog-confirm attribute.\n */\n _onDialogClick: function(event) {\n // Search for the element with dialog-confirm or dialog-dismiss,\n // from the root target until this (excluded).\n var path = dom(event).path;\n for (var i = 0, l = path.indexOf(this); i < l; i++) {\n var target = path[i];\n if (target.hasAttribute &&\n (target.hasAttribute('dialog-dismiss') ||\n target.hasAttribute('dialog-confirm'))) {\n this._updateClosingReasonConfirmed(\n target.hasAttribute('dialog-confirm'));\n this.close();\n event.stopPropagation();\n break;\n }\n }\n }\n\n};\n\n/** @polymerBehavior */\nexport const PaperDialogBehavior =\n [IronOverlayBehavior, PaperDialogBehaviorImpl];\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/iron-flex-layout/iron-flex-layout.js';\nimport '@polymer/paper-styles/default-theme.js';\n\nimport {PaperDialogBehaviorImpl} from '@polymer/paper-dialog-behavior/paper-dialog-behavior.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\n\n/**\nMaterial design:\n[Dialogs](https://www.google.com/design/spec/components/dialogs.html)\n\n`paper-dialog-scrollable` implements a scrolling area used in a Material Design\ndialog. It shows a divider at the top and/or bottom indicating more content,\ndepending on scroll position. Use this together with elements implementing\n`Polymer.PaperDialogBehavior`.\n\n \n

    Header

    \n \n Lorem ipsum...\n \n
    \n OK\n
    \n
    \n\nIt shows a top divider after scrolling if it is not the first child in its\nparent container, indicating there is more content above. It shows a bottom\ndivider if it is scrollable and it is not the last child in its parent\ncontainer, indicating there is more content below. The bottom divider is hidden\nif it is scrolled to the bottom.\n\nIf `paper-dialog-scrollable` is not a direct child of the element implementing\n`Polymer.PaperDialogBehavior`, remember to set the `dialogElement`:\n\n \n

    Header

    \n
    \n

    Sub-header

    \n \n Lorem ipsum...\n \n
    \n
    \n OK\n
    \n
    \n\n \n\n### Styling\nThe following custom properties and mixins are available for styling:\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--paper-dialog-scrollable` | Mixin for the scrollable content | {}\n\n@group Paper Elements\n@element paper-dialog-scrollable\n@demo demo/index.html\n@hero hero.svg\n*/\nPolymer({\n _template: html`\n \n\n
    \n \n
    \n`,\n\n is: 'paper-dialog-scrollable',\n\n properties: {\n\n /**\n * The dialog element that implements `Polymer.PaperDialogBehavior`\n * containing this element.\n * @type {?Node}\n */\n dialogElement: {type: Object}\n\n },\n\n /**\n * Returns the scrolling element.\n */\n get scrollTarget() {\n return this.$.scrollable;\n },\n\n ready: function() {\n this._ensureTarget();\n this.classList.add('no-padding');\n },\n\n attached: function() {\n this._ensureTarget();\n requestAnimationFrame(this.updateScrollState.bind(this));\n },\n\n updateScrollState: function() {\n this.toggleClass('is-scrolled', this.scrollTarget.scrollTop > 0);\n this.toggleClass(\n 'can-scroll',\n this.scrollTarget.offsetHeight < this.scrollTarget.scrollHeight);\n this.toggleClass(\n 'scrolled-to-bottom',\n this.scrollTarget.scrollTop + this.scrollTarget.offsetHeight >=\n this.scrollTarget.scrollHeight);\n },\n\n _ensureTarget: function() {\n // Read parentElement instead of parentNode in order to skip shadowRoots.\n this.dialogElement = this.dialogElement || this.parentElement;\n // Check if dialog implements paper-dialog-behavior. If not, fit\n // scrollTarget to host.\n if (this.dialogElement && this.dialogElement.behaviors &&\n this.dialogElement.behaviors.indexOf(PaperDialogBehaviorImpl) >= 0) {\n this.dialogElement.sizingTarget = this.scrollTarget;\n this.scrollTarget.classList.remove('fit');\n } else if (this.dialogElement) {\n this.scrollTarget.classList.add('fit');\n }\n }\n});\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\n/*\n### Styling\n\nThe following custom properties and mixins are available for styling.\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--paper-dialog-background-color` | Dialog background color | `--primary-background-color`\n`--paper-dialog-color` | Dialog foreground color | `--primary-text-color`\n`--paper-dialog` | Mixin applied to the dialog | `{}`\n`--paper-dialog-title` | Mixin applied to the title (`

    `) element | `{}`\n`--paper-dialog-button-color` | Button area foreground color | `--default-primary-color`\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/iron-flex-layout/iron-flex-layout.js';\nimport '@polymer/paper-styles/default-theme.js';\nimport '@polymer/paper-styles/typography.js';\nimport '@polymer/paper-styles/shadow.js';\nconst $_documentContainer = document.createElement('template');\n$_documentContainer.setAttribute('style', 'display: none;');\n\n$_documentContainer.innerHTML = `\n \n`;\n\ndocument.head.appendChild($_documentContainer.content);\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/paper-dialog-behavior/paper-dialog-shared-styles.js';\n\nimport {NeonAnimationRunnerBehavior} from '@polymer/neon-animation/neon-animation-runner-behavior.js';\nimport {PaperDialogBehavior} from '@polymer/paper-dialog-behavior/paper-dialog-behavior.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\n\n/**\nMaterial design:\n[Dialogs](https://www.google.com/design/spec/components/dialogs.html)\n\n`` is a dialog with Material Design styling and optional\nanimations when it is opened or closed. It provides styles for a header, content\narea, and an action area for buttons. You can use the\n`` element (in its own repository) if you need a\nscrolling content area. To autofocus a specific child element after opening the\ndialog, give it the `autofocus` attribute. See `Polymer.PaperDialogBehavior` and\n`Polymer.IronOverlayBehavior` for specifics.\n\nFor example, the following code implements a dialog with a header, scrolling\ncontent area and buttons. Focus will be given to the `dialog-confirm` button\nwhen the dialog is opened.\n\n \n

    Header

    \n \n Lorem ipsum...\n \n
    \n Cancel\n Accept\n
    \n
    \n\n### Styling\n\nSee the docs for `Polymer.PaperDialogBehavior` for the custom properties\navailable for styling this element.\n\n### Animations\n\nSet the `entry-animation` and/or `exit-animation` attributes to add an animation\nwhen the dialog is opened or closed. See the documentation in\n[PolymerElements/neon-animation](https://github.com/PolymerElements/neon-animation)\nfor more info.\n\nFor example:\n\n \n\n \n

    Header

    \n
    Dialog body
    \n
    \n\n### Accessibility\n\nSee the docs for `Polymer.PaperDialogBehavior` for accessibility features\nimplemented by this element.\n\n@group Paper Elements\n@element paper-dialog\n@hero hero.svg\n@demo demo/index.html\n*/\nPolymer({\n _template: html`\n \n \n`,\n\n is: 'paper-dialog',\n behaviors: [PaperDialogBehavior, NeonAnimationRunnerBehavior],\n listeners: {'neon-animation-finish': '_onNeonAnimationFinish'},\n\n _renderOpened: function() {\n this.cancelAnimation();\n this.playAnimation('entry');\n },\n\n _renderClosed: function() {\n this.cancelAnimation();\n this.playAnimation('exit');\n },\n\n _onNeonAnimationFinish: function() {\n if (this.opened) {\n this._finishRenderOpened();\n } else {\n this._finishRenderClosed();\n }\n }\n});\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\n/*\n Fixes issue with not using shadow dom properly in iron-overlay-behavior/icon-focusables-helper.js\n*/\nimport { dom } from \"@polymer/polymer/lib/legacy/polymer.dom.js\";\n\nimport { IronFocusablesHelper } from \"@polymer/iron-overlay-behavior/iron-focusables-helper.js\";\n\nexport const HaIronFocusablesHelper = {\n /**\n * Returns a sorted array of tabbable nodes, including the root node.\n * It searches the tabbable nodes in the light and shadow dom of the chidren,\n * sorting the result by tabindex.\n * @param {!Node} node\n * @return {!Array}\n */\n getTabbableNodes: function(node) {\n var result = [];\n // If there is at least one element with tabindex > 0, we need to sort\n // the final array by tabindex.\n var needsSortByTabIndex = this._collectTabbableNodes(node, result);\n if (needsSortByTabIndex) {\n return IronFocusablesHelper._sortByTabIndex(result);\n }\n return result;\n },\n\n /**\n * Searches for nodes that are tabbable and adds them to the `result` array.\n * Returns if the `result` array needs to be sorted by tabindex.\n * @param {!Node} node The starting point for the search; added to `result`\n * if tabbable.\n * @param {!Array} result\n * @return {boolean}\n * @private\n */\n _collectTabbableNodes: function(node, result) {\n // If not an element or not visible, no need to explore children.\n if (\n node.nodeType !== Node.ELEMENT_NODE ||\n !IronFocusablesHelper._isVisible(node)\n ) {\n return false;\n }\n var element = /** @type {!HTMLElement} */ (node);\n var tabIndex = IronFocusablesHelper._normalizedTabIndex(element);\n var needsSort = tabIndex > 0;\n if (tabIndex >= 0) {\n result.push(element);\n }\n\n // In ShadowDOM v1, tab order is affected by the order of distrubution.\n // E.g. getTabbableNodes(#root) in ShadowDOM v1 should return [#A, #B];\n // in ShadowDOM v0 tab order is not affected by the distrubution order,\n // in fact getTabbableNodes(#root) returns [#B, #A].\n //
    \n // \n // \n // \n // \n // \n // \n //
    \n // TODO(valdrin) support ShadowDOM v1 when upgrading to Polymer v2.0.\n var children;\n if (element.localName === \"content\" || element.localName === \"slot\") {\n children = dom(element).getDistributedNodes();\n } else {\n // /////////////////////////\n // Use shadow root if possible, will check for distributed nodes.\n // THIS IS THE CHANGED LINE\n children = dom(element.shadowRoot || element.root || element).children;\n // /////////////////////////\n }\n for (var i = 0; i < children.length; i++) {\n // Ensure method is always invoked to collect tabbable children.\n needsSort = this._collectTabbableNodes(children[i], result) || needsSort;\n }\n return needsSort;\n },\n};\n","import \"@polymer/paper-dialog/paper-dialog\";\nimport { mixinBehaviors } from \"@polymer/polymer/lib/legacy/class\";\nimport { HaIronFocusablesHelper } from \"./ha-iron-focusables-helper.js\";\n// tslint:disable-next-line\nimport { PaperDialogElement } from \"@polymer/paper-dialog/paper-dialog\";\n\nconst paperDialogClass = customElements.get(\"paper-dialog\");\n\n// behavior that will override existing iron-overlay-behavior and call the fixed implementation\nconst haTabFixBehaviorImpl = {\n get _focusableNodes() {\n return HaIronFocusablesHelper.getTabbableNodes(this);\n },\n};\n\n// paper-dialog that uses the haTabFixBehaviorImpl behvaior\n// export class HaPaperDialog extends paperDialogClass {}\n// @ts-ignore\nexport class HaPaperDialog\n extends mixinBehaviors([haTabFixBehaviorImpl], paperDialogClass)\n implements PaperDialogElement {}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-paper-dialog\": HaPaperDialog;\n }\n}\ncustomElements.define(\"ha-paper-dialog\", HaPaperDialog);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/hassio/api/panel/chunk.b21a4609308c9b8ef180.js b/hassio/api/panel/chunk.b21a4609308c9b8ef180.js new file mode 100644 index 000000000..851f96bf3 --- /dev/null +++ b/hassio/api/panel/chunk.b21a4609308c9b8ef180.js @@ -0,0 +1,2 @@ +(self.webpackJsonp=self.webpackJsonp||[]).push([[4],{131:function(e,t,r){"use strict";r.r(t);r(96),r(109),r(41),r(22),r(67);var n=r(4),i=r(25),o=r(12),a=r(9),s=(r(121),r(16),r(17),r(127),r(128),r(122),r(102));function c(e){return(c="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)}function l(){var e=h(["\n :host,\n paper-card,\n paper-dropdown-menu {\n display: block;\n }\n .errors {\n color: var(--google-red-500);\n margin-bottom: 16px;\n }\n paper-item {\n width: 450px;\n }\n .card-actions {\n text-align: right;\n }\n "]);return l=function(){return e},e}function d(){var e=h(["\n ","\n "]);return d=function(){return e},e}function u(){var e=h(["\n ","\n "]);return u=function(){return e},e}function p(){var e=h(['\n
    ',"
    \n "]);return p=function(){return e},e}function f(){var e=h(['\n \n
    \n ','\n\n \n \n \n \n \n \n
    \n
    \n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var d=0;d=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a',"
    \n "]);return D=function(){return e},e}function A(){var e=T(['\n \n
    \n ',"\n \n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var d=0;d=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a bit more top margin */\n font-weight: 500;\n overflow: hidden;\n text-transform: uppercase;\n text-overflow: ellipsis;\n transition: background-color 0.3s ease-in-out;\n text-transform: var(--ha-label-badge-label-text-transform, uppercase);\n }\n .label-badge .label.big span {\n font-size: 90%;\n padding: 10% 12% 7% 12%; /* push smaller text a bit down to center vertically */\n }\n .badge-container .title {\n margin-top: 1em;\n font-size: var(--ha-label-badge-title-font-size, 0.9em);\n width: var(--ha-label-badge-title-width, 5em);\n font-weight: var(--ha-label-badge-title-font-weight, 400);\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: normal;\n }\n "]);return Z=function(){return e},e}function $(){var e=ie(['\n
    ',"
    \n "]);return $=function(){return e},e}function ee(){var e=ie(['\n \n ',"\n
    \n "]);return ee=function(){return e},e}function te(){var e=ie(["\n ","\n "]);return te=function(){return e},e}function re(){var e=ie(['\n \n ']);return re=function(){return e},e}function ne(){var e=ie(['\n
    \n
    \n \n ',"\n ","\n
    \n ","\n
    \n ","\n

    \n "]);return ne=function(){return e},e}function ie(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function oe(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function ae(e,t){return(ae=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function se(e){var t,r=pe(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function ce(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function le(e){return e.decorators&&e.decorators.length}function de(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function ue(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function pe(e){var t=function(e,t){if("object"!==X(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==X(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===X(t)?t:String(t)}function fe(e,t,r){return(fe="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=he(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(r):i.value}})(e,t,r||e)}function he(e){return(he=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}customElements.define("ha-icon",Q);var me=function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!le(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var d=0;d=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a4)}),!this.icon||this.value||this.image?"":Object(n.e)(re(),this.icon),this.value&&!this.image?Object(n.e)(te(),this.value):"",this.label?Object(n.e)(ee(),Object(q.a)({label:!0,big:this.label.length>5}),this.label):"",this.description?Object(n.e)($(),this.description):"")}},{kind:"get",static:!0,key:"styles",value:function(){return[Object(n.c)(Z())]}},{kind:"method",key:"updated",value:function(e){fe(he(r.prototype),"updated",this).call(this,e),e.has("image")&&(this.shadowRoot.getElementById("badge").style.backgroundImage=this.image?"url(".concat(this.image,")"):"")}}]}},n.a);customElements.define("ha-label-badge",me);r(72),r(126);var ve=r(105);function ye(e){return(ye="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)}function be(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(["\n :host {\n display: flex;\n flex-direction: row;\n align-items: center;\n }\n .mdc-switch.mdc-switch--checked .mdc-switch__thumb {\n background-color: var(--switch-checked-button-color);\n border-color: var(--switch-checked-button-color);\n }\n .mdc-switch.mdc-switch--checked .mdc-switch__track {\n background-color: var(--switch-checked-track-color);\n border-color: var(--switch-checked-track-color);\n }\n .mdc-switch:not(.mdc-switch--checked) .mdc-switch__thumb {\n background-color: var(--switch-unchecked-button-color);\n border-color: var(--switch-unchecked-button-color);\n }\n .mdc-switch:not(.mdc-switch--checked) .mdc-switch__track {\n background-color: var(--switch-unchecked-track-color);\n border-color: var(--switch-unchecked-track-color);\n }\n :host(.slotted) .mdc-switch {\n margin-right: 24px;\n }\n "]);return be=function(){return e},e}function ge(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function we(e,t){return(we=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function ke(e){var t,r=Pe(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function Ee(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function Oe(e){return e.decorators&&e.decorators.length}function je(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function _e(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function Pe(e){var t=function(e,t){if("object"!==ye(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==ye(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===ye(t)?t:String(t)}function xe(e,t,r){return(xe="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=De(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(r):i.value}})(e,t,r||e)}function De(e){return(De=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var Ae=customElements.get("mwc-switch"),Te=(function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!Oe(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var d=0;d=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n
    \n \n This add-on is not available on your system.\n

    \n ']);return Ie=function(){return e},e}function Ne(){var e=ht(["\n ","\n \n \n Open web UI\n \n \n ']);return Ue=function(){return e},e}function Me(){var e=ht(["\n \n Start\n \n ']);return Me=function(){return e},e}function qe(){var e=ht(['\n \n Restart\n \n \n Stop\n \n ']);return qe=function(){return e},e}function We(){var e=ht(['\n \n Rebuild\n \n ']);return We=function(){return e},e}function Be(){var e=ht(['\n ',"
    \n "]);return Le=function(){return e},e}function Je(){var e=ht(['\n
    \n
    \n Protection mode\n \n \n \n Grant the add-on elevated system access.\n \n \n
    \n \n
    Show in sidebar
    \n \n
    Start on boot
    \n \n
    \n
    \n
    Auto update
    \n \n ']);return Ke=function(){return e},e}function Qe(){var e=ht(["\n \n ']);return Qe=function(){return e},e}function Xe(){var e=ht(["\n \n ']);return Xe=function(){return e},e}function Ze(){var e=ht(["\n \n ']);return Ze=function(){return e},e}function $e(){var e=ht(["\n \n ']);return $e=function(){return e},e}function et(){var e=ht(["\n \n ']);return tt=function(){return e},e}function rt(){var e=ht(["\n \n ']);return rt=function(){return e},e}function nt(){var e=ht(["\n \n ']);return nt=function(){return e},e}function it(){var e=ht(['\n \n ']);return it=function(){return e},e}function ot(){var e=ht(["\n ","\n "]);return ot=function(){return e},e}function at(){var e=ht(['\n \n ']);return at=function(){return e},e}function st(){var e=ht(['\n \n ']);return st=function(){return e},e}function ct(){var e=ht(["\n ","\n ","\n "]);return ct=function(){return e},e}function lt(){var e=ht(['\n \n
    \n Protection mode on this add-on is disabled! This gives the add-on full access to the entire system, which adds security risks, and could damage your system when used incorrectly. Only disable the protection mode if you know, need AND trust the source of this add-on.\n
    \n
    \n \n
    \n \n ','\n
    \n
    \n \n Update\n \n ',"\n
    \n \n "]);return pt=function(){return e},e}function ft(){var e=ht(["\n ","\n\n ",'\n\n \n
    \n
    \n ','\n
    \n ','\n
    \n
    \n
    \n ',".
    \n Visit \n '," page\n for details.\n
    \n ",'\n
    \n \n ',"\n\n ","\n\n ","\n\n ","\n\n ","\n\n ","\n\n ","\n\n ","\n\n ","\n
    \n\n ","\n ",'\n
    \n
    \n ',"\n
    \n
    \n\n ","\n "]);return ft=function(){return e},e}function ht(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function mt(e){return(mt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function vt(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function yt(e,t){return(yt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function bt(e){var t,r=Ot(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function gt(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function wt(e){return e.decorators&&e.decorators.length}function kt(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function Et(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function Ot(e){var t=function(e,t){if("object"!==Ce(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==Ce(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Ce(t)?t:String(t)}function jt(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function _t(e){if(Array.isArray(e))return e}var Pt={rating:{title:"Add-on Security Rating",description:"Hass.io provides a security rating to each of the add-ons, which indicates the risks involved when using this add-on. The more access an add-on requires on your system, the lower the score, thus raising the possible security risks.\n\nA score is on a scale from 1 to 6. Where 1 is the lowest score (considered the most insecure and highest risk) and a score of 6 is the highest score (considered the most secure and lowest risk)."},host_network:{title:"Host Network",description:"Add-ons usually run in their own isolated network layer, which prevents them from accessing the network of the host operating system. In some cases, this network isolation can limit add-ons in providing their services and therefore, the isolation can be lifted by the add-on author, giving the add-on full access to the network capabilities of the host machine. This gives the add-on more networking capabilities but lowers the security, hence, the security rating of the add-on will be lowered when this option is used by the add-on."},homeassistant_api:{title:"Home Assistant API Access",description:"This add-on is allowed to access your running Home Assistant instance directly via the Home Assistant API. This mode handles authentication for the add-on as well, which enables an add-on to interact with Home Assistant without the need for additional authentication tokens."},full_access:{title:"Full Hardware Access",description:"This add-on is given full access to the hardware of your system, by request of the add-on author. Access is comparable to the privileged mode in Docker. Since this opens up possible security risks, this feature impacts the add-on security score negatively.\n\nThis level of access is not granted automatically and needs to be confirmed by you. To do this, you need to disable the protection mode on the add-on manually. Only disable the protection mode if you know, need AND trust the source of this add-on."},hassio_api:{title:"Hass.io API Access",description:"The add-on was given access to the Hass.io API, by request of the add-on author. By default, the add-on can access general version information of your system. When the add-on requests 'manager' or 'admin' level access to the API, it will gain access to control multiple parts of your Hass.io system. This permission is indicated by this badge and will impact the security score of the addon negatively."},docker_api:{title:"Full Docker Access",description:"The add-on author has requested the add-on to have management access to the Docker instance running on your system. This mode gives the add-on full access and control to your entire Hass.io system, which adds security risks, and could damage your system when misused. Therefore, this feature impacts the add-on security score negatively.\n\nThis level of access is not granted automatically and needs to be confirmed by you. To do this, you need to disable the protection mode on the add-on manually. Only disable the protection mode if you know, need AND trust the source of this add-on."},host_pid:{title:"Host Processes Namespace",description:"Usually, the processes the add-on runs, are isolated from all other system processes. The add-on author has requested the add-on to have access to the system processes running on the host system instance, and allow the add-on to spawn processes on the host system as well. This mode gives the add-on full access and control to your entire Hass.io system, which adds security risks, and could damage your system when misused. Therefore, this feature impacts the add-on security score negatively.\n\nThis level of access is not granted automatically and needs to be confirmed by you. To do this, you need to disable the protection mode on the add-on manually. Only disable the protection mode if you know, need AND trust the source of this add-on."},apparmor:{title:"AppArmor",description:"AppArmor ('Application Armor') is a Linux kernel security module that restricts add-ons capabilities like network access, raw socket access, and permission to read, write, or execute specific files.\n\nAdd-on authors can provide their security profiles, optimized for the add-on, or request it to be disabled. If AppArmor is disabled, it will raise security risks and therefore, has a negative impact on the security score of the add-on."},auth_api:{title:"Home Assistant Authentication",description:"An add-on can authenticate users against Home Assistant, allowing add-ons to give users the possibility to log into applications running inside add-ons, using their Home Assistant username/password. This badge indicates if the add-on author requests this capability."},ingress:{title:"Ingress",description:"This add-on is using Ingress to embed its interface securely into Home Assistant."}},xt=(function(e,t,r,n){var i=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(r){t.forEach(function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach(function(n){t.forEach(function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!wt(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var d=0;d=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a0||"0"===t&&Number(r)>=92}},{kind:"method",key:"_startOnBootToggled",value:function(){var e,t,r;return regeneratorRuntime.async(function(n){for(;;)switch(n.prev=n.next){case 0:return this._error=void 0,e={boot:"auto"===this.addon.boot?"manual":"auto"},n.prev=2,n.next=5,regeneratorRuntime.awrap(Object(i.g)(this.hass,this.addon.slug,e));case 5:t={success:!0,response:void 0,path:"option"},Object(_.a)(this,"hass-api-called",t),n.next=12;break;case 9:n.prev=9,n.t0=n.catch(2),this._error="Failed to set addon option, ".concat((null===(r=n.t0.body)||void 0===r?void 0:r.message)||n.t0);case 12:case"end":return n.stop()}},null,this,[[2,9]])}},{kind:"method",key:"_autoUpdateToggled",value:function(){var e,t,r;return regeneratorRuntime.async(function(n){for(;;)switch(n.prev=n.next){case 0:return this._error=void 0,e={auto_update:!this.addon.auto_update},n.prev=2,n.next=5,regeneratorRuntime.awrap(Object(i.g)(this.hass,this.addon.slug,e));case 5:t={success:!0,response:void 0,path:"option"},Object(_.a)(this,"hass-api-called",t),n.next=12;break;case 9:n.prev=9,n.t0=n.catch(2),this._error="Failed to set addon option, ".concat((null===(r=n.t0.body)||void 0===r?void 0:r.message)||n.t0);case 12:case"end":return n.stop()}},null,this,[[2,9]])}},{kind:"method",key:"_protectionToggled",value:function(){var e,t,r;return regeneratorRuntime.async(function(n){for(;;)switch(n.prev=n.next){case 0:return this._error=void 0,e={protected:!this.addon.protected},n.prev=2,n.next=5,regeneratorRuntime.awrap(Object(i.h)(this.hass,this.addon.slug,e));case 5:t={success:!0,response:void 0,path:"security"},Object(_.a)(this,"hass-api-called",t),n.next=12;break;case 9:n.prev=9,n.t0=n.catch(2),this._error="Failed to set addon security option, ".concat((null===(r=n.t0.body)||void 0===r?void 0:r.message)||n.t0);case 12:case"end":return n.stop()}},null,this,[[2,9]])}},{kind:"method",key:"_panelToggled",value:function(){var e,t,r;return regeneratorRuntime.async(function(n){for(;;)switch(n.prev=n.next){case 0:return this._error=void 0,e={ingress_panel:!this.addon.ingress_panel},n.prev=2,n.next=5,regeneratorRuntime.awrap(Object(i.g)(this.hass,this.addon.slug,e));case 5:t={success:!0,response:void 0,path:"option"},Object(_.a)(this,"hass-api-called",t),n.next=12;break;case 9:n.prev=9,n.t0=n.catch(2),this._error="Failed to set addon option, ".concat((null===(r=n.t0.body)||void 0===r?void 0:r.message)||n.t0);case 12:case"end":return n.stop()}},null,this,[[2,9]])}},{kind:"method",key:"_openChangelog",value:function(){var e,t;return regeneratorRuntime.async(function(r){for(;;)switch(r.prev=r.next){case 0:return this._error=void 0,r.prev=1,r.next=4,regeneratorRuntime.awrap(Object(i.a)(this.hass,this.addon.slug));case 4:e=r.sent,Object(Se.a)(this,{title:"Changelog",content:e}),r.next=11;break;case 8:r.prev=8,r.t0=r.catch(1),this._error="Failed to get addon changelog, ".concat((null===(t=r.t0.body)||void 0===t?void 0:t.message)||r.t0);case 11:case"end":return r.stop()}},null,this,[[1,8]])}},{kind:"method",key:"_installClicked",value:function(){var e,t;return regeneratorRuntime.async(function(r){for(;;)switch(r.prev=r.next){case 0:return this._error=void 0,r.prev=1,r.next=4,regeneratorRuntime.awrap(Object(i.e)(this.hass,this.addon.slug));case 4:e={success:!0,response:void 0,path:"install"},Object(_.a)(this,"hass-api-called",e),r.next=11;break;case 8:r.prev=8,r.t0=r.catch(1),this._error="Failed to install addon, ".concat((null===(t=r.t0.body)||void 0===t?void 0:t.message)||r.t0);case 11:case"end":return r.stop()}},null,this,[[1,8]])}},{kind:"method",key:"_uninstallClicked",value:function(){var e,t;return regeneratorRuntime.async(function(r){for(;;)switch(r.prev=r.next){case 0:if(confirm("Are you sure you want to uninstall this add-on?")){r.next=2;break}return r.abrupt("return");case 2:return this._error=void 0,r.prev=3,r.next=6,regeneratorRuntime.awrap(Object(i.i)(this.hass,this.addon.slug));case 6:e={success:!0,response:void 0,path:"uninstall"},Object(_.a)(this,"hass-api-called",e),r.next=13;break;case 10:r.prev=10,r.t0=r.catch(3),this._error="Failed to uninstall addon, ".concat((null===(t=r.t0.body)||void 0===t?void 0:t.message)||r.t0);case 13:case"end":return r.stop()}},null,this,[[3,10]])}}]}},n.a),r(104));function Dt(e){return(Dt="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)}function At(){var e=Ct(["\n :host,\n paper-card {\n display: block;\n }\n pre {\n overflow-x: auto;\n white-space: pre-wrap;\n overflow-wrap: break-word;\n }\n .errors {\n color: var(--google-red-500);\n margin-bottom: 16px;\n }\n "]);return At=function(){return e},e}function Tt(){var e=Ct(['\n
    ',"
    \n "]);return Tt=function(){return e},e}function St(){var e=Ct(['\n \n ','\n
    \n
    \n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var d=0;d=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n ","\n \n ',"
    \n "]);return Gt=function(){return e},e}function Vt(){var e=Kt(['\n \n
    \n ',"\n\n \n \n \n \n \n \n \n ",'\n \n
    ContainerHostDescription
    \n
    \n
    \n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var d=0;d=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;at.container?1:-1})}},{kind:"method",key:"_configChanged",value:function(e){var t;return regeneratorRuntime.async(function(r){for(;;)switch(r.prev=r.next){case 0:t=e.target,this._config.forEach(function(e){e.container===t.container&&e.host!==parseInt(String(t.value),10)&&(e.host=t.value?parseInt(String(t.value),10):null)});case 2:case"end":return r.stop()}},null,this)}},{kind:"method",key:"_resetTapped",value:function(){var e,t,r;return regeneratorRuntime.async(function(n){for(;;)switch(n.prev=n.next){case 0:return e={network:null},n.prev=1,n.next=4,regeneratorRuntime.awrap(Object(i.g)(this.hass,this.addon.slug,e));case 4:t={success:!0,response:void 0,path:"option"},Object(_.a)(this,"hass-api-called",t),n.next=11;break;case 8:n.prev=8,n.t0=n.catch(1),this._error="Failed to set addon network configuration, ".concat((null===(r=n.t0.body)||void 0===r?void 0:r.message)||n.t0);case 11:case"end":return n.stop()}},null,this,[[1,8]])}},{kind:"method",key:"_saveTapped",value:function(){var e,t,r,n;return regeneratorRuntime.async(function(o){for(;;)switch(o.prev=o.next){case 0:return this._error=void 0,e={},this._config.forEach(function(t){e[t.container]=parseInt(String(t.host),10)}),t={network:e},o.prev=4,o.next=7,regeneratorRuntime.awrap(Object(i.g)(this.hass,this.addon.slug,t));case 7:r={success:!0,response:void 0,path:"option"},Object(_.a)(this,"hass-api-called",r),o.next=14;break;case 11:o.prev=11,o.t0=o.catch(4),this._error="Failed to set addon network configuration, ".concat((null===(n=o.t0.body)||void 0===n?void 0:n.message)||o.t0);case 14:case"end":return o.stop()}},null,this,[[4,11]])}}]}},n.a);function ar(e){return(ar="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)}function sr(){var e=fr(["\n :host {\n color: var(--primary-text-color);\n --paper-card-header-color: var(--primary-text-color);\n }\n .content {\n padding: 24px 0 32px;\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n hassio-addon-info,\n hassio-addon-network,\n hassio-addon-audio,\n hassio-addon-config {\n margin-bottom: 24px;\n width: 600px;\n }\n hassio-addon-logs {\n max-width: calc(100% - 8px);\n min-width: 600px;\n }\n @media only screen and (max-width: 600px) {\n hassio-addon-info,\n hassio-addon-network,\n hassio-addon-audio,\n hassio-addon-config,\n hassio-addon-logs {\n max-width: 100%;\n min-width: 100%;\n }\n }\n "]);return sr=function(){return e},e}function cr(){var e=fr(["\n \n "]);return cr=function(){return e},e}function lr(){var e=fr(["\n \n "]);return lr=function(){return e},e}function dr(){var e=fr(["\n \n\n ","\n ","\n\n \n "]);return dr=function(){return e},e}function ur(){var e=fr(['\n \n
    \n =0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var d=0;d=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var d=0;d=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a\n
    \n ${this._error\n ? html`\n
    ${this._error}
    \n `\n : \"\"}\n\n \n \n ${this._inputDevices &&\n this._inputDevices.map((item) => {\n return html`\n ${item.name}\n `;\n })}\n \n \n \n \n ${this._outputDevices &&\n this._outputDevices.map((item) => {\n return html`\n ${item.name}\n `;\n })}\n \n \n
    \n
    \n Save\n
    \n \n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n :host,\n paper-card,\n paper-dropdown-menu {\n display: block;\n }\n .errors {\n color: var(--google-red-500);\n margin-bottom: 16px;\n }\n paper-item {\n width: 450px;\n }\n .card-actions {\n text-align: right;\n }\n `,\n ];\n }\n\n protected update(changedProperties: PropertyValues): void {\n super.update(changedProperties);\n if (changedProperties.has(\"addon\")) {\n this._addonChanged();\n }\n }\n\n private _setInputDevice(ev): void {\n const device = ev.detail.device;\n if (device) {\n this._selectedInput = device;\n }\n }\n\n private _setOutputDevice(ev): void {\n const device = ev.detail.device;\n if (device) {\n this._selectedOutput = device;\n }\n }\n\n private async _addonChanged(): Promise {\n this._selectedInput = this.addon.audio_input;\n this._selectedOutput = this.addon.audio_output;\n if (this._outputDevices) {\n return;\n }\n\n const noDevice: HassioHardwareAudioDevice[] = [\n { device: undefined, name: \"-\" },\n ];\n\n try {\n const { audio } = await fetchHassioHardwareAudio(this.hass);\n const inupt = Object.keys(audio.input).map((key) => ({\n device: key,\n name: audio.input[key],\n }));\n const output = Object.keys(audio.output).map((key) => ({\n device: key,\n name: audio.output[key],\n }));\n\n this._inputDevices = noDevice.concat(inupt);\n this._outputDevices = noDevice.concat(output);\n } catch {\n this._error = \"Failed to fetch audio hardware\";\n this._inputDevices = noDevice;\n this._outputDevices = noDevice;\n }\n }\n\n private async _saveSettings(): Promise {\n this._error = undefined;\n const data: HassioAddonSetOptionParams = {\n audio_input: this._selectedInput || null,\n audio_output: this._selectedOutput || null,\n };\n try {\n await setHassioAddonOption(this.hass, this.addon.slug, data);\n } catch {\n this._error = \"Failed to set addon audio device\";\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-addon-audio\": HassioAddonAudio;\n }\n}\n","import \"@polymer/iron-autogrow-textarea/iron-autogrow-textarea\";\nimport \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n PropertyValues,\n TemplateResult,\n} from \"lit-element\";\n\nimport { HomeAssistant } from \"../../../src/types\";\nimport {\n HassioAddonDetails,\n setHassioAddonOption,\n HassioAddonSetOptionParams,\n} from \"../../../src/data/hassio/addon\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\nimport { PolymerChangedEvent } from \"../../../src/polymer-types\";\nimport { fireEvent } from \"../../../src/common/dom/fire_event\";\n\n@customElement(\"hassio-addon-config\")\nclass HassioAddonConfig extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public addon!: HassioAddonDetails;\n @property() private _error?: string;\n @property() private _config!: string;\n @property({ type: Boolean }) private _configHasChanged = false;\n\n protected render(): TemplateResult {\n return html`\n \n
    \n ${this._error\n ? html`\n
    ${this._error}
    \n `\n : \"\"}\n \n
    \n
    \n \n Reset to defaults\n \n \n Save\n \n
    \n
    \n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n :host {\n display: block;\n }\n paper-card {\n display: block;\n }\n .card-actions {\n display: flex;\n justify-content: space-between;\n }\n .errors {\n color: var(--google-red-500);\n margin-bottom: 16px;\n }\n iron-autogrow-textarea {\n width: 100%;\n font-family: monospace;\n }\n .syntaxerror {\n color: var(--google-red-500);\n }\n `,\n ];\n }\n\n protected updated(changedProperties: PropertyValues): void {\n super.updated(changedProperties);\n if (changedProperties.has(\"addon\")) {\n this._config = JSON.stringify(this.addon.options, null, 2);\n }\n }\n\n private _configChanged(ev: PolymerChangedEvent): void {\n this._config =\n ev.detail.value || JSON.stringify(this.addon.options, null, 2);\n this._configHasChanged =\n this._config !== JSON.stringify(this.addon.options, null, 2);\n }\n\n private async _resetTapped(): Promise {\n this._error = undefined;\n const data: HassioAddonSetOptionParams = {\n options: null,\n };\n try {\n await setHassioAddonOption(this.hass, this.addon.slug, data);\n this._configHasChanged = false;\n const eventdata = {\n success: true,\n response: undefined,\n path: \"options\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to reset addon configuration, ${err.body?.message ||\n err}`;\n }\n }\n\n private async _saveTapped(): Promise {\n let data: HassioAddonSetOptionParams;\n this._error = undefined;\n try {\n data = {\n options: JSON.parse(this._config),\n };\n } catch (err) {\n this._error = err;\n return;\n }\n try {\n await setHassioAddonOption(this.hass, this.addon.slug, data);\n this._configHasChanged = false;\n const eventdata = {\n success: true,\n response: undefined,\n path: \"options\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to save addon configuration, ${err.body?.message ||\n err}`;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-addon-config\": HassioAddonConfig;\n }\n}\n","import { Constructor } from \"../types\";\n\nimport \"@polymer/iron-icon/iron-icon\";\n// Not duplicate, this is for typing.\n// tslint:disable-next-line\nimport { IronIconElement } from \"@polymer/iron-icon/iron-icon\";\n\nconst ironIconClass = customElements.get(\"iron-icon\") as Constructor<\n IronIconElement\n>;\n\nlet loaded = false;\n\nexport class HaIcon extends ironIconClass {\n private _iconsetName?: string;\n\n public listen(\n node: EventTarget | null,\n eventName: string,\n methodName: string\n ): void {\n super.listen(node, eventName, methodName);\n\n if (!loaded && this._iconsetName === \"mdi\") {\n loaded = true;\n import(/* webpackChunkName: \"mdi-icons\" */ \"../resources/mdi-icons\");\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-icon\": HaIcon;\n }\n}\n\ncustomElements.define(\"ha-icon\", HaIcon);\n","import {\n html,\n LitElement,\n PropertyValues,\n TemplateResult,\n CSSResult,\n css,\n property,\n} from \"lit-element\";\nimport { classMap } from \"lit-html/directives/class-map\";\nimport \"./ha-icon\";\n\nclass HaLabelBadge extends LitElement {\n @property() public value?: string;\n @property() public icon?: string;\n @property() public label?: string;\n @property() public description?: string;\n @property() public image?: string;\n\n protected render(): TemplateResult {\n return html`\n
    \n
    \n 4),\n })}\"\n >\n ${this.icon && !this.value && !this.image\n ? html`\n \n `\n : \"\"}\n ${this.value && !this.image\n ? html`\n ${this.value}\n `\n : \"\"}\n
    \n ${this.label\n ? html`\n 5,\n })}\"\n >\n ${this.label}\n
    \n `\n : \"\"}\n
    \n ${this.description\n ? html`\n
    ${this.description}
    \n `\n : \"\"}\n
    \n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n css`\n .badge-container {\n display: inline-block;\n text-align: center;\n vertical-align: top;\n }\n .label-badge {\n position: relative;\n display: block;\n margin: 0 auto;\n width: var(--ha-label-badge-size, 2.5em);\n text-align: center;\n height: var(--ha-label-badge-size, 2.5em);\n line-height: var(--ha-label-badge-size, 2.5em);\n font-size: var(--ha-label-badge-font-size, 1.5em);\n border-radius: 50%;\n border: 0.1em solid var(--ha-label-badge-color, var(--primary-color));\n color: var(--label-badge-text-color, rgb(76, 76, 76));\n\n white-space: nowrap;\n background-color: var(--label-badge-background-color, white);\n background-size: cover;\n transition: border 0.3s ease-in-out;\n }\n .label-badge .value {\n font-size: 90%;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .label-badge .value.big {\n font-size: 70%;\n }\n .label-badge .label {\n position: absolute;\n bottom: -1em;\n /* Make the label as wide as container+border. (parent_borderwidth / font-size) */\n left: -0.2em;\n right: -0.2em;\n line-height: 1em;\n font-size: 0.5em;\n }\n .label-badge .label span {\n box-sizing: border-box;\n max-width: 100%;\n display: inline-block;\n background-color: var(--ha-label-badge-color, var(--primary-color));\n color: var(--ha-label-badge-label-color, white);\n border-radius: 1em;\n padding: 9% 16% 8% 16%; /* mostly apitalized text, not much descenders => bit more top margin */\n font-weight: 500;\n overflow: hidden;\n text-transform: uppercase;\n text-overflow: ellipsis;\n transition: background-color 0.3s ease-in-out;\n text-transform: var(--ha-label-badge-label-text-transform, uppercase);\n }\n .label-badge .label.big span {\n font-size: 90%;\n padding: 10% 12% 7% 12%; /* push smaller text a bit down to center vertically */\n }\n .badge-container .title {\n margin-top: 1em;\n font-size: var(--ha-label-badge-title-font-size, 0.9em);\n width: var(--ha-label-badge-title-width, 5em);\n font-weight: var(--ha-label-badge-title-font-weight, 400);\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: normal;\n }\n `,\n ];\n }\n\n protected updated(changedProperties: PropertyValues): void {\n super.updated(changedProperties);\n if (changedProperties.has(\"image\")) {\n this.shadowRoot!.getElementById(\"badge\")!.style.backgroundImage = this\n .image\n ? `url(${this.image})`\n : \"\";\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-label-badge\": HaLabelBadge;\n }\n}\n\ncustomElements.define(\"ha-label-badge\", HaLabelBadge);\n","import { customElement, CSSResult, css, query } from \"lit-element\";\nimport \"@material/mwc-switch\";\nimport { style } from \"@material/mwc-switch/mwc-switch-css\";\n// tslint:disable-next-line\nimport { Switch } from \"@material/mwc-switch\";\nimport { Constructor } from \"../types\";\n// tslint:disable-next-line\nconst MwcSwitch = customElements.get(\"mwc-switch\") as Constructor;\n\n@customElement(\"ha-switch\")\nexport class HaSwitch extends MwcSwitch {\n @query(\"slot\") private _slot!: HTMLSlotElement;\n\n protected firstUpdated() {\n super.firstUpdated();\n this.style.setProperty(\n \"--mdc-theme-secondary\",\n \"var(--switch-checked-color)\"\n );\n this.classList.toggle(\n \"slotted\",\n Boolean(this._slot.assignedNodes().length)\n );\n this._slot.addEventListener(\"click\", () => (this.checked = !this.checked));\n }\n\n protected static get styles(): CSSResult[] {\n return [\n style,\n css`\n :host {\n display: flex;\n flex-direction: row;\n align-items: center;\n }\n .mdc-switch.mdc-switch--checked .mdc-switch__thumb {\n background-color: var(--switch-checked-button-color);\n border-color: var(--switch-checked-button-color);\n }\n .mdc-switch.mdc-switch--checked .mdc-switch__track {\n background-color: var(--switch-checked-track-color);\n border-color: var(--switch-checked-track-color);\n }\n .mdc-switch:not(.mdc-switch--checked) .mdc-switch__thumb {\n background-color: var(--switch-unchecked-button-color);\n border-color: var(--switch-unchecked-button-color);\n }\n .mdc-switch:not(.mdc-switch--checked) .mdc-switch__track {\n background-color: var(--switch-unchecked-track-color);\n border-color: var(--switch-unchecked-track-color);\n }\n :host(.slotted) .mdc-switch {\n margin-right: 24px;\n }\n `,\n ];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-switch\": HaSwitch;\n }\n}\n","import \"@material/mwc-button\";\nimport \"@polymer/iron-icon/iron-icon\";\nimport \"@polymer/paper-card/paper-card\";\nimport \"@polymer/paper-tooltip/paper-tooltip\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n} from \"lit-element\";\nimport { classMap } from \"lit-html/directives/class-map\";\n\nimport \"../../../src/components/buttons/ha-call-api-button\";\nimport \"../../../src/components/ha-label-badge\";\nimport \"../../../src/components/ha-markdown\";\nimport \"../../../src/components/ha-switch\";\nimport \"../components/hassio-card-content\";\n\nimport { fireEvent } from \"../../../src/common/dom/fire_event\";\nimport {\n HassioAddonDetails,\n HassioAddonSetOptionParams,\n HassioAddonSetSecurityParams,\n setHassioAddonOption,\n setHassioAddonSecurity,\n uninstallHassioAddon,\n installHassioAddon,\n fetchHassioAddonChangelog,\n} from \"../../../src/data/hassio/addon\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport { navigate } from \"../../../src/common/navigate\";\nimport { showHassioMarkdownDialog } from \"../dialogs/markdown/show-dialog-hassio-markdown\";\n\nconst PERMIS_DESC = {\n rating: {\n title: \"Add-on Security Rating\",\n description:\n \"Hass.io provides a security rating to each of the add-ons, which indicates the risks involved when using this add-on. The more access an add-on requires on your system, the lower the score, thus raising the possible security risks.\\n\\nA score is on a scale from 1 to 6. Where 1 is the lowest score (considered the most insecure and highest risk) and a score of 6 is the highest score (considered the most secure and lowest risk).\",\n },\n host_network: {\n title: \"Host Network\",\n description:\n \"Add-ons usually run in their own isolated network layer, which prevents them from accessing the network of the host operating system. In some cases, this network isolation can limit add-ons in providing their services and therefore, the isolation can be lifted by the add-on author, giving the add-on full access to the network capabilities of the host machine. This gives the add-on more networking capabilities but lowers the security, hence, the security rating of the add-on will be lowered when this option is used by the add-on.\",\n },\n homeassistant_api: {\n title: \"Home Assistant API Access\",\n description:\n \"This add-on is allowed to access your running Home Assistant instance directly via the Home Assistant API. This mode handles authentication for the add-on as well, which enables an add-on to interact with Home Assistant without the need for additional authentication tokens.\",\n },\n full_access: {\n title: \"Full Hardware Access\",\n description:\n \"This add-on is given full access to the hardware of your system, by request of the add-on author. Access is comparable to the privileged mode in Docker. Since this opens up possible security risks, this feature impacts the add-on security score negatively.\\n\\nThis level of access is not granted automatically and needs to be confirmed by you. To do this, you need to disable the protection mode on the add-on manually. Only disable the protection mode if you know, need AND trust the source of this add-on.\",\n },\n hassio_api: {\n title: \"Hass.io API Access\",\n description:\n \"The add-on was given access to the Hass.io API, by request of the add-on author. By default, the add-on can access general version information of your system. When the add-on requests 'manager' or 'admin' level access to the API, it will gain access to control multiple parts of your Hass.io system. This permission is indicated by this badge and will impact the security score of the addon negatively.\",\n },\n docker_api: {\n title: \"Full Docker Access\",\n description:\n \"The add-on author has requested the add-on to have management access to the Docker instance running on your system. This mode gives the add-on full access and control to your entire Hass.io system, which adds security risks, and could damage your system when misused. Therefore, this feature impacts the add-on security score negatively.\\n\\nThis level of access is not granted automatically and needs to be confirmed by you. To do this, you need to disable the protection mode on the add-on manually. Only disable the protection mode if you know, need AND trust the source of this add-on.\",\n },\n host_pid: {\n title: \"Host Processes Namespace\",\n description:\n \"Usually, the processes the add-on runs, are isolated from all other system processes. The add-on author has requested the add-on to have access to the system processes running on the host system instance, and allow the add-on to spawn processes on the host system as well. This mode gives the add-on full access and control to your entire Hass.io system, which adds security risks, and could damage your system when misused. Therefore, this feature impacts the add-on security score negatively.\\n\\nThis level of access is not granted automatically and needs to be confirmed by you. To do this, you need to disable the protection mode on the add-on manually. Only disable the protection mode if you know, need AND trust the source of this add-on.\",\n },\n apparmor: {\n title: \"AppArmor\",\n description:\n \"AppArmor ('Application Armor') is a Linux kernel security module that restricts add-ons capabilities like network access, raw socket access, and permission to read, write, or execute specific files.\\n\\nAdd-on authors can provide their security profiles, optimized for the add-on, or request it to be disabled. If AppArmor is disabled, it will raise security risks and therefore, has a negative impact on the security score of the add-on.\",\n },\n auth_api: {\n title: \"Home Assistant Authentication\",\n description:\n \"An add-on can authenticate users against Home Assistant, allowing add-ons to give users the possibility to log into applications running inside add-ons, using their Home Assistant username/password. This badge indicates if the add-on author requests this capability.\",\n },\n ingress: {\n title: \"Ingress\",\n description:\n \"This add-on is using Ingress to embed its interface securely into Home Assistant.\",\n },\n};\n\n@customElement(\"hassio-addon-info\")\nclass HassioAddonInfo extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public addon!: HassioAddonDetails;\n @property() private _error?: string;\n\n protected render(): TemplateResult {\n return html`\n ${\n this._computeUpdateAvailable\n ? html`\n \n
    \n \n ${!this.addon.available\n ? html`\n

    \n This update is no longer compatible with your system.\n

    \n `\n : \"\"}\n
    \n
    \n \n Update\n \n ${this.addon.changelog\n ? html`\n \n Changelog\n \n `\n : \"\"}\n
    \n
    \n `\n : \"\"\n }\n\n ${\n !this.addon.protected\n ? html`\n \n
    \n Protection mode on this add-on is disabled! This gives the add-on full access to the entire system, which adds security risks, and could damage your system when used incorrectly. Only disable the protection mode if you know, need AND trust the source of this add-on.\n
    \n
    \n Enable Protection mode\n
    \n
    \n
    \n `\n : \"\"\n }\n\n \n
    \n
    \n ${this.addon.name}\n
    \n ${\n this.addon.version\n ? html`\n ${this.addon.version}\n ${this._computeIsRunning\n ? html`\n \n `\n : html`\n \n `}\n `\n : html`\n ${this.addon.last_version}\n `\n }\n
    \n
    \n
    \n ${this.addon.description}.
    \n Visit \n ${this.addon.name} page\n for details.\n
    \n ${\n this.addon.logo\n ? html`\n \n \n \n `\n : \"\"\n }\n
    \n \n ${\n this.addon.host_network\n ? html`\n \n `\n : \"\"\n }\n\n ${\n this.addon.full_access\n ? html`\n \n `\n : \"\"\n }\n\n ${\n this.addon.homeassistant_api\n ? html`\n \n `\n : \"\"\n }\n\n ${\n this._computeHassioApi\n ? html`\n \n `\n : \"\"\n }\n\n ${\n this.addon.docker_api\n ? html`\n \n `\n : \"\"\n }\n\n ${\n this.addon.host_pid\n ? html`\n \n `\n : \"\"\n }\n\n ${\n this.addon.apparmor\n ? html`\n \n `\n : \"\"\n }\n\n ${\n this.addon.auth_api\n ? html`\n \n `\n : \"\"\n }\n\n ${\n this.addon.ingress\n ? html`\n \n `\n : \"\"\n }\n
    \n\n ${\n this.addon.version\n ? html`\n
    \n
    Start on boot
    \n \n
    \n
    \n
    Auto update
    \n \n
    \n ${this.addon.ingress\n ? html`\n
    \n
    Show in sidebar
    \n \n ${this._computeCannotIngressSidebar\n ? html`\n \n This option requires Home Assistant 0.92 or\n later.\n \n `\n : \"\"}\n
    \n `\n : \"\"}\n ${this._computeUsesProtectedOptions\n ? html`\n
    \n
    \n Protection mode\n \n \n \n Grant the add-on elevated system access.\n \n \n
    \n \n
    \n `\n : \"\"}\n `\n : \"\"\n }\n ${\n this._error\n ? html`\n
    ${this._error}
    \n `\n : \"\"\n }\n
    \n
    \n ${\n this.addon.version\n ? html`\n \n Uninstall\n \n ${this.addon.build\n ? html`\n \n Rebuild\n \n `\n : \"\"}\n ${this._computeIsRunning\n ? html`\n \n Restart\n \n \n Stop\n \n `\n : html`\n \n Start\n \n `}\n ${this._computeShowWebUI\n ? html`\n \n \n Open web UI\n \n \n `\n : \"\"}\n ${this._computeShowIngressUI\n ? html`\n \n Open web UI\n \n `\n : \"\"}\n `\n : html`\n ${!this.addon.available\n ? html`\n

    \n This add-on is not available on your system.\n

    \n `\n : \"\"}\n \n Install\n \n `\n }\n
    \n
    \n\n ${\n this.addon.long_description\n ? html`\n \n
    \n \n
    \n
    \n `\n : \"\"\n }\n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n :host {\n display: block;\n }\n paper-card {\n display: block;\n margin-bottom: 16px;\n }\n paper-card.warning {\n background-color: var(--google-red-500);\n color: white;\n --paper-card-header-color: white;\n }\n paper-card.warning mwc-button {\n --mdc-theme-primary: white !important;\n }\n .warning {\n color: var(--google-red-500);\n --mdc-theme-primary: var(--google-red-500);\n }\n .light-color {\n color: var(--secondary-text-color);\n }\n .addon-version {\n float: right;\n font-size: 15px;\n vertical-align: middle;\n }\n .errors {\n color: var(--google-red-500);\n margin-bottom: 16px;\n }\n .description {\n margin-bottom: 16px;\n }\n .logo img {\n max-height: 60px;\n margin: 16px 0;\n display: block;\n }\n .state {\n display: flex;\n margin: 8px 0;\n }\n .state div {\n width: 180px;\n display: inline-block;\n }\n .state iron-icon {\n width: 16px;\n color: var(--secondary-text-color);\n }\n ha-switch {\n display: inline;\n }\n iron-icon.running {\n color: var(--paper-green-400);\n }\n iron-icon.stopped {\n color: var(--google-red-300);\n }\n ha-call-api-button {\n font-weight: 500;\n color: var(--primary-color);\n }\n .right {\n float: right;\n }\n ha-markdown img {\n max-width: 100%;\n }\n protection-enable mwc-button {\n --mdc-theme-primary: white;\n }\n .description a,\n ha-markdown a {\n color: var(--primary-color);\n }\n .red {\n --ha-label-badge-color: var(--label-badge-red, #df4c1e);\n }\n .blue {\n --ha-label-badge-color: var(--label-badge-blue, #039be5);\n }\n .green {\n --ha-label-badge-color: var(--label-badge-green, #0da035);\n }\n .yellow {\n --ha-label-badge-color: var(--label-badge-yellow, #f4b400);\n }\n .security {\n margin-bottom: 16px;\n }\n .card-actions {\n display: flow-root;\n }\n .security h3 {\n margin-bottom: 8px;\n font-weight: normal;\n }\n .security ha-label-badge {\n cursor: pointer;\n margin-right: 4px;\n --iron-icon-height: 45px;\n }\n `,\n ];\n }\n\n private get _computeHassioApi(): boolean {\n return (\n this.addon.hassio_api &&\n (this.addon.hassio_role === \"manager\" ||\n this.addon.hassio_role === \"admin\")\n );\n }\n\n private get _computeApparmorClassName(): string {\n if (this.addon.apparmor === \"profile\") {\n return \"green\";\n }\n if (this.addon.apparmor === \"disable\") {\n return \"red\";\n }\n return \"\";\n }\n\n private _showMoreInfo(ev): void {\n const id = ev.target.getAttribute(\"id\");\n showHassioMarkdownDialog(this, {\n title: PERMIS_DESC[id].title,\n content: PERMIS_DESC[id].description,\n });\n }\n\n private get _computeIsRunning(): boolean {\n return this.addon?.state === \"started\";\n }\n\n private get _computeUpdateAvailable(): boolean | \"\" {\n return (\n this.addon &&\n !this.addon.detached &&\n this.addon.version &&\n this.addon.version !== this.addon.last_version\n );\n }\n\n private get _pathWebui(): string | null {\n return (\n this.addon.webui &&\n this.addon.webui.replace(\"[HOST]\", document.location.hostname)\n );\n }\n\n private get _computeShowWebUI(): boolean | \"\" | null {\n return !this.addon.ingress && this.addon.webui && this._computeIsRunning;\n }\n\n private _openIngress(): void {\n navigate(this, `/hassio/ingress/${this.addon.slug}`);\n }\n\n private get _computeShowIngressUI(): boolean {\n return this.addon.ingress && this._computeIsRunning;\n }\n\n private get _computeCannotIngressSidebar(): boolean {\n return !this.addon.ingress || !this._computeHA92plus;\n }\n\n private get _computeUsesProtectedOptions(): boolean {\n return (\n this.addon.docker_api || this.addon.full_access || this.addon.host_pid\n );\n }\n\n private get _computeHA92plus(): boolean {\n const [major, minor] = this.hass.config.version.split(\".\", 2);\n return Number(major) > 0 || (major === \"0\" && Number(minor) >= 92);\n }\n\n private async _startOnBootToggled(): Promise {\n this._error = undefined;\n const data: HassioAddonSetOptionParams = {\n boot: this.addon.boot === \"auto\" ? \"manual\" : \"auto\",\n };\n try {\n await setHassioAddonOption(this.hass, this.addon.slug, data);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"option\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to set addon option, ${err.body?.message || err}`;\n }\n }\n\n private async _autoUpdateToggled(): Promise {\n this._error = undefined;\n const data: HassioAddonSetOptionParams = {\n auto_update: !this.addon.auto_update,\n };\n try {\n await setHassioAddonOption(this.hass, this.addon.slug, data);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"option\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to set addon option, ${err.body?.message || err}`;\n }\n }\n\n private async _protectionToggled(): Promise {\n this._error = undefined;\n const data: HassioAddonSetSecurityParams = {\n protected: !this.addon.protected,\n };\n try {\n await setHassioAddonSecurity(this.hass, this.addon.slug, data);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"security\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to set addon security option, ${err.body?.message ||\n err}`;\n }\n }\n\n private async _panelToggled(): Promise {\n this._error = undefined;\n const data: HassioAddonSetOptionParams = {\n ingress_panel: !this.addon.ingress_panel,\n };\n try {\n await setHassioAddonOption(this.hass, this.addon.slug, data);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"option\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to set addon option, ${err.body?.message || err}`;\n }\n }\n\n private async _openChangelog(): Promise {\n this._error = undefined;\n try {\n const content = await fetchHassioAddonChangelog(\n this.hass,\n this.addon.slug\n );\n showHassioMarkdownDialog(this, {\n title: \"Changelog\",\n content,\n });\n } catch (err) {\n this._error = `Failed to get addon changelog, ${err.body?.message ||\n err}`;\n }\n }\n\n private async _installClicked(): Promise {\n this._error = undefined;\n try {\n await installHassioAddon(this.hass, this.addon.slug);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"install\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to install addon, ${err.body?.message || err}`;\n }\n }\n\n private async _uninstallClicked(): Promise {\n if (!confirm(\"Are you sure you want to uninstall this add-on?\")) {\n return;\n }\n this._error = undefined;\n try {\n await uninstallHassioAddon(this.hass, this.addon.slug);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"uninstall\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to uninstall addon, ${err.body?.message || err}`;\n }\n }\n}\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-addon-info\": HassioAddonInfo;\n }\n}\n","import \"@material/mwc-button\";\nimport \"@polymer/paper-card/paper-card\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n query,\n} from \"lit-element\";\nimport { HomeAssistant } from \"../../../src/types\";\nimport {\n HassioAddonDetails,\n fetchHassioAddonLogs,\n} from \"../../../src/data/hassio/addon\";\nimport { ANSI_HTML_STYLE, parseTextToColoredPre } from \"../ansi-to-html\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\n\n@customElement(\"hassio-addon-logs\")\nclass HassioAddonLogs extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public addon!: HassioAddonDetails;\n @property() private _error?: string;\n @query(\"#content\") private _logContent!: any;\n\n public async connectedCallback(): Promise {\n super.connectedCallback();\n await this._loadData();\n }\n\n protected render(): TemplateResult {\n return html`\n \n ${this._error\n ? html`\n
    ${this._error}
    \n `\n : \"\"}\n
    \n
    \n Refresh\n
    \n
    \n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n ANSI_HTML_STYLE,\n css`\n :host,\n paper-card {\n display: block;\n }\n pre {\n overflow-x: auto;\n white-space: pre-wrap;\n overflow-wrap: break-word;\n }\n .errors {\n color: var(--google-red-500);\n margin-bottom: 16px;\n }\n `,\n ];\n }\n\n private async _loadData(): Promise {\n this._error = undefined;\n try {\n const content = await fetchHassioAddonLogs(this.hass, this.addon.slug);\n while (this._logContent.lastChild) {\n this._logContent.removeChild(this._logContent.lastChild as Node);\n }\n this._logContent.appendChild(parseTextToColoredPre(content));\n } catch (err) {\n this._error = `Failed to get addon logs, ${err.body?.message || err}`;\n }\n }\n\n private async _refresh(): Promise {\n await this._loadData();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-addon-logs\": HassioAddonLogs;\n }\n}\n","import \"@polymer/paper-card/paper-card\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n PropertyValues,\n TemplateResult,\n} from \"lit-element\";\n\nimport { PaperInputElement } from \"@polymer/paper-input/paper-input\";\n\nimport { HomeAssistant } from \"../../../src/types\";\nimport {\n HassioAddonDetails,\n HassioAddonSetOptionParams,\n setHassioAddonOption,\n} from \"../../../src/data/hassio/addon\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\nimport { fireEvent } from \"../../../src/common/dom/fire_event\";\n\ninterface NetworkItem {\n description: string;\n container: string;\n host: number | null;\n}\n\ninterface NetworkItemInput extends PaperInputElement {\n container: string;\n}\n\n@customElement(\"hassio-addon-network\")\nclass HassioAddonNetwork extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public addon!: HassioAddonDetails;\n @property() private _error?: string;\n @property() private _config?: NetworkItem[];\n\n public connectedCallback(): void {\n super.connectedCallback();\n this._setNetworkConfig();\n }\n\n protected render(): TemplateResult {\n if (!this._config) {\n return html``;\n }\n\n return html`\n \n
    \n ${this._error\n ? html`\n
    ${this._error}
    \n `\n : \"\"}\n\n \n \n \n \n \n \n \n ${this._config!.map((item) => {\n return html`\n \n \n \n \n \n `;\n })}\n \n
    ContainerHostDescription
    ${item.container}\n \n ${item.description}
    \n
    \n
    \n \n Reset to defaults\n \n Save\n
    \n
    \n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n :host {\n display: block;\n }\n paper-card {\n display: block;\n }\n .errors {\n color: var(--google-red-500);\n margin-bottom: 16px;\n }\n .card-actions {\n display: flex;\n justify-content: space-between;\n }\n `,\n ];\n }\n\n protected update(changedProperties: PropertyValues): void {\n super.update(changedProperties);\n if (changedProperties.has(\"addon\")) {\n this._setNetworkConfig();\n }\n }\n\n private _setNetworkConfig(): void {\n const network = this.addon.network || {};\n const description = this.addon.network_description || {};\n const items: NetworkItem[] = Object.keys(network).map((key) => {\n return {\n container: key,\n host: network[key],\n description: description[key],\n };\n });\n this._config = items.sort((a, b) => (a.container > b.container ? 1 : -1));\n }\n\n private async _configChanged(ev: Event): Promise {\n const target = ev.target as NetworkItemInput;\n this._config!.forEach((item) => {\n if (\n item.container === target.container &&\n item.host !== parseInt(String(target.value), 10)\n ) {\n item.host = target.value ? parseInt(String(target.value), 10) : null;\n }\n });\n }\n\n private async _resetTapped(): Promise {\n const data: HassioAddonSetOptionParams = {\n network: null,\n };\n\n try {\n await setHassioAddonOption(this.hass, this.addon.slug, data);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"option\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to set addon network configuration, ${err.body\n ?.message || err}`;\n }\n }\n\n private async _saveTapped(): Promise {\n this._error = undefined;\n const networkconfiguration = {};\n this._config!.forEach((item) => {\n networkconfiguration[item.container] = parseInt(String(item.host), 10);\n });\n\n const data: HassioAddonSetOptionParams = {\n network: networkconfiguration,\n };\n\n try {\n await setHassioAddonOption(this.hass, this.addon.slug, data);\n const eventdata = {\n success: true,\n response: undefined,\n path: \"option\",\n };\n fireEvent(this, \"hass-api-called\", eventdata);\n } catch (err) {\n this._error = `Failed to set addon network configuration, ${err.body\n ?.message || err}`;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-addon-network\": HassioAddonNetwork;\n }\n}\n","import \"@polymer/app-layout/app-header-layout/app-header-layout\";\nimport \"@polymer/app-layout/app-header/app-header\";\nimport \"@polymer/app-layout/app-toolbar/app-toolbar\";\nimport \"@polymer/paper-icon-button/paper-icon-button\";\nimport \"@polymer/paper-spinner/paper-spinner-lite\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n} from \"lit-element\";\n\nimport { HomeAssistant, Route } from \"../../../src/types\";\nimport {\n HassioAddonDetails,\n fetchHassioAddonInfo,\n} from \"../../../src/data/hassio/addon\";\nimport { hassioStyle } from \"../resources/hassio-style\";\nimport { haStyle } from \"../../../src/resources/styles\";\n\nimport \"./hassio-addon-audio\";\nimport \"./hassio-addon-config\";\nimport \"./hassio-addon-info\";\nimport \"./hassio-addon-logs\";\nimport \"./hassio-addon-network\";\n\n@customElement(\"hassio-addon-view\")\nclass HassioAddonView extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() public route!: Route;\n @property() public addon?: HassioAddonDetails;\n\n protected render(): TemplateResult {\n if (!this.addon) {\n return html`\n \n `;\n }\n return html`\n \n
    \n \n\n ${this.addon && this.addon.version\n ? html`\n \n\n ${this.addon.audio\n ? html`\n \n `\n : \"\"}\n ${this.addon.network\n ? html`\n \n `\n : \"\"}\n\n \n `\n : \"\"}\n
    \n
    \n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyle,\n hassioStyle,\n css`\n :host {\n color: var(--primary-text-color);\n --paper-card-header-color: var(--primary-text-color);\n }\n .content {\n padding: 24px 0 32px;\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n hassio-addon-info,\n hassio-addon-network,\n hassio-addon-audio,\n hassio-addon-config {\n margin-bottom: 24px;\n width: 600px;\n }\n hassio-addon-logs {\n max-width: calc(100% - 8px);\n min-width: 600px;\n }\n @media only screen and (max-width: 600px) {\n hassio-addon-info,\n hassio-addon-network,\n hassio-addon-audio,\n hassio-addon-config,\n hassio-addon-logs {\n max-width: 100%;\n min-width: 100%;\n }\n }\n `,\n ];\n }\n\n protected async firstUpdated(): Promise {\n await this._routeDataChanged(this.route);\n this.addEventListener(\"hass-api-called\", (ev) => this._apiCalled(ev));\n }\n\n private async _apiCalled(ev): Promise {\n const path: string = ev.detail.path;\n\n if (!path) {\n return;\n }\n\n if (path === \"uninstall\") {\n history.back();\n } else {\n await this._routeDataChanged(this.route);\n }\n }\n\n private async _routeDataChanged(routeData: Route): Promise {\n const addon = routeData.path.substr(1);\n try {\n const addoninfo = await fetchHassioAddonInfo(this.hass, addon);\n this.addon = addoninfo;\n } catch {\n this.addon = undefined;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"hassio-addon-view\": HassioAddonView;\n }\n}\n","import { UpdatingElement, property, customElement } from \"lit-element\";\n// eslint-disable-next-line import/no-webpack-loader-syntax\n// @ts-ignore\n// tslint:disable-next-line: no-implicit-dependencies\nimport markdownWorker from \"workerize-loader!../resources/markdown_worker\";\nimport { fireEvent } from \"../common/dom/fire_event\";\n\nlet worker: any | undefined;\n\n@customElement(\"ha-markdown\")\nclass HaMarkdown extends UpdatingElement {\n @property() public content = \"\";\n @property({ type: Boolean }) public allowSvg = false;\n\n protected update(changedProps) {\n super.update(changedProps);\n\n if (!worker) {\n worker = markdownWorker();\n }\n\n this._render();\n }\n\n private async _render() {\n this.innerHTML = await worker.renderMarkdown(\n this.content,\n {\n breaks: true,\n gfm: true,\n tables: true,\n },\n {\n allowSvg: this.allowSvg,\n }\n );\n\n this._resize();\n\n const walker = document.createTreeWalker(\n this,\n 1 /* SHOW_ELEMENT */,\n null,\n false\n );\n\n while (walker.nextNode()) {\n const node = walker.currentNode;\n\n // Open external links in a new window\n if (\n node instanceof HTMLAnchorElement &&\n node.host !== document.location.host\n ) {\n node.target = \"_blank\";\n\n // protect referrer on external links and deny window.opener access for security reasons\n // (see https://mathiasbynens.github.io/rel-noopener/)\n node.rel = \"noreferrer noopener\";\n\n // Fire a resize event when images loaded to notify content resized\n } else if (node) {\n node.addEventListener(\"load\", this._resize);\n }\n }\n }\n\n private _resize = () => fireEvent(this, \"iron-resize\");\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-markdown\": HaMarkdown;\n }\n}\n","\n\t\t\t\tvar addMethods = require(\"../../node_modules/workerize-loader/dist/rpc-wrapper.js\")\n\t\t\t\tvar methods = [\"renderMarkdown\"]\n\t\t\t\tmodule.exports = function() {\n\t\t\t\t\tvar w = new Worker(__webpack_public_path__ + \"201359fd5a526afe13ef.worker.js\", { name: \"[hash].worker.js\" })\n\t\t\t\t\taddMethods(w, methods)\n\t\t\t\t\t\n\t\t\t\t\treturn w\n\t\t\t\t}\n\t\t\t"],"sourceRoot":""} \ No newline at end of file diff --git a/hassio/api/panel/chunk.c0a46a38d689ab648885.js b/hassio/api/panel/chunk.c0a46a38d689ab648885.js new file mode 100644 index 000000000..963217271 --- /dev/null +++ b/hassio/api/panel/chunk.c0a46a38d689ab648885.js @@ -0,0 +1,3 @@ +/*! For license information please see chunk.c0a46a38d689ab648885.js.LICENSE */ +(self.webpackJsonp=self.webpackJsonp||[]).push([[2],{132:function(e,t,n){"use strict";n.r(t);n(16),n(41),n(20),n(75),n(22),n(44);var o=n(4),r=n(101),i=("".concat(location.protocol,"//").concat(location.host),n(9));n(77);function s(e){return(s="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)}function a(){var e=y(["\n ha-paper-dialog {\n min-width: 350px;\n font-size: 14px;\n border-radius: 2px;\n }\n app-toolbar {\n margin: 0;\n padding: 0 16px;\n color: var(--primary-text-color);\n background-color: var(--secondary-background-color);\n }\n app-toolbar [main-title] {\n margin-left: 16px;\n }\n ha-paper-dialog-scrollable {\n margin: 0;\n }\n paper-checkbox {\n display: block;\n margin: 4px;\n }\n @media all and (max-width: 450px), all and (max-height: 500px) {\n ha-paper-dialog {\n max-height: 100%;\n height: 100%;\n }\n app-toolbar {\n color: var(--text-primary-color);\n background-color: var(--primary-color);\n }\n }\n .details {\n color: var(--secondary-text-color);\n }\n .warning,\n .error {\n color: var(--google-red-500);\n }\n .buttons {\n display: flex;\n flex-direction: column;\n }\n .buttons li {\n list-style-type: none;\n }\n .buttons .icon {\n margin-right: 16px;\n }\n .no-margin-top {\n margin-top: 0;\n }\n "]);return a=function(){return e},e}function l(){var e=y(["\n
  • \n \n Wipe & restore\n \n
  • \n ']);return l=function(){return e},e}function c(){var e=y(['\n

    Error: ',"

    \n "]);return c=function(){return e},e}function d(){var e=y(['\n \n ',"\n \n "]);return p=function(){return e},e}function u(){var e=y(['\n
    Add-on:
    \n \n ',"\n \n "]);return u=function(){return e},e}function h(){var e=y(["\n \n ',"\n \n "]);return h=function(){return e},e}function f(){var e=y(['\n
    Folders:
    \n \n ',"\n \n "]);return f=function(){return e},e}function m(){var e=y(['\n \n \n \n
    ','
    \n
    \n
    \n ',"\n (",")
    \n ","\n
    \n
    Home Assistant:
    \n \n Home Assistant ',"\n \n ","\n ","\n ","\n ",'\n\n
    Actions:
    \n
      \n
    • \n \n \n Download Snapshot\n \n
    • \n
    • \n \n \n Restore Selected\n \n
    • \n ',"\n
    • \n \n Delete Snapshot\n \n
    • \n
    \n \n ']);return m=function(){return e},e}function g(){var e=y([""]);return g=function(){return e},e}function y(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function b(e){return(b=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function v(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function k(e,t){return(k=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function _(e){var t,n=C(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var o={kind:"field"===e.kind?"field":"method",key:n,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(o.decorators=e.decorators),"field"===e.kind&&(o.initializer=e.value),o}function w(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function O(e){return e.decorators&&e.decorators.length}function E(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function x(e,t){var n=e[t];if(void 0!==n&&"function"!=typeof n)throw new TypeError("Expected '"+t+"' to be a function");return n}function C(e){var t=function(e,t){if("object"!==s(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!==s(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===s(t)?t:String(t)}!function(e,t,n,o){var r=function(){var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(n){t.forEach(function(t){t.kind===n&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var n=e.prototype;["method","field"].forEach(function(o){t.forEach(function(t){var r=t.placement;if(t.kind===o&&("static"===r||"prototype"===r)){var i="static"===r?e:n;this.defineClassElement(i,t)}},this)},this)},defineClassElement:function(e,t){var n=t.descriptor;if("field"===t.kind){var o=t.initializer;n={enumerable:n.enumerable,writable:n.writable,configurable:n.configurable,value:void 0===o?void 0:o.call(e)}}Object.defineProperty(e,t.key,n)},decorateClass:function(e,t){var n=[],o=[],r={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,r)},this),e.forEach(function(e){if(!O(e))return n.push(e);var t=this.decorateElement(e,r);n.push(t.element),n.push.apply(n,t.extras),o.push.apply(o,t.finishers)},this),!t)return{elements:n,finishers:o};var i=this.decorateConstructor(n,t);return o.push.apply(o,i.finishers),i.finishers=o,i},addElementPlacement:function(e,t,n){var o=t[e.placement];if(!n&&-1!==o.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");o.push(e.key)},decorateElement:function(e,t){for(var n=[],o=[],r=e.decorators,i=r.length-1;i>=0;i--){var s=t[e.placement];s.splice(s.indexOf(e.key),1);var a=this.fromElementDescriptor(e),l=this.toElementFinisherExtras((0,r[i])(a)||a);e=l.element,this.addElementPlacement(e,t),l.finisher&&o.push(l.finisher);var c=l.extras;if(c){for(var d=0;d=0;o--){var r=this.fromClassDescriptor(e),i=this.toClassDescriptor((0,t[o])(r)||r);if(void 0!==i.finisher&&n.push(i.finisher),void 0!==i.elements){e=i.elements;for(var s=0;st.name?1:-1}),this._addons=(n=this.snapshot.addons,n.map(function(e){return{slug:e.slug,name:e.name,version:e.version,checked:!0}})).sort(function(e,t){return e.name>t.name?1:-1}),this._dialogParams=e,t.prev=6,this._dialog.open(),t.next=14;break;case 10:return t.prev=10,t.t0=t.catch(6),t.next=14,regeneratorRuntime.awrap(this.showDialog(e));case 14:case"end":return t.stop()}var n,o,i},null,this,[[6,10]])}},{kind:"method",key:"render",value:function(){var e=this;return this.snapshot?Object(o.e)(m(),this._dialogClosed,this._computeName,"full"===this.snapshot.type?"Full snapshot":"Partial snapshot",this._computeSize,this._formatDatetime(this.snapshot.date),this._restoreHass,function(t){return e._restoreHass=t.target.checked},this.snapshot.homeassistant,this._folders.length?Object(o.e)(f(),this._folders.map(function(t){return Object(o.e)(h(),t.checked,function(n){return e._updateFolders(t,n.target.checked)},t.name)})):"",this._addons.length?Object(o.e)(u(),this._addons.map(function(t){return Object(o.e)(p(),t.checked,function(n){return e._updateAddons(t,n.target.checked)},t.name)})):"",this.snapshot.protected?Object(o.e)(d(),this._passwordInput,this._snapshotPassword):"",this._error?Object(o.e)(c(),this._error):"",this._downloadClicked,this._partialRestoreClicked,"full"===this.snapshot.type?Object(o.e)(l(),this._fullRestoreClicked):"",this._deleteClicked):Object(o.e)(g())}},{kind:"get",static:!0,key:"styles",value:function(){return[i.b,Object(o.c)(a())]}},{kind:"method",key:"_updateFolders",value:function(e,t){this._folders=this._folders.map(function(n){return n.slug===e.slug&&(n.checked=t),n})}},{kind:"method",key:"_updateAddons",value:function(e,t){this._addons=this._addons.map(function(n){return n.slug===e.slug&&(n.checked=t),n})}},{kind:"method",key:"_passwordInput",value:function(e){this._snapshotPassword=e.detail.value}},{kind:"method",key:"_partialRestoreClicked",value:function(){var e=this;if(confirm("Are you sure you want to restore this snapshot?")){var t=this._addons.filter(function(e){return e.checked}).map(function(e){return e.slug}),n=this._folders.filter(function(e){return e.checked}).map(function(e){return e.slug}),o={homeassistant:this._restoreHass,addons:t,folders:n};this.snapshot.protected&&(o.password=this._snapshotPassword),this.hass.callApi("POST","hassio/snapshots/".concat(this.snapshot.slug,"/restore/partial"),o).then(function(){alert("Snapshot restored!"),e._dialog.close()},function(t){e._error=t.body.message})}}},{kind:"method",key:"_fullRestoreClicked",value:function(){var e=this;if(confirm("Are you sure you want to restore this snapshot?")){var t=this.snapshot.protected?{password:this._snapshotPassword}:void 0;this.hass.callApi("POST","hassio/snapshots/".concat(this.snapshot.slug,"/restore/full"),t).then(function(){alert("Snapshot restored!"),e._dialog.close()},function(t){e._error=t.body.message})}}},{kind:"method",key:"_deleteClicked",value:function(){var e=this;confirm("Are you sure you want to delete this snapshot?")&&this.hass.callApi("POST","hassio/snapshots/".concat(this.snapshot.slug,"/remove")).then(function(){e._dialog.close(),e._dialogParams.onDelete()},function(t){e._error=t.body.message})}},{kind:"method",key:"_downloadClicked",value:function(){var e,t,n;return regeneratorRuntime.async(function(o){for(;;)switch(o.prev=o.next){case 0:return o.prev=0,o.next=3,regeneratorRuntime.awrap((r=this.hass,i="/api/hassio/snapshots/".concat(this.snapshot.slug,"/download"),r.callWS({type:"auth/sign_path",path:i})));case 3:e=o.sent,o.next=10;break;case 6:return o.prev=6,o.t0=o.catch(0),alert("Error: ".concat(o.t0.message)),o.abrupt("return");case 10:t=this._computeName.replace(/[^a-z0-9]+/gi,"_"),(n=document.createElement("a")).href=e.path,n.download="Hass_io_".concat(t,".tar"),this._dialog.appendChild(n),n.click(),this._dialog.removeChild(n);case 17:case"end":return o.stop()}var r,i},null,this,[[0,6]])}},{kind:"get",key:"_computeName",value:function(){return this.snapshot?this.snapshot.name||this.snapshot.slug:"Unnamed snapshot"}},{kind:"get",key:"_computeSize",value:function(){return Math.ceil(10*this.snapshot.size)/10+" MB"}},{kind:"method",key:"_formatDatetime",value:function(e){return new Date(e).toLocaleDateString(navigator.language,{weekday:"long",year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}},{kind:"method",key:"_dialogClosed",value:function(){this._dialogParams=void 0,this.snapshot=void 0,this._snapshotPassword="",this._folders=[],this._addons=[]}}]}},o.a)},43:function(e,t,n){"use strict";n.d(t,"b",function(){return i}),n.d(t,"a",function(){return s});n(3);var o=n(76),r=n(7),i={hostAttributes:{role:"dialog",tabindex:"-1"},properties:{modal:{type:Boolean,value:!1},__readied:{type:Boolean,value:!1}},observers:["_modalChanged(modal, __readied)"],listeners:{tap:"_onDialogClick"},ready:function(){this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop,this.__readied=!0},_modalChanged:function(e,t){t&&(e?(this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop,this.noCancelOnOutsideClick=!0,this.noCancelOnEscKey=!0,this.withBackdrop=!0):(this.noCancelOnOutsideClick=this.noCancelOnOutsideClick&&this.__prevNoCancelOnOutsideClick,this.noCancelOnEscKey=this.noCancelOnEscKey&&this.__prevNoCancelOnEscKey,this.withBackdrop=this.withBackdrop&&this.__prevWithBackdrop))},_updateClosingReasonConfirmed:function(e){this.closingReason=this.closingReason||{},this.closingReason.confirmed=e},_onDialogClick:function(e){for(var t=Object(r.a)(e).path,n=0,o=t.indexOf(this);n\n\n :host {\n display: block;\n @apply --layout-relative;\n }\n\n :host(.is-scrolled:not(:first-child))::before {\n content: \'\';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 1px;\n background: var(--divider-color);\n }\n\n :host(.can-scroll:not(.scrolled-to-bottom):not(:last-child))::after {\n content: \'\';\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 1px;\n background: var(--divider-color);\n }\n\n .scrollable {\n padding: 0 24px;\n\n @apply --layout-scroll;\n @apply --paper-dialog-scrollable;\n }\n\n .fit {\n @apply --layout-fit;\n }\n \n\n
    \n \n
    \n']);return s=function(){return e},e}Object(r.a)({_template:Object(i.a)(s()),is:"paper-dialog-scrollable",properties:{dialogElement:{type:Object}},get scrollTarget(){return this.$.scrollable},ready:function(){this._ensureTarget(),this.classList.add("no-padding")},attached:function(){this._ensureTarget(),requestAnimationFrame(this.updateScrollState.bind(this))},updateScrollState:function(){this.toggleClass("is-scrolled",this.scrollTarget.scrollTop>0),this.toggleClass("can-scroll",this.scrollTarget.offsetHeight=this.scrollTarget.scrollHeight)},_ensureTarget:function(){this.dialogElement=this.dialogElement||this.parentElement,this.dialogElement&&this.dialogElement.behaviors&&this.dialogElement.behaviors.indexOf(o.b)>=0?(this.dialogElement.sizingTarget=this.scrollTarget,this.scrollTarget.classList.remove("fit")):this.dialogElement&&this.scrollTarget.classList.add("fit")}})},77:function(e,t,n){"use strict";n(3),n(10),n(11),n(29),n(39);var o=document.createElement("template");o.setAttribute("style","display: none;"),o.innerHTML='\n \n',document.head.appendChild(o.content);var r=n(82),i=n(43),s=n(6),a=n(5);function l(){var e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n \n \n']);return l=function(){return e},e}Object(s.a)({_template:Object(a.a)(l()),is:"paper-dialog",behaviors:[i.a,r.a],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_renderOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderClosed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimationFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderClosed()}});var c=n(63),d=n(7),p=n(71),u={getTabbableNodes:function(e){var t=[];return this._collectTabbableNodes(e,t)?p.a._sortByTabIndex(t):t},_collectTabbableNodes:function(e,t){if(e.nodeType!==Node.ELEMENT_NODE||!p.a._isVisible(e))return!1;var n,o=e,r=p.a._normalizedTabIndex(o),i=r>0;r>=0&&t.push(o),n="content"===o.localName||"slot"===o.localName?Object(d.a)(o).getDistributedNodes():Object(d.a)(o.shadowRoot||o.root||o).children;for(var s=0;s => hass.callWS({ type: \"auth/sign_path\", path });\n\nexport const fetchAuthProviders = () =>\n fetch(\"/auth/providers\", {\n credentials: \"same-origin\",\n });\n","import \"@material/mwc-button\";\nimport \"@polymer/app-layout/app-toolbar/app-toolbar\";\nimport \"@polymer/iron-icon/iron-icon\";\nimport \"@polymer/paper-dialog-scrollable/paper-dialog-scrollable\";\nimport \"@polymer/paper-icon-button/paper-icon-button\";\nimport \"@polymer/paper-input/paper-input\";\nimport { PaperDialogElement } from \"@polymer/paper-dialog\";\nimport { PaperCheckboxElement } from \"@polymer/paper-checkbox/paper-checkbox\";\nimport {\n css,\n CSSResult,\n customElement,\n html,\n LitElement,\n property,\n TemplateResult,\n query,\n} from \"lit-element\";\n\nimport {\n fetchHassioSnapshotInfo,\n HassioSnapshotDetail,\n} from \"../../../../src/data/hassio/snapshot\";\nimport { getSignedPath } from \"../../../../src/data/auth\";\nimport { HassioSnapshotDialogParams } from \"./show-dialog-hassio-snapshot\";\nimport { haStyleDialog } from \"../../../../src/resources/styles\";\nimport { HomeAssistant } from \"../../../../src/types\";\nimport { PolymerChangedEvent } from \"../../../../src/polymer-types\";\n\nimport \"../../../../src/components/dialog/ha-paper-dialog\";\n\nconst _computeFolders = (folders) => {\n const list: Array<{ slug: string; name: string; checked: boolean }> = [];\n if (folders.includes(\"homeassistant\")) {\n list.push({\n slug: \"homeassistant\",\n name: \"Home Assistant configuration\",\n checked: true,\n });\n }\n if (folders.includes(\"ssl\")) {\n list.push({ slug: \"ssl\", name: \"SSL\", checked: true });\n }\n if (folders.includes(\"share\")) {\n list.push({ slug: \"share\", name: \"Share\", checked: true });\n }\n if (folders.includes(\"addons/local\")) {\n list.push({ slug: \"addons/local\", name: \"Local add-ons\", checked: true });\n }\n return list;\n};\n\nconst _computeAddons = (addons) => {\n return addons.map((addon) => ({\n slug: addon.slug,\n name: addon.name,\n version: addon.version,\n checked: true,\n }));\n};\n\ninterface AddonItem {\n slug: string;\n name: string;\n version: string;\n checked: boolean | null | undefined;\n}\n\ninterface FolderItem {\n slug: string;\n name: string;\n checked: boolean | null | undefined;\n}\n\n@customElement(\"dialog-hassio-snapshot\")\nclass HassioSnapshotDialog extends LitElement {\n @property() public hass!: HomeAssistant;\n @property() private _error?: string;\n @property() private snapshot?: HassioSnapshotDetail;\n @property() private _folders!: FolderItem[];\n @property() private _addons!: AddonItem[];\n @property() private _dialogParams?: HassioSnapshotDialogParams;\n @property() private _snapshotPassword!: string;\n @property() private _restoreHass: boolean | null | undefined = true;\n @query(\"#dialog\") private _dialog!: PaperDialogElement;\n\n public async showDialog(params: HassioSnapshotDialogParams) {\n this.snapshot = await fetchHassioSnapshotInfo(this.hass, params.slug);\n this._folders = _computeFolders(\n this.snapshot.folders\n ).sort((a: FolderItem, b: FolderItem) => (a.name > b.name ? 1 : -1));\n this._addons = _computeAddons(\n this.snapshot.addons\n ).sort((a: AddonItem, b: AddonItem) => (a.name > b.name ? 1 : -1));\n\n this._dialogParams = params;\n\n try {\n this._dialog.open();\n } catch {\n await this.showDialog(params);\n }\n }\n\n protected render(): TemplateResult {\n if (!this.snapshot) {\n return html``;\n }\n return html`\n \n \n \n
    ${this._computeName}
    \n
    \n
    \n ${this.snapshot.type === \"full\"\n ? \"Full snapshot\"\n : \"Partial snapshot\"}\n (${this._computeSize})
    \n ${this._formatDatetime(this.snapshot.date)}\n
    \n
    Home Assistant:
    \n \n (this._restoreHass = (ev.target as PaperCheckboxElement).checked)}\"\n >\n Home Assistant ${this.snapshot.homeassistant}\n \n ${this._folders.length\n ? html`\n
    Folders:
    \n \n ${this._folders.map((item) => {\n return html`\n \n this._updateFolders(\n item,\n (ev.target as PaperCheckboxElement).checked\n )}\"\n >\n ${item.name}\n \n `;\n })}\n \n `\n : \"\"}\n ${this._addons.length\n ? html`\n
    Add-on:
    \n \n ${this._addons.map((item) => {\n return html`\n \n this._updateAddons(\n item,\n (ev.target as PaperCheckboxElement).checked\n )}\"\n >\n ${item.name}\n \n `;\n })}\n \n `\n : \"\"}\n ${this.snapshot.protected\n ? html`\n \n `\n : \"\"}\n ${this._error\n ? html`\n

    Error: ${this._error}

    \n `\n : \"\"}\n\n
    Actions:
    \n
      \n
    • \n \n \n Download Snapshot\n \n
    • \n
    • \n \n \n Restore Selected\n \n
    • \n ${this.snapshot.type === \"full\"\n ? html`\n
    • \n \n \n Wipe & restore\n \n
    • \n `\n : \"\"}\n
    • \n \n \n Delete Snapshot\n \n
    • \n
    \n \n `;\n }\n\n static get styles(): CSSResult[] {\n return [\n haStyleDialog,\n css`\n ha-paper-dialog {\n min-width: 350px;\n font-size: 14px;\n border-radius: 2px;\n }\n app-toolbar {\n margin: 0;\n padding: 0 16px;\n color: var(--primary-text-color);\n background-color: var(--secondary-background-color);\n }\n app-toolbar [main-title] {\n margin-left: 16px;\n }\n ha-paper-dialog-scrollable {\n margin: 0;\n }\n paper-checkbox {\n display: block;\n margin: 4px;\n }\n @media all and (max-width: 450px), all and (max-height: 500px) {\n ha-paper-dialog {\n max-height: 100%;\n height: 100%;\n }\n app-toolbar {\n color: var(--text-primary-color);\n background-color: var(--primary-color);\n }\n }\n .details {\n color: var(--secondary-text-color);\n }\n .warning,\n .error {\n color: var(--google-red-500);\n }\n .buttons {\n display: flex;\n flex-direction: column;\n }\n .buttons li {\n list-style-type: none;\n }\n .buttons .icon {\n margin-right: 16px;\n }\n .no-margin-top {\n margin-top: 0;\n }\n `,\n ];\n }\n\n private _updateFolders(item: FolderItem, value: boolean | null | undefined) {\n this._folders = this._folders.map((folder) => {\n if (folder.slug === item.slug) {\n folder.checked = value;\n }\n return folder;\n });\n }\n\n private _updateAddons(item: AddonItem, value: boolean | null | undefined) {\n this._addons = this._addons.map((addon) => {\n if (addon.slug === item.slug) {\n addon.checked = value;\n }\n return addon;\n });\n }\n\n private _passwordInput(ev: PolymerChangedEvent) {\n this._snapshotPassword = ev.detail.value;\n }\n\n private _partialRestoreClicked() {\n if (!confirm(\"Are you sure you want to restore this snapshot?\")) {\n return;\n }\n\n const addons = this._addons\n .filter((addon) => addon.checked)\n .map((addon) => addon.slug);\n\n const folders = this._folders\n .filter((folder) => folder.checked)\n .map((folder) => folder.slug);\n\n const data: {\n homeassistant: boolean | null | undefined;\n addons: any;\n folders: any;\n password?: string;\n } = {\n homeassistant: this._restoreHass,\n addons,\n folders,\n };\n\n if (this.snapshot!.protected) {\n data.password = this._snapshotPassword;\n }\n\n this.hass\n .callApi(\n \"POST\",\n\n `hassio/snapshots/${this.snapshot!.slug}/restore/partial`,\n data\n )\n .then(\n () => {\n alert(\"Snapshot restored!\");\n this._dialog.close();\n },\n (error) => {\n this._error = error.body.message;\n }\n );\n }\n\n private _fullRestoreClicked() {\n if (!confirm(\"Are you sure you want to restore this snapshot?\")) {\n return;\n }\n\n const data = this.snapshot!.protected\n ? { password: this._snapshotPassword }\n : undefined;\n\n this.hass\n .callApi(\n \"POST\",\n `hassio/snapshots/${this.snapshot!.slug}/restore/full`,\n data\n )\n .then(\n () => {\n alert(\"Snapshot restored!\");\n this._dialog.close();\n },\n (error) => {\n this._error = error.body.message;\n }\n );\n }\n\n private _deleteClicked() {\n if (!confirm(\"Are you sure you want to delete this snapshot?\")) {\n return;\n }\n\n this.hass\n\n .callApi(\"POST\", `hassio/snapshots/${this.snapshot!.slug}/remove`)\n .then(\n () => {\n this._dialog.close();\n this._dialogParams!.onDelete();\n },\n (error) => {\n this._error = error.body.message;\n }\n );\n }\n\n private async _downloadClicked() {\n let signedPath: { path: string };\n try {\n signedPath = await getSignedPath(\n this.hass,\n `/api/hassio/snapshots/${this.snapshot!.slug}/download`\n );\n } catch (err) {\n alert(`Error: ${err.message}`);\n return;\n }\n\n const name = this._computeName.replace(/[^a-z0-9]+/gi, \"_\");\n const a = document.createElement(\"a\");\n a.href = signedPath.path;\n a.download = `Hass_io_${name}.tar`;\n this._dialog.appendChild(a);\n a.click();\n this._dialog.removeChild(a);\n }\n\n private get _computeName() {\n return this.snapshot\n ? this.snapshot.name || this.snapshot.slug\n : \"Unnamed snapshot\";\n }\n\n private get _computeSize() {\n return Math.ceil(this.snapshot!.size * 10) / 10 + \" MB\";\n }\n\n private _formatDatetime(datetime) {\n return new Date(datetime).toLocaleDateString(navigator.language, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"2-digit\",\n });\n }\n\n private _dialogClosed() {\n this._dialogParams = undefined;\n this.snapshot = undefined;\n this._snapshotPassword = \"\";\n this._folders = [];\n this._addons = [];\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"dialog-hassio-snapshot\": HassioSnapshotDialog;\n }\n}\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\n\nimport {IronOverlayBehavior} from '@polymer/iron-overlay-behavior/iron-overlay-behavior.js';\nimport {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js';\n\n/**\n Use `Polymer.PaperDialogBehavior` and `paper-dialog-shared-styles.html` to\n implement a Material Design dialog.\n\n For example, if `` implements this behavior:\n\n \n

    Header

    \n
    Dialog body
    \n
    \n Cancel\n Accept\n
    \n
    \n\n `paper-dialog-shared-styles.html` provide styles for a header, content area,\n and an action area for buttons. Use the `

    ` tag for the header and the\n `buttons` class for the action area. You can use the `paper-dialog-scrollable`\n element (in its own repository) if you need a scrolling content area.\n\n Use the `dialog-dismiss` and `dialog-confirm` attributes on interactive\n controls to close the dialog. If the user dismisses the dialog with\n `dialog-confirm`, the `closingReason` will update to include `confirmed:\n true`.\n\n ### Accessibility\n\n This element has `role=\"dialog\"` by default. Depending on the context, it may\n be more appropriate to override this attribute with `role=\"alertdialog\"`.\n\n If `modal` is set, the element will prevent the focus from exiting the\n element. It will also ensure that focus remains in the dialog.\n\n @hero hero.svg\n @demo demo/index.html\n @polymerBehavior PaperDialogBehavior\n */\nexport const PaperDialogBehaviorImpl = {\n\n hostAttributes: {'role': 'dialog', 'tabindex': '-1'},\n\n properties: {\n\n /**\n * If `modal` is true, this implies `no-cancel-on-outside-click`,\n * `no-cancel-on-esc-key` and `with-backdrop`.\n */\n modal: {type: Boolean, value: false},\n\n __readied: {type: Boolean, value: false}\n\n },\n\n observers: ['_modalChanged(modal, __readied)'],\n\n listeners: {'tap': '_onDialogClick'},\n\n /**\n * @return {void}\n */\n ready: function() {\n // Only now these properties can be read.\n this.__prevNoCancelOnOutsideClick = this.noCancelOnOutsideClick;\n this.__prevNoCancelOnEscKey = this.noCancelOnEscKey;\n this.__prevWithBackdrop = this.withBackdrop;\n this.__readied = true;\n },\n\n _modalChanged: function(modal, readied) {\n // modal implies noCancelOnOutsideClick, noCancelOnEscKey and withBackdrop.\n // We need to wait for the element to be ready before we can read the\n // properties values.\n if (!readied) {\n return;\n }\n\n if (modal) {\n this.__prevNoCancelOnOutsideClick = this.noCancelOnOutsideClick;\n this.__prevNoCancelOnEscKey = this.noCancelOnEscKey;\n this.__prevWithBackdrop = this.withBackdrop;\n this.noCancelOnOutsideClick = true;\n this.noCancelOnEscKey = true;\n this.withBackdrop = true;\n } else {\n // If the value was changed to false, let it false.\n this.noCancelOnOutsideClick =\n this.noCancelOnOutsideClick && this.__prevNoCancelOnOutsideClick;\n this.noCancelOnEscKey =\n this.noCancelOnEscKey && this.__prevNoCancelOnEscKey;\n this.withBackdrop = this.withBackdrop && this.__prevWithBackdrop;\n }\n },\n\n _updateClosingReasonConfirmed: function(confirmed) {\n this.closingReason = this.closingReason || {};\n this.closingReason.confirmed = confirmed;\n },\n\n /**\n * Will dismiss the dialog if user clicked on an element with dialog-dismiss\n * or dialog-confirm attribute.\n */\n _onDialogClick: function(event) {\n // Search for the element with dialog-confirm or dialog-dismiss,\n // from the root target until this (excluded).\n var path = dom(event).path;\n for (var i = 0, l = path.indexOf(this); i < l; i++) {\n var target = path[i];\n if (target.hasAttribute &&\n (target.hasAttribute('dialog-dismiss') ||\n target.hasAttribute('dialog-confirm'))) {\n this._updateClosingReasonConfirmed(\n target.hasAttribute('dialog-confirm'));\n this.close();\n event.stopPropagation();\n break;\n }\n }\n }\n\n};\n\n/** @polymerBehavior */\nexport const PaperDialogBehavior =\n [IronOverlayBehavior, PaperDialogBehaviorImpl];\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/iron-flex-layout/iron-flex-layout.js';\nimport '@polymer/paper-styles/default-theme.js';\n\nimport {PaperDialogBehaviorImpl} from '@polymer/paper-dialog-behavior/paper-dialog-behavior.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\n\n/**\nMaterial design:\n[Dialogs](https://www.google.com/design/spec/components/dialogs.html)\n\n`paper-dialog-scrollable` implements a scrolling area used in a Material Design\ndialog. It shows a divider at the top and/or bottom indicating more content,\ndepending on scroll position. Use this together with elements implementing\n`Polymer.PaperDialogBehavior`.\n\n \n

    Header

    \n \n Lorem ipsum...\n \n
    \n OK\n
    \n
    \n\nIt shows a top divider after scrolling if it is not the first child in its\nparent container, indicating there is more content above. It shows a bottom\ndivider if it is scrollable and it is not the last child in its parent\ncontainer, indicating there is more content below. The bottom divider is hidden\nif it is scrolled to the bottom.\n\nIf `paper-dialog-scrollable` is not a direct child of the element implementing\n`Polymer.PaperDialogBehavior`, remember to set the `dialogElement`:\n\n \n

    Header

    \n
    \n

    Sub-header

    \n \n Lorem ipsum...\n \n
    \n
    \n OK\n
    \n
    \n\n \n\n### Styling\nThe following custom properties and mixins are available for styling:\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--paper-dialog-scrollable` | Mixin for the scrollable content | {}\n\n@group Paper Elements\n@element paper-dialog-scrollable\n@demo demo/index.html\n@hero hero.svg\n*/\nPolymer({\n _template: html`\n \n\n
    \n \n
    \n`,\n\n is: 'paper-dialog-scrollable',\n\n properties: {\n\n /**\n * The dialog element that implements `Polymer.PaperDialogBehavior`\n * containing this element.\n * @type {?Node}\n */\n dialogElement: {type: Object}\n\n },\n\n /**\n * Returns the scrolling element.\n */\n get scrollTarget() {\n return this.$.scrollable;\n },\n\n ready: function() {\n this._ensureTarget();\n this.classList.add('no-padding');\n },\n\n attached: function() {\n this._ensureTarget();\n requestAnimationFrame(this.updateScrollState.bind(this));\n },\n\n updateScrollState: function() {\n this.toggleClass('is-scrolled', this.scrollTarget.scrollTop > 0);\n this.toggleClass(\n 'can-scroll',\n this.scrollTarget.offsetHeight < this.scrollTarget.scrollHeight);\n this.toggleClass(\n 'scrolled-to-bottom',\n this.scrollTarget.scrollTop + this.scrollTarget.offsetHeight >=\n this.scrollTarget.scrollHeight);\n },\n\n _ensureTarget: function() {\n // Read parentElement instead of parentNode in order to skip shadowRoots.\n this.dialogElement = this.dialogElement || this.parentElement;\n // Check if dialog implements paper-dialog-behavior. If not, fit\n // scrollTarget to host.\n if (this.dialogElement && this.dialogElement.behaviors &&\n this.dialogElement.behaviors.indexOf(PaperDialogBehaviorImpl) >= 0) {\n this.dialogElement.sizingTarget = this.scrollTarget;\n this.scrollTarget.classList.remove('fit');\n } else if (this.dialogElement) {\n this.scrollTarget.classList.add('fit');\n }\n }\n});\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\n/*\n### Styling\n\nThe following custom properties and mixins are available for styling.\n\nCustom property | Description | Default\n----------------|-------------|----------\n`--paper-dialog-background-color` | Dialog background color | `--primary-background-color`\n`--paper-dialog-color` | Dialog foreground color | `--primary-text-color`\n`--paper-dialog` | Mixin applied to the dialog | `{}`\n`--paper-dialog-title` | Mixin applied to the title (`

    `) element | `{}`\n`--paper-dialog-button-color` | Button area foreground color | `--default-primary-color`\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/iron-flex-layout/iron-flex-layout.js';\nimport '@polymer/paper-styles/default-theme.js';\nimport '@polymer/paper-styles/typography.js';\nimport '@polymer/paper-styles/shadow.js';\nconst $_documentContainer = document.createElement('template');\n$_documentContainer.setAttribute('style', 'display: none;');\n\n$_documentContainer.innerHTML = `\n \n`;\n\ndocument.head.appendChild($_documentContainer.content);\n","/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\nimport '@polymer/paper-dialog-behavior/paper-dialog-shared-styles.js';\n\nimport {NeonAnimationRunnerBehavior} from '@polymer/neon-animation/neon-animation-runner-behavior.js';\nimport {PaperDialogBehavior} from '@polymer/paper-dialog-behavior/paper-dialog-behavior.js';\nimport {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';\nimport {html} from '@polymer/polymer/lib/utils/html-tag.js';\n\n/**\nMaterial design:\n[Dialogs](https://www.google.com/design/spec/components/dialogs.html)\n\n`` is a dialog with Material Design styling and optional\nanimations when it is opened or closed. It provides styles for a header, content\narea, and an action area for buttons. You can use the\n`` element (in its own repository) if you need a\nscrolling content area. To autofocus a specific child element after opening the\ndialog, give it the `autofocus` attribute. See `Polymer.PaperDialogBehavior` and\n`Polymer.IronOverlayBehavior` for specifics.\n\nFor example, the following code implements a dialog with a header, scrolling\ncontent area and buttons. Focus will be given to the `dialog-confirm` button\nwhen the dialog is opened.\n\n \n

    Header

    \n \n Lorem ipsum...\n \n
    \n Cancel\n Accept\n
    \n
    \n\n### Styling\n\nSee the docs for `Polymer.PaperDialogBehavior` for the custom properties\navailable for styling this element.\n\n### Animations\n\nSet the `entry-animation` and/or `exit-animation` attributes to add an animation\nwhen the dialog is opened or closed. See the documentation in\n[PolymerElements/neon-animation](https://github.com/PolymerElements/neon-animation)\nfor more info.\n\nFor example:\n\n \n\n \n

    Header

    \n
    Dialog body
    \n
    \n\n### Accessibility\n\nSee the docs for `Polymer.PaperDialogBehavior` for accessibility features\nimplemented by this element.\n\n@group Paper Elements\n@element paper-dialog\n@hero hero.svg\n@demo demo/index.html\n*/\nPolymer({\n _template: html`\n \n \n`,\n\n is: 'paper-dialog',\n behaviors: [PaperDialogBehavior, NeonAnimationRunnerBehavior],\n listeners: {'neon-animation-finish': '_onNeonAnimationFinish'},\n\n _renderOpened: function() {\n this.cancelAnimation();\n this.playAnimation('entry');\n },\n\n _renderClosed: function() {\n this.cancelAnimation();\n this.playAnimation('exit');\n },\n\n _onNeonAnimationFinish: function() {\n if (this.opened) {\n this._finishRenderOpened();\n } else {\n this._finishRenderClosed();\n }\n }\n});\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\n/*\n Fixes issue with not using shadow dom properly in iron-overlay-behavior/icon-focusables-helper.js\n*/\nimport { dom } from \"@polymer/polymer/lib/legacy/polymer.dom.js\";\n\nimport { IronFocusablesHelper } from \"@polymer/iron-overlay-behavior/iron-focusables-helper.js\";\n\nexport const HaIronFocusablesHelper = {\n /**\n * Returns a sorted array of tabbable nodes, including the root node.\n * It searches the tabbable nodes in the light and shadow dom of the chidren,\n * sorting the result by tabindex.\n * @param {!Node} node\n * @return {!Array}\n */\n getTabbableNodes: function(node) {\n var result = [];\n // If there is at least one element with tabindex > 0, we need to sort\n // the final array by tabindex.\n var needsSortByTabIndex = this._collectTabbableNodes(node, result);\n if (needsSortByTabIndex) {\n return IronFocusablesHelper._sortByTabIndex(result);\n }\n return result;\n },\n\n /**\n * Searches for nodes that are tabbable and adds them to the `result` array.\n * Returns if the `result` array needs to be sorted by tabindex.\n * @param {!Node} node The starting point for the search; added to `result`\n * if tabbable.\n * @param {!Array} result\n * @return {boolean}\n * @private\n */\n _collectTabbableNodes: function(node, result) {\n // If not an element or not visible, no need to explore children.\n if (\n node.nodeType !== Node.ELEMENT_NODE ||\n !IronFocusablesHelper._isVisible(node)\n ) {\n return false;\n }\n var element = /** @type {!HTMLElement} */ (node);\n var tabIndex = IronFocusablesHelper._normalizedTabIndex(element);\n var needsSort = tabIndex > 0;\n if (tabIndex >= 0) {\n result.push(element);\n }\n\n // In ShadowDOM v1, tab order is affected by the order of distrubution.\n // E.g. getTabbableNodes(#root) in ShadowDOM v1 should return [#A, #B];\n // in ShadowDOM v0 tab order is not affected by the distrubution order,\n // in fact getTabbableNodes(#root) returns [#B, #A].\n //
    \n // \n // \n // \n // \n // \n // \n //
    \n // TODO(valdrin) support ShadowDOM v1 when upgrading to Polymer v2.0.\n var children;\n if (element.localName === \"content\" || element.localName === \"slot\") {\n children = dom(element).getDistributedNodes();\n } else {\n // /////////////////////////\n // Use shadow root if possible, will check for distributed nodes.\n // THIS IS THE CHANGED LINE\n children = dom(element.shadowRoot || element.root || element).children;\n // /////////////////////////\n }\n for (var i = 0; i < children.length; i++) {\n // Ensure method is always invoked to collect tabbable children.\n needsSort = this._collectTabbableNodes(children[i], result) || needsSort;\n }\n return needsSort;\n },\n};\n","import \"@polymer/paper-dialog/paper-dialog\";\nimport { mixinBehaviors } from \"@polymer/polymer/lib/legacy/class\";\nimport { HaIronFocusablesHelper } from \"./ha-iron-focusables-helper.js\";\n// tslint:disable-next-line\nimport { PaperDialogElement } from \"@polymer/paper-dialog/paper-dialog\";\n\nconst paperDialogClass = customElements.get(\"paper-dialog\");\n\n// behavior that will override existing iron-overlay-behavior and call the fixed implementation\nconst haTabFixBehaviorImpl = {\n get _focusableNodes() {\n return HaIronFocusablesHelper.getTabbableNodes(this);\n },\n};\n\n// paper-dialog that uses the haTabFixBehaviorImpl behvaior\n// export class HaPaperDialog extends paperDialogClass {}\n// @ts-ignore\nexport class HaPaperDialog\n extends mixinBehaviors([haTabFixBehaviorImpl], paperDialogClass)\n implements PaperDialogElement {}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ha-paper-dialog\": HaPaperDialog;\n }\n}\ncustomElements.define(\"ha-paper-dialog\", HaPaperDialog);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/hassio/api/panel/chunk.f1156b978f6f3143a651.js b/hassio/api/panel/chunk.f1156b978f6f3143a651.js deleted file mode 100644 index d6c7c96e9..000000000 --- a/hassio/api/panel/chunk.f1156b978f6f3143a651.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{102:function(e,t,n){var r=n(71).FilterCSS,i=n(71).getDefaultWhiteList,o=n(72);function s(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]}}var a=new r;function l(e){return e.replace(c,"<").replace(u,">")}var c=//g,p=/"/g,h=/"/g,g=/&#([a-zA-Z0-9]*);?/gim,f=/:?/gim,d=/&newline;?/gim,m=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,b=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,k=/u\s*r\s*l\s*\(.*/gi;function x(e){return e.replace(p,""")}function y(e){return e.replace(h,'"')}function w(e){return e.replace(g,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function v(e){return e.replace(f,":").replace(d," ")}function _(e){for(var t="",n=0,r=e.length;n/g;t.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]},t.getDefaultWhiteList=s,t.onTag=function(e,t,n){},t.onIgnoreTag=function(e,t,n){},t.onTagAttr=function(e,t,n){},t.onIgnoreTagAttr=function(e,t,n){},t.safeAttrValue=function(e,t,n,r){if(n=A(n),"href"===t||"src"===t){if("#"===(n=o.trim(n)))return"#";if("http://"!==n.substr(0,7)&&"https://"!==n.substr(0,8)&&"mailto:"!==n.substr(0,7)&&"tel:"!==n.substr(0,4)&&"#"!==n[0]&&"/"!==n[0])return""}else if("background"===t){if(m.lastIndex=0,m.test(n))return""}else if("style"===t){if(b.lastIndex=0,b.test(n))return"";if(k.lastIndex=0,k.test(n)&&(m.lastIndex=0,m.test(n)))return"";!1!==r&&(n=(r=r||a).process(n))}return n=S(n)},t.escapeHtml=l,t.escapeQuote=x,t.unescapeQuote=y,t.escapeHtmlEntities=w,t.escapeDangerHtml5Entities=v,t.clearNonPrintableCharacter=_,t.friendlyAttrValue=A,t.escapeAttrValue=S,t.onIgnoreTagStripAll=function(){return""},t.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var n=!Array.isArray(e),r=[],i=!1;return{onIgnoreTag:function(s,a,l){if(function(t){return!!n||-1!==o.indexOf(e,t)}(s)){if(l.isClosing){var c="[/removed]",u=l.position+c.length;return r.push([!1!==i?i:l.position,u]),i=!1,c}return i||(i=l.position),"[removed]"}return t(s,a,l)},remove:function(e){var t="",n=0;return o.forEach(r,function(r){t+=e.slice(n,r[0]),n=r[1]}),t+=e.slice(n)}}},t.stripCommentTag=function(e){return e.replace($,"")},t.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return!(127===t||t<=31&&10!==t&&13!==t)})).join("")},t.cssFilter=a,t.getDefaultCSSWhiteList=i},103:function(e,t){function n(){var e={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1};return e}var r=/javascript\s*\:/gim;t.whiteList=n(),t.getDefaultWhiteList=n,t.onAttr=function(e,t,n){},t.onIgnoreAttr=function(e,t,n){},t.safeAttrValue=function(e,t){return r.test(t)?"":t}},104:function(e,t){e.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function c(e){return function(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}(e)?e.substr(1,e.length-2):e}t.parseTag=function(e,t,n){var r="",s=0,a=!1,l=!1,c=0,u=e.length,p="",h="";for(c=0;c"===g){r+=n(e.slice(s,a)),p=i(h=e.slice(a,c+1)),r+=t(a,r.length,p,h,o(h)),s=c+1,a=!1;continue}if(('"'===g||"'"===g)&&"="===e.charAt(c-1)){l=g;continue}}else if(g===l){l=!1;continue}}return s ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|\\n*|\\n*|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,table:y,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/,text:/^[^\n]+/};function a(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||S.defaults,this.rules=s.normal,this.options.pedantic?this.rules=s.pedantic:this.options.gfm&&(this.options.tables?this.rules=s.tables:this.rules=s.gfm)}s._label=/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,s._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,s.def=m(s.def).replace("label",s._label).replace("title",s._title).getRegex(),s.bullet=/(?:[*+-]|\d{1,9}\.)/,s.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,s.item=m(s.item,"gm").replace(/bull/g,s.bullet).getRegex(),s.list=m(s.list).replace(/bull/g,s.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+s.def.source+")").getRegex(),s._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",s._comment=//,s.html=m(s.html,"i").replace("comment",s._comment).replace("tag",s._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),s.paragraph=m(s.paragraph).replace("hr",s.hr).replace("heading",s.heading).replace("lheading",s.lheading).replace("tag",s._tag).getRegex(),s.blockquote=m(s.blockquote).replace("paragraph",s.paragraph).getRegex(),s.normal=w({},s),s.gfm=w({},s.normal,{fences:/^ {0,3}(`{3,}|~{3,})([^`\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),s.gfm.paragraph=m(s.paragraph).replace("(?!","(?!"+s.gfm.fences.source.replace("\\1","\\2")+"|"+s.list.source.replace("\\1","\\3")+"|").getRegex(),s.tables=w({},s.gfm,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),s.pedantic=w({},s.normal,{html:m("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",s._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/}),a.rules=s,a.lex=function(e,t){return new a(t).lex(e)},a.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},a.prototype.token=function(e,t){var n,r,i,o,a,l,c,u,p,h,g,f,d,m,b,k;for(e=e.replace(/^ +$/gm,"");e;)if((i=this.rules.newline.exec(e))&&(e=e.substring(i[0].length),i[0].length>1&&this.tokens.push({type:"space"})),i=this.rules.code.exec(e))e=e.substring(i[0].length),i=i[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?i:_(i,"\n")});else if(i=this.rules.fences.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"code",lang:i[2]?i[2].trim():i[2],text:i[3]||""});else if(i=this.rules.heading.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"heading",depth:i[1].length,text:i[2]});else if((i=this.rules.nptable.exec(e))&&(l={type:"table",header:v(i[1].replace(/^ *| *\| *$/g,"")),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3]?i[3].replace(/\n$/,"").split("\n"):[]}).header.length===l.align.length){for(e=e.substring(i[0].length),g=0;g ?/gm,""),this.token(i,t),this.tokens.push({type:"blockquote_end"});else if(i=this.rules.list.exec(e)){for(e=e.substring(i[0].length),c={type:"list_start",ordered:m=(o=i[2]).length>1,start:m?+o:"",loose:!1},this.tokens.push(c),u=[],n=!1,d=(i=i[0].match(this.rules.item)).length,g=0;g1?1===a.length:a.length>1||this.options.smartLists&&a!==o)&&(e=i.slice(g+1).join("\n")+e,g=d-1)),r=n||/\n\n(?!\s*$)/.test(l),g!==d-1&&(n="\n"===l.charAt(l.length-1),r||(r=n)),r&&(c.loose=!0),k=void 0,(b=/^\[[ xX]\] /.test(l))&&(k=" "!==l[1],l=l.replace(/^\[[ xX]\] +/,"")),p={type:"list_item_start",task:b,checked:k,loose:r},u.push(p),this.tokens.push(p),this.token(l,!1),this.tokens.push({type:"list_item_end"});if(c.loose)for(d=u.length,g=0;g?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:y,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(href(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*"<\[])\*(?!\*)|^_([^\s][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s"<\[][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:y,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\?@\\[^_{|}~",l.em=m(l.em).replace(/punctuation/g,l._punctuation).getRegex(),l._escapes=/\\([!"#$%&'()*+,\-.\/:;<=>?@\[\]\\^_`{|}~])/g,l._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,l._email=/[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])?)+(?![-_])/,l.autolink=m(l.autolink).replace("scheme",l._scheme).replace("email",l._email).getRegex(),l._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,l.tag=m(l.tag).replace("comment",s._comment).replace("attribute",l._attribute).getRegex(),l._label=/(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|`(?!`)|[^\[\]\\`])*?/,l._href=/\s*(<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*)/,l._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,l.link=m(l.link).replace("label",l._label).replace("href",l._href).replace("title",l._title).getRegex(),l.reflink=m(l.reflink).replace("label",l._label).getRegex(),l.normal=w({},l),l.pedantic=w({},l.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:m(/^!?\[(label)\]\((.*?)\)/).replace("label",l._label).getRegex(),reflink:m(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",l._label).getRegex()}),l.gfm=w({},l.normal,{escape:m(l.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\/i.test(o[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(o[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(o[0])&&(this.inRawBlock=!1),e=e.substring(o[0].length),a+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):f(o[0]):o[0];else if(o=this.rules.link.exec(e)){var l=A(o[2],"()");if(l>-1){var u=o[0].length-(o[2].length-l)-(o[3]||"").length;o[2]=o[2].substring(0,l),o[0]=o[0].substring(0,u).trim(),o[3]=""}e=e.substring(o[0].length),this.inLink=!0,r=o[2],this.options.pedantic?(t=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(r))?(r=t[1],i=t[3]):i="":i=o[3]?o[3].slice(1,-1):"",r=r.trim().replace(/^<([\s\S]*)>$/,"$1"),a+=this.outputLink(o,{href:c.escapes(r),title:c.escapes(i)}),this.inLink=!1}else if((o=this.rules.reflink.exec(e))||(o=this.rules.nolink.exec(e))){if(e=e.substring(o[0].length),t=(o[2]||o[1]).replace(/\s+/g," "),!(t=this.links[t.toLowerCase()])||!t.href){a+=o[0].charAt(0),e=o[0].substring(1)+e;continue}this.inLink=!0,a+=this.outputLink(o,t),this.inLink=!1}else if(o=this.rules.strong.exec(e))e=e.substring(o[0].length),a+=this.renderer.strong(this.output(o[4]||o[3]||o[2]||o[1]));else if(o=this.rules.em.exec(e))e=e.substring(o[0].length),a+=this.renderer.em(this.output(o[6]||o[5]||o[4]||o[3]||o[2]||o[1]));else if(o=this.rules.code.exec(e))e=e.substring(o[0].length),a+=this.renderer.codespan(f(o[2].trim(),!0));else if(o=this.rules.br.exec(e))e=e.substring(o[0].length),a+=this.renderer.br();else if(o=this.rules.del.exec(e))e=e.substring(o[0].length),a+=this.renderer.del(this.output(o[1]));else if(o=this.rules.autolink.exec(e))e=e.substring(o[0].length),r="@"===o[2]?"mailto:"+(n=f(this.mangle(o[1]))):n=f(o[1]),a+=this.renderer.link(r,null,n);else if(this.inLink||!(o=this.rules.url.exec(e))){if(o=this.rules.text.exec(e))e=e.substring(o[0].length),this.inRawBlock?a+=this.renderer.text(o[0]):a+=this.renderer.text(f(this.smartypants(o[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else{if("@"===o[2])r="mailto:"+(n=f(o[0]));else{do{s=o[0],o[0]=this.rules._backpedal.exec(o[0])[0]}while(s!==o[0]);n=f(o[0]),r="www."===o[1]?"http://"+n:n}e=e.substring(o[0].length),a+=this.renderer.link(r,null,n)}return a},c.escapes=function(e){return e?e.replace(c.rules._escapes,"$1"):e},c.prototype.outputLink=function(e,t){var n=t.href,r=t.title?f(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,f(e[1]))},c.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},c.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,i=0;i.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},u.prototype.code=function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,r);null!=i&&i!==e&&(n=!0,e=i)}return r?'
    '+(n?e:f(e,!0))+"
    \n":"
    "+(n?e:f(e,!0))+"
    "},u.prototype.blockquote=function(e){return"
    \n"+e+"
    \n"},u.prototype.html=function(e){return e},u.prototype.heading=function(e,t,n,r){return this.options.headerIds?"'+e+"\n":""+e+"\n"},u.prototype.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},u.prototype.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"},u.prototype.listitem=function(e){return"
  • "+e+"
  • \n"},u.prototype.checkbox=function(e){return" "},u.prototype.paragraph=function(e){return"

    "+e+"

    \n"},u.prototype.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},u.prototype.tablerow=function(e){return"\n"+e+"\n"},u.prototype.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"\n"},u.prototype.strong=function(e){return""+e+""},u.prototype.em=function(e){return""+e+""},u.prototype.codespan=function(e){return""+e+""},u.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},u.prototype.del=function(e){return""+e+""},u.prototype.link=function(e,t,n){if(null===(e=b(this.options.sanitize,this.options.baseUrl,e)))return n;var r='"},u.prototype.image=function(e,t,n){if(null===(e=b(this.options.sanitize,this.options.baseUrl,e)))return n;var r=''+n+'":">"},u.prototype.text=function(e){return e},p.prototype.strong=p.prototype.em=p.prototype.codespan=p.prototype.del=p.prototype.text=function(e){return e},p.prototype.link=p.prototype.image=function(e,t,n){return""+n},p.prototype.br=function(){return""},h.parse=function(e,t){return new h(t).parse(e)},h.prototype.parse=function(e){this.inline=new c(e.links,this.options),this.inlineText=new c(e.links,w({},this.options,{renderer:new p})),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},h.prototype.next=function(){return this.token=this.tokens.pop()},h.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},h.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},h.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,d(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,i="",o="";for(n="",e=0;e?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t)){var n=t;do{this.seen[n]++,t=n+"-"+this.seen[n]}while(this.seen.hasOwnProperty(t))}return this.seen[t]=0,t},f.escapeTest=/[&<>"']/,f.escapeReplace=/[&<>"']/g,f.replacements={"&":"&","<":"<",">":">",'"':""","'":"'"},f.escapeTestNoEncode=/[<>"']|&(?!#?\w+;)/,f.escapeReplaceNoEncode=/[<>"']|&(?!#?\w+;)/g;var k={},x=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function y(){}function w(e){for(var t,n,r=1;r=0&&"\\"===n[i];)r=!r;return r?"|":" |"}).split(/ \|/),r=0;if(n.length>t)n.splice(t);else for(;n.lengthAn error occurred:

    "+f(c.message+"",!0)+"
    ";throw c}}y.exec=y,S.options=S.setOptions=function(e){return w(S.defaults,e),S},S.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new u,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tables:!0,xhtml:!1}},S.defaults=S.getDefaults(),S.Parser=h,S.parser=h.parse,S.Renderer=u,S.TextRenderer=p,S.Lexer=a,S.lexer=a.lex,S.InlineLexer=c,S.inlineLexer=c.output,S.Slugger=g,S.parse=S,"object"===o(t)?e.exports=S:void 0===(i=function(){return S}.call(t,n,t,e))||(e.exports=i)}(this||"undefined"!=typeof window&&window)}).call(this,n(125))},125:function(e,t){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;r=function(){return this}();try{r=r||new Function("return this")()}catch(i){"object"===("undefined"==typeof window?"undefined":n(window))&&(r=window)}e.exports=r},126:function(e,t,n){var r=n(102),i=n(105),o=n(129);function s(e,t){return new o(t).process(e)}for(var a in(t=e.exports=s).filterXSS=s,t.FilterXSS=o,r)t[a]=r[a];for(var a in i)t[a]=i[a];"undefined"!=typeof window&&(window.filterXSS=e.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=e.exports)},127:function(e,t,n){var r=n(103),i=n(128);n(104);function o(e){return null==e}function s(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).whiteList=e.whiteList||r.whiteList,e.onAttr=e.onAttr||r.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||r.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||r.safeAttrValue,this.options=e}s.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,n=t.whiteList,r=t.onAttr,s=t.onIgnoreAttr,a=t.safeAttrValue;return i(e,function(e,t,i,l,c){var u=n[i],p=!1;if(!0===u?p=u:"function"==typeof u?p=u(l):u instanceof RegExp&&(p=u.test(l)),!0!==p&&(p=!1),l=a(i,l)){var h,g={position:t,sourcePosition:e,source:c,isWhite:p};return p?o(h=r(i,l,g))?i+":"+l:h:o(h=s(i,l,g))?void 0:h}})},e.exports=s},128:function(e,t,n){var r=n(104);e.exports=function(e,t){";"!==(e=r.trimRight(e))[e.length-1]&&(e+=";");var n=e.length,i=!1,o=0,s=0,a="";function l(){if(!i){var n=r.trim(e.slice(o,s)),l=n.indexOf(":");if(-1!==l){var c=r.trim(n.slice(0,l)),u=r.trim(n.slice(l+1));if(c){var p=t(o,a.length,c,u,n);p&&(a+=p+"; ")}}}o=s+1}for(;s";var k=function(e){var t=l.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var n="/"===(e=l.trim(e.slice(t+1,-1)))[e.length-1];return n&&(e=l.trim(e.slice(0,-1))),{html:e,closing:n}}(s),x=n[i],y=a(k.html,function(e,t){var n,r=-1!==l.indexOf(x,e);return c(n=u(i,e,t,r))?r?(t=h(i,e,t,f))?e+'="'+t+'"':e:c(n=p(i,e,t,r))?void 0:n:n});s="<"+i;return y&&(s+=" "+y),k.closing&&(s+=" /"),s+=">"}return c(m=o(i,s,b))?g(s):m},g);return d&&(m=d.remove(m)),m},e.exports=u},71:function(e,t,n){var r=n(103),i=n(127);for(var o in(t=e.exports=function(e,t){return new i(t).process(e)}).FilterCSS=i,r)t[o]=r[o];"undefined"!=typeof window&&(window.filterCSS=e.exports)},72:function(e,t){e.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n","\"","'","obj","target","key","arguments","tableRow","count","offset","curr","splice","invert","suffLen","currChar","callback","pending","done","err","message","setOptions","getDefaults","parser","lexer","inlineLexer","_typeof","define","__webpack_require__","__WEBPACK_AMD_DEFINE_RESULT__","window","g","Function","DEFAULT","FilterXSS","filterXSS","self","DedicatedWorkerGlobalScope","parseStyle","isNull","shallowCopyObject","css","sourcePosition","check","isWhite","opts","cssLength","isParenthesisOpen","retCSS","addNewAttr","stripIgnoreTag","error","allowCommentTag","stripIgnoreTagBody","retHtml","info","attrs","closing","getAttrs","whiteAttrList","attrsHtml","isWhiteAttr","filterCSS","index"],"mappings":"8EAMA,IAAIA,EAAYC,EAAQ,IAAaD,UACjCE,EAAyBD,EAAQ,IAAaE,oBAC9CC,EAAIH,EAAQ,IAEhB,SAASE,IACP,MAAO,CACLE,EAAG,CAAC,SAAU,OAAQ,SACtBC,KAAM,CAAC,SACPC,QAAS,GACTC,KAAM,CAAC,QAAS,SAAU,OAAQ,OAClCC,QAAS,GACTC,MAAO,GACPC,MAAO,CAAC,WAAY,WAAY,OAAQ,UAAW,OACnDC,EAAG,GACHC,IAAK,CAAC,OACNC,IAAK,CAAC,OACNC,IAAK,GACLC,WAAY,CAAC,QACbC,GAAI,GACJC,QAAS,GACTC,OAAQ,GACRC,KAAM,GACNC,KAAM,GACNC,IAAK,CAAC,QAAS,SAAU,OAAQ,SACjCC,SAAU,CAAC,QAAS,SAAU,OAAQ,SACtCC,GAAI,GACJC,IAAK,CAAC,YACNC,QAAS,CAAC,QACVC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,KAAM,CAAC,QAAS,OAAQ,QACxBC,OAAQ,GACRC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,OAAQ,GACRC,GAAI,GACJC,EAAG,GACHC,IAAK,CAAC,MAAO,MAAO,QAAS,QAAS,UACtCC,IAAK,CAAC,YACNC,GAAI,GACJC,KAAM,GACNC,IAAK,GACLC,GAAI,GACJC,EAAG,GACHC,IAAK,GACLC,EAAG,GACHC,QAAS,GACTC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,IAAK,GACLC,OAAQ,GACRC,MAAO,CAAC,QAAS,SAAU,QAAS,UACpCC,MAAO,CAAC,QAAS,UACjBC,GAAI,CAAC,QAAS,UAAW,UAAW,QAAS,UAC7CC,MAAO,CAAC,QAAS,UACjBC,GAAI,CAAC,QAAS,UAAW,UAAW,QAAS,UAC7CC,MAAO,CAAC,QAAS,UACjBC,GAAI,CAAC,UAAW,QAAS,UACzBC,GAAI,GACJC,EAAG,GACHC,GAAI,GACJC,MAAO,CAAC,WAAY,WAAY,OAAQ,UAAW,MAAO,SAAU,UAIxE,IAAIC,EAAmB,IAAIpE,EAuD3B,SAASqE,EAAWC,GAClB,OAAOA,EAAKC,QAAQC,EAAW,QAAQD,QAAQE,EAAW,QAkE5D,IAAID,EAAY,KACZC,EAAY,KACZC,EAAe,KACfC,EAAiB,UACjBC,EAAsB,wBACtBC,EAA0B,cAC1BC,EAA4B,gBAE5BC,EAA+B,yFAG/BC,EAA+B,iDAC/BC,EAA+B,qBAQnC,SAASC,EAAYC,GACnB,OAAOA,EAAIZ,QAAQG,EAAc,UASnC,SAASU,EAAcD,GACrB,OAAOA,EAAIZ,QAAQI,EAAgB,KASrC,SAASU,EAAmBF,GAC1B,OAAOA,EAAIZ,QAAQK,EAAqB,SAAwBO,EAAK9D,GACnE,MAAmB,MAAZA,EAAK,IAA0B,MAAZA,EAAK,GAC3BiE,OAAOC,aAAaC,SAASnE,EAAKoE,OAAO,GAAI,KAC7CH,OAAOC,aAAaC,SAASnE,EAAM,OAU3C,SAASqE,EAA0BP,GACjC,OAAOA,EACJZ,QAAQM,EAAyB,KACjCN,QAAQO,EAA2B,KASxC,SAASa,EAA2BR,GAElC,IADA,IAAIS,EAAO,GACFnD,EAAI,EAAGoD,EAAMV,EAAIW,OAAQrD,EAAIoD,EAAKpD,IACzCmD,GAAQT,EAAIY,WAAWtD,GAAK,GAAK,IAAM0C,EAAIa,OAAOvD,GAEpD,OAAOrC,EAAE6F,KAAKL,GAShB,SAASM,EAAkBf,GAKzB,OADAA,EAAMQ,EADNR,EAAMO,EADNP,EAAME,EADNF,EAAMC,EAAcD,MAatB,SAASgB,EAAgBhB,GAGvB,OADAA,EAAMd,EADNc,EAAMD,EAAYC,IA6EpB,IAAIiB,EAA2B,mBAsB/BC,EAAQC,UA/XC,CACLjG,EAAG,CAAC,SAAU,OAAQ,SACtBC,KAAM,CAAC,SACPC,QAAS,GACTC,KAAM,CAAC,QAAS,SAAU,OAAQ,OAClCC,QAAS,GACTC,MAAO,GACPC,MAAO,CAAC,WAAY,WAAY,OAAQ,UAAW,OACnDC,EAAG,GACHC,IAAK,CAAC,OACNC,IAAK,CAAC,OACNC,IAAK,GACLC,WAAY,CAAC,QACbC,GAAI,GACJC,QAAS,GACTC,OAAQ,GACRC,KAAM,GACNC,KAAM,GACNC,IAAK,CAAC,QAAS,SAAU,OAAQ,SACjCC,SAAU,CAAC,QAAS,SAAU,OAAQ,SACtCC,GAAI,GACJC,IAAK,CAAC,YACNC,QAAS,CAAC,QACVC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,KAAM,CAAC,QAAS,OAAQ,QACxBC,OAAQ,GACRC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,OAAQ,GACRC,GAAI,GACJC,EAAG,GACHC,IAAK,CAAC,MAAO,MAAO,QAAS,QAAS,UACtCC,IAAK,CAAC,YACNC,GAAI,GACJC,KAAM,GACNC,IAAK,GACLC,GAAI,GACJC,EAAG,GACHC,IAAK,GACLC,EAAG,GACHC,QAAS,GACTC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,IAAK,GACLC,OAAQ,GACRC,MAAO,CAAC,QAAS,SAAU,QAAS,UACpCC,MAAO,CAAC,QAAS,UACjBC,GAAI,CAAC,QAAS,UAAW,UAAW,QAAS,UAC7CC,MAAO,CAAC,QAAS,UACjBC,GAAI,CAAC,QAAS,UAAW,UAAW,QAAS,UAC7CC,MAAO,CAAC,QAAS,UACjBC,GAAI,CAAC,UAAW,QAAS,UACzBC,GAAI,GACJC,EAAG,GACHC,GAAI,GACJC,MAAO,CAAC,WAAY,WAAY,OAAQ,UAAW,MAAO,SAAU,UAiUxEkC,EAAQlG,oBAAsBA,EAC9BkG,EAAQE,MApTR,SAAeC,EAAKlC,EAAMmC,KAqT1BJ,EAAQK,YAzSR,SAAqBF,EAAKlC,EAAMmC,KA0ShCJ,EAAQM,UA9RR,SAAmBH,EAAKI,EAAMC,KA+R9BR,EAAQS,gBAnRR,SAAyBN,EAAKI,EAAMC,KAoRpCR,EAAQU,cA9PR,SAAuBP,EAAKI,EAAMC,EAAOG,GAIvC,GAFAH,EAAQX,EAAkBW,GAEb,SAATD,GAA4B,QAATA,EAAgB,CAIrC,GAAc,OADdC,EAAQzG,EAAE6F,KAAKY,IACI,MAAO,IAC1B,GAE2B,YAAvBA,EAAMpB,OAAO,EAAG,IACO,aAAvBoB,EAAMpB,OAAO,EAAG,IACO,YAAvBoB,EAAMpB,OAAO,EAAG,IACO,SAAvBoB,EAAMpB,OAAO,EAAG,IACH,MAAboB,EAAM,IACO,MAAbA,EAAM,GAGR,MAAO,QAEJ,GAAa,eAATD,GAIT,GADA7B,EAA6BkC,UAAY,EACrClC,EAA6BmC,KAAKL,GACpC,MAAO,QAEJ,GAAa,UAATD,EAAkB,CAG3B,GADA5B,EAA6BiC,UAAY,EACrCjC,EAA6BkC,KAAKL,GACpC,MAAO,GAIT,GADA5B,EAA6BgC,UAAY,EACrChC,EAA6BiC,KAAKL,KACpC9B,EAA6BkC,UAAY,EACrClC,EAA6BmC,KAAKL,IACpC,MAAO,IAGO,IAAdG,IAEFH,GADAG,EAAYA,GAAa5C,GACP+C,QAAQN,IAM9B,OADAA,EAAQV,EAAgBU,IA8M1BR,EAAQhC,WAAaA,EACrBgC,EAAQnB,YAAcA,EACtBmB,EAAQjB,cAAgBA,EACxBiB,EAAQhB,mBAAqBA,EAC7BgB,EAAQX,0BAA4BA,EACpCW,EAAQV,2BAA6BA,EACrCU,EAAQH,kBAAoBA,EAC5BG,EAAQF,gBAAkBA,EAC1BE,EAAQe,oBA1GR,WACE,MAAO,IA0GTf,EAAQgB,aAhGR,SAAsBC,EAAMC,GACN,mBAATA,IACTA,EAAO,cAGT,IAAIC,GAAkBC,MAAMC,QAAQJ,GAMhCK,EAAa,GACbC,GAAW,EAEf,MAAO,CACLlB,YAAa,SAASF,EAAKlC,EAAMmC,GAC/B,GAVJ,SAAqBD,GACnB,QAAIgB,IAC6B,IAA1BpH,EAAEyH,QAAQP,EAAMd,GAQjBsB,CAAYtB,GAAM,CACpB,GAAIC,EAAQsB,UAAW,CACrB,IAAIC,EAAM,aACNC,EAAMxB,EAAQyB,SAAWF,EAAIlC,OAMjC,OALA6B,EAAWQ,KAAK,EACD,IAAbP,EAAqBA,EAAWnB,EAAQyB,SACxCD,IAEFL,GAAW,EACJI,EAKP,OAHKJ,IACHA,EAAWnB,EAAQyB,UAEd,YAGT,OAAOX,EAAKf,EAAKlC,EAAMmC,IAG3B2B,OAAQ,SAAS9D,GACf,IAAI+D,EAAU,GACVC,EAAU,EAMd,OALAlI,EAAEmI,QAAQZ,EAAY,SAASa,GAC7BH,GAAW/D,EAAKmE,MAAMH,EAASE,EAAI,IACnCF,EAAUE,EAAI,KAEhBH,GAAW/D,EAAKmE,MAAMH,MAsD5BjC,EAAQqC,gBA1CR,SAAyBpE,GACvB,OAAOA,EAAKC,QAAQ6B,EAA0B,KA0ChDC,EAAQsC,eAhCR,SAAwBrE,GACtB,IAAIsE,EAAQtE,EAAKuE,MAAM,IAUvB,OATAD,EAAQA,EAAME,OAAO,SAASC,GAC5B,IAAIC,EAAID,EAAKhD,WAAW,GACxB,QAAU,MAANiD,GACAA,GAAK,IACG,KAANA,GAAkB,KAANA,MAKPC,KAAK,KAsBpB5C,EAAQW,UAAY5C,EACpBiC,EAAQnG,uBAAyBA,qBCxZjC,SAASC,IAMP,IAAImG,EAAY,CAEhBA,iBAA6B,EAC7BA,eAA2B,EAC3BA,cAA0B,EAC1BA,oBAAgC,EAChCA,sBAAkC,EAClCA,KAAmB,EACnBA,gBAA4B,EAC5BA,WAAyB,EACzBA,mBAA+B,EAC/BA,uBAAmC,EACnCA,sBAAkC,EAClCA,uBAAmC,EACnCA,6BAAyC,EACzCA,kBAA8B,EAC9BA,wBAAoC,EACpCA,6BAAyC,EACzCA,SAAuB,EACvBA,uBAAmC,EACnCA,YAA0B,EAC1BA,yBAAqC,EACrCA,mBAA+B,EAC/BA,oBAAgC,EAChCA,oBAAgC,EAChCA,qBAAiC,EACjCA,uBAAmC,EACnCA,qBAAiC,EACjCA,mBAA+B,EAC/BA,kBAA8B,EAC9BA,SAAuB,EACvBA,OAAqB,EACrBA,kBAA8B,EAC9BA,kBAA8B,EAC9BA,kBAA8B,EAC9BA,QAAsB,EACtBA,iBAA6B,EAC7BA,uBAAmC,EACnCA,6BAAyC,EACzCA,8BAA0C,EAC1CA,uBAAmC,EACnCA,uBAAmC,EACnCA,mBAA+B,EAC/BA,gBAA4B,EAC5BA,gBAA4B,EAC5BA,uBAAmC,EACnCA,uBAAmC,EACnCA,sBAAkC,EAClCA,uBAAmC,EACnCA,sBAAkC,EAClCA,eAA2B,EAC3BA,qBAAiC,EACjCA,qBAAiC,EACjCA,qBAAiC,EACjCA,iBAA6B,EAC7BA,gBAA4B,EAC5BA,sBAAkC,EAClCA,sBAAkC,EAClCA,sBAAkC,EAClCA,kBAA8B,EAC9BA,gBAA4B,EAC5BA,cAA0B,EAC1BA,oBAAgC,EAChCA,0BAAsC,EACtCA,2BAAuC,EACvCA,oBAAgC,EAChCA,oBAAgC,EAChCA,gBAA4B,EAC5BA,QAAsB,EACtBA,wBAAoC,EACpCA,cAA0B,EAC1BA,cAA0B,EAC1BA,YAAwB,EACxBA,gBAA4B,EAC5BA,eAA2B,EAC3BA,gBAA4B,EAC5BA,gBAA4B,EAC5BA,gBAA4B,EAC5BA,QAAsB,EACtBA,OAAqB,EACrBA,MAAoB,EACpBA,aAAyB,EACzBA,aAAyB,EACzBA,OAAqB,EACrBA,+BAA2C,EAC3CA,gBAA4B,EAC5BA,eAA2B,EAC3BA,cAA0B,EAC1BA,eAA2B,EAC3BA,qBAAiC,EACjCA,qBAAiC,EACjCA,qBAAiC,EACjCA,eAA2B,EAC3BA,gBAA4B,EAC5BA,SAAuB,EACvBA,SAAuB,EACvBA,SAAuB,EACvBA,qBAAiC,EACjCA,iBAA6B,EAC7BA,eAA2B,EAC3BA,MAAoB,EACpBA,KAAmB,EACnBA,aAAyB,EACzBA,cAA0B,EAC1BA,QAAsB,EACtBA,WAAyB,EACzBA,SAAuB,EACvBA,kBAA8B,EAC9BA,gBAA4B,EAC5BA,mBAA+B,EAC/BA,qBAAiC,EACjCA,WAAyB,EACzBA,eAA2B,EAC3BA,QAAsB,EACtBA,MAAoB,EACpBA,cAA0B,EAC1BA,kBAA8B,EAC9BA,aAAyB,EACzBA,aAAyB,EACzBA,eAA2B,EAC3BA,aAAyB,EACzBA,OAAqB,EACrBA,gBAA4B,EAC5BA,eAA2B,EAC3BA,iBAA6B,EAC7BA,aAAyB,EACzBA,aAAyB,EACzBA,MAAoB,EACpBA,eAA2B,EAC3BA,yBAAqC,EACrCA,gBAA4B,EAC5BA,0BAAsC,EACtCA,aAAyB,EACzBA,oBAAgC,EAChCA,gBAA4B,EAC5BA,cAA0B,EAC1BA,kBAA8B,EAC9BA,gBAA4B,EAC5BA,2BAAuC,EACvCA,qBAAiC,EACjCA,2BAAuC,EACvCA,0BAAsC,EACtCA,wBAAoC,EACpCA,yBAAqC,EACrCA,eAA2B,EAC3BA,MAAoB,EACpBA,aAAyB,EACzBA,qBAAiC,EACjCA,kBAA8B,EAC9BA,kBAA8B,EAC9BA,eAA2B,EAC3BA,mBAA+B,EAC/BA,qBAAiC,EACjCA,YAAwB,EACxBA,gBAA4B,EAC5BA,kBAA8B,EAC9BA,iBAA6B,EAC7BA,uBAAmC,EACnCA,yBAAqC,EACrCA,sBAAkC,EAClCA,uBAAmC,EACnCA,QAAsB,EACtBA,SAAuB,EACvBA,MAAoB,EACpBA,qBAAiC,EACjCA,oBAAgC,EAChCA,YAAwB,EACxBA,mBAA+B,EAC/BA,oBAAgC,EAChCA,mBAA+B,EAC/BA,iBAA6B,EAC7BA,gBAA4B,EAC5BA,MAAoB,EACpBA,kBAA8B,EAC9BA,kBAA8B,EAC9BA,oBAAgC,EAChCA,cAA0B,EAC1BA,aAAyB,EACzBA,eAA2B,EAC3BA,aAAyB,EACzBA,iBAA6B,EAC7BA,sBAAkC,EAClCA,uBAAmC,EACnCA,0BAAsC,EACtCA,cAA0B,EAC1BA,oBAAgC,EAChCA,uBAAmC,EACnCA,mBAA+B,EAC/BA,QAAsB,EACtBA,iBAA6B,EAC7BA,eAA2B,EAC3BA,gBAA4B,EAC5BA,cAA0B,EAC1BA,iBAA6B,EAC7BA,eAA2B,EAC3BA,OAAqB,EACrBA,MAAoB,EACpBA,YAAwB,EACxBA,mBAA+B,EAC/BA,mBAA+B,EAC/BA,kBAA8B,EAC9BA,mBAA+B,EAC/BA,kBAA8B,EAC9BA,aAAyB,EACzBA,cAA0B,EAC1BA,eAA2B,EAC3BA,iBAA6B,EAC7BA,eAA2B,EAC3BA,aAAyB,EACzBA,oBAAgC,EAChCA,aAAyB,EACzBA,cAA0B,EAC1BA,aAAyB,EACzBA,aAAyB,EACzBA,cAA0B,EAC1BA,aAAyB,EACzBA,WAAuB,EACvBA,YAAwB,EACxBA,aAAyB,EACzBA,YAAwB,EACxBA,aAAyB,EACzBA,UAAsB,EACtBA,cAA0B,EAC1BA,mBAA+B,EAC/BA,SAAuB,EACvBA,OAAqB,EACrBA,SAAuB,EACvBA,SAAuB,EACvBA,iBAA6B,EAC7BA,kBAA8B,EAC9BA,iBAA6B,EAC7BA,iBAA6B,EAC7BA,UAAwB,EACxBA,iBAA6B,EAC7BA,cAA0B,EAC1BA,cAA0B,EAC1BA,SAAuB,EACvBA,kBAA8B,EAC9BA,gBAA4B,EAC5BA,iBAA6B,EAC7BA,eAA2B,EAC3BA,MAAoB,EACpBA,oBAAgC,EAChCA,qBAAiC,EACjCA,qBAAiC,EACjCA,eAA2B,EAC3BA,OAAqB,EACrBA,eAA2B,EAC3BA,gBAA4B,EAC5BA,aAA2B,EAC3BA,sBAAkC,EAClCA,OAAqB,EACrBA,eAA2B,EAC3BA,eAA2B,EAC3BA,UAAwB,EACxBA,sBAAkC,EAClCA,QAAsB,EACtBA,mBAA+B,EAC/BA,QAAsB,EACtBA,MAAoB,EACpBA,cAA0B,EAC1BA,eAA2B,EAC3BA,UAAwB,EACxBA,OAAqB,EACrBA,UAAwB,EACxBA,kBAA8B,EAC9BA,cAA0B,EAC1BA,cAA0B,EAC1BA,iBAA6B,EAC7BA,yBAAqC,EACrCA,iBAA6B,EAC7BA,gBAA4B,EAC5BA,MAAoB,EACpBA,OAAqB,EACrBA,YAAwB,EACxBA,gBAA4B,EAC5BA,iBAA6B,EAC7BA,qBAAiC,EACjCA,eAA2B,EAC3BA,QAAsB,EACtBA,cAA0B,EAC1BA,YAAwB,EACxBA,gBAA4B,EAC5BA,cAA0B,EAC1BA,mBAA+B,EAC/BA,wBAAoC,EACpCA,mBAA+B,EAC/BA,yBAAqC,EACrCA,wBAAoC,EACpCA,wBAAoC,EACpCA,yBAAqC,EACrCA,iBAA6B,EAC7BA,uBAAmC,EACnCA,0BAAsC,EACtCA,uBAAmC,EACnCA,eAA2B,EAC3BA,eAA2B,EAC3BA,gBAA4B,EAC5BA,oBAAgC,EAChCA,iBAA6B,EAC7BA,eAA2B,EAC3BA,uBAAmC,EACnCA,kBAA8B,EAC9BA,2BAAuC,EACvCA,aAAyB,EACzBA,KAAmB,EACnBA,WAAyB,EACzBA,oBAAgC,EAChCA,mBAA+B,EAC/BA,YAA0B,EAC1BA,oBAAgC,EAChCA,uBAAmC,EACnCA,uBAAmC,EACnCA,8BAA0C,EAC1CA,gBAA4B,EAC5BA,kBAA8B,EAC9BA,YAA0B,EAC1BA,iBAA6B,EAC7BA,kBAA8B,EAC9BA,gBAA4B,EAC5BA,eAA2B,EAC3BA,eAA2B,EAC3BA,cAA0B,EAC1BA,gBAA4B,EAC5BA,gBAA4B,EAC5BA,QAAsB,EACtBA,eAA2B,EAC3BA,QAAsB,EACtBA,OAAqB,EACrBA,eAA2B,EAC3BA,cAA0B,EAC1BA,gBAA4B,EAC5BA,aAAyB,EACzBA,aAAyB,EACzBA,gBAA4B,EAC5BA,gBAA4B,EAC5BA,WAAuB,GAEvB,OAAOA,EA4BT,IAAI4C,EAAwB,qBAe5B7C,EAAQC,UAAYnG,IACpBkG,EAAQlG,oBAAsBA,EAC9BkG,EAAQ8C,OAjCR,SAAiBvC,EAAMC,EAAOJ,KAkC9BJ,EAAQ+C,aAtBR,SAAuBxC,EAAMC,EAAOJ,KAuBpCJ,EAAQU,cAVR,SAAuBH,EAAMC,GAC3B,OAAIqC,EAAsBhC,KAAKL,GAAe,GACvCA,sBCrYTwC,EAAOhD,QAAU,CACfwB,QAAS,SAAUyB,EAAKC,GACtB,IAAI9G,EAAG+G,EACP,GAAI/B,MAAMgC,UAAU5B,QAClB,OAAOyB,EAAIzB,QAAQ0B,GAErB,IAAK9G,EAAI,EAAG+G,EAAIF,EAAIxD,OAAQrD,EAAI+G,EAAG/G,IACjC,GAAI6G,EAAI7G,KAAO8G,EACb,OAAO9G,EAGX,OAAQ,GAEV8F,QAAS,SAAUe,EAAKI,EAAIC,GAC1B,IAAIlH,EAAG+G,EACP,GAAI/B,MAAMgC,UAAUlB,QAClB,OAAOe,EAAIf,QAAQmB,EAAIC,GAEzB,IAAKlH,EAAI,EAAG+G,EAAIF,EAAIxD,OAAQrD,EAAI+G,EAAG/G,IACjCiH,EAAGE,KAAKD,EAAOL,EAAI7G,GAAIA,EAAG6G,IAG9BrD,KAAM,SAAUd,GACd,OAAIG,OAAOmE,UAAUxD,KACZd,EAAIc,OAENd,EAAIZ,QAAQ,iBAAkB,KAEvCsF,UAAW,SAAU1E,GACnB,OAAIG,OAAOmE,UAAUI,UACZ1E,EAAI0E,YAEN1E,EAAIZ,QAAQ,UAAW,2BC1BlC,IAAInE,EAAIH,EAAQ,IAQhB,SAAS6J,EAAWxF,GAClB,IAAI7B,EAAIrC,EAAE2J,WAAWzF,GACrB,IAAW,IAAP7B,EACF,IAAIuH,EAAU1F,EAAKmE,MAAM,GAAI,QAEzBuB,EAAU1F,EAAKmE,MAAM,EAAGhG,EAAI,GAKlC,MAF4B,OAD5BuH,EAAU5J,EAAE6F,KAAK+D,GAASC,eACdxB,MAAM,EAAG,KAAYuB,EAAUA,EAAQvB,MAAM,IAC/B,MAAtBuB,EAAQvB,OAAO,KAAYuB,EAAUA,EAAQvB,MAAM,GAAI,IACpDuB,EAST,SAASjC,EAAUzD,GACjB,MAA4B,OAArBA,EAAKmE,MAAM,EAAG,GAwEvB,IAAIyB,EAA2B,wBA8F/B,SAASC,EAAchF,EAAK1C,GAC1B,KAAOA,EAAI0C,EAAIW,OAAQrD,IAAK,CAC1B,IAAIuG,EAAI7D,EAAI1C,GACZ,GAAU,MAANuG,EACJ,MAAU,MAANA,EAAkBvG,GACd,GAIZ,SAAS2H,EAAgBjF,EAAK1C,GAC5B,KAAOA,EAAI,EAAGA,IAAK,CACjB,IAAIuG,EAAI7D,EAAI1C,GACZ,GAAU,MAANuG,EACJ,MAAU,MAANA,EAAkBvG,GACd,GAeZ,SAAS4H,EAAeC,GACtB,OAZF,SAA2BA,GACzB,MACe,MAAZA,EAAK,IAAwC,MAA1BA,EAAKA,EAAKxE,OAAS,IAC1B,MAAZwE,EAAK,IAAwC,MAA1BA,EAAKA,EAAKxE,OAAS,GASrCyE,CAAkBD,GACbA,EAAK7E,OAAO,EAAG6E,EAAKxE,OAAS,GAE7BwE,EAIXjE,EAAQmE,SAhMR,SAAkBlG,EAAMiC,EAAOlC,GAG7B,IAAIgE,EAAU,GACVC,EAAU,EACVmC,GAAW,EACXC,GAAa,EACbC,EAAa,EACb9E,EAAMvB,EAAKwB,OACX8E,EAAiB,GACjBC,EAAc,GAElB,IAAKF,EAAa,EAAGA,EAAa9E,EAAK8E,IAAc,CACnD,IAAI3B,EAAI1E,EAAK0B,OAAO2E,GACpB,IAAiB,IAAbF,GACF,GAAU,MAANzB,EAAW,CACbyB,EAAWE,EACX,eAGF,IAAmB,IAAfD,EAAsB,CACxB,GAAU,MAAN1B,EAAW,CACbX,GAAWhE,EAAWC,EAAKmE,MAAMH,EAASqC,IAC1CF,EAAWE,EACXrC,EAAUqC,EACV,SAEF,GAAU,MAAN3B,EAAW,CACbX,GAAWhE,EAAWC,EAAKmE,MAAMH,EAASmC,IAE1CG,EAAiBd,EADjBe,EAAcvG,EAAKmE,MAAMgC,EAAUE,EAAa,IAEhDtC,GAAW9B,EACTkE,EACApC,EAAQvC,OACR8E,EACAC,EACA9C,EAAU8C,IAEZvC,EAAUqC,EAAa,EACvBF,GAAW,EACX,SAEF,IAAW,MAANzB,GAAmB,MAANA,IAA8C,MAAhC1E,EAAK0B,OAAO2E,EAAa,GAAY,CACnED,EAAa1B,EACb,eAGF,GAAIA,IAAM0B,EAAY,CACpBA,GAAa,EACb,UASR,OAJIpC,EAAUhE,EAAKwB,SACjBuC,GAAWhE,EAAWC,EAAKmB,OAAO6C,KAG7BD,GAuIThC,EAAQyE,UA3HR,SAAmBxG,EAAM6E,GAGvB,IAAIb,EAAU,EACVyC,EAAW,GACXC,GAAU,EACVnF,EAAMvB,EAAKwB,OAEf,SAASmF,EAAQrE,EAAMC,GAGrB,MADAD,GADAA,EAAOxG,EAAE6F,KAAKW,IACFrC,QAAQ2F,EAA0B,IAAID,eACzCnE,OAAS,GAAlB,CACA,IAAIkC,EAAMmB,EAAOvC,EAAMC,GAAS,IAC5BmB,GAAK+C,EAAS5C,KAAKH,IAIzB,IAAK,IAAIvF,EAAI,EAAGA,EAAIoD,EAAKpD,IAAK,CAC5B,IACO+G,EADHR,EAAI1E,EAAK0B,OAAOvD,GAEpB,IAAgB,IAAZuI,GAA2B,MAANhC,EAKzB,IAAgB,IAAZgC,GAEAvI,IAAM6F,GACC,MAANU,GAAmB,MAANA,GACS,MAAvB1E,EAAK0B,OAAOvD,EAAI,IAepB,GAAI,WAAWyE,KAAK8B,GAApB,CAEE,GADA1E,EAAOA,EAAKC,QAAQ,YAAa,MACjB,IAAZyG,EAAmB,CAErB,IAAW,KADXxB,EAAIW,EAAc7F,EAAM7B,IACV,CAEZwI,EADI7K,EAAE6F,KAAK3B,EAAKmE,MAAMH,EAAS7F,KAE/BuI,GAAU,EACV1C,EAAU7F,EAAI,EACd,SAEAA,EAAI+G,EAAI,EACR,SAIF,IAAW,KADXA,EAAIY,EAAgB9F,EAAM7B,EAAI,IAChB,CAGZwI,EAAQD,EADJX,EADAjK,EAAE6F,KAAK3B,EAAKmE,MAAMH,EAAS7F,MAG/BuI,GAAU,EACV1C,EAAU7F,EAAI,EACd,eAzCN,CAOI,IAAW,KADX+G,EAAIlF,EAAKuD,QAAQmB,EAAGvG,EAAI,IAEtB,MAGAwI,EAAQD,EADJ5K,EAAE6F,KAAK3B,EAAKmE,MAAMH,EAAU,EAAGkB,KAEnCwB,GAAU,EAEV1C,GADA7F,EAAI+G,GACU,OAlBlBwB,EAAU1G,EAAKmE,MAAMH,EAAS7F,GAC9B6F,EAAU7F,EAAI,EA4DlB,OARI6F,EAAUhE,EAAKwB,UACD,IAAZkF,EACFC,EAAQ3G,EAAKmE,MAAMH,IAEnB2C,EAAQD,EAASX,EAAejK,EAAE6F,KAAK3B,EAAKmE,MAAMH,OAI/ClI,EAAE6F,KAAK8E,EAAS9B,KAAK,qRC/L7B,SAAUiC,GACX,aAMA,IAAIC,EAAQ,CACVC,QAAS,OACT/J,KAAM,oBACNgK,OAAQC,EACR9I,GAAI,yDACJ+I,QAAS,6CACTC,QAASF,EACTtK,WAAY,0CACZyK,KAAM,oEACNnH,KAAM,oZAUNoH,IAAK,mFACLjI,MAAO6H,EACPK,SAAU,oCACVC,UAAW,4GACXtB,KAAM,WAmGR,SAASuB,EAAMpF,GACbqF,KAAKC,OAAS,GACdD,KAAKC,OAAOC,MAAQC,OAAOC,OAAO,MAClCJ,KAAKrF,QAAUA,GAAW0F,EAAOC,SACjCN,KAAKO,MAAQlB,EAAMmB,OAEfR,KAAKrF,QAAQ8F,SACfT,KAAKO,MAAQlB,EAAMoB,SACVT,KAAKrF,QAAQ+F,MAClBV,KAAKrF,QAAQgG,OACfX,KAAKO,MAAQlB,EAAMsB,OAEnBX,KAAKO,MAAQlB,EAAMqB,KA5GzBrB,EAAMuB,OAAS,iCACfvB,EAAMwB,OAAS,+DACfxB,EAAMO,IAAMkB,EAAKzB,EAAMO,KACpBnH,QAAQ,QAAS4G,EAAMuB,QACvBnI,QAAQ,QAAS4G,EAAMwB,QACvBE,WAEH1B,EAAM2B,OAAS,sBACf3B,EAAM5B,KAAO,+CACb4B,EAAM5B,KAAOqD,EAAKzB,EAAM5B,KAAM,MAC3BhF,QAAQ,QAAS4G,EAAM2B,QACvBD,WAEH1B,EAAMM,KAAOmB,EAAKzB,EAAMM,MACrBlH,QAAQ,QAAS4G,EAAM2B,QACvBvI,QAAQ,KAAM,mEACdA,QAAQ,MAAO,UAAY4G,EAAMO,IAAIqB,OAAS,KAC9CF,WAEH1B,EAAM6B,KAAO,gWAMb7B,EAAM8B,SAAW,yBACjB9B,EAAM7G,KAAOsI,EAAKzB,EAAM7G,KAAM,KAC3BC,QAAQ,UAAW4G,EAAM8B,UACzB1I,QAAQ,MAAO4G,EAAM6B,MACrBzI,QAAQ,YAAa,4EACrBsI,WAEH1B,EAAMS,UAAYgB,EAAKzB,EAAMS,WAC1BrH,QAAQ,KAAM4G,EAAM3I,IACpB+B,QAAQ,UAAW4G,EAAMI,SACzBhH,QAAQ,WAAY4G,EAAMQ,UAC1BpH,QAAQ,MAAO4G,EAAM6B,MACrBH,WAEH1B,EAAMnK,WAAa4L,EAAKzB,EAAMnK,YAC3BuD,QAAQ,YAAa4G,EAAMS,WAC3BiB,WAMH1B,EAAMmB,OAASY,EAAM,GAAI/B,GAMzBA,EAAMqB,IAAMU,EAAM,GAAI/B,EAAMmB,OAAQ,CAClCjB,OAAQ,iFACRO,UAAW,IACXL,QAAS,0CAGXJ,EAAMqB,IAAIZ,UAAYgB,EAAKzB,EAAMS,WAC9BrH,QAAQ,MAAO,MACZ4G,EAAMqB,IAAInB,OAAO0B,OAAOxI,QAAQ,MAAO,OAAS,IAChD4G,EAAMM,KAAKsB,OAAOxI,QAAQ,MAAO,OAAS,KAC7CsI,WAMH1B,EAAMsB,OAASS,EAAM,GAAI/B,EAAMqB,IAAK,CAClChB,QAAS,gFACT/H,MAAO,0EAOT0H,EAAMoB,SAAWW,EAAM,GAAI/B,EAAMmB,OAAQ,CACvChI,KAAMsI,EACJ,8IAGCrI,QAAQ,UAAW4G,EAAM8B,UACzB1I,QAAQ,OAAQ,qKAIhBsI,WACHnB,IAAK,sEA4BPG,EAAMQ,MAAQlB,EAMdU,EAAMsB,IAAM,SAASC,EAAK3G,GAExB,OADY,IAAIoF,EAAMpF,GACT0G,IAAIC,IAOnBvB,EAAMpC,UAAU0D,IAAM,SAASC,GAO7B,OANAA,EAAMA,EACH7I,QAAQ,WAAY,MACpBA,QAAQ,MAAO,QACfA,QAAQ,UAAW,KACnBA,QAAQ,UAAW,MAEfuH,KAAKuB,MAAMD,GAAK,IAOzBvB,EAAMpC,UAAU4D,MAAQ,SAASD,EAAKE,GAEpC,IAAI/F,EACAgG,EACAC,EACAC,EACA7M,EACA2I,EACAmE,EACAC,EACAC,EACAC,EACApL,EACA+D,EACAsH,EACAC,EACAC,EACAC,EAEJ,IAlBAb,EAAMA,EAAI7I,QAAQ,SAAU,IAkBrB6I,GAYL,IAVII,EAAM1B,KAAKO,MAAMjB,QAAQ8C,KAAKd,MAChCA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QACvB0H,EAAI,GAAG1H,OAAS,GAClBgG,KAAKC,OAAO5D,KAAK,CACfiG,KAAM,WAMRZ,EAAM1B,KAAKO,MAAMhL,KAAK6M,KAAKd,GAC7BA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3B0H,EAAMA,EAAI,GAAGjJ,QAAQ,UAAW,IAChCuH,KAAKC,OAAO5D,KAAK,CACfiG,KAAM,OACN9D,KAAOwB,KAAKrF,QAAQ8F,SAEhBiB,EADAa,EAAMb,EAAK,aAOnB,GAAIA,EAAM1B,KAAKO,MAAMhB,OAAO6C,KAAKd,GAC/BA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3BgG,KAAKC,OAAO5D,KAAK,CACfiG,KAAM,OACNE,KAAMd,EAAI,GAAKA,EAAI,GAAGvH,OAASuH,EAAI,GACnClD,KAAMkD,EAAI,IAAM,UAMpB,GAAIA,EAAM1B,KAAKO,MAAMd,QAAQ2C,KAAKd,GAChCA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3BgG,KAAKC,OAAO5D,KAAK,CACfiG,KAAM,UACNG,MAAOf,EAAI,GAAG1H,OACdwE,KAAMkD,EAAI,UAMd,IAAIA,EAAM1B,KAAKO,MAAMb,QAAQ0C,KAAKd,MAChC7D,EAAO,CACL6E,KAAM,QACN7L,OAAQiM,EAAWhB,EAAI,GAAGjJ,QAAQ,eAAgB,KAClDkK,MAAOjB,EAAI,GAAGjJ,QAAQ,aAAc,IAAIsE,MAAM,UAC9C6F,MAAOlB,EAAI,GAAKA,EAAI,GAAGjJ,QAAQ,MAAO,IAAIsE,MAAM,MAAQ,KAGjDtG,OAAOuD,SAAWyD,EAAKkF,MAAM3I,OARxC,CAWI,IAFAsH,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAEtBrD,EAAI,EAAGA,EAAI8G,EAAKkF,MAAM3I,OAAQrD,IAC7B,YAAYyE,KAAKqC,EAAKkF,MAAMhM,IAC9B8G,EAAKkF,MAAMhM,GAAK,QACP,aAAayE,KAAKqC,EAAKkF,MAAMhM,IACtC8G,EAAKkF,MAAMhM,GAAK,SACP,YAAYyE,KAAKqC,EAAKkF,MAAMhM,IACrC8G,EAAKkF,MAAMhM,GAAK,OAEhB8G,EAAKkF,MAAMhM,GAAK,KAIpB,IAAKA,EAAI,EAAGA,EAAI8G,EAAKmF,MAAM5I,OAAQrD,IACjC8G,EAAKmF,MAAMjM,GAAK+L,EAAWjF,EAAKmF,MAAMjM,GAAI8G,EAAKhH,OAAOuD,QAGxDgG,KAAKC,OAAO5D,KAAKoB,QAOrB,GAAIiE,EAAM1B,KAAKO,MAAM7J,GAAG0L,KAAKd,GAC3BA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3BgG,KAAKC,OAAO5D,KAAK,CACfiG,KAAM,YAMV,GAAIZ,EAAM1B,KAAKO,MAAMrL,WAAWkN,KAAKd,GACnCA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAE3BgG,KAAKC,OAAO5D,KAAK,CACfiG,KAAM,qBAGRZ,EAAMA,EAAI,GAAGjJ,QAAQ,WAAY,IAKjCuH,KAAKuB,MAAMG,EAAKF,GAEhBxB,KAAKC,OAAO5D,KAAK,CACfiG,KAAM,wBAOV,GAAIZ,EAAM1B,KAAKO,MAAMZ,KAAKyC,KAAKd,GAA/B,CAsBE,IArBAA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAI3B4H,EAAY,CACVU,KAAM,aACNO,QAJFZ,GADAN,EAAOD,EAAI,IACM1H,OAAS,EAKxB8I,MAAOb,GAAaN,EAAO,GAC3BF,OAAO,GAGTzB,KAAKC,OAAO5D,KAAKuF,GAKjBC,EAAY,GACZpG,GAAO,EACPuG,GAJAN,EAAMA,EAAI,GAAGqB,MAAM/C,KAAKO,MAAM9C,OAItBzD,OACRrD,EAAI,EAEGA,EAAIqL,EAAGrL,IAKZoL,GAJAtE,EAAOiE,EAAI/K,IAIEqD,SACbyD,EAAOA,EAAKhF,QAAQ,qBAAsB,KAIhCsD,QAAQ,SAChBgG,GAAStE,EAAKzD,OACdyD,EAAQuC,KAAKrF,QAAQ8F,SAEjBhD,EAAKhF,QAAQ,YAAa,IAD1BgF,EAAKhF,QAAQ,IAAIuK,OAAO,QAAUjB,EAAQ,IAAK,MAAO,KAMxDpL,IAAMqL,EAAI,IACZlN,EAAIuK,EAAM2B,OAAOoB,KAAKV,EAAI/K,EAAI,IAAI,IAC9BgL,EAAK3H,OAAS,EAAiB,IAAblF,EAAEkF,OACnBlF,EAAEkF,OAAS,GAAMgG,KAAKrF,QAAQsI,YAAcnO,IAAM6M,KACrDL,EAAMI,EAAI/E,MAAMhG,EAAI,GAAGwG,KAAK,MAAQmE,EACpC3K,EAAIqL,EAAI,IAOZP,EAAQhG,GAAQ,eAAeL,KAAKqC,GAChC9G,IAAMqL,EAAI,IACZvG,EAAwC,OAAjCgC,EAAKvD,OAAOuD,EAAKzD,OAAS,GAC5ByH,IAAOA,EAAQhG,IAGlBgG,IACFG,EAAUH,OAAQ,GAKpBU,OAAYe,GADZhB,EAAS,cAAc9G,KAAKqC,MAG1B0E,EAAwB,MAAZ1E,EAAK,GACjBA,EAAOA,EAAKhF,QAAQ,eAAgB,KAGtCqJ,EAAI,CACFQ,KAAM,kBACNa,KAAMjB,EACNkB,QAASjB,EACTV,MAAOA,GAGTI,EAAUxF,KAAKyF,GACf9B,KAAKC,OAAO5D,KAAKyF,GAGjB9B,KAAKuB,MAAM9D,GAAM,GAEjBuC,KAAKC,OAAO5D,KAAK,CACfiG,KAAM,kBAIV,GAAIV,EAAUH,MAGZ,IAFAO,EAAIH,EAAU7H,OACdrD,EAAI,EACGA,EAAIqL,EAAGrL,IACZkL,EAAUlL,GAAG8K,OAAQ,EAIzBzB,KAAKC,OAAO5D,KAAK,CACfiG,KAAM,kBAOV,GAAIZ,EAAM1B,KAAKO,MAAM/H,KAAK4J,KAAKd,GAC7BA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3BgG,KAAKC,OAAO5D,KAAK,CACfiG,KAAMtC,KAAKrF,QAAQ0I,SACf,YACA,OACJlM,KAAM6I,KAAKrF,QAAQ2I,YACF,QAAX5B,EAAI,IAA2B,WAAXA,EAAI,IAA8B,UAAXA,EAAI,IACrDlD,KAAMkD,EAAI,UAMd,GAAIF,IAAQE,EAAM1B,KAAKO,MAAMX,IAAIwC,KAAKd,IACpCA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QACvB0H,EAAI,KAAIA,EAAI,GAAKA,EAAI,GAAGW,UAAU,EAAGX,EAAI,GAAG1H,OAAS,IACzDU,EAAMgH,EAAI,GAAGvD,cAAc1F,QAAQ,OAAQ,KACtCuH,KAAKC,OAAOC,MAAMxF,KACrBsF,KAAKC,OAAOC,MAAMxF,GAAO,CACvB6I,KAAM7B,EAAI,GACV8B,MAAO9B,EAAI,UAOjB,IAAIA,EAAM1B,KAAKO,MAAM5I,MAAMyK,KAAKd,MAC9B7D,EAAO,CACL6E,KAAM,QACN7L,OAAQiM,EAAWhB,EAAI,GAAGjJ,QAAQ,eAAgB,KAClDkK,MAAOjB,EAAI,GAAGjJ,QAAQ,aAAc,IAAIsE,MAAM,UAC9C6F,MAAOlB,EAAI,GAAKA,EAAI,GAAGjJ,QAAQ,MAAO,IAAIsE,MAAM,MAAQ,KAGjDtG,OAAOuD,SAAWyD,EAAKkF,MAAM3I,OARxC,CAWI,IAFAsH,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAEtBrD,EAAI,EAAGA,EAAI8G,EAAKkF,MAAM3I,OAAQrD,IAC7B,YAAYyE,KAAKqC,EAAKkF,MAAMhM,IAC9B8G,EAAKkF,MAAMhM,GAAK,QACP,aAAayE,KAAKqC,EAAKkF,MAAMhM,IACtC8G,EAAKkF,MAAMhM,GAAK,SACP,YAAYyE,KAAKqC,EAAKkF,MAAMhM,IACrC8G,EAAKkF,MAAMhM,GAAK,OAEhB8G,EAAKkF,MAAMhM,GAAK,KAIpB,IAAKA,EAAI,EAAGA,EAAI8G,EAAKmF,MAAM5I,OAAQrD,IACjC8G,EAAKmF,MAAMjM,GAAK+L,EACdjF,EAAKmF,MAAMjM,GAAG8B,QAAQ,mBAAoB,IAC1CgF,EAAKhH,OAAOuD,QAGhBgG,KAAKC,OAAO5D,KAAKoB,QAOrB,GAAIiE,EAAM1B,KAAKO,MAAMV,SAASuC,KAAKd,GACjCA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3BgG,KAAKC,OAAO5D,KAAK,CACfiG,KAAM,UACNG,MAAkB,MAAXf,EAAI,GAAa,EAAI,EAC5BlD,KAAMkD,EAAI,UAMd,GAAIF,IAAQE,EAAM1B,KAAKO,MAAMT,UAAUsC,KAAKd,IAC1CA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3BgG,KAAKC,OAAO5D,KAAK,CACfiG,KAAM,YACN9D,KAA2C,OAArCkD,EAAI,GAAGxH,OAAOwH,EAAI,GAAG1H,OAAS,GAChC0H,EAAI,GAAG/E,MAAM,GAAI,GACjB+E,EAAI,UAMZ,GAAIA,EAAM1B,KAAKO,MAAM/B,KAAK4D,KAAKd,GAE7BA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3BgG,KAAKC,OAAO5D,KAAK,CACfiG,KAAM,OACN9D,KAAMkD,EAAI,UAKd,GAAIJ,EACF,MAAM,IAAImC,MAAM,0BAA4BnC,EAAIrH,WAAW,IAI/D,OAAO+F,KAAKC,QAOd,IAAIyD,EAAS,CACXC,OAAQ,+CACRC,SAAU,sCACVC,IAAKrE,EACL9E,IAAK,2JAMLoJ,KAAM,2CACNC,QAAS,wDACTC,OAAQ,gEACRtM,OAAQ,gHACR1B,GAAI,mNACJT,KAAM,sCACNJ,GAAI,wBACJQ,IAAK6J,EACLhB,KAAM,8EAwFR,SAASyF,EAAY/D,EAAOvF,GAO1B,GANAqF,KAAKrF,QAAUA,GAAW0F,EAAOC,SACjCN,KAAKE,MAAQA,EACbF,KAAKO,MAAQmD,EAAOlD,OACpBR,KAAKkE,SAAWlE,KAAKrF,QAAQuJ,UAAY,IAAIC,EAC7CnE,KAAKkE,SAASvJ,QAAUqF,KAAKrF,SAExBqF,KAAKE,MACR,MAAM,IAAIuD,MAAM,6CAGdzD,KAAKrF,QAAQ8F,SACfT,KAAKO,MAAQmD,EAAOjD,SACXT,KAAKrF,QAAQ+F,MAClBV,KAAKrF,QAAQyJ,OACfpE,KAAKO,MAAQmD,EAAOU,OAEpBpE,KAAKO,MAAQmD,EAAOhD,KA8Q1B,SAASyD,EAASxJ,GAChBqF,KAAKrF,QAAUA,GAAW0F,EAAOC,SA8JnC,SAAS+D,KAyBT,SAASC,EAAO3J,GACdqF,KAAKC,OAAS,GACdD,KAAKuB,MAAQ,KACbvB,KAAKrF,QAAUA,GAAW0F,EAAOC,SACjCN,KAAKrF,QAAQuJ,SAAWlE,KAAKrF,QAAQuJ,UAAY,IAAIC,EACrDnE,KAAKkE,SAAWlE,KAAKrF,QAAQuJ,SAC7BlE,KAAKkE,SAASvJ,QAAUqF,KAAKrF,QAC7BqF,KAAKuE,QAAU,IAAIC,EAsLrB,SAASA,IACPxE,KAAKyE,KAAO,GA8Bd,SAASd,EAAOnL,EAAMkM,GACpB,GAAIA,GACF,GAAIf,EAAOgB,WAAWvJ,KAAK5C,GACzB,OAAOA,EAAKC,QAAQkL,EAAOiB,cAAe,SAAUC,GAAM,OAAOlB,EAAOmB,aAAaD,UAGvF,GAAIlB,EAAOoB,mBAAmB3J,KAAK5C,GACjC,OAAOA,EAAKC,QAAQkL,EAAOqB,sBAAuB,SAAUH,GAAM,OAAOlB,EAAOmB,aAAaD,KAIjG,OAAOrM,EAgBT,SAASyM,EAASzM,GAEhB,OAAOA,EAAKC,QAAQ,6CAA8C,SAASnE,EAAG4Q,GAE5E,MAAU,WADVA,EAAIA,EAAE/G,eACoB,IACN,MAAhB+G,EAAEhL,OAAO,GACY,MAAhBgL,EAAEhL,OAAO,GACZV,OAAOC,aAAaC,SAASwL,EAAE7C,UAAU,GAAI,KAC7C7I,OAAOC,cAAcyL,EAAE7C,UAAU,IAEhC,KAIX,SAASvB,EAAKqE,EAAOC,GAGnB,OAFAD,EAAQA,EAAMlE,QAAUkE,EACxBC,EAAMA,GAAO,GACN,CACL3M,QAAS,SAASqC,EAAMuK,GAItB,OAFAA,GADAA,EAAMA,EAAIpE,QAAUoE,GACV5M,QAAQ,eAAgB,MAClC0M,EAAQA,EAAM1M,QAAQqC,EAAMuK,GACrBrF,MAETe,SAAU,WACR,OAAO,IAAIiC,OAAOmC,EAAOC,KAK/B,SAASE,EAASjC,EAAUkC,EAAMhC,GAChC,GAAIF,EAAU,CACZ,IACE,IAAImC,EAAOC,mBAAmBR,EAAS1B,IACpC9K,QAAQ,UAAW,IACnB0F,cACH,MAAOuH,GACP,OAAO,KAET,GAAoC,IAAhCF,EAAKzJ,QAAQ,gBAAsD,IAA9ByJ,EAAKzJ,QAAQ,cAAgD,IAA1ByJ,EAAKzJ,QAAQ,SACvF,OAAO,KAGPwJ,IAASI,EAAqBvK,KAAKmI,KACrCA,EAUJ,SAAoBgC,EAAMhC,GACnBqC,EAAS,IAAML,KAId,oBAAmBnK,KAAKmK,GAC1BK,EAAS,IAAML,GAAQA,EAAO,IAE9BK,EAAS,IAAML,GAAQhD,EAAMgD,EAAM,KAAK,IAK5C,OAFAA,EAAOK,EAAS,IAAML,GAEG,OAArBhC,EAAK5G,MAAM,EAAG,GACT4I,EAAK9M,QAAQ,WAAY,KAAO8K,EACX,MAAnBA,EAAKrJ,OAAO,GACdqL,EAAK9M,QAAQ,sBAAsB,MAAQ8K,EAE3CgC,EAAOhC,EA5BPsC,CAAWN,EAAMhC,IAE1B,IACEA,EAAOuC,UAAUvC,GAAM9K,QAAQ,OAAQ,KACvC,MAAOiN,GACP,OAAO,KAET,OAAOnC,EAp1BTG,EAAOqC,aAAe,qCACtBrC,EAAO1N,GAAK8K,EAAK4C,EAAO1N,IAAIyC,QAAQ,eAAgBiL,EAAOqC,cAAchF,WAEzE2C,EAAOsC,SAAW,+CAElBtC,EAAOuC,QAAU,+BACjBvC,EAAOwC,OAAS,gJAChBxC,EAAOE,SAAW9C,EAAK4C,EAAOE,UAC3BnL,QAAQ,SAAUiL,EAAOuC,SACzBxN,QAAQ,QAASiL,EAAOwC,QACxBnF,WAEH2C,EAAOyC,WAAa,8EAEpBzC,EAAOhJ,IAAMoG,EAAK4C,EAAOhJ,KACtBjC,QAAQ,UAAW4G,EAAM8B,UACzB1I,QAAQ,YAAaiL,EAAOyC,YAC5BpF,WAEH2C,EAAO9C,OAAS,yDAChB8C,EAAO0C,MAAQ,gDACf1C,EAAO7C,OAAS,8DAEhB6C,EAAOI,KAAOhD,EAAK4C,EAAOI,MACvBrL,QAAQ,QAASiL,EAAO9C,QACxBnI,QAAQ,OAAQiL,EAAO0C,OACvB3N,QAAQ,QAASiL,EAAO7C,QACxBE,WAEH2C,EAAOK,QAAUjD,EAAK4C,EAAOK,SAC1BtL,QAAQ,QAASiL,EAAO9C,QACxBG,WAMH2C,EAAOlD,OAASY,EAAM,GAAIsC,GAM1BA,EAAOjD,SAAWW,EAAM,GAAIsC,EAAOlD,OAAQ,CACzC9I,OAAQ,iEACR1B,GAAI,2DACJ8N,KAAMhD,EAAK,2BACRrI,QAAQ,QAASiL,EAAO9C,QACxBG,WACHgD,QAASjD,EAAK,iCACXrI,QAAQ,QAASiL,EAAO9C,QACxBG,aAOL2C,EAAOhD,IAAMU,EAAM,GAAIsC,EAAOlD,OAAQ,CACpCmD,OAAQ7C,EAAK4C,EAAOC,QAAQlL,QAAQ,KAAM,QAAQsI,WAClDsF,gBAAiB,4EACjBxC,IAAK,mEACLyC,WAAY,yEACZ3Q,IAAK,0BACL6I,KAAM,sNAGRkF,EAAOhD,IAAImD,IAAM/C,EAAK4C,EAAOhD,IAAImD,IAAK,KACnCpL,QAAQ,QAASiL,EAAOhD,IAAI2F,iBAC5BtF,WAKH2C,EAAOU,OAAShD,EAAM,GAAIsC,EAAOhD,IAAK,CACpCvL,GAAI2L,EAAK4C,EAAOvO,IAAIsD,QAAQ,OAAQ,KAAKsI,WACzCvC,KAAMsC,EAAK4C,EAAOhD,IAAIlC,MAAM/F,QAAQ,UAAW,KAAKsI,aAiCtDkD,EAAY1D,MAAQmD,EAMpBO,EAAYsC,OAAS,SAASjF,EAAKpB,EAAOvF,GAExC,OADa,IAAIsJ,EAAY/D,EAAOvF,GACtB4L,OAAOjF,IAOvB2C,EAAYtG,UAAU4I,OAAS,SAASjF,GAStC,IARA,IACIwC,EACAtF,EACA+E,EACAC,EACA9B,EACA8E,EANAC,EAAM,GAQHnF,GAEL,GAAII,EAAM1B,KAAKO,MAAMoD,OAAOvB,KAAKd,GAC/BA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3ByM,GAAO9C,EAAOjC,EAAI,SAKpB,GAAIA,EAAM1B,KAAKO,MAAM7F,IAAI0H,KAAKd,IACvBtB,KAAK0G,QAAU,QAAQtL,KAAKsG,EAAI,IACnC1B,KAAK0G,QAAS,EACL1G,KAAK0G,QAAU,UAAUtL,KAAKsG,EAAI,MAC3C1B,KAAK0G,QAAS,IAEX1G,KAAK2G,YAAc,iCAAiCvL,KAAKsG,EAAI,IAChE1B,KAAK2G,YAAa,EACT3G,KAAK2G,YAAc,mCAAmCvL,KAAKsG,EAAI,MACxE1B,KAAK2G,YAAa,GAGpBrF,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3ByM,GAAOzG,KAAKrF,QAAQ0I,SAChBrD,KAAKrF,QAAQ2I,UACXtD,KAAKrF,QAAQ2I,UAAU5B,EAAI,IAC3BiC,EAAOjC,EAAI,IACbA,EAAI,QAKV,GAAIA,EAAM1B,KAAKO,MAAMuD,KAAK1B,KAAKd,GAA/B,CACE,IAAIsF,EAAiBC,EAAmBnF,EAAI,GAAI,MAChD,GAAIkF,GAAkB,EAAG,CACvB,IAAIE,EAAUpF,EAAI,GAAG1H,QAAU0H,EAAI,GAAG1H,OAAS4M,IAAmBlF,EAAI,IAAM,IAAI1H,OAChF0H,EAAI,GAAKA,EAAI,GAAGW,UAAU,EAAGuE,GAC7BlF,EAAI,GAAKA,EAAI,GAAGW,UAAU,EAAGyE,GAAS3M,OACtCuH,EAAI,GAAK,GAEXJ,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3BgG,KAAK0G,QAAS,EACdnD,EAAO7B,EAAI,GACP1B,KAAKrF,QAAQ8F,UACfqD,EAAO,gCAAgC1B,KAAKmB,KAG1CA,EAAOO,EAAK,GACZN,EAAQM,EAAK,IAEbN,EAAQ,GAGVA,EAAQ9B,EAAI,GAAKA,EAAI,GAAG/E,MAAM,GAAI,GAAK,GAEzC4G,EAAOA,EAAKpJ,OAAO1B,QAAQ,gBAAiB,MAC5CgO,GAAOzG,KAAK+G,WAAWrF,EAAK,CAC1B6B,KAAMU,EAAY+C,QAAQzD,GAC1BC,MAAOS,EAAY+C,QAAQxD,KAE7BxD,KAAK0G,QAAS,OAKhB,IAAKhF,EAAM1B,KAAKO,MAAMwD,QAAQ3B,KAAKd,MAC3BI,EAAM1B,KAAKO,MAAMyD,OAAO5B,KAAKd,IADrC,CAKE,GAHAA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3B8J,GAAQpC,EAAI,IAAMA,EAAI,IAAIjJ,QAAQ,OAAQ,OAC1CqL,EAAO9D,KAAKE,MAAM4D,EAAK3F,kBACT2F,EAAKP,KAAM,CACvBkD,GAAO/E,EAAI,GAAGxH,OAAO,GACrBoH,EAAMI,EAAI,GAAGW,UAAU,GAAKf,EAC5B,SAEFtB,KAAK0G,QAAS,EACdD,GAAOzG,KAAK+G,WAAWrF,EAAKoC,GAC5B9D,KAAK0G,QAAS,OAKhB,GAAIhF,EAAM1B,KAAKO,MAAM7I,OAAO0K,KAAKd,GAC/BA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3ByM,GAAOzG,KAAKkE,SAASxM,OAAOsI,KAAKuG,OAAO7E,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAMA,EAAI,UAK5E,GAAIA,EAAM1B,KAAKO,MAAMvK,GAAGoM,KAAKd,GAC3BA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3ByM,GAAOzG,KAAKkE,SAASlO,GAAGgK,KAAKuG,OAAO7E,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAMA,EAAI,UAK5F,GAAIA,EAAM1B,KAAKO,MAAMhL,KAAK6M,KAAKd,GAC7BA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3ByM,GAAOzG,KAAKkE,SAAS+C,SAAStD,EAAOjC,EAAI,GAAGvH,QAAQ,SAKtD,GAAIuH,EAAM1B,KAAKO,MAAMpL,GAAGiN,KAAKd,GAC3BA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3ByM,GAAOzG,KAAKkE,SAAS/O,UAKvB,GAAIuM,EAAM1B,KAAKO,MAAM5K,IAAIyM,KAAKd,GAC5BA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3ByM,GAAOzG,KAAKkE,SAASvO,IAAIqK,KAAKuG,OAAO7E,EAAI,UAK3C,GAAIA,EAAM1B,KAAKO,MAAMqD,SAASxB,KAAKd,GACjCA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAGzBuJ,EAFa,MAAX7B,EAAI,GAEC,WADPlD,EAAOmF,EAAO3D,KAAKkH,OAAOxF,EAAI,MAG9BlD,EAAOmF,EAAOjC,EAAI,IAGpB+E,GAAOzG,KAAKkE,SAASJ,KAAKP,EAAM,KAAM/E,QAKxC,GAAKwB,KAAK0G,UAAWhF,EAAM1B,KAAKO,MAAMsD,IAAIzB,KAAKd,KAuB/C,GAAII,EAAM1B,KAAKO,MAAM/B,KAAK4D,KAAKd,GAC7BA,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QACvBgG,KAAK2G,WACPF,GAAOzG,KAAKkE,SAAS1F,KAAKkD,EAAI,IAE9B+E,GAAOzG,KAAKkE,SAAS1F,KAAKmF,EAAO3D,KAAKmH,YAAYzF,EAAI,WAK1D,GAAIJ,EACF,MAAM,IAAImC,MAAM,0BAA4BnC,EAAIrH,WAAW,QAlC7D,CACE,GAAe,MAAXyH,EAAI,GAEN6B,EAAO,WADP/E,EAAOmF,EAAOjC,EAAI,SAEb,CAEL,GACE8E,EAAc9E,EAAI,GAClBA,EAAI,GAAK1B,KAAKO,MAAM+F,WAAWlE,KAAKV,EAAI,IAAI,SACrC8E,IAAgB9E,EAAI,IAC7BlD,EAAOmF,EAAOjC,EAAI,IAEhB6B,EADa,SAAX7B,EAAI,GACC,UAAYlD,EAEZA,EAGX8C,EAAMA,EAAIe,UAAUX,EAAI,GAAG1H,QAC3ByM,GAAOzG,KAAKkE,SAASJ,KAAKP,EAAM,KAAM/E,GAoB1C,OAAOiI,GAGTxC,EAAY+C,QAAU,SAASxI,GAC7B,OAAOA,EAAOA,EAAK/F,QAAQwL,EAAY1D,MAAMyF,SAAU,MAAQxH,GAOjEyF,EAAYtG,UAAUoJ,WAAa,SAASrF,EAAKoC,GAC/C,IAAIP,EAAOO,EAAKP,KACZC,EAAQM,EAAKN,MAAQG,EAAOG,EAAKN,OAAS,KAE9C,MAA4B,MAArB9B,EAAI,GAAGxH,OAAO,GACjB8F,KAAKkE,SAASJ,KAAKP,EAAMC,EAAOxD,KAAKuG,OAAO7E,EAAI,KAChD1B,KAAKkE,SAASkD,MAAM7D,EAAMC,EAAOG,EAAOjC,EAAI,MAOlDuC,EAAYtG,UAAUwJ,YAAc,SAAS3I,GAC3C,OAAKwB,KAAKrF,QAAQwM,YACX3I,EAEJ/F,QAAQ,OAAQ,KAEhBA,QAAQ,MAAO,KAEfA,QAAQ,2BAA2B,OAEnCA,QAAQ,KAAM,KAEdA,QAAQ,gCAAgC,OAExCA,QAAQ,KAAM,KAEdA,QAAQ,SAAU,KAfiB+F,GAsBxCyF,EAAYtG,UAAUuJ,OAAS,SAAS1I,GACtC,IAAKwB,KAAKrF,QAAQuM,OAAQ,OAAO1I,EAMjC,IALA,IAGIqG,EAHA4B,EAAM,GACNzE,EAAIxD,EAAKxE,OACTrD,EAAI,EAGDA,EAAIqL,EAAGrL,IACZkO,EAAKrG,EAAKvE,WAAWtD,GACjB0Q,KAAKC,SAAW,KAClBzC,EAAK,IAAMA,EAAG0C,SAAS,KAEzBd,GAAO,KAAO5B,EAAK,IAGrB,OAAO4B,GAWTtC,EAASxG,UAAUpI,KAAO,SAASA,EAAMiS,EAAYC,GACnD,IAAIjF,GAAQgF,GAAc,IAAIzE,MAAM,OAAO,GAC3C,GAAI/C,KAAKrF,QAAQ+M,UAAW,CAC1B,IAAIjB,EAAMzG,KAAKrF,QAAQ+M,UAAUnS,EAAMiN,GAC5B,MAAPiE,GAAeA,IAAQlR,IACzBkS,GAAU,EACVlS,EAAOkR,GAIX,OAAKjE,EAME,qBACHxC,KAAKrF,QAAQgN,WACbhE,EAAOnB,GAAM,GACb,MACCiF,EAAUlS,EAAOoO,EAAOpO,GAAM,IAC/B,kBAVK,eACFkS,EAAUlS,EAAOoO,EAAOpO,GAAM,IAC/B,iBAWR4O,EAASxG,UAAUzI,WAAa,SAAS0S,GACvC,MAAO,iBAAmBA,EAAQ,mBAGpCzD,EAASxG,UAAUnF,KAAO,SAASA,GACjC,OAAOA,GAGT2L,EAASxG,UAAU8B,QAAU,SAASjB,EAAMqJ,EAAOC,EAAKvD,GACtD,OAAIvE,KAAKrF,QAAQoN,UACR,KACHF,EACA,QACA7H,KAAKrF,QAAQqN,aACbzD,EAAQ0D,KAAKH,GACb,KACAtJ,EACA,MACAqJ,EACA,MAGC,KAAOA,EAAQ,IAAMrJ,EAAO,MAAQqJ,EAAQ,OAGrD1D,EAASxG,UAAUjH,GAAK,WACtB,OAAOsJ,KAAKrF,QAAQuN,MAAQ,UAAY,UAG1C/D,EAASxG,UAAUgC,KAAO,SAASwI,EAAMtF,EAASC,GAChD,IAAIR,EAAOO,EAAU,KAAO,KAE5B,MAAO,IAAMP,GADGO,GAAqB,IAAVC,EAAgB,WAAaA,EAAQ,IAAO,IACxC,MAAQqF,EAAO,KAAO7F,EAAO,OAG9D6B,EAASxG,UAAUyK,SAAW,SAAS5J,GACrC,MAAO,OAASA,EAAO,WAGzB2F,EAASxG,UAAU0K,SAAW,SAASjF,GACrC,MAAO,WACFA,EAAU,cAAgB,IAC3B,+BACCpD,KAAKrF,QAAQuN,MAAQ,KAAO,IAC7B,MAGN/D,EAASxG,UAAUmC,UAAY,SAAStB,GACtC,MAAO,MAAQA,EAAO,UAGxB2F,EAASxG,UAAUhG,MAAQ,SAASlB,EAAQ0R,GAG1C,OAFIA,IAAMA,EAAO,UAAYA,EAAO,YAE7B,qBAEH1R,EACA,aACA0R,EACA,cAGNhE,EAASxG,UAAU2K,SAAW,SAASC,GACrC,MAAO,SAAWA,EAAU,WAG9BpE,EAASxG,UAAU6K,UAAY,SAASD,EAASE,GAC/C,IAAInG,EAAOmG,EAAMhS,OAAS,KAAO,KAIjC,OAHUgS,EAAM9F,MACZ,IAAML,EAAO,WAAamG,EAAM9F,MAAQ,KACxC,IAAML,EAAO,KACJiG,EAAU,KAAOjG,EAAO,OAIvC6B,EAASxG,UAAUjG,OAAS,SAAS8G,GACnC,MAAO,WAAaA,EAAO,aAG7B2F,EAASxG,UAAU3H,GAAK,SAASwI,GAC/B,MAAO,OAASA,EAAO,SAGzB2F,EAASxG,UAAUsJ,SAAW,SAASzI,GACrC,MAAO,SAAWA,EAAO,WAG3B2F,EAASxG,UAAUxI,GAAK,WACtB,OAAO6K,KAAKrF,QAAQuN,MAAQ,QAAU,QAGxC/D,EAASxG,UAAUhI,IAAM,SAAS6I,GAChC,MAAO,QAAUA,EAAO,UAG1B2F,EAASxG,UAAUmG,KAAO,SAASP,EAAMC,EAAOhF,GAE9C,GAAa,QADb+E,EAAO+B,EAAStF,KAAKrF,QAAQ0I,SAAUrD,KAAKrF,QAAQ+N,QAASnF,IAE3D,OAAO/E,EAET,IAAIiI,EAAM,YAAc9C,EAAOJ,GAAQ,IAKvC,OAJIC,IACFiD,GAAO,WAAajD,EAAQ,KAE9BiD,GAAO,IAAMjI,EAAO,QAItB2F,EAASxG,UAAUyJ,MAAQ,SAAS7D,EAAMC,EAAOhF,GAE/C,GAAa,QADb+E,EAAO+B,EAAStF,KAAKrF,QAAQ0I,SAAUrD,KAAKrF,QAAQ+N,QAASnF,IAE3D,OAAO/E,EAGT,IAAIiI,EAAM,aAAelD,EAAO,UAAY/E,EAAO,IAKnD,OAJIgF,IACFiD,GAAO,WAAajD,EAAQ,KAE9BiD,GAAOzG,KAAKrF,QAAQuN,MAAQ,KAAO,KAIrC/D,EAASxG,UAAUa,KAAO,SAASA,GACjC,OAAOA,GAYT6F,EAAa1G,UAAUjG,OACvB2M,EAAa1G,UAAU3H,GACvBqO,EAAa1G,UAAUsJ,SACvB5C,EAAa1G,UAAUhI,IACvB0O,EAAa1G,UAAUa,KAAO,SAAUA,GACtC,OAAOA,GAGT6F,EAAa1G,UAAUmG,KACvBO,EAAa1G,UAAUyJ,MAAQ,SAAS7D,EAAMC,EAAOhF,GACnD,MAAO,GAAKA,GAGd6F,EAAa1G,UAAUxI,GAAK,WAC1B,MAAO,IAqBTmP,EAAOqE,MAAQ,SAASrH,EAAK3G,GAE3B,OADa,IAAI2J,EAAO3J,GACVgO,MAAMrH,IAOtBgD,EAAO3G,UAAUgL,MAAQ,SAASrH,GAChCtB,KAAK0D,OAAS,IAAIO,EAAY3C,EAAIpB,MAAOF,KAAKrF,SAE9CqF,KAAK4I,WAAa,IAAI3E,EACpB3C,EAAIpB,MACJkB,EAAM,GAAIpB,KAAKrF,QAAS,CAACuJ,SAAU,IAAIG,KAEzCrE,KAAKC,OAASqB,EAAIuH,UAGlB,IADA,IAAIpC,EAAM,GACHzG,KAAKvE,QACVgL,GAAOzG,KAAK8I,MAGd,OAAOrC,GAOTnC,EAAO3G,UAAUlC,KAAO,WACtB,OAAOuE,KAAKuB,MAAQvB,KAAKC,OAAO8I,OAOlCzE,EAAO3G,UAAUqL,KAAO,WACtB,OAAOhJ,KAAKC,OAAOD,KAAKC,OAAOjG,OAAS,IAAM,GAOhDsK,EAAO3G,UAAUsL,UAAY,WAG3B,IAFA,IAAId,EAAOnI,KAAKuB,MAAM/C,KAEM,SAArBwB,KAAKgJ,OAAO1G,MACjB6F,GAAQ,KAAOnI,KAAKvE,OAAO+C,KAG7B,OAAOwB,KAAK0D,OAAO6C,OAAO4B,IAO5B7D,EAAO3G,UAAUmL,IAAM,WACrB,OAAQ9I,KAAKuB,MAAMe,MACjB,IAAK,QACH,MAAO,GAET,IAAK,KACH,OAAOtC,KAAKkE,SAASxN,KAEvB,IAAK,UACH,OAAOsJ,KAAKkE,SAASzE,QACnBO,KAAK0D,OAAO6C,OAAOvG,KAAKuB,MAAM/C,MAC9BwB,KAAKuB,MAAMkB,MACXwC,EAASjF,KAAK4I,WAAWrC,OAAOvG,KAAKuB,MAAM/C,OAC3CwB,KAAKuE,SAET,IAAK,OACH,OAAOvE,KAAKkE,SAAS3O,KAAKyK,KAAKuB,MAAM/C,KACnCwB,KAAKuB,MAAMiB,KACXxC,KAAKuB,MAAMkG,SAEf,IAAK,QACH,IAEI9Q,EACAuS,EACAC,EACAzL,EALAjH,EAAS,GACT0R,EAAO,GAQX,IADAgB,EAAO,GACFxS,EAAI,EAAGA,EAAIqJ,KAAKuB,MAAM9K,OAAOuD,OAAQrD,IACxCwS,GAAQnJ,KAAKkE,SAASsE,UACpBxI,KAAK0D,OAAO6C,OAAOvG,KAAKuB,MAAM9K,OAAOE,IACrC,CAAEF,QAAQ,EAAMkM,MAAO3C,KAAKuB,MAAMoB,MAAMhM,KAK5C,IAFAF,GAAUuJ,KAAKkE,SAASoE,SAASa,GAE5BxS,EAAI,EAAGA,EAAIqJ,KAAKuB,MAAMqB,MAAM5I,OAAQrD,IAAK,CAI5C,IAHAuS,EAAMlJ,KAAKuB,MAAMqB,MAAMjM,GAEvBwS,EAAO,GACFzL,EAAI,EAAGA,EAAIwL,EAAIlP,OAAQ0D,IAC1ByL,GAAQnJ,KAAKkE,SAASsE,UACpBxI,KAAK0D,OAAO6C,OAAO2C,EAAIxL,IACvB,CAAEjH,QAAQ,EAAOkM,MAAO3C,KAAKuB,MAAMoB,MAAMjF,KAI7CyK,GAAQnI,KAAKkE,SAASoE,SAASa,GAEjC,OAAOnJ,KAAKkE,SAASvM,MAAMlB,EAAQ0R,GAErC,IAAK,mBAGH,IAFAA,EAAO,GAEqB,mBAArBnI,KAAKvE,OAAO6G,MACjB6F,GAAQnI,KAAK8I,MAGf,OAAO9I,KAAKkE,SAAShP,WAAWiT,GAElC,IAAK,aACHA,EAAO,GAIP,IAHA,IAAItF,EAAU7C,KAAKuB,MAAMsB,QACrBC,EAAQ9C,KAAKuB,MAAMuB,MAEK,aAArB9C,KAAKvE,OAAO6G,MACjB6F,GAAQnI,KAAK8I,MAGf,OAAO9I,KAAKkE,SAASvE,KAAKwI,EAAMtF,EAASC,GAE3C,IAAK,kBACHqF,EAAO,GACP,IAAI1G,EAAQzB,KAAKuB,MAAME,MACnB2B,EAAUpD,KAAKuB,MAAM6B,QACrBD,EAAOnD,KAAKuB,MAAM4B,KAMtB,IAJInD,KAAKuB,MAAM4B,OACbgF,GAAQnI,KAAKkE,SAASmE,SAASjF,IAGL,kBAArBpD,KAAKvE,OAAO6G,MACjB6F,GAAS1G,GAA6B,SAApBzB,KAAKuB,MAAMe,KAEzBtC,KAAK8I,MADL9I,KAAKiJ,YAGX,OAAOjJ,KAAKkE,SAASkE,SAASD,EAAMhF,EAAMC,GAE5C,IAAK,OAEH,OAAOpD,KAAKkE,SAAS1L,KAAKwH,KAAKuB,MAAM/C,MAEvC,IAAK,YACH,OAAOwB,KAAKkE,SAASpE,UAAUE,KAAK0D,OAAO6C,OAAOvG,KAAKuB,MAAM/C,OAE/D,IAAK,OACH,OAAOwB,KAAKkE,SAASpE,UAAUE,KAAKiJ,aAEtC,QACE,IAAIG,EAAS,eAAiBpJ,KAAKuB,MAAMe,KAAO,wBAChD,IAAItC,KAAKrF,QAAQ0O,OAGf,MAAM,IAAI5F,MAAM2F,GAFhBE,QAAQC,IAAIH,KAoBpB5E,EAAQ7G,UAAUsK,KAAO,SAAUlN,GACjC,IAAIkN,EAAOlN,EACRoD,cACAhE,OACA1B,QAAQ,iEAAiE,IACzEA,QAAQ,MAAO,KAElB,GAAIuH,KAAKyE,KAAK+E,eAAevB,GAAO,CAClC,IAAIwB,EAAexB,EACnB,GACEjI,KAAKyE,KAAKgF,KACVxB,EAAOwB,EAAe,IAAMzJ,KAAKyE,KAAKgF,SAC/BzJ,KAAKyE,KAAK+E,eAAevB,IAIpC,OAFAjI,KAAKyE,KAAKwD,GAAQ,EAEXA,GAqBTtE,EAAOgB,WAAa,UACpBhB,EAAOiB,cAAgB,WACvBjB,EAAOmB,aAAe,CACpB4E,IAAK,QACLC,IAAK,OACLC,IAAK,OACLC,IAAK,SACLC,IAAK,SAGPnG,EAAOoB,mBAAqB,qBAC5BpB,EAAOqB,sBAAwB,sBA6E/B,IAAIY,EAAW,GACXD,EAAuB,gCAE3B,SAASnG,KAGT,SAAS4B,EAAM2I,GAKb,IAJA,IACIC,EACAC,EAFAtT,EAAI,EAIDA,EAAIuT,UAAUlQ,OAAQrD,IAE3B,IAAKsT,KADLD,EAASE,UAAUvT,GAEbwJ,OAAOxC,UAAU6L,eAAe1L,KAAKkM,EAAQC,KAC/CF,EAAIE,GAAOD,EAAOC,IAKxB,OAAOF,EAGT,SAASrH,EAAWyH,EAAUC,GAG5B,IAaIxH,EAbMuH,EAAS1R,QAAQ,MAAO,SAAUsK,EAAOsH,EAAQhR,GAGrD,IAFA,IAAIoO,GAAU,EACV6C,EAAOD,IACFC,GAAQ,GAAmB,OAAdjR,EAAIiR,IAAgB7C,GAAWA,EACrD,OAAIA,EAGK,IAGA,OAGC1K,MAAM,OAClBpG,EAAI,EAER,GAAIiM,EAAM5I,OAASoQ,EACjBxH,EAAM2H,OAAOH,QAEb,KAAOxH,EAAM5I,OAASoQ,GAAOxH,EAAMvG,KAAK,IAG1C,KAAO1F,EAAIiM,EAAM5I,OAAQrD,IAEvBiM,EAAMjM,GAAKiM,EAAMjM,GAAGwD,OAAO1B,QAAQ,QAAS,KAE9C,OAAOmK,EAMT,SAASL,EAAMlJ,EAAK6D,EAAGsN,GACrB,GAAmB,IAAfnR,EAAIW,OACN,MAAO,GAOT,IAHA,IAAIyQ,EAAU,EAGPA,EAAUpR,EAAIW,QAAQ,CAC3B,IAAI0Q,EAAWrR,EAAIa,OAAOb,EAAIW,OAASyQ,EAAU,GACjD,GAAIC,IAAaxN,GAAMsN,EAEhB,IAAIE,IAAaxN,IAAKsN,EAG3B,MAFAC,SAFAA,IAQJ,OAAOpR,EAAIM,OAAO,EAAGN,EAAIW,OAASyQ,GAGpC,SAAS5D,EAAmBxN,EAAKvE,GAC/B,IAA2B,IAAvBuE,EAAI0C,QAAQjH,EAAE,IAChB,OAAQ,EAGV,IADA,IAAI+S,EAAQ,EACHlR,EAAI,EAAGA,EAAI0C,EAAIW,OAAQrD,IAC9B,GAAe,OAAX0C,EAAI1C,GACNA,SACK,GAAI0C,EAAI1C,KAAO7B,EAAE,GACtB+S,SACK,GAAIxO,EAAI1C,KAAO7B,EAAE,MACtB+S,EACY,EACV,OAAOlR,EAIb,OAAQ,EAOV,SAAS0J,EAAOiB,EAAK8D,EAAKuF,GAExB,GAAI,MAAOrJ,EACT,MAAM,IAAImC,MAAM,kDAElB,GAAmB,iBAARnC,EACT,MAAM,IAAImC,MAAM,wCACZtD,OAAOxC,UAAU4J,SAASzJ,KAAKwD,GAAO,qBAG5C,GAAIqJ,GAA2B,mBAARvF,EAAvB,CACOuF,IACHA,EAAWvF,EACXA,EAAM,MAKR,IACInF,EACA2K,EAFAlD,GAFJtC,EAAMhE,EAAM,GAAIf,EAAOC,SAAU8E,GAAO,KAEpBsC,UAGhB/Q,EAAI,EAER,IACEsJ,EAASF,EAAMsB,IAAIC,EAAK8D,GACxB,MAAOM,GACP,OAAOiF,EAASjF,GAGlBkF,EAAU3K,EAAOjG,OAEjB,IAAI6Q,EAAO,SAASC,GAClB,GAAIA,EAEF,OADA1F,EAAIsC,UAAYA,EACTiD,EAASG,GAGlB,IAAIrE,EAEJ,IACEA,EAAMnC,EAAOqE,MAAM1I,EAAQmF,GAC3B,MAAOM,GACPoF,EAAMpF,EAKR,OAFAN,EAAIsC,UAAYA,EAEToD,EACHH,EAASG,GACTH,EAAS,KAAMlE,IAGrB,IAAKiB,GAAaA,EAAU1N,OAAS,EACnC,OAAO6Q,IAKT,UAFOzF,EAAIsC,WAENkD,EAAS,OAAOC,IAErB,KAAOlU,EAAIsJ,EAAOjG,OAAQrD,KACxB,SAAU4K,GACW,SAAfA,EAAMe,OACCsI,GAAWC,IAEfnD,EAAUnG,EAAM/C,KAAM+C,EAAMiB,KAAM,SAASsI,EAAKvV,GACrD,OAAIuV,EAAYD,EAAKC,GACT,MAARvV,GAAgBA,IAASgM,EAAM/C,OACxBoM,GAAWC,KAEtBtJ,EAAM/C,KAAOjJ,EACbgM,EAAMkG,SAAU,SACdmD,GAAWC,QAXjB,CAaG5K,EAAOtJ,SAKd,IAEE,OADIyO,IAAKA,EAAMhE,EAAM,GAAIf,EAAOC,SAAU8E,IACnCd,EAAOqE,MAAM5I,EAAMsB,IAAIC,EAAK8D,GAAMA,GACzC,MAAOM,GAEP,GADAA,EAAEqF,SAAW,+DACR3F,GAAO/E,EAAOC,UAAU+I,OAC3B,MAAO,iCACH1F,EAAO+B,EAAEqF,QAAU,IAAI,GACvB,SAEN,MAAMrF,GA9LVlG,EAAK4C,KAAO5C,EAsMZa,EAAO1F,QACP0F,EAAO2K,WAAa,SAAS5F,GAE3B,OADAhE,EAAMf,EAAOC,SAAU8E,GAChB/E,GAGTA,EAAO4K,YAAc,WACnB,MAAO,CACLvC,QAAS,KACTtE,QAAQ,EACR1D,KAAK,EACLqH,WAAW,EACXC,aAAc,GACdN,UAAW,KACXC,WAAY,YACZT,QAAQ,EACRzG,UAAU,EACVyD,SAAU,IAAIC,EACdd,UAAU,EACVC,UAAW,KACX+F,QAAQ,EACRpG,YAAY,EACZkE,aAAa,EACbxG,QAAQ,EACRuH,OAAO,IAIX7H,EAAOC,SAAWD,EAAO4K,cAMzB5K,EAAOiE,OAASA,EAChBjE,EAAO6K,OAAS5G,EAAOqE,MAEvBtI,EAAO8D,SAAWA,EAClB9D,EAAOgE,aAAeA,EAEtBhE,EAAON,MAAQA,EACfM,EAAO8K,MAAQpL,EAAMsB,IAErBhB,EAAO4D,YAAcA,EACrB5D,EAAO+K,YAAcnH,EAAYsC,OAEjClG,EAAOmE,QAAUA,EAEjBnE,EAAOsI,MAAQtI,EAEyC,WAAnBgL,EAAO9Q,GAC1CgD,EAAOhD,QAAU8F,OAEX6C,KAANoI,aAAoB,OAAOjL,GAArBvC,KAAAvD,EAAAgR,EAAAhR,EAAAgD,QAAAhD,QAAAiR,GA9oDP,CAkpDExL,MAA2B,oBAAXyL,QAAyBA,oRCxpD5C,IAAIC,EAGJA,EAAK,WACJ,OAAO1L,KADH,GAIL,IAEC0L,EAAIA,GAAK,IAAIC,SAAS,cAAb,GACR,MAAOjG,GAEc,YAAlB,oBAAO+F,OAAP,YAAAJ,EAAOI,WAAqBC,EAAID,QAOrClO,EAAOhD,QAAUmR,uBCbjB,IAAIE,EAAUzX,EAAQ,KAClB+W,EAAS/W,EAAQ,KACjB0X,EAAY1X,EAAQ,KASxB,SAAS2X,EAAUtT,EAAMmC,GAEvB,OADU,IAAIkR,EAAUlR,GACbU,QAAQ7C,GAMrB,IAAK,IAAI7B,KAHT4D,EAAUgD,EAAOhD,QAAUuR,GACnBA,UAAYA,EACpBvR,EAAQsR,UAAYA,EACND,EAASrR,EAAQ5D,GAAKiV,EAAQjV,GAC5C,IAAK,IAAIA,KAAKuU,EAAQ3Q,EAAQ5D,GAAKuU,EAAOvU,GAGpB,oBAAX8U,SACTA,OAAOK,UAAYvO,EAAOhD,SAKH,oBAATwR,MAA8D,oBAA/BC,4BAA8CD,gBAAgBC,6BAG3GD,KAAKD,UAAYvO,EAAOhD,8BChC1B,IAAIqR,EAAUzX,EAAQ,KAClB8X,EAAa9X,EAAQ,KACjBA,EAAQ,KAShB,SAAS+X,EAAQnC,GACf,OAAQA,QA0BV,SAAS7V,EAAWyG,IAClBA,EAlBF,SAA4BoP,GAC1B,IAAI7N,EAAM,GACV,IAAK,IAAIvF,KAAKoT,EACZ7N,EAAIvF,GAAKoT,EAAIpT,GAEf,OAAOuF,EAaGiQ,CAAkBxR,GAAW,KAC/BH,UAAYG,EAAQH,WAAaoR,EAAQpR,UACjDG,EAAQ0C,OAAS1C,EAAQ0C,QAAUuO,EAAQvO,OAC3C1C,EAAQ2C,aAAe3C,EAAQ2C,cAAgBsO,EAAQtO,aACvD3C,EAAQM,cAAgBN,EAAQM,eAAiB2Q,EAAQ3Q,cACzD+E,KAAKrF,QAAUA,EAGjBzG,EAAUyJ,UAAUtC,QAAU,SAAU+Q,GAItC,KADAA,GADAA,EAAMA,GAAO,IACH7E,YACA,MAAO,GAEjB,IACI5M,EADKqF,KACQrF,QACbH,EAAYG,EAAQH,UACpB6C,EAAS1C,EAAQ0C,OACjBC,EAAe3C,EAAQ2C,aACvBrC,EAAgBN,EAAQM,cAyC5B,OAvCagR,EAAWG,EAAK,SAAUC,EAAgBjQ,EAAUtB,EAAMC,EAAOkG,GAE5E,IAAIqL,EAAQ9R,EAAUM,GAClByR,GAAU,EAQd,IAPc,IAAVD,EAAgBC,EAAUD,EACJ,mBAAVA,EAAsBC,EAAUD,EAAMvR,GAC7CuR,aAAiBtJ,SAAQuJ,EAAUD,EAAMlR,KAAKL,KACvC,IAAZwR,IAAkBA,GAAU,GAGhCxR,EAAQE,EAAcH,EAAMC,GAC5B,CAEA,IAkBMmB,EAlBFsQ,EAAO,CACTpQ,SAAUA,EACViQ,eAAgBA,EAChBpL,OAAQA,EACRsL,QAASA,GAGX,OAAIA,EAGEL,EADAhQ,EAAMmB,EAAOvC,EAAMC,EAAOyR,IAErB1R,EAAO,IAAMC,EAEbmB,EAMJgQ,EADDhQ,EAAMoB,EAAaxC,EAAMC,EAAOyR,SACpC,EACStQ,MAUfqB,EAAOhD,QAAUrG,uBCvGjB,IAAII,EAAIH,EAAQ,KAmEhBoJ,EAAOhD,QAxDP,SAAqB6R,EAAK/O,GAEI,OAD5B+O,EAAM9X,EAAEyJ,UAAUqO,IACVA,EAAIpS,OAAS,KAAYoS,GAAO,KACxC,IAAIK,EAAYL,EAAIpS,OAChB0S,GAAoB,EACpBlQ,EAAU,EACV7F,EAAI,EACJgW,EAAS,GAEb,SAASC,IAEP,IAAKF,EAAmB,CACtB,IAAIzL,EAAS3M,EAAE6F,KAAKiS,EAAIzP,MAAMH,EAAS7F,IACnC+G,EAAIuD,EAAOlF,QAAQ,KACvB,IAAW,IAAP2B,EAAU,CACZ,IAAI5C,EAAOxG,EAAE6F,KAAK8G,EAAOtE,MAAM,EAAGe,IAC9B3C,EAAQzG,EAAE6F,KAAK8G,EAAOtE,MAAMe,EAAI,IAEpC,GAAI5C,EAAM,CACR,IAAIoB,EAAMmB,EAAOb,EAASmQ,EAAO3S,OAAQc,EAAMC,EAAOkG,GAClD/E,IAAKyQ,GAAUzQ,EAAM,QAI/BM,EAAU7F,EAAI,EAGhB,KAAOA,EAAI8V,EAAW9V,IAAK,CACzB,IAAIuG,EAAIkP,EAAIzV,GACZ,GAAU,MAANuG,GAA4B,MAAfkP,EAAIzV,EAAI,GAAY,CAEnC,IAAI+G,EAAI0O,EAAIrQ,QAAQ,KAAMpF,EAAI,GAE9B,IAAW,IAAP+G,EAAU,MAGdlB,GADA7F,EAAI+G,EAAI,GACM,EACdgP,GAAoB,MACL,MAANxP,EACTwP,GAAoB,EACL,MAANxP,EACTwP,GAAoB,EACL,MAANxP,EACLwP,GAGFE,IAEa,OAAN1P,GACT0P,IAIJ,OAAOtY,EAAE6F,KAAKwS,yBChEhB,IAAIzY,EAAYC,EAAQ,IAAaD,UACjC0X,EAAUzX,EAAQ,KAClB+W,EAAS/W,EAAQ,KACjBuK,EAAWwM,EAAOxM,SAClBM,EAAYkM,EAAOlM,UACnB1K,EAAIH,EAAQ,IAQhB,SAAS+X,EAAOnC,GACd,OAAOA,QAmDT,SAAS8B,EAAUlR,IACjBA,EAlBF,SAA2BoP,GACzB,IAAI7N,EAAM,GACV,IAAK,IAAIvF,KAAKoT,EACZ7N,EAAIvF,GAAKoT,EAAIpT,GAEf,OAAOuF,EAaGiQ,CAAkBxR,GAAW,KAE3BkS,iBACNlS,EAAQC,aACV0O,QAAQwD,MACN,2FAGJnS,EAAQC,YAAcgR,EAAQtQ,qBAGhCX,EAAQH,UAAYG,EAAQH,WAAaoR,EAAQpR,UACjDG,EAAQF,MAAQE,EAAQF,OAASmR,EAAQnR,MACzCE,EAAQE,UAAYF,EAAQE,WAAa+Q,EAAQ/Q,UACjDF,EAAQC,YAAcD,EAAQC,aAAegR,EAAQhR,YACrDD,EAAQK,gBAAkBL,EAAQK,iBAAmB4Q,EAAQ5Q,gBAC7DL,EAAQM,cAAgBN,EAAQM,eAAiB2Q,EAAQ3Q,cACzDN,EAAQpC,WAAaoC,EAAQpC,YAAcqT,EAAQrT,WACnDyH,KAAKrF,QAAUA,GAEK,IAAhBA,EAAQyR,IACVpM,KAAK9E,WAAY,GAEjBP,EAAQyR,IAAMzR,EAAQyR,KAAO,GAC7BpM,KAAK9E,UAAY,IAAIhH,EAAUyG,EAAQyR,MAU3CP,EAAUlO,UAAUtC,QAAU,SAAS7C,GAIrC,KADAA,GADAA,EAAOA,GAAQ,IACH+O,YACD,MAAO,GAElB,IACI5M,EADKqF,KACQrF,QACbH,EAAYG,EAAQH,UACpBC,EAAQE,EAAQF,MAChBG,EAAcD,EAAQC,YACtBC,EAAYF,EAAQE,UACpBG,EAAkBL,EAAQK,gBAC1BC,EAAgBN,EAAQM,cACxB1C,EAAaoC,EAAQpC,WACrB2C,EATK8E,KASU9E,UAGfP,EAAQkC,iBACVrE,EAAOoT,EAAQ/O,eAAerE,IAI3BmC,EAAQoS,kBACXvU,EAAOoT,EAAQhP,gBAAgBpE,IAIjC,IAAIwU,GAAqB,EACzB,GAAIrS,EAAQqS,mBAAoB,CAC1BA,EAAqBpB,EAAQrQ,aAC/BZ,EAAQqS,mBACRpS,GAEFA,EAAcoS,EAAmBpS,YAGnC,IAAIqS,EAAUvO,EACZlG,EACA,SAAS6T,EAAgBjQ,EAAU1B,EAAKlC,EAAMyD,GAC5C,IAgDMC,EAhDFgR,EAAO,CACTb,eAAgBA,EAChBjQ,SAAUA,EACVH,UAAWA,EACXsQ,QAAS/R,EAAUgP,eAAe9O,IAKpC,IAAKwR,EADDhQ,EAAMzB,EAAMC,EAAKlC,EAAM0U,IACT,OAAOhR,EAEzB,GAAIgR,EAAKX,QAAS,CAChB,GAAIW,EAAKjR,UACP,MAAO,KAAOvB,EAAM,IAGtB,IAAIyS,EAnIZ,SAAkB3U,GAChB,IAAI7B,EAAIrC,EAAE2J,WAAWzF,GACrB,IAAW,IAAP7B,EACF,MAAO,CACL6B,KAAM,GACN4U,QAAmC,MAA1B5U,EAAKA,EAAKwB,OAAS,IAIhC,IAAIiC,EAAsC,OAD1CzD,EAAOlE,EAAE6F,KAAK3B,EAAKmE,MAAMhG,EAAI,GAAI,KACZ6B,EAAKwB,OAAS,GAEnC,OADIiC,IAAWzD,EAAOlE,EAAE6F,KAAK3B,EAAKmE,MAAM,GAAI,KACrC,CACLnE,KAAMA,EACN4U,QAASnR,GAsHOoR,CAAS7U,GACjB8U,EAAgB9S,EAAUE,GAC1B6S,EAAYvO,EAAUmO,EAAM3U,KAAM,SAASsC,EAAMC,GAEnD,IAcMmB,EAdFsR,GAAkD,IAApClZ,EAAEyH,QAAQuR,EAAexS,GAE3C,OAAKoR,EADDhQ,EAAMrB,EAAUH,EAAKI,EAAMC,EAAOyS,IAGlCA,GAEFzS,EAAQE,EAAcP,EAAKI,EAAMC,EAAOG,IAE/BJ,EAAO,KAAOC,EAAQ,IAEtBD,EAKJoR,EADDhQ,EAAMlB,EAAgBN,EAAKI,EAAMC,EAAOyS,SAE5C,EADyBtR,EAbFA,IAmBvB1D,EAAO,IAAMkC,EAIjB,OAHI6S,IAAW/U,GAAQ,IAAM+U,GACzBJ,EAAMC,UAAS5U,GAAQ,MAC3BA,GAAQ,IAKR,OAAK0T,EADDhQ,EAAMtB,EAAYF,EAAKlC,EAAM0U,IAE1B3U,EAAWC,GADO0D,GAI7B3D,GAQF,OAJIyU,IACFC,EAAUD,EAAmB1Q,OAAO2Q,IAG/BA,GAGT1P,EAAOhD,QAAUsR,sBC5MjB,IAAID,EAAUzX,EAAQ,KAClBD,EAAYC,EAAQ,KAmBxB,IAAK,IAAIwC,KAFT4D,EAAUgD,EAAOhD,QAPjB,SAAoB/B,EAAMmC,GAExB,OADU,IAAIzG,EAAUyG,GACbU,QAAQ7C,KAMbtE,UAAYA,EACN0X,EAASrR,EAAQ5D,GAAKiV,EAAQjV,GAGtB,oBAAX8U,SACTA,OAAOgC,UAAYlQ,EAAOhD,2BC9B5BgD,EAAOhD,QAAU,CACfwB,QAAS,SAASyB,EAAKC,GACrB,IAAI9G,EAAG+G,EACP,GAAI/B,MAAMgC,UAAU5B,QAClB,OAAOyB,EAAIzB,QAAQ0B,GAErB,IAAK9G,EAAI,EAAG+G,EAAIF,EAAIxD,OAAQrD,EAAI+G,EAAG/G,IACjC,GAAI6G,EAAI7G,KAAO8G,EACb,OAAO9G,EAGX,OAAQ,GAEV8F,QAAS,SAASe,EAAKI,EAAIC,GACzB,IAAIlH,EAAG+G,EACP,GAAI/B,MAAMgC,UAAUlB,QAClB,OAAOe,EAAIf,QAAQmB,EAAIC,GAEzB,IAAKlH,EAAI,EAAG+G,EAAIF,EAAIxD,OAAQrD,EAAI+G,EAAG/G,IACjCiH,EAAGE,KAAKD,EAAOL,EAAI7G,GAAIA,EAAG6G,IAG9BrD,KAAM,SAASd,GACb,OAAIG,OAAOmE,UAAUxD,KACZd,EAAIc,OAENd,EAAIZ,QAAQ,iBAAkB,KAEvCwF,WAAY,SAAS5E,GACnB,IACI0J,EADM,WACMX,KAAK/I,GACrB,OAAO0J,EAAQA,EAAM2K,OAAS","file":"chunk.f1156b978f6f3143a651.js","sourcesContent":["/**\n * default settings\n *\n * @author Zongmin Lei\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar getDefaultCSSWhiteList = require(\"cssfilter\").getDefaultWhiteList;\nvar _ = require(\"./util\");\n\nfunction getDefaultWhiteList() {\n return {\n a: [\"target\", \"href\", \"title\"],\n abbr: [\"title\"],\n address: [],\n area: [\"shape\", \"coords\", \"href\", \"alt\"],\n article: [],\n aside: [],\n audio: [\"autoplay\", \"controls\", \"loop\", \"preload\", \"src\"],\n b: [],\n bdi: [\"dir\"],\n bdo: [\"dir\"],\n big: [],\n blockquote: [\"cite\"],\n br: [],\n caption: [],\n center: [],\n cite: [],\n code: [],\n col: [\"align\", \"valign\", \"span\", \"width\"],\n colgroup: [\"align\", \"valign\", \"span\", \"width\"],\n dd: [],\n del: [\"datetime\"],\n details: [\"open\"],\n div: [],\n dl: [],\n dt: [],\n em: [],\n font: [\"color\", \"size\", \"face\"],\n footer: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n header: [],\n hr: [],\n i: [],\n img: [\"src\", \"alt\", \"title\", \"width\", \"height\"],\n ins: [\"datetime\"],\n li: [],\n mark: [],\n nav: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n section: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n table: [\"width\", \"border\", \"align\", \"valign\"],\n tbody: [\"align\", \"valign\"],\n td: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n tfoot: [\"align\", \"valign\"],\n th: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n thead: [\"align\", \"valign\"],\n tr: [\"rowspan\", \"align\", \"valign\"],\n tt: [],\n u: [],\n ul: [],\n video: [\"autoplay\", \"controls\", \"loop\", \"preload\", \"src\", \"height\", \"width\"]\n };\n}\n\nvar defaultCSSFilter = new FilterCSS();\n\n/**\n * default onTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onIgnoreTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default onIgnoreTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onIgnoreTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default escapeHtml function\n *\n * @param {String} html\n */\nfunction escapeHtml(html) {\n return html.replace(REGEXP_LT, \"<\").replace(REGEXP_GT, \">\");\n}\n\n/**\n * default safeAttrValue function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @param {Object} cssFilter\n * @return {String}\n */\nfunction safeAttrValue(tag, name, value, cssFilter) {\n // unescape attribute value firstly\n value = friendlyAttrValue(value);\n\n if (name === \"href\" || name === \"src\") {\n // filter `href` and `src` attribute\n // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#`\n value = _.trim(value);\n if (value === \"#\") return \"#\";\n if (\n !(\n value.substr(0, 7) === \"http://\" ||\n value.substr(0, 8) === \"https://\" ||\n value.substr(0, 7) === \"mailto:\" ||\n value.substr(0, 4) === \"tel:\" ||\n value[0] === \"#\" ||\n value[0] === \"/\"\n )\n ) {\n return \"\";\n }\n } else if (name === \"background\") {\n // filter `background` attribute (maybe no use)\n // `javascript:`\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n } else if (name === \"style\") {\n // `expression()`\n REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) {\n return \"\";\n }\n // `url()`\n REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n }\n if (cssFilter !== false) {\n cssFilter = cssFilter || defaultCSSFilter;\n value = cssFilter.process(value);\n }\n }\n\n // escape `<>\"` before returns\n value = escapeAttrValue(value);\n return value;\n}\n\n// RegExp list\nvar REGEXP_LT = //g;\nvar REGEXP_QUOTE = /\"/g;\nvar REGEXP_QUOTE_2 = /"/g;\nvar REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;\nvar REGEXP_ATTR_VALUE_COLON = /:?/gim;\nvar REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\\/\\*|\\*\\//gm;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_4 = /((j\\s*a\\s*v\\s*a|v\\s*b|l\\s*i\\s*v\\s*e)\\s*s\\s*c\\s*r\\s*i\\s*p\\s*t\\s*|m\\s*o\\s*c\\s*h\\s*a)\\:/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:\\s*image\\//gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_7 = /e\\s*x\\s*p\\s*r\\s*e\\s*s\\s*s\\s*i\\s*o\\s*n\\s*\\(.*/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\\s*r\\s*l\\s*\\(.*/gi;\n\n/**\n * escape doube quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction escapeQuote(str) {\n return str.replace(REGEXP_QUOTE, \""\");\n}\n\n/**\n * unescape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction unescapeQuote(str) {\n return str.replace(REGEXP_QUOTE_2, '\"');\n}\n\n/**\n * escape html entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeHtmlEntities(str) {\n return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) {\n return code[0] === \"x\" || code[0] === \"X\"\n ? String.fromCharCode(parseInt(code.substr(1), 16))\n : String.fromCharCode(parseInt(code, 10));\n });\n}\n\n/**\n * escape html5 new danger entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeDangerHtml5Entities(str) {\n return str\n .replace(REGEXP_ATTR_VALUE_COLON, \":\")\n .replace(REGEXP_ATTR_VALUE_NEWLINE, \" \");\n}\n\n/**\n * clear nonprintable characters\n *\n * @param {String} str\n * @return {String}\n */\nfunction clearNonPrintableCharacter(str) {\n var str2 = \"\";\n for (var i = 0, len = str.length; i < len; i++) {\n str2 += str.charCodeAt(i) < 32 ? \" \" : str.charAt(i);\n }\n return _.trim(str2);\n}\n\n/**\n * get friendly attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction friendlyAttrValue(str) {\n str = unescapeQuote(str);\n str = escapeHtmlEntities(str);\n str = escapeDangerHtml5Entities(str);\n str = clearNonPrintableCharacter(str);\n return str;\n}\n\n/**\n * unescape attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeAttrValue(str) {\n str = escapeQuote(str);\n str = escapeHtml(str);\n return str;\n}\n\n/**\n * `onIgnoreTag` function for removing all the tags that are not in whitelist\n */\nfunction onIgnoreTagStripAll() {\n return \"\";\n}\n\n/**\n * remove tag body\n * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional)\n *\n * @param {array} tags\n * @param {function} next\n */\nfunction StripTagBody(tags, next) {\n if (typeof next !== \"function\") {\n next = function() {};\n }\n\n var isRemoveAllTag = !Array.isArray(tags);\n function isRemoveTag(tag) {\n if (isRemoveAllTag) return true;\n return _.indexOf(tags, tag) !== -1;\n }\n\n var removeList = [];\n var posStart = false;\n\n return {\n onIgnoreTag: function(tag, html, options) {\n if (isRemoveTag(tag)) {\n if (options.isClosing) {\n var ret = \"[/removed]\";\n var end = options.position + ret.length;\n removeList.push([\n posStart !== false ? posStart : options.position,\n end\n ]);\n posStart = false;\n return ret;\n } else {\n if (!posStart) {\n posStart = options.position;\n }\n return \"[removed]\";\n }\n } else {\n return next(tag, html, options);\n }\n },\n remove: function(html) {\n var rethtml = \"\";\n var lastPos = 0;\n _.forEach(removeList, function(pos) {\n rethtml += html.slice(lastPos, pos[0]);\n lastPos = pos[1];\n });\n rethtml += html.slice(lastPos);\n return rethtml;\n }\n };\n}\n\n/**\n * remove html comments\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripCommentTag(html) {\n return html.replace(STRIP_COMMENT_TAG_REGEXP, \"\");\n}\nvar STRIP_COMMENT_TAG_REGEXP = //g;\n\n/**\n * remove invisible characters\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripBlankChar(html) {\n var chars = html.split(\"\");\n chars = chars.filter(function(char) {\n var c = char.charCodeAt(0);\n if (c === 127) return false;\n if (c <= 31) {\n if (c === 10 || c === 13) return true;\n return false;\n }\n return true;\n });\n return chars.join(\"\");\n}\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onTag = onTag;\nexports.onIgnoreTag = onIgnoreTag;\nexports.onTagAttr = onTagAttr;\nexports.onIgnoreTagAttr = onIgnoreTagAttr;\nexports.safeAttrValue = safeAttrValue;\nexports.escapeHtml = escapeHtml;\nexports.escapeQuote = escapeQuote;\nexports.unescapeQuote = unescapeQuote;\nexports.escapeHtmlEntities = escapeHtmlEntities;\nexports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;\nexports.clearNonPrintableCharacter = clearNonPrintableCharacter;\nexports.friendlyAttrValue = friendlyAttrValue;\nexports.escapeAttrValue = escapeAttrValue;\nexports.onIgnoreTagStripAll = onIgnoreTagStripAll;\nexports.StripTagBody = StripTagBody;\nexports.stripCommentTag = stripCommentTag;\nexports.stripBlankChar = stripBlankChar;\nexports.cssFilter = defaultCSSFilter;\nexports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;\n","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nfunction getDefaultWhiteList () {\n // 白名单值说明:\n // true: 允许该属性\n // Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许\n // RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许\n // 除上面列出的值外均表示不允许\n var whiteList = {};\n\n whiteList['align-content'] = false; // default: auto\n whiteList['align-items'] = false; // default: auto\n whiteList['align-self'] = false; // default: auto\n whiteList['alignment-adjust'] = false; // default: auto\n whiteList['alignment-baseline'] = false; // default: baseline\n whiteList['all'] = false; // default: depending on individual properties\n whiteList['anchor-point'] = false; // default: none\n whiteList['animation'] = false; // default: depending on individual properties\n whiteList['animation-delay'] = false; // default: 0\n whiteList['animation-direction'] = false; // default: normal\n whiteList['animation-duration'] = false; // default: 0\n whiteList['animation-fill-mode'] = false; // default: none\n whiteList['animation-iteration-count'] = false; // default: 1\n whiteList['animation-name'] = false; // default: none\n whiteList['animation-play-state'] = false; // default: running\n whiteList['animation-timing-function'] = false; // default: ease\n whiteList['azimuth'] = false; // default: center\n whiteList['backface-visibility'] = false; // default: visible\n whiteList['background'] = true; // default: depending on individual properties\n whiteList['background-attachment'] = true; // default: scroll\n whiteList['background-clip'] = true; // default: border-box\n whiteList['background-color'] = true; // default: transparent\n whiteList['background-image'] = true; // default: none\n whiteList['background-origin'] = true; // default: padding-box\n whiteList['background-position'] = true; // default: 0% 0%\n whiteList['background-repeat'] = true; // default: repeat\n whiteList['background-size'] = true; // default: auto\n whiteList['baseline-shift'] = false; // default: baseline\n whiteList['binding'] = false; // default: none\n whiteList['bleed'] = false; // default: 6pt\n whiteList['bookmark-label'] = false; // default: content()\n whiteList['bookmark-level'] = false; // default: none\n whiteList['bookmark-state'] = false; // default: open\n whiteList['border'] = true; // default: depending on individual properties\n whiteList['border-bottom'] = true; // default: depending on individual properties\n whiteList['border-bottom-color'] = true; // default: current color\n whiteList['border-bottom-left-radius'] = true; // default: 0\n whiteList['border-bottom-right-radius'] = true; // default: 0\n whiteList['border-bottom-style'] = true; // default: none\n whiteList['border-bottom-width'] = true; // default: medium\n whiteList['border-collapse'] = true; // default: separate\n whiteList['border-color'] = true; // default: depending on individual properties\n whiteList['border-image'] = true; // default: none\n whiteList['border-image-outset'] = true; // default: 0\n whiteList['border-image-repeat'] = true; // default: stretch\n whiteList['border-image-slice'] = true; // default: 100%\n whiteList['border-image-source'] = true; // default: none\n whiteList['border-image-width'] = true; // default: 1\n whiteList['border-left'] = true; // default: depending on individual properties\n whiteList['border-left-color'] = true; // default: current color\n whiteList['border-left-style'] = true; // default: none\n whiteList['border-left-width'] = true; // default: medium\n whiteList['border-radius'] = true; // default: 0\n whiteList['border-right'] = true; // default: depending on individual properties\n whiteList['border-right-color'] = true; // default: current color\n whiteList['border-right-style'] = true; // default: none\n whiteList['border-right-width'] = true; // default: medium\n whiteList['border-spacing'] = true; // default: 0\n whiteList['border-style'] = true; // default: depending on individual properties\n whiteList['border-top'] = true; // default: depending on individual properties\n whiteList['border-top-color'] = true; // default: current color\n whiteList['border-top-left-radius'] = true; // default: 0\n whiteList['border-top-right-radius'] = true; // default: 0\n whiteList['border-top-style'] = true; // default: none\n whiteList['border-top-width'] = true; // default: medium\n whiteList['border-width'] = true; // default: depending on individual properties\n whiteList['bottom'] = false; // default: auto\n whiteList['box-decoration-break'] = true; // default: slice\n whiteList['box-shadow'] = true; // default: none\n whiteList['box-sizing'] = true; // default: content-box\n whiteList['box-snap'] = true; // default: none\n whiteList['box-suppress'] = true; // default: show\n whiteList['break-after'] = true; // default: auto\n whiteList['break-before'] = true; // default: auto\n whiteList['break-inside'] = true; // default: auto\n whiteList['caption-side'] = false; // default: top\n whiteList['chains'] = false; // default: none\n whiteList['clear'] = true; // default: none\n whiteList['clip'] = false; // default: auto\n whiteList['clip-path'] = false; // default: none\n whiteList['clip-rule'] = false; // default: nonzero\n whiteList['color'] = true; // default: implementation dependent\n whiteList['color-interpolation-filters'] = true; // default: auto\n whiteList['column-count'] = false; // default: auto\n whiteList['column-fill'] = false; // default: balance\n whiteList['column-gap'] = false; // default: normal\n whiteList['column-rule'] = false; // default: depending on individual properties\n whiteList['column-rule-color'] = false; // default: current color\n whiteList['column-rule-style'] = false; // default: medium\n whiteList['column-rule-width'] = false; // default: medium\n whiteList['column-span'] = false; // default: none\n whiteList['column-width'] = false; // default: auto\n whiteList['columns'] = false; // default: depending on individual properties\n whiteList['contain'] = false; // default: none\n whiteList['content'] = false; // default: normal\n whiteList['counter-increment'] = false; // default: none\n whiteList['counter-reset'] = false; // default: none\n whiteList['counter-set'] = false; // default: none\n whiteList['crop'] = false; // default: auto\n whiteList['cue'] = false; // default: depending on individual properties\n whiteList['cue-after'] = false; // default: none\n whiteList['cue-before'] = false; // default: none\n whiteList['cursor'] = false; // default: auto\n whiteList['direction'] = false; // default: ltr\n whiteList['display'] = true; // default: depending on individual properties\n whiteList['display-inside'] = true; // default: auto\n whiteList['display-list'] = true; // default: none\n whiteList['display-outside'] = true; // default: inline-level\n whiteList['dominant-baseline'] = false; // default: auto\n whiteList['elevation'] = false; // default: level\n whiteList['empty-cells'] = false; // default: show\n whiteList['filter'] = false; // default: none\n whiteList['flex'] = false; // default: depending on individual properties\n whiteList['flex-basis'] = false; // default: auto\n whiteList['flex-direction'] = false; // default: row\n whiteList['flex-flow'] = false; // default: depending on individual properties\n whiteList['flex-grow'] = false; // default: 0\n whiteList['flex-shrink'] = false; // default: 1\n whiteList['flex-wrap'] = false; // default: nowrap\n whiteList['float'] = false; // default: none\n whiteList['float-offset'] = false; // default: 0 0\n whiteList['flood-color'] = false; // default: black\n whiteList['flood-opacity'] = false; // default: 1\n whiteList['flow-from'] = false; // default: none\n whiteList['flow-into'] = false; // default: none\n whiteList['font'] = true; // default: depending on individual properties\n whiteList['font-family'] = true; // default: implementation dependent\n whiteList['font-feature-settings'] = true; // default: normal\n whiteList['font-kerning'] = true; // default: auto\n whiteList['font-language-override'] = true; // default: normal\n whiteList['font-size'] = true; // default: medium\n whiteList['font-size-adjust'] = true; // default: none\n whiteList['font-stretch'] = true; // default: normal\n whiteList['font-style'] = true; // default: normal\n whiteList['font-synthesis'] = true; // default: weight style\n whiteList['font-variant'] = true; // default: normal\n whiteList['font-variant-alternates'] = true; // default: normal\n whiteList['font-variant-caps'] = true; // default: normal\n whiteList['font-variant-east-asian'] = true; // default: normal\n whiteList['font-variant-ligatures'] = true; // default: normal\n whiteList['font-variant-numeric'] = true; // default: normal\n whiteList['font-variant-position'] = true; // default: normal\n whiteList['font-weight'] = true; // default: normal\n whiteList['grid'] = false; // default: depending on individual properties\n whiteList['grid-area'] = false; // default: depending on individual properties\n whiteList['grid-auto-columns'] = false; // default: auto\n whiteList['grid-auto-flow'] = false; // default: none\n whiteList['grid-auto-rows'] = false; // default: auto\n whiteList['grid-column'] = false; // default: depending on individual properties\n whiteList['grid-column-end'] = false; // default: auto\n whiteList['grid-column-start'] = false; // default: auto\n whiteList['grid-row'] = false; // default: depending on individual properties\n whiteList['grid-row-end'] = false; // default: auto\n whiteList['grid-row-start'] = false; // default: auto\n whiteList['grid-template'] = false; // default: depending on individual properties\n whiteList['grid-template-areas'] = false; // default: none\n whiteList['grid-template-columns'] = false; // default: none\n whiteList['grid-template-rows'] = false; // default: none\n whiteList['hanging-punctuation'] = false; // default: none\n whiteList['height'] = true; // default: auto\n whiteList['hyphens'] = false; // default: manual\n whiteList['icon'] = false; // default: auto\n whiteList['image-orientation'] = false; // default: auto\n whiteList['image-resolution'] = false; // default: normal\n whiteList['ime-mode'] = false; // default: auto\n whiteList['initial-letters'] = false; // default: normal\n whiteList['inline-box-align'] = false; // default: last\n whiteList['justify-content'] = false; // default: auto\n whiteList['justify-items'] = false; // default: auto\n whiteList['justify-self'] = false; // default: auto\n whiteList['left'] = false; // default: auto\n whiteList['letter-spacing'] = true; // default: normal\n whiteList['lighting-color'] = true; // default: white\n whiteList['line-box-contain'] = false; // default: block inline replaced\n whiteList['line-break'] = false; // default: auto\n whiteList['line-grid'] = false; // default: match-parent\n whiteList['line-height'] = false; // default: normal\n whiteList['line-snap'] = false; // default: none\n whiteList['line-stacking'] = false; // default: depending on individual properties\n whiteList['line-stacking-ruby'] = false; // default: exclude-ruby\n whiteList['line-stacking-shift'] = false; // default: consider-shifts\n whiteList['line-stacking-strategy'] = false; // default: inline-line-height\n whiteList['list-style'] = true; // default: depending on individual properties\n whiteList['list-style-image'] = true; // default: none\n whiteList['list-style-position'] = true; // default: outside\n whiteList['list-style-type'] = true; // default: disc\n whiteList['margin'] = true; // default: depending on individual properties\n whiteList['margin-bottom'] = true; // default: 0\n whiteList['margin-left'] = true; // default: 0\n whiteList['margin-right'] = true; // default: 0\n whiteList['margin-top'] = true; // default: 0\n whiteList['marker-offset'] = false; // default: auto\n whiteList['marker-side'] = false; // default: list-item\n whiteList['marks'] = false; // default: none\n whiteList['mask'] = false; // default: border-box\n whiteList['mask-box'] = false; // default: see individual properties\n whiteList['mask-box-outset'] = false; // default: 0\n whiteList['mask-box-repeat'] = false; // default: stretch\n whiteList['mask-box-slice'] = false; // default: 0 fill\n whiteList['mask-box-source'] = false; // default: none\n whiteList['mask-box-width'] = false; // default: auto\n whiteList['mask-clip'] = false; // default: border-box\n whiteList['mask-image'] = false; // default: none\n whiteList['mask-origin'] = false; // default: border-box\n whiteList['mask-position'] = false; // default: center\n whiteList['mask-repeat'] = false; // default: no-repeat\n whiteList['mask-size'] = false; // default: border-box\n whiteList['mask-source-type'] = false; // default: auto\n whiteList['mask-type'] = false; // default: luminance\n whiteList['max-height'] = true; // default: none\n whiteList['max-lines'] = false; // default: none\n whiteList['max-width'] = true; // default: none\n whiteList['min-height'] = true; // default: 0\n whiteList['min-width'] = true; // default: 0\n whiteList['move-to'] = false; // default: normal\n whiteList['nav-down'] = false; // default: auto\n whiteList['nav-index'] = false; // default: auto\n whiteList['nav-left'] = false; // default: auto\n whiteList['nav-right'] = false; // default: auto\n whiteList['nav-up'] = false; // default: auto\n whiteList['object-fit'] = false; // default: fill\n whiteList['object-position'] = false; // default: 50% 50%\n whiteList['opacity'] = false; // default: 1\n whiteList['order'] = false; // default: 0\n whiteList['orphans'] = false; // default: 2\n whiteList['outline'] = false; // default: depending on individual properties\n whiteList['outline-color'] = false; // default: invert\n whiteList['outline-offset'] = false; // default: 0\n whiteList['outline-style'] = false; // default: none\n whiteList['outline-width'] = false; // default: medium\n whiteList['overflow'] = false; // default: depending on individual properties\n whiteList['overflow-wrap'] = false; // default: normal\n whiteList['overflow-x'] = false; // default: visible\n whiteList['overflow-y'] = false; // default: visible\n whiteList['padding'] = true; // default: depending on individual properties\n whiteList['padding-bottom'] = true; // default: 0\n whiteList['padding-left'] = true; // default: 0\n whiteList['padding-right'] = true; // default: 0\n whiteList['padding-top'] = true; // default: 0\n whiteList['page'] = false; // default: auto\n whiteList['page-break-after'] = false; // default: auto\n whiteList['page-break-before'] = false; // default: auto\n whiteList['page-break-inside'] = false; // default: auto\n whiteList['page-policy'] = false; // default: start\n whiteList['pause'] = false; // default: implementation dependent\n whiteList['pause-after'] = false; // default: implementation dependent\n whiteList['pause-before'] = false; // default: implementation dependent\n whiteList['perspective'] = false; // default: none\n whiteList['perspective-origin'] = false; // default: 50% 50%\n whiteList['pitch'] = false; // default: medium\n whiteList['pitch-range'] = false; // default: 50\n whiteList['play-during'] = false; // default: auto\n whiteList['position'] = false; // default: static\n whiteList['presentation-level'] = false; // default: 0\n whiteList['quotes'] = false; // default: text\n whiteList['region-fragment'] = false; // default: auto\n whiteList['resize'] = false; // default: none\n whiteList['rest'] = false; // default: depending on individual properties\n whiteList['rest-after'] = false; // default: none\n whiteList['rest-before'] = false; // default: none\n whiteList['richness'] = false; // default: 50\n whiteList['right'] = false; // default: auto\n whiteList['rotation'] = false; // default: 0\n whiteList['rotation-point'] = false; // default: 50% 50%\n whiteList['ruby-align'] = false; // default: auto\n whiteList['ruby-merge'] = false; // default: separate\n whiteList['ruby-position'] = false; // default: before\n whiteList['shape-image-threshold'] = false; // default: 0.0\n whiteList['shape-outside'] = false; // default: none\n whiteList['shape-margin'] = false; // default: 0\n whiteList['size'] = false; // default: auto\n whiteList['speak'] = false; // default: auto\n whiteList['speak-as'] = false; // default: normal\n whiteList['speak-header'] = false; // default: once\n whiteList['speak-numeral'] = false; // default: continuous\n whiteList['speak-punctuation'] = false; // default: none\n whiteList['speech-rate'] = false; // default: medium\n whiteList['stress'] = false; // default: 50\n whiteList['string-set'] = false; // default: none\n whiteList['tab-size'] = false; // default: 8\n whiteList['table-layout'] = false; // default: auto\n whiteList['text-align'] = true; // default: start\n whiteList['text-align-last'] = true; // default: auto\n whiteList['text-combine-upright'] = true; // default: none\n whiteList['text-decoration'] = true; // default: none\n whiteList['text-decoration-color'] = true; // default: currentColor\n whiteList['text-decoration-line'] = true; // default: none\n whiteList['text-decoration-skip'] = true; // default: objects\n whiteList['text-decoration-style'] = true; // default: solid\n whiteList['text-emphasis'] = true; // default: depending on individual properties\n whiteList['text-emphasis-color'] = true; // default: currentColor\n whiteList['text-emphasis-position'] = true; // default: over right\n whiteList['text-emphasis-style'] = true; // default: none\n whiteList['text-height'] = true; // default: auto\n whiteList['text-indent'] = true; // default: 0\n whiteList['text-justify'] = true; // default: auto\n whiteList['text-orientation'] = true; // default: mixed\n whiteList['text-overflow'] = true; // default: clip\n whiteList['text-shadow'] = true; // default: none\n whiteList['text-space-collapse'] = true; // default: collapse\n whiteList['text-transform'] = true; // default: none\n whiteList['text-underline-position'] = true; // default: auto\n whiteList['text-wrap'] = true; // default: normal\n whiteList['top'] = false; // default: auto\n whiteList['transform'] = false; // default: none\n whiteList['transform-origin'] = false; // default: 50% 50% 0\n whiteList['transform-style'] = false; // default: flat\n whiteList['transition'] = false; // default: depending on individual properties\n whiteList['transition-delay'] = false; // default: 0s\n whiteList['transition-duration'] = false; // default: 0s\n whiteList['transition-property'] = false; // default: all\n whiteList['transition-timing-function'] = false; // default: ease\n whiteList['unicode-bidi'] = false; // default: normal\n whiteList['vertical-align'] = false; // default: baseline\n whiteList['visibility'] = false; // default: visible\n whiteList['voice-balance'] = false; // default: center\n whiteList['voice-duration'] = false; // default: auto\n whiteList['voice-family'] = false; // default: implementation dependent\n whiteList['voice-pitch'] = false; // default: medium\n whiteList['voice-range'] = false; // default: medium\n whiteList['voice-rate'] = false; // default: normal\n whiteList['voice-stress'] = false; // default: normal\n whiteList['voice-volume'] = false; // default: medium\n whiteList['volume'] = false; // default: medium\n whiteList['white-space'] = false; // default: normal\n whiteList['widows'] = false; // default: 2\n whiteList['width'] = true; // default: auto\n whiteList['will-change'] = false; // default: auto\n whiteList['word-break'] = true; // default: normal\n whiteList['word-spacing'] = true; // default: normal\n whiteList['word-wrap'] = true; // default: normal\n whiteList['wrap-flow'] = false; // default: auto\n whiteList['wrap-through'] = false; // default: wrap\n whiteList['writing-mode'] = false; // default: horizontal-tb\n whiteList['z-index'] = false; // default: auto\n\n return whiteList;\n}\n\n\n/**\n * 匹配到白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onAttr (name, value, options) {\n // do nothing\n}\n\n/**\n * 匹配到不在白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreAttr (name, value, options) {\n // do nothing\n}\n\nvar REGEXP_URL_JAVASCRIPT = /javascript\\s*\\:/img;\n\n/**\n * 过滤属性值\n *\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction safeAttrValue(name, value) {\n if (REGEXP_URL_JAVASCRIPT.test(value)) return '';\n return value;\n}\n\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onAttr = onAttr;\nexports.onIgnoreAttr = onIgnoreAttr;\nexports.safeAttrValue = safeAttrValue;\n","module.exports = {\n indexOf: function (arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function (arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function (str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, '');\n },\n trimRight: function (str) {\n if (String.prototype.trimRight) {\n return str.trimRight();\n }\n return str.replace(/(\\s*$)/g, '');\n }\n};\n","/**\n * Simple HTML Parser\n *\n * @author Zongmin Lei\n */\n\nvar _ = require(\"./util\");\n\n/**\n * get tag name\n *\n * @param {String} html e.g. '
    '\n * @return {String}\n */\nfunction getTagName(html) {\n var i = _.spaceIndex(html);\n if (i === -1) {\n var tagName = html.slice(1, -1);\n } else {\n var tagName = html.slice(1, i + 1);\n }\n tagName = _.trim(tagName).toLowerCase();\n if (tagName.slice(0, 1) === \"/\") tagName = tagName.slice(1);\n if (tagName.slice(-1) === \"/\") tagName = tagName.slice(0, -1);\n return tagName;\n}\n\n/**\n * is close tag?\n *\n * @param {String} html 如:''\n * @return {Boolean}\n */\nfunction isClosing(html) {\n return html.slice(0, 2) === \"\") {\n rethtml += escapeHtml(html.slice(lastPos, tagStart));\n currentHtml = html.slice(tagStart, currentPos + 1);\n currentTagName = getTagName(currentHtml);\n rethtml += onTag(\n tagStart,\n rethtml.length,\n currentTagName,\n currentHtml,\n isClosing(currentHtml)\n );\n lastPos = currentPos + 1;\n tagStart = false;\n continue;\n }\n if ((c === '\"' || c === \"'\") && html.charAt(currentPos - 1) === \"=\") {\n quoteStart = c;\n continue;\n }\n } else {\n if (c === quoteStart) {\n quoteStart = false;\n continue;\n }\n }\n }\n }\n if (lastPos < html.length) {\n rethtml += escapeHtml(html.substr(lastPos));\n }\n\n return rethtml;\n}\n\nvar REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9_:\\.\\-]/gim;\n\n/**\n * parse input attributes and returns processed attributes\n *\n * @param {String} html e.g. `href=\"#\" target=\"_blank\"`\n * @param {Function} onAttr e.g. `function (name, value)`\n * @return {String}\n */\nfunction parseAttr(html, onAttr) {\n \"user strict\";\n\n var lastPos = 0;\n var retAttrs = [];\n var tmpName = false;\n var len = html.length;\n\n function addAttr(name, value) {\n name = _.trim(name);\n name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, \"\").toLowerCase();\n if (name.length < 1) return;\n var ret = onAttr(name, value || \"\");\n if (ret) retAttrs.push(ret);\n }\n\n // 逐个分析字符\n for (var i = 0; i < len; i++) {\n var c = html.charAt(i);\n var v, j;\n if (tmpName === false && c === \"=\") {\n tmpName = html.slice(lastPos, i);\n lastPos = i + 1;\n continue;\n }\n if (tmpName !== false) {\n if (\n i === lastPos &&\n (c === '\"' || c === \"'\") &&\n html.charAt(i - 1) === \"=\"\n ) {\n j = html.indexOf(c, i + 1);\n if (j === -1) {\n break;\n } else {\n v = _.trim(html.slice(lastPos + 1, j));\n addAttr(tmpName, v);\n tmpName = false;\n i = j;\n lastPos = i + 1;\n continue;\n }\n }\n }\n if (/\\s|\\n|\\t/.test(c)) {\n html = html.replace(/\\s|\\n|\\t/g, \" \");\n if (tmpName === false) {\n j = findNextEqual(html, i);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n addAttr(v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n i = j - 1;\n continue;\n }\n } else {\n j = findBeforeEqual(html, i - 1);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n v = stripQuoteWrap(v);\n addAttr(tmpName, v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n continue;\n }\n }\n }\n }\n\n if (lastPos < html.length) {\n if (tmpName === false) {\n addAttr(html.slice(lastPos));\n } else {\n addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos))));\n }\n }\n\n return _.trim(retAttrs.join(\" \"));\n}\n\nfunction findNextEqual(str, i) {\n for (; i < str.length; i++) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction findBeforeEqual(str, i) {\n for (; i > 0; i--) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction isQuoteWrapString(text) {\n if (\n (text[0] === '\"' && text[text.length - 1] === '\"') ||\n (text[0] === \"'\" && text[text.length - 1] === \"'\")\n ) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction stripQuoteWrap(text) {\n if (isQuoteWrapString(text)) {\n return text.substr(1, text.length - 2);\n } else {\n return text;\n }\n}\n\nexports.parseTag = parseTag;\nexports.parseAttr = parseAttr;\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n;(function(root) {\n'use strict';\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/,\n nptable: noop,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?\\\\?>\\\\n*' // (3)\n + '|\\\\n*' // (4)\n + '|\\\\n*' // (5)\n + '|)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n table: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading| {0,3}>|<\\/?(?:tag)(?: +|\\n|\\/?>)|<(?:script|pre|style|!--))[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}\\.)/;\nblock.item = /^( *)(bull) ?[^\\n]*(?:\\n(?!\\1bull ?)[^\\n]*)*/;\nblock.item = edit(block.item, 'gm')\n .replace(/bull/g, block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = //;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block.paragraph)\n .replace('hr', block.hr)\n .replace('heading', block.heading)\n .replace('lheading', block.lheading)\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ {0,3}(`{3,}|~{3,})([^`\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = edit(block.paragraph)\n .replace('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n .getRegex();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:.*[^>\\n ].*(?:\\n|$))*)\\n*|$)/,\n table: /^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n((?: *[^>\\n ].*(?:\\n|$))*)\\n*|$)/\n});\n\n/**\n * Pedantic grammar\n */\n\nblock.pedantic = merge({}, block.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.pedantic) {\n this.rules = block.pedantic;\n } else if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top) {\n src = src.replace(/^ +$/gm, '');\n var next,\n loose,\n cap,\n bull,\n b,\n item,\n listStart,\n listItems,\n t,\n space,\n i,\n tag,\n l,\n isordered,\n istask,\n ischecked;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? rtrim(cap, '\\n')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (cap = this.rules.nptable.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n isordered = bull.length > 1;\n\n listStart = {\n type: 'list_start',\n ordered: isordered,\n start: isordered ? +bull : '',\n loose: false\n };\n\n this.tokens.push(listStart);\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n listItems = [];\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) */, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull.length > 1 ? b.length === 1\n : (b.length > 1 || (this.options.smartLists && b !== bull))) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n listStart.loose = true;\n }\n\n // Check for task list items\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n\n t = {\n type: 'list_item_start',\n task: istask,\n checked: ischecked,\n loose: loose\n };\n\n listItems.push(t);\n this.tokens.push(t);\n\n // Recurse.\n this.token(item, false);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n if (listStart.loose) {\n l = listItems.length;\n i = 0;\n for (; i < l; i++) {\n listItems[i].loose = true;\n }\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if (top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n if (!this.tokens.links[tag]) {\n this.tokens.links[tag] = {\n href: cap[2],\n title: cap[3]\n };\n }\n continue;\n }\n\n // table (gfm)\n if (cap = this.rules.table.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(\n item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''),\n item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noop,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(href(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n strong: /^__([^\\s_])__(?!_)|^\\*\\*([^\\s*])\\*\\*(?!\\*)|^__([^\\s][\\s\\S]*?[^\\s])__(?!_)|^\\*\\*([^\\s][\\s\\S]*?[^\\s])\\*\\*(?!\\*)/,\n em: /^_([^\\s_])_(?!_)|^\\*([^\\s*\"<\\[])\\*(?!\\*)|^_([^\\s][\\s\\S]*?[^\\s_])_(?!_|[^\\spunctuation])|^_([^\\s_][\\s\\S]*?[^\\s])_(?!_|[^\\spunctuation])|^\\*([^\\s\"<\\[][\\s\\S]*?[^\\s*])\\*(?!\\*)|^\\*([^\\s*\"<\\[][\\s\\S]*?[^\\s])\\*(?!\\*)/,\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noop,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\?@\\\\[^_{|}~';\ninline.em = edit(inline.em).replace(/punctuation/g, inline._punctuation).getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[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])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', block._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]?|`[^`]*`|`(?!`)|[^\\[\\]\\\\`])*?/;\ninline._href = /\\s*(<(?:\\\\[<>]?|[^\\s<>\\\\])*>|[^\\s\\x00-\\x1f]*)/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~+(?=\\S)([\\s\\S]*?\\S)~+/,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\/i.test(cap[0])) {\n this.inLink = false;\n }\n if (!this.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = true;\n } else if (this.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = false;\n }\n\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0];\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n var lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n var linkLen = cap[0].length - (cap[2].length - lastParenIndex) - (cap[3] || '').length;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n src = src.substring(cap[0].length);\n this.inLink = true;\n href = cap[2];\n if (this.options.pedantic) {\n link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n } else {\n title = '';\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n out += this.outputLink(cap, {\n href: InlineLexer.escapes(href),\n title: InlineLexer.escapes(title)\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2].trim(), true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = escape(this.mangle(cap[1]));\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n src = src.substring(cap[0].length);\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n if (this.inRawBlock) {\n out += this.renderer.text(cap[0]);\n } else {\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n }\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\nInlineLexer.escapes = function(text) {\n return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = link.href,\n title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = '',\n l = text.length,\n i = 0,\n ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || marked.defaults;\n}\n\nRenderer.prototype.code = function(code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return ''\n + text\n + '\\n';\n }\n // ignore IDs\n return '' + text + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.checkbox = function(checked) {\n return ' ';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n if (body) body = '' + body + '';\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' align=\"' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\n\nfunction TextRenderer() {}\n\n// no need for block level renderers\n\nTextRenderer.prototype.strong =\nTextRenderer.prototype.em =\nTextRenderer.prototype.codespan =\nTextRenderer.prototype.del =\nTextRenderer.prototype.text = function (text) {\n return text;\n};\n\nTextRenderer.prototype.link =\nTextRenderer.prototype.image = function(href, title, text) {\n return '' + text;\n};\n\nTextRenderer.prototype.br = function() {\n return '';\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.slugger = new Slugger();\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options) {\n var parser = new Parser(options);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options);\n // use an InlineLexer with a TextRenderer to extract pure text\n this.inlineText = new InlineLexer(\n src.links,\n merge({}, this.options, {renderer: new TextRenderer()})\n );\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n unescape(this.inlineText.output(this.token.text)),\n this.slugger);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = '',\n body = '',\n i,\n row,\n cell,\n j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n body = '';\n var ordered = this.token.ordered,\n start = this.token.start;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered, start);\n }\n case 'list_item_start': {\n body = '';\n var loose = this.token.loose;\n var checked = this.token.checked;\n var task = this.token.task;\n\n if (this.token.task) {\n body += this.renderer.checkbox(checked);\n }\n\n while (this.next().type !== 'list_item_end') {\n body += !loose && this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n return this.renderer.listitem(body, task, checked);\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n return this.renderer.html(this.token.text);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n default: {\n var errMsg = 'Token with \"' + this.token.type + '\" type was not found.';\n if (this.options.silent) {\n console.log(errMsg);\n } else {\n throw new Error(errMsg);\n }\n }\n }\n};\n\n/**\n * Slugger generates header id\n */\n\nfunction Slugger () {\n this.seen = {};\n}\n\n/**\n * Convert string to unique id\n */\n\nSlugger.prototype.slug = function (value) {\n var slug = value\n .toLowerCase()\n .trim()\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n\n if (this.seen.hasOwnProperty(slug)) {\n var originalSlug = slug;\n do {\n this.seen[originalSlug]++;\n slug = originalSlug + '-' + this.seen[originalSlug];\n } while (this.seen.hasOwnProperty(slug));\n }\n this.seen[slug] = 0;\n\n return slug;\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n if (encode) {\n if (escape.escapeTest.test(html)) {\n return html.replace(escape.escapeReplace, function (ch) { return escape.replacements[ch]; });\n }\n } else {\n if (escape.escapeTestNoEncode.test(html)) {\n return html.replace(escape.escapeReplaceNoEncode, function (ch) { return escape.replacements[ch]; });\n }\n }\n\n return html;\n}\n\nescape.escapeTest = /[&<>\"']/;\nescape.escapeReplace = /[&<>\"']/g;\nescape.replacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\nescape.escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nescape.escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n return {\n replace: function(name, val) {\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return this;\n },\n getRegex: function() {\n return new RegExp(regex, opt);\n }\n };\n}\n\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (/^[^:]+:\\/*[^/]*$/.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n\n if (href.slice(0, 2) === '//') {\n return base.replace(/:[\\s\\S]*/, ':') + href;\n } else if (href.charAt(0) === '/') {\n return base.replace(/(:\\/*[^/]*)[\\s\\S]*/, '$1') + href;\n } else {\n return base + href;\n }\n}\nvar baseUrls = {};\nvar originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/),\n i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\nfunction rtrim(str, c, invert) {\n if (str.length === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n var suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < str.length) {\n var currChar = str.charAt(str.length - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, str.length - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n var level = 0;\n for (var i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight,\n tokens,\n pending,\n i = 0;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occurred:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.getDefaults = function () {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: new Renderer(),\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tables: true,\n xhtml: false\n };\n};\n\nmarked.defaults = marked.getDefaults();\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.Slugger = Slugger;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n root.marked = marked;\n}\n})(this || (typeof window !== 'undefined' ? window : global));\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * xss\n *\n * @author Zongmin Lei\n */\n\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar FilterXSS = require(\"./xss\");\n\n/**\n * filter xss function\n *\n * @param {String} html\n * @param {Object} options { whiteList, onTag, onTagAttr, onIgnoreTag, onIgnoreTagAttr, safeAttrValue, escapeHtml }\n * @return {String}\n */\nfunction filterXSS(html, options) {\n var xss = new FilterXSS(options);\n return xss.process(html);\n}\n\nexports = module.exports = filterXSS;\nexports.filterXSS = filterXSS;\nexports.FilterXSS = FilterXSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\nfor (var i in parser) exports[i] = parser[i];\n\n// using `xss` on the browser, output `filterXSS` to the globals\nif (typeof window !== \"undefined\") {\n window.filterXSS = module.exports;\n}\n\n// using `xss` on the WebWorker, output `filterXSS` to the globals\nfunction isWorkerEnv() {\n return typeof self !== 'undefined' && typeof DedicatedWorkerGlobalScope !== 'undefined' && self instanceof DedicatedWorkerGlobalScope;\n}\nif (isWorkerEnv()) {\n self.filterXSS = module.exports;\n}\n","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar DEFAULT = require('./default');\nvar parseStyle = require('./parser');\nvar _ = require('./util');\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject (obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n * - {Object} whiteList\n * - {Function} onAttr\n * - {Function} onIgnoreAttr\n * - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n options = shallowCopyObject(options || {});\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onAttr = options.onAttr || DEFAULT.onAttr;\n options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n // 兼容各种奇葩输入\n css = css || '';\n css = css.toString();\n if (!css) return '';\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onAttr = options.onAttr;\n var onIgnoreAttr = options.onIgnoreAttr;\n var safeAttrValue = options.safeAttrValue;\n\n var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n var check = whiteList[name];\n var isWhite = false;\n if (check === true) isWhite = check;\n else if (typeof check === 'function') isWhite = check(value);\n else if (check instanceof RegExp) isWhite = check.test(value);\n if (isWhite !== true) isWhite = false;\n\n // 如果过滤后 value 为空则直接忽略\n value = safeAttrValue(name, value);\n if (!value) return;\n\n var opts = {\n position: position,\n sourcePosition: sourcePosition,\n source: source,\n isWhite: isWhite\n };\n\n if (isWhite) {\n\n var ret = onAttr(name, value, opts);\n if (isNull(ret)) {\n return name + ':' + value;\n } else {\n return ret;\n }\n\n } else {\n\n var ret = onIgnoreAttr(name, value, opts);\n if (!isNull(ret)) {\n return ret;\n }\n\n }\n });\n\n return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar _ = require('./util');\n\n\n/**\n * 解析style\n *\n * @param {String} css\n * @param {Function} onAttr 处理属性的函数\n * 参数格式: function (sourcePosition, position, name, value, source)\n * @return {String}\n */\nfunction parseStyle (css, onAttr) {\n css = _.trimRight(css);\n if (css[css.length - 1] !== ';') css += ';';\n var cssLength = css.length;\n var isParenthesisOpen = false;\n var lastPos = 0;\n var i = 0;\n var retCSS = '';\n\n function addNewAttr () {\n // 如果没有正常的闭合圆括号,则直接忽略当前属性\n if (!isParenthesisOpen) {\n var source = _.trim(css.slice(lastPos, i));\n var j = source.indexOf(':');\n if (j !== -1) {\n var name = _.trim(source.slice(0, j));\n var value = _.trim(source.slice(j + 1));\n // 必须有属性名称\n if (name) {\n var ret = onAttr(lastPos, retCSS.length, name, value, source);\n if (ret) retCSS += ret + '; ';\n }\n }\n }\n lastPos = i + 1;\n }\n\n for (; i < cssLength; i++) {\n var c = css[i];\n if (c === '/' && css[i + 1] === '*') {\n // 备注开始\n var j = css.indexOf('*/', i + 2);\n // 如果没有正常的备注结束,则后面的部分全部跳过\n if (j === -1) break;\n // 直接将当前位置调到备注结尾,并且初始化状态\n i = j + 1;\n lastPos = i + 1;\n isParenthesisOpen = false;\n } else if (c === '(') {\n isParenthesisOpen = true;\n } else if (c === ')') {\n isParenthesisOpen = false;\n } else if (c === ';') {\n if (isParenthesisOpen) {\n // 在圆括号里面,忽略\n } else {\n addNewAttr();\n }\n } else if (c === '\\n') {\n addNewAttr();\n }\n }\n\n return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n","/**\n * filter xss\n *\n * @author Zongmin Lei\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar parseTag = parser.parseTag;\nvar parseAttr = parser.parseAttr;\nvar _ = require(\"./util\");\n\n/**\n * returns `true` if the input value is `undefined` or `null`\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull(obj) {\n return obj === undefined || obj === null;\n}\n\n/**\n * get attributes for a tag\n *\n * @param {String} html\n * @return {Object}\n * - {String} html\n * - {Boolean} closing\n */\nfunction getAttrs(html) {\n var i = _.spaceIndex(html);\n if (i === -1) {\n return {\n html: \"\",\n closing: html[html.length - 2] === \"/\"\n };\n }\n html = _.trim(html.slice(i + 1, -1));\n var isClosing = html[html.length - 1] === \"/\";\n if (isClosing) html = _.trim(html.slice(0, -1));\n return {\n html: html,\n closing: isClosing\n };\n}\n\n/**\n * shallow copy\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject(obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * FilterXSS class\n *\n * @param {Object} options\n * whiteList, onTag, onTagAttr, onIgnoreTag,\n * onIgnoreTagAttr, safeAttrValue, escapeHtml\n * stripIgnoreTagBody, allowCommentTag, stripBlankChar\n * css{whiteList, onAttr, onIgnoreAttr} `css=false` means don't use `cssfilter`\n */\nfunction FilterXSS(options) {\n options = shallowCopyObject(options || {});\n\n if (options.stripIgnoreTag) {\n if (options.onIgnoreTag) {\n console.error(\n 'Notes: cannot use these two options \"stripIgnoreTag\" and \"onIgnoreTag\" at the same time'\n );\n }\n options.onIgnoreTag = DEFAULT.onIgnoreTagStripAll;\n }\n\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onTag = options.onTag || DEFAULT.onTag;\n options.onTagAttr = options.onTagAttr || DEFAULT.onTagAttr;\n options.onIgnoreTag = options.onIgnoreTag || DEFAULT.onIgnoreTag;\n options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT.onIgnoreTagAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n options.escapeHtml = options.escapeHtml || DEFAULT.escapeHtml;\n this.options = options;\n\n if (options.css === false) {\n this.cssFilter = false;\n } else {\n options.css = options.css || {};\n this.cssFilter = new FilterCSS(options.css);\n }\n}\n\n/**\n * start process and returns result\n *\n * @param {String} html\n * @return {String}\n */\nFilterXSS.prototype.process = function(html) {\n // compatible with the input\n html = html || \"\";\n html = html.toString();\n if (!html) return \"\";\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onTag = options.onTag;\n var onIgnoreTag = options.onIgnoreTag;\n var onTagAttr = options.onTagAttr;\n var onIgnoreTagAttr = options.onIgnoreTagAttr;\n var safeAttrValue = options.safeAttrValue;\n var escapeHtml = options.escapeHtml;\n var cssFilter = me.cssFilter;\n\n // remove invisible characters\n if (options.stripBlankChar) {\n html = DEFAULT.stripBlankChar(html);\n }\n\n // remove html comments\n if (!options.allowCommentTag) {\n html = DEFAULT.stripCommentTag(html);\n }\n\n // if enable stripIgnoreTagBody\n var stripIgnoreTagBody = false;\n if (options.stripIgnoreTagBody) {\n var stripIgnoreTagBody = DEFAULT.StripTagBody(\n options.stripIgnoreTagBody,\n onIgnoreTag\n );\n onIgnoreTag = stripIgnoreTagBody.onIgnoreTag;\n }\n\n var retHtml = parseTag(\n html,\n function(sourcePosition, position, tag, html, isClosing) {\n var info = {\n sourcePosition: sourcePosition,\n position: position,\n isClosing: isClosing,\n isWhite: whiteList.hasOwnProperty(tag)\n };\n\n // call `onTag()`\n var ret = onTag(tag, html, info);\n if (!isNull(ret)) return ret;\n\n if (info.isWhite) {\n if (info.isClosing) {\n return \"\";\n }\n\n var attrs = getAttrs(html);\n var whiteAttrList = whiteList[tag];\n var attrsHtml = parseAttr(attrs.html, function(name, value) {\n // call `onTagAttr()`\n var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1;\n var ret = onTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n\n if (isWhiteAttr) {\n // call `safeAttrValue()`\n value = safeAttrValue(tag, name, value, cssFilter);\n if (value) {\n return name + '=\"' + value + '\"';\n } else {\n return name;\n }\n } else {\n // call `onIgnoreTagAttr()`\n var ret = onIgnoreTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n return;\n }\n });\n\n // build new tag html\n var html = \"<\" + tag;\n if (attrsHtml) html += \" \" + attrsHtml;\n if (attrs.closing) html += \" /\";\n html += \">\";\n return html;\n } else {\n // call `onIgnoreTag()`\n var ret = onIgnoreTag(tag, html, info);\n if (!isNull(ret)) return ret;\n return escapeHtml(html);\n }\n },\n escapeHtml\n );\n\n // if enable stripIgnoreTagBody\n if (stripIgnoreTagBody) {\n retHtml = stripIgnoreTagBody.remove(retHtml);\n }\n\n return retHtml;\n};\n\nmodule.exports = FilterXSS;\n","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar DEFAULT = require('./default');\nvar FilterCSS = require('./css');\n\n\n/**\n * XSS过滤\n *\n * @param {String} css 要过滤的CSS代码\n * @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr\n * @return {String}\n */\nfunction filterCSS (html, options) {\n var xss = new FilterCSS(options);\n return xss.process(html);\n}\n\n\n// 输出\nexports = module.exports = filterCSS;\nexports.FilterCSS = FilterCSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\n\n// 在浏览器端使用\nif (typeof window !== 'undefined') {\n window.filterCSS = module.exports;\n}\n","module.exports = {\n indexOf: function(arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function(arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function(str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, \"\");\n },\n spaceIndex: function(str) {\n var reg = /\\s|\\n|\\t/;\n var match = reg.exec(str);\n return match ? match.index : -1;\n }\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/hassio/api/panel/entrypoint.582baa2f.js b/hassio/api/panel/entrypoint.582baa2f.js new file mode 100644 index 000000000..168ba9584 --- /dev/null +++ b/hassio/api/panel/entrypoint.582baa2f.js @@ -0,0 +1,2 @@ +!function(e){function n(n){for(var t,o,a=n[0],i=n[1],c=0,f=[];c {\n // eslint-disable-next-line\n import(/* webpackChunkName: \"hassio-icons\" */ \"./resources/hassio-icons\");\n // eslint-disable-next-line\n import(/* webpackChunkName: \"hassio-main\" */ \"./hassio-main\");\n});\nconst styleEl = document.createElement(\"style\");\nstyleEl.innerHTML = `\nbody {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-weight: 400;\n margin: 0;\n padding: 0;\n height: 100vh;\n}\n`;\ndocument.head.appendChild(styleEl);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/hassio/api/panel/entrypoint.js b/hassio/api/panel/entrypoint.js index 31437235a..370f68607 100644 --- a/hassio/api/panel/entrypoint.js +++ b/hassio/api/panel/entrypoint.js @@ -1,2 +1,2 @@ -!function(e){function n(n){for(var t,o,a=n[0],i=n[1],f=0,c=[];f {\n import(/* webpackChunkName: \"hassio-icons\" */ \"./resources/hassio-icons\");\n import(/* webpackChunkName: \"hassio-main\" */ \"./hassio-main\");\n});\nconst styleEl = document.createElement(\"style\");\nstyleEl.innerHTML = `\nbody {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-weight: 400;\n margin: 0;\n padding: 0;\n height: 100vh;\n}\n`;\ndocument.head.appendChild(styleEl);\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./hassio/src/entrypoint.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","3","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","0","1","2","4","5","6","7","8","9","10","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","self","oldJsonpFunction","slice","s","window","loadES5Adapter","then","styleEl","innerHTML"],"mappings":"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","file":"entrypoint.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t3: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"chunk.\" + {\"0\":\"50202a3f8d4670c9454d\",\"1\":\"9cea224f33b375867edd\",\"2\":\"c0a46a38d689ab648885\",\"4\":\"b21a4609308c9b8ef180\",\"5\":\"a1b6b616fc89c412f5b6\",\"6\":\"900c5d3fab8b6ebdcbc6\",\"7\":\"a4f9950b101883805252\",\"8\":\"884d6e32c83f99e41040\",\"9\":\"84aaaba4c4734f1c2e21\",\"10\":\"12902324b918e12549ba\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/api/hassio/app/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = self[\"webpackJsonp\"] = self[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","window.loadES5Adapter().then(() => {\n // eslint-disable-next-line\n import(/* webpackChunkName: \"hassio-icons\" */ \"./resources/hassio-icons\");\n // eslint-disable-next-line\n import(/* webpackChunkName: \"hassio-main\" */ \"./hassio-main\");\n});\nconst styleEl = document.createElement(\"style\");\nstyleEl.innerHTML = `\nbody {\n font-family: Roboto, sans-serif;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-weight: 400;\n margin: 0;\n padding: 0;\n height: 100vh;\n}\n`;\ndocument.head.appendChild(styleEl);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/hassio/api/panel/manifest.json b/hassio/api/panel/manifest.json new file mode 100644 index 000000000..30efdb638 --- /dev/null +++ b/hassio/api/panel/manifest.json @@ -0,0 +1,31 @@ +{ + "vendors~hassio-icons~hassio-main.js": "/api/hassio/app/chunk.50202a3f8d4670c9454d.js", + "vendors~hassio-icons~hassio-main.js.map": "/api/hassio/app/chunk.50202a3f8d4670c9454d.js.map", + "dialog-hassio-markdown.js": "/api/hassio/app/chunk.9cea224f33b375867edd.js", + "dialog-hassio-markdown.js.map": "/api/hassio/app/chunk.9cea224f33b375867edd.js.map", + "dialog-hassio-snapshot.js": "/api/hassio/app/chunk.c0a46a38d689ab648885.js", + "dialog-hassio-snapshot.js.map": "/api/hassio/app/chunk.c0a46a38d689ab648885.js.map", + "entrypoint.js": "/api/hassio/app/entrypoint.js", + "entrypoint.js.map": "/api/hassio/app/entrypoint.js.map", + "hassio-addon-view.js": "/api/hassio/app/chunk.b21a4609308c9b8ef180.js", + "hassio-addon-view.js.map": "/api/hassio/app/chunk.b21a4609308c9b8ef180.js.map", + "hassio-icons.js": "/api/hassio/app/chunk.a1b6b616fc89c412f5b6.js", + "hassio-icons.js.map": "/api/hassio/app/chunk.a1b6b616fc89c412f5b6.js.map", + "hassio-ingress-view.js": "/api/hassio/app/chunk.900c5d3fab8b6ebdcbc6.js", + "hassio-ingress-view.js.map": "/api/hassio/app/chunk.900c5d3fab8b6ebdcbc6.js.map", + "hassio-main.js": "/api/hassio/app/chunk.a4f9950b101883805252.js", + "hassio-main.js.map": "/api/hassio/app/chunk.a4f9950b101883805252.js.map", + "mdi-icons.js": "/api/hassio/app/chunk.884d6e32c83f99e41040.js", + "mdi-icons.js.map": "/api/hassio/app/chunk.884d6e32c83f99e41040.js.map", + "vendors~hassio-addon-view.js": "/api/hassio/app/chunk.84aaaba4c4734f1c2e21.js", + "vendors~hassio-addon-view.js.map": "/api/hassio/app/chunk.84aaaba4c4734f1c2e21.js.map", + "vendors~hassio-main.js": "/api/hassio/app/chunk.12902324b918e12549ba.js", + "vendors~hassio-main.js.map": "/api/hassio/app/chunk.12902324b918e12549ba.js.map", + "201359fd5a526afe13ef.worker.js": "/api/hassio/app/201359fd5a526afe13ef.worker.js", + "201359fd5a526afe13ef.worker.js.map": "/api/hassio/app/201359fd5a526afe13ef.worker.js.map", + "chunk.12902324b918e12549ba.js.LICENSE": "/api/hassio/app/chunk.12902324b918e12549ba.js.LICENSE", + "chunk.50202a3f8d4670c9454d.js.LICENSE": "/api/hassio/app/chunk.50202a3f8d4670c9454d.js.LICENSE", + "chunk.84aaaba4c4734f1c2e21.js.LICENSE": "/api/hassio/app/chunk.84aaaba4c4734f1c2e21.js.LICENSE", + "chunk.9cea224f33b375867edd.js.LICENSE": "/api/hassio/app/chunk.9cea224f33b375867edd.js.LICENSE", + "chunk.c0a46a38d689ab648885.js.LICENSE": "/api/hassio/app/chunk.c0a46a38d689ab648885.js.LICENSE" +} \ No newline at end of file diff --git a/home-assistant-polymer b/home-assistant-polymer index 8238b700b..72e537579 160000 --- a/home-assistant-polymer +++ b/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 8238b700b08a8fa227144feeccf83f843da73917 +Subproject commit 72e537579549f1792efe15967221cdd2b523c38f