Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Side by Side Diff: appengine/swarming/ui/build/elements.html

Issue 2513613002: Add informational messages to clarify what can be filtered on. (Closed)
Patch Set: Tweak spacing Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | appengine/swarming/ui/res/imp/botlist/bot-filters.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE html><html><head><meta charset="UTF-8"> </head><body><div hidden="" by -vulcanize=""><script>!function(){function e(){document.body.removeAttribute("un resolved")}window.WebComponents?addEventListener("WebComponentsReady",e):"intera ctive"===document.readyState||"complete"===document.readyState?e():addEventListe ner("DOMContentLoaded",e)}(),window.Polymer={Settings:function(){var e=window.Po lymer||{};if(!e.noUrlSettings)for(var t,r=location.search.slice(1).split("&"),i= 0;i<r.length&&(t=r[i]);i++)t=t.split("="),t[0]&&(e[t[0]]=t[1]||!0);return e.want Shadow="shadow"===e.dom,e.hasShadow=Boolean(Element.prototype.createShadowRoot), e.nativeShadow=e.hasShadow&&!window.ShadowDOMPolyfill,e.useShadow=e.wantShadow&& e.hasShadow,e.hasNativeImports=Boolean("import"in document.createElement("link") ),e.useNativeImports=e.hasNativeImports,e.useNativeCustomElements=!window.Custom Elements||window.CustomElements.useNative,e.useNativeShadow=e.useShadow&&e.nativ eShadow,e.usePolyfillProto=!e.useNativeCustomElements&&!Object.__proto__,e.hasNa tiveCSSProperties=!navigator.userAgent.match("AppleWebKit/601")&&window.CSS&&CSS .supports&&CSS.supports("box-shadow","0 0 0 var(--foo)"),e.useNativeCSSPropertie s=e.hasNativeCSSProperties&&e.lazyRegister&&e.useNativeCSSProperties,e}()},funct ion(){var e=window.Polymer;window.Polymer=function(e){"function"==typeof e&&(e=e .prototype),e||(e={});var r=t(e);e=r.prototype;var i={prototype:e};return e.exte nds&&(i.extends=e.extends),Polymer.telemetry._registrate(e),document.registerEle ment(e.is,i),r};var t=function(e){var t=Polymer.Base;return e.extends&&(t=Polyme r.Base._getExtendedPrototype(e.extends)),e=Polymer.Base.chainObject(e,t),e.regis terCallback(),e.constructor};if(e)for(var r in e)Polymer[r]=e[r];Polymer.Class=t }(),Polymer.telemetry={registrations:[],_regLog:function(e){console.log("["+e.is +"]: registered")},_registrate:function(e){this.registrations.push(e),Polymer.lo g&&this._regLog(e)},dumpRegistrations:function(){this.registrations.forEach(this ._regLog)}},Object.defineProperty(window,"currentImport",{enumerable:!0,configur able:!0,get:function(){return(document._currentScript||document.currentScript).o wnerDocument}}),Polymer.RenderStatus={_ready:!1,_callbacks:[],whenReady:function (e){this._ready?e():this._callbacks.push(e)},_makeReady:function(){this._ready=! 0;for(var e=0;e<this._callbacks.length;e++)this._callbacks[e]();this._callbacks= []},_catchFirstRender:function(){requestAnimationFrame(function(){Polymer.Render Status._makeReady()})},_afterNextRenderQueue:[],_waitingNextRender:!1,afterNextR ender:function(e,t,r){this._watchNextRender(),this._afterNextRenderQueue.push([e ,t,r])},hasRendered:function(){return this._ready},_watchNextRender:function(){i f(!this._waitingNextRender){this._waitingNextRender=!0;var e=function(){Polymer. RenderStatus._flushNextRender()};this._ready?requestAnimationFrame(e):this.whenR eady(e)}},_flushNextRender:function(){var e=this;setTimeout(function(){e._flushR enderCallbacks(e._afterNextRenderQueue),e._afterNextRenderQueue=[],e._waitingNex tRender=!1})},_flushRenderCallbacks:function(e){for(var t,r=0;r<e.length;r++)t=e [r],t[1].apply(t[0],t[2]||Polymer.nar)}},window.HTMLImports?HTMLImports.whenRead y(function(){Polymer.RenderStatus._catchFirstRender()}):Polymer.RenderStatus._ca tchFirstRender(),Polymer.ImportStatus=Polymer.RenderStatus,Polymer.ImportStatus. whenLoaded=Polymer.ImportStatus.whenReady,function(){"use strict";var e=Polymer. Settings;Polymer.Base={__isPolymerInstance__:!0,_addFeature:function(e){this.ext end(this,e)},registerCallback:function(){"max"===e.lazyRegister?this.beforeRegis ter&&this.beforeRegister():(this._desugarBehaviors(),this._doBehavior("beforeReg ister")),this._registerFeatures(),e.lazyRegister||this.ensureRegisterFinished()} ,createdCallback:function(){this.__hasRegisterFinished||this._ensureRegisterFini shed(this.__proto__),Polymer.telemetry.instanceCount++,this.root=this,this._doBe havior("created"),this._initFeatures()},ensureRegisterFinished:function(){this._ ensureRegisterFinished(this)},_ensureRegisterFinished:function(t){t.__hasRegiste rFinished===t.is&&t.is||("max"===e.lazyRegister&&(t._desugarBehaviors(),t._doBeh aviorOnly("beforeRegister")),t.__hasRegisterFinished=t.is,t._finishRegisterFeatu res&&t._finishRegisterFeatures(),t._doBehavior("registered"),e.usePolyfillProto& &t!==this&&t.extend(this,t))},attachedCallback:function(){var e=this;Polymer.Ren derStatus.whenReady(function(){e.isAttached=!0,e._doBehavior("attached")})},deta chedCallback:function(){var e=this;Polymer.RenderStatus.whenReady(function(){e.i sAttached=!1,e._doBehavior("detached")})},attributeChangedCallback:function(e,t, r){this._attributeChangedImpl(e),this._doBehavior("attributeChanged",[e,t,r])},_ attributeChangedImpl:function(e){this._setAttributeToProperty(this,e)},extend:fu nction(e,t){if(e&&t)for(var r,i=Object.getOwnPropertyNames(t),o=0;o<i.length&&(r =i[o]);o++)this.copyOwnProperty(r,t,e);return e||t},mixin:function(e,t){for(var r in t)e[r]=t[r];return e},copyOwnProperty:function(e,t,r){var i=Object.getOwnPr opertyDescriptor(t,e);i&&Object.defineProperty(r,e,i)},_logger:function(e,t){swi tch(1===t.length&&Array.isArray(t[0])&&(t=t[0]),e){case"log":case"warn":case"err or":console[e].apply(console,t)}},_log:function(){var e=Array.prototype.slice.ca ll(arguments,0);this._logger("log",e)},_warn:function(){var e=Array.prototype.sl ice.call(arguments,0);this._logger("warn",e)},_error:function(){var e=Array.prot otype.slice.call(arguments,0);this._logger("error",e)},_logf:function(){return t his._logPrefix.concat(this.is).concat(Array.prototype.slice.call(arguments,0))}} ,Polymer.Base._logPrefix=function(){var e=window.chrome&&!/edge/i.test(navigator .userAgent)||/firefox/i.test(navigator.userAgent);return e?["%c[%s::%s]:","font- weight: bold; background-color:#EEEE00;"]:["[%s::%s]:"]}(),Polymer.Base.chainObj ect=function(e,t){return e&&t&&e!==t&&(Object.__proto__||(e=Polymer.Base.extend( Object.create(t),e)),e.__proto__=t),e},Polymer.Base=Polymer.Base.chainObject(Pol ymer.Base,HTMLElement.prototype),window.CustomElements?Polymer.instanceof=Custom Elements.instanceof:Polymer.instanceof=function(e,t){return e instanceof t},Poly mer.isInstance=function(e){return Boolean(e&&e.__isPolymerInstance__)},Polymer.t elemetry.instanceCount=0}(),function(){function e(){if(s)for(var e,t=document._c urrentScript||document.currentScript,r=t&&t.ownerDocument||document,i=r.querySel ectorAll("dom-module"),o=i.length-1;o>=0&&(e=i[o]);o--){if(e.__upgraded__)return ;CustomElements.upgrade(e)}}var t={},r={},i=function(e){return t[e]||r[e.toLower Case()]},o=function(){return document.createElement("dom-module")};o.prototype=O bject.create(HTMLElement.prototype),Polymer.Base.extend(o.prototype,{constructor :o,createdCallback:function(){this.register()},register:function(e){e=e||this.id ||this.getAttribute("name")||this.getAttribute("is"),e&&(this.id=e,t[e]=this,r[e .toLowerCase()]=this)},import:function(t,r){if(t){var o=i(t);return o||(e(),o=i( t)),o&&r&&(o=o.querySelector(r)),o}}});var s=window.CustomElements&&!CustomEleme nts.useNative;document.registerElement("dom-module",o)}(),Polymer.Base._addFeatu re({_prepIs:function(){if(!this.is){var e=(document._currentScript||document.cur rentScript).parentNode;if("dom-module"===e.localName){var t=e.id||e.getAttribute ("name")||e.getAttribute("is");this.is=t}}this.is&&(this.is=this.is.toLowerCase( ))}}),Polymer.Base._addFeature({behaviors:[],_desugarBehaviors:function(){this.b ehaviors.length&&(this.behaviors=this._desugarSomeBehaviors(this.behaviors))},_d esugarSomeBehaviors:function(e){var t=[];e=this._flattenBehaviorsList(e);for(var r=e.length-1;r>=0;r--){var i=e[r];t.indexOf(i)===-1&&(this._mixinBehavior(i),t. unshift(i))}return t},_flattenBehaviorsList:function(e){for(var t=[],r=0;r<e.len gth;r++){var i=e[r];i instanceof Array?t=t.concat(this._flattenBehaviorsList(i)) :i?t.push(i):this._warn(this._logf("_flattenBehaviorsList","behavior is null, ch eck for missing or 404 import"))}return t},_mixinBehavior:function(e){for(var t, r=Object.getOwnPropertyNames(e),i=0;i<r.length&&(t=r[i]);i++)Polymer.Base._behav iorProperties[t]||this.hasOwnProperty(t)||this.copyOwnProperty(t,e,this)},_prepB ehaviors:function(){this._prepFlattenedBehaviors(this.behaviors)},_prepFlattened Behaviors:function(e){for(var t=0,r=e.length;t<r;t++)this._prepBehavior(e[t]);th is._prepBehavior(this)},_doBehavior:function(e,t){for(var r=0;r<this.behaviors.l ength;r++)this._invokeBehavior(this.behaviors[r],e,t);this._invokeBehavior(this, e,t)},_doBehaviorOnly:function(e,t){for(var r=0;r<this.behaviors.length;r++)this ._invokeBehavior(this.behaviors[r],e,t)},_invokeBehavior:function(e,t,r){var i=e [t];i&&i.apply(this,r||Polymer.nar)},_marshalBehaviors:function(){for(var e=0;e< this.behaviors.length;e++)this._marshalBehavior(this.behaviors[e]);this._marshal Behavior(this)}}),Polymer.Base._behaviorProperties={hostAttributes:!0,beforeRegi ster:!0,registered:!0,properties:!0,observers:!0,listeners:!0,created:!0,attache d:!0,detached:!0,attributeChanged:!0,ready:!0},Polymer.Base._addFeature({_getExt endedPrototype:function(e){return this._getExtendedNativePrototype(e)},_nativePr ototypes:{},_getExtendedNativePrototype:function(e){var t=this._nativePrototypes [e];if(!t){var r=this.getNativePrototype(e);t=this.extend(Object.create(r),Polym er.Base),this._nativePrototypes[e]=t}return t},getNativePrototype:function(e){re turn Object.getPrototypeOf(document.createElement(e))}}),Polymer.Base._addFeatur e({_prepConstructor:function(){this._factoryArgs=this.extends?[this.extends,this .is]:[this.is];var e=function(){return this._factory(arguments)};this.hasOwnProp erty("extends")&&(e.extends=this.extends),Object.defineProperty(this,"constructo r",{value:e,writable:!0,configurable:!0}),e.prototype=this},_factory:function(e) {var t=document.createElement.apply(document,this._factoryArgs);return this.fact oryImpl&&this.factoryImpl.apply(t,e),t}}),Polymer.nob=Object.create(null),Polyme r.Base._addFeature({properties:{},getPropertyInfo:function(e){var t=this._getPro pertyInfo(e,this.properties);if(!t)for(var r=0;r<this.behaviors.length;r++)if(t= this._getPropertyInfo(e,this.behaviors[r].properties))return t;return t||Polymer .nob},_getPropertyInfo:function(e,t){var r=t&&t[e];return"function"==typeof r&&( r=t[e]={type:r}),r&&(r.defined=!0),r},_prepPropertyInfo:function(){this._propert yInfo={};for(var e=0;e<this.behaviors.length;e++)this._addPropertyInfo(this._pro pertyInfo,this.behaviors[e].properties);this._addPropertyInfo(this._propertyInfo ,this.properties),this._addPropertyInfo(this._propertyInfo,this._propertyEffects )},_addPropertyInfo:function(e,t){if(t){var r,i;for(var o in t)r=e[o],i=t[o],("_ "!==o[0]||i.readOnly)&&(e[o]?(r.type||(r.type=i.type),r.readOnly||(r.readOnly=i. readOnly)):e[o]={type:"function"==typeof i?i:i.type,readOnly:i.readOnly,attribut e:Polymer.CaseMap.camelToDashCase(o)})}}}),Polymer.CaseMap={_caseMap:{},_rx:{das hToCamel:/-[a-z]/g,camelToDash:/([A-Z])/g},dashToCamelCase:function(e){return th is._caseMap[e]||(this._caseMap[e]=e.indexOf("-")<0?e:e.replace(this._rx.dashToCa mel,function(e){return e[1].toUpperCase()}))},camelToDashCase:function(e){return this._caseMap[e]||(this._caseMap[e]=e.replace(this._rx.camelToDash,"-$1").toLow erCase())}},Polymer.Base._addFeature({_addHostAttributes:function(e){this._aggre gatedAttributes||(this._aggregatedAttributes={}),e&&this.mixin(this._aggregatedA ttributes,e)},_marshalHostAttributes:function(){this._aggregatedAttributes&&this ._applyAttributes(this,this._aggregatedAttributes)},_applyAttributes:function(e, t){for(var r in t)if(!this.hasAttribute(r)&&"class"!==r){var i=t[r];this.seriali zeValueToAttribute(i,r,this)}},_marshalAttributes:function(){this._takeAttribute sToModel(this)},_takeAttributesToModel:function(e){if(this.hasAttributes())for(v ar t in this._propertyInfo){var r=this._propertyInfo[t];this.hasAttribute(r.attr ibute)&&this._setAttributeToProperty(e,r.attribute,t,r)}},_setAttributeToPropert y:function(e,t,r,i){if(!this._serializing&&(r=r||Polymer.CaseMap.dashToCamelCase (t),i=i||this._propertyInfo&&this._propertyInfo[r],i&&!i.readOnly)){var o=this.g etAttribute(t);e[r]=this.deserialize(o,i.type)}},_serializing:!1,reflectProperty ToAttribute:function(e,t,r){this._serializing=!0,r=void 0===r?this[e]:r,this.ser ializeValueToAttribute(r,t||Polymer.CaseMap.camelToDashCase(e)),this._serializin g=!1},serializeValueToAttribute:function(e,t,r){var i=this.serialize(e);r=r||thi s,void 0===i?r.removeAttribute(t):r.setAttribute(t,i)},deserialize:function(e,t) {switch(t){case Number:e=Number(e);break;case Boolean:e=null!=e;break;case Objec t:try{e=JSON.parse(e)}catch(e){}break;case Array:try{e=JSON.parse(e)}catch(t){e= null,console.warn("Polymer::Attributes: couldn`t decode Array as JSON")}break;ca se Date:e=new Date(e);break;case String:}return e},serialize:function(e){switch( typeof e){case"boolean":return e?"":void 0;case"object":if(e instanceof Date)ret urn e.toString();if(e)try{return JSON.stringify(e)}catch(e){return""}default:ret urn null!=e?e:void 0}}}),Polymer.version="1.7.0",Polymer.Base._addFeature({_regi sterFeatures:function(){this._prepIs(),this._prepBehaviors(),this._prepConstruct or(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHostAttributes (e.hostAttributes)},_marshalBehavior:function(e){},_initFeatures:function(){this ._marshalHostAttributes(),this._marshalBehaviors()}})</script> <script>Polymer.B ase._addFeature({_prepTemplate:function(){void 0===this._template&&(this._templa te=Polymer.DomModule.import(this.is,"template")),this._template&&this._template. hasAttribute("is")&&this._warn(this._logf("_prepTemplate","top-level Polymer tem plate must not be a type-extension, found",this._template,"Move inside simple <t emplate>.")),this._template&&!this._template.content&&window.HTMLTemplateElement &&HTMLTemplateElement.decorate&&HTMLTemplateElement.decorate(this._template)},_s tampTemplate:function(){this._template&&(this.root=this.instanceTemplate(this._t emplate))},instanceTemplate:function(e){var t=document.importNode(e._content||e. content,!0);return t}}),function(){var e=Polymer.Base.attachedCallback;Polymer.B ase._addFeature({_hostStack:[],ready:function(){},_registerHost:function(e){this .dataHost=e=e||Polymer.Base._hostStack[Polymer.Base._hostStack.length-1],e&&e._c lients&&e._clients.push(this),this._clients=null,this._clientsReadied=!1},_begin Hosting:function(){Polymer.Base._hostStack.push(this),this._clients||(this._clie nts=[])},_endHosting:function(){Polymer.Base._hostStack.pop()},_tryReady:functio n(){this._readied=!1,this._canReady()&&this._ready()},_canReady:function(){retur n!this.dataHost||this.dataHost._clientsReadied},_ready:function(){this._beforeCl ientsReady(),this._template&&(this._setupRoot(),this._readyClients()),this._clie ntsReadied=!0,this._clients=null,this._afterClientsReady(),this._readySelf()},_r eadyClients:function(){this._beginDistribute();var e=this._clients;if(e)for(var t,o=0,i=e.length;o<i&&(t=e[o]);o++)t._ready();this._finishDistribute()},_readySe lf:function(){this._doBehavior("ready"),this._readied=!0,this._attachedPending&& (this._attachedPending=!1,this.attachedCallback())},_beforeClientsReady:function (){},_afterClientsReady:function(){},_beforeAttached:function(){},attachedCallba ck:function(){this._readied?(this._beforeAttached(),e.call(this)):this._attached Pending=!0}})}(),Polymer.ArraySplice=function(){function e(e,t,o){return{index:e ,removed:t,addedCount:o}}function t(){}var o=0,i=1,n=2,s=3;return t.prototype={c alcEditDistances:function(e,t,o,i,n,s){for(var r=s-n+1,d=o-t+1,a=new Array(r),l= 0;l<r;l++)a[l]=new Array(d),a[l][0]=l;for(var h=0;h<d;h++)a[0][h]=h;for(l=1;l<r; l++)for(h=1;h<d;h++)if(this.equals(e[t+h-1],i[n+l-1]))a[l][h]=a[l-1][h-1];else{v ar u=a[l-1][h]+1,c=a[l][h-1]+1;a[l][h]=u<c?u:c}return a},spliceOperationsFromEdi tDistances:function(e){for(var t=e.length-1,r=e[0].length-1,d=e[t][r],a=[];t>0|| r>0;)if(0!=t)if(0!=r){var l,h=e[t-1][r-1],u=e[t-1][r],c=e[t][r-1];l=u<c?u<h?u:h: c<h?c:h,l==h?(h==d?a.push(o):(a.push(i),d=h),t--,r--):l==u?(a.push(s),t--,d=u):( a.push(n),r--,d=c)}else a.push(s),t--;else a.push(n),r--;return a.reverse(),a},c alcSplices:function(t,r,d,a,l,h){var u=0,c=0,_=Math.min(d-r,h-l);if(0==r&&0==l&& (u=this.sharedPrefix(t,a,_)),d==t.length&&h==a.length&&(c=this.sharedSuffix(t,a, _-u)),r+=u,l+=u,d-=c,h-=c,d-r==0&&h-l==0)return[];if(r==d){for(var f=e(r,[],0);l <h;)f.removed.push(a[l++]);return[f]}if(l==h)return[e(r,[],d-r)];var m=this.spli ceOperationsFromEditDistances(this.calcEditDistances(t,r,d,a,l,h));f=void 0;for( var p=[],v=r,g=l,b=0;b<m.length;b++)switch(m[b]){case o:f&&(p.push(f),f=void 0), v++,g++;break;case i:f||(f=e(v,[],0)),f.addedCount++,v++,f.removed.push(a[g]),g+ +;break;case n:f||(f=e(v,[],0)),f.addedCount++,v++;break;case s:f||(f=e(v,[],0)) ,f.removed.push(a[g]),g++}return f&&p.push(f),p},sharedPrefix:function(e,t,o){fo r(var i=0;i<o;i++)if(!this.equals(e[i],t[i]))return i;return o},sharedSuffix:fun ction(e,t,o){for(var i=e.length,n=t.length,s=0;s<o&&this.equals(e[--i],t[--n]);) s++;return s},calculateSplices:function(e,t){return this.calcSplices(e,0,e.lengt h,t,0,t.length)},equals:function(e,t){return e===t}},new t}(),Polymer.domInnerHT ML=function(){function e(e){switch(e){case"&":return"&amp;";case"<":return"&lt;" ;case">":return"&gt;";case'"':return"&quot;";case" ":return"&nbsp;"}}function t( t){return t.replace(r,e)}function o(t){return t.replace(d,e)}function i(e){for(v ar t={},o=0;o<e.length;o++)t[e[o]]=!0;return t}function n(e,i,n){switch(e.nodeTy pe){case Node.ELEMENT_NODE:for(var r,d=e.localName,h="<"+d,u=e.attributes,c=0;r= u[c];c++)h+=" "+r.name+'="'+t(r.value)+'"';return h+=">",a[d]?h:h+s(e,n)+"</"+d+ ">";case Node.TEXT_NODE:var _=e.data;return i&&l[i.localName]?_:o(_);case Node.C OMMENT_NODE:return"\x3c!--"+e.data+"--\x3e";default:throw console.error(e),new E rror("not implemented")}}function s(e,t){e instanceof HTMLTemplateElement&&(e=e. content);for(var o,i="",s=Polymer.dom(e).childNodes,r=0,d=s.length;r<d&&(o=s[r]) ;r++)i+=n(o,e,t);return i}var r=/[&\u00A0"]/g,d=/[&\u00A0<>]/g,a=i(["area","base ","br","col","command","embed","hr","img","input","keygen","link","meta","param" ,"source","track","wbr"]),l=i(["style","script","xmp","iframe","noembed","nofram es","plaintext","noscript"]);return{getInnerHTML:s}}(),function(){"use strict";v ar e=Element.prototype.insertBefore,t=Element.prototype.appendChild,o=Element.pr ototype.removeChild;Polymer.TreeApi={arrayCopyChildNodes:function(e){for(var t=[ ],o=0,i=e.firstChild;i;i=i.nextSibling)t[o++]=i;return t},arrayCopyChildren:func tion(e){for(var t=[],o=0,i=e.firstElementChild;i;i=i.nextElementSibling)t[o++]=i ;return t},arrayCopy:function(e){for(var t=e.length,o=new Array(t),i=0;i<t;i++)o [i]=e[i];return o}},Polymer.TreeApi.Logical={hasParentNode:function(e){return Bo olean(e.__dom&&e.__dom.parentNode)},hasChildNodes:function(e){return Boolean(e._ _dom&&void 0!==e.__dom.childNodes)},getChildNodes:function(e){return this.hasChi ldNodes(e)?this._getChildNodes(e):e.childNodes},_getChildNodes:function(e){if(!e .__dom.childNodes){e.__dom.childNodes=[];for(var t=e.__dom.firstChild;t;t=t.__do m.nextSibling)e.__dom.childNodes.push(t)}return e.__dom.childNodes},getParentNod e:function(e){return e.__dom&&void 0!==e.__dom.parentNode?e.__dom.parentNode:e.p arentNode},getFirstChild:function(e){return e.__dom&&void 0!==e.__dom.firstChild ?e.__dom.firstChild:e.firstChild},getLastChild:function(e){return e.__dom&&void 0!==e.__dom.lastChild?e.__dom.lastChild:e.lastChild},getNextSibling:function(e){ return e.__dom&&void 0!==e.__dom.nextSibling?e.__dom.nextSibling:e.nextSibling}, getPreviousSibling:function(e){return e.__dom&&void 0!==e.__dom.previousSibling? e.__dom.previousSibling:e.previousSibling},getFirstElementChild:function(e){retu rn e.__dom&&void 0!==e.__dom.firstChild?this._getFirstElementChild(e):e.firstEle mentChild},_getFirstElementChild:function(e){for(var t=e.__dom.firstChild;t&&t.n odeType!==Node.ELEMENT_NODE;)t=t.__dom.nextSibling;return t},getLastElementChild :function(e){return e.__dom&&void 0!==e.__dom.lastChild?this._getLastElementChil d(e):e.lastElementChild},_getLastElementChild:function(e){for(var t=e.__dom.last Child;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.previousSibling;return t},get NextElementSibling:function(e){return e.__dom&&void 0!==e.__dom.nextSibling?this ._getNextElementSibling(e):e.nextElementSibling},_getNextElementSibling:function (e){for(var t=e.__dom.nextSibling;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.n extSibling;return t},getPreviousElementSibling:function(e){return e.__dom&&void 0!==e.__dom.previousSibling?this._getPreviousElementSibling(e):e.previousElement Sibling},_getPreviousElementSibling:function(e){for(var t=e.__dom.previousSiblin g;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.previousSibling;return t},saveChi ldNodes:function(e){if(!this.hasChildNodes(e)){e.__dom=e.__dom||{},e.__dom.first Child=e.firstChild,e.__dom.lastChild=e.lastChild,e.__dom.childNodes=[];for(var t =e.firstChild;t;t=t.nextSibling)t.__dom=t.__dom||{},t.__dom.parentNode=e,e.__dom .childNodes.push(t),t.__dom.nextSibling=t.nextSibling,t.__dom.previousSibling=t. previousSibling}},recordInsertBefore:function(e,t,o){if(t.__dom.childNodes=null, e.nodeType===Node.DOCUMENT_FRAGMENT_NODE)for(var i=e.firstChild;i;i=i.nextSiblin g)this._linkNode(i,t,o);else this._linkNode(e,t,o)},_linkNode:function(e,t,o){e. __dom=e.__dom||{},t.__dom=t.__dom||{},o&&(o.__dom=o.__dom||{}),e.__dom.previousS ibling=o?o.__dom.previousSibling:t.__dom.lastChild,e.__dom.previousSibling&&(e._ _dom.previousSibling.__dom.nextSibling=e),e.__dom.nextSibling=o||null,e.__dom.ne xtSibling&&(e.__dom.nextSibling.__dom.previousSibling=e),e.__dom.parentNode=t,o? o===t.__dom.firstChild&&(t.__dom.firstChild=e):(t.__dom.lastChild=e,t.__dom.firs tChild||(t.__dom.firstChild=e)),t.__dom.childNodes=null},recordRemoveChild:funct ion(e,t){e.__dom=e.__dom||{},t.__dom=t.__dom||{},e===t.__dom.firstChild&&(t.__do m.firstChild=e.__dom.nextSibling),e===t.__dom.lastChild&&(t.__dom.lastChild=e.__ dom.previousSibling);var o=e.__dom.previousSibling,i=e.__dom.nextSibling;o&&(o._ _dom.nextSibling=i),i&&(i.__dom.previousSibling=o),e.__dom.parentNode=e.__dom.pr eviousSibling=e.__dom.nextSibling=void 0,t.__dom.childNodes=null}},Polymer.TreeA pi.Composed={getChildNodes:function(e){return Polymer.TreeApi.arrayCopyChildNode s(e)},getParentNode:function(e){return e.parentNode},clearChildNodes:function(e) {e.textContent=""},insertBefore:function(t,o,i){return e.call(t,o,i||null)},appe ndChild:function(e,o){return t.call(e,o)},removeChild:function(e,t){return o.cal l(e,t)}}}(),Polymer.DomApi=function(){"use strict";var e=Polymer.Settings,t=Poly mer.TreeApi,o=function(e){this.node=i?o.wrap(e):e},i=e.hasShadow&&!e.nativeShado w;o.wrap=window.wrap?window.wrap:function(e){return e},o.prototype={flush:functi on(){Polymer.dom.flush()},deepContains:function(e){if(this.node.contains(e))retu rn!0;for(var t=e,o=e.ownerDocument;t&&t!==o&&t!==this.node;)t=Polymer.dom(t).par entNode||t.host;return t===this.node},queryDistributedElements:function(e){for(v ar t,i=this.getEffectiveChildNodes(),n=[],s=0,r=i.length;s<r&&(t=i[s]);s++)t.nod eType===Node.ELEMENT_NODE&&o.matchesSelector.call(t,e)&&n.push(t);return n},getE ffectiveChildNodes:function(){for(var e,t=[],o=this.childNodes,i=0,r=o.length;i< r&&(e=o[i]);i++)if(e.localName===n)for(var d=s(e).getDistributedNodes(),a=0;a<d. length;a++)t.push(d[a]);else t.push(e);return t},observeNodes:function(e){if(e)r eturn this.observer||(this.observer=this.node.localName===n?new o.DistributedNod esObserver(this):new o.EffectiveNodesObserver(this)),this.observer.addListener(e )},unobserveNodes:function(e){this.observer&&this.observer.removeListener(e)},no tifyObserver:function(){this.observer&&this.observer.notify()},_query:function(e ,o,i){o=o||this.node;var n=[];return this._queryElements(t.Logical.getChildNodes (o),e,i,n),n},_queryElements:function(e,t,o,i){for(var n,s=0,r=e.length;s<r&&(n= e[s]);s++)if(n.nodeType===Node.ELEMENT_NODE&&this._queryElement(n,t,o,i))return! 0},_queryElement:function(e,o,i,n){var s=o(e);return s&&n.push(e),i&&i(s)?s:void this._queryElements(t.Logical.getChildNodes(e),o,i,n)}};var n=o.CONTENT="conten t",s=o.factory=function(e){return e=e||document,e.__domApi||(e.__domApi=new o.ct or(e)),e.__domApi};o.hasApi=function(e){return Boolean(e.__domApi)},o.ctor=o,Pol ymer.dom=function(e,t){return e instanceof Event?Polymer.EventApi.factory(e):o.f actory(e,t)};var r=Element.prototype;return o.matchesSelector=r.matches||r.match esSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.web kitMatchesSelector,o}(),function(){"use strict";var e=Polymer.Settings,t=Polymer .DomApi,o=t.factory,i=Polymer.TreeApi,n=Polymer.domInnerHTML.getInnerHTML,s=t.CO NTENT;if(!e.useShadow){var r=Element.prototype.cloneNode,d=Document.prototype.im portNode;Polymer.Base.extend(t.prototype,{_lazyDistribute:function(e){e.shadyRoo t&&e.shadyRoot._distributionClean&&(e.shadyRoot._distributionClean=!1,Polymer.do m.addDebouncer(e.debounce("_distribute",e._distributeContent)))},appendChild:fun ction(e){return this.insertBefore(e)},insertBefore:function(e,n){if(n&&i.Logical .getParentNode(n)!==this.node)throw Error("The ref_node to be inserted before is not a child of this node");if(e.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var r=i .Logical.getParentNode(e);r?(t.hasApi(r)&&o(r).notifyObserver(),this._removeNode (e)):this._removeOwnerShadyRoot(e)}if(!this._addNode(e,n)){n&&(n=n.localName===s ?this._firstComposedNode(n):n);var d=this.node._isShadyRoot?this.node.host:this. node;n?i.Composed.insertBefore(d,e,n):i.Composed.appendChild(d,e)}return this.no tifyObserver(),e},_addNode:function(e,t){var o=this.getOwnerRoot();if(o){var n=t his._maybeAddInsertionPoint(e,this.node);o._invalidInsertionPoints||(o._invalidI nsertionPoints=n),this._addNodeToHost(o.host,e)}i.Logical.hasChildNodes(this.nod e)&&i.Logical.recordInsertBefore(e,this.node,t);var s=this._maybeDistribute(e)|| this.node.shadyRoot;if(s)if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE)for(;e.firs tChild;)i.Composed.removeChild(e,e.firstChild);else{var r=i.Composed.getParentNo de(e);r&&i.Composed.removeChild(r,e)}return s},removeChild:function(e){if(i.Logi cal.getParentNode(e)!==this.node)throw Error("The node to be removed is not a ch ild of this node: "+e);if(!this._removeNode(e)){var t=this.node._isShadyRoot?thi s.node.host:this.node,o=i.Composed.getParentNode(e);t===o&&i.Composed.removeChil d(t,e)}return this.notifyObserver(),e},_removeNode:function(e){var t,n=i.Logical .hasParentNode(e)&&i.Logical.getParentNode(e),s=this._ownerShadyRootForNode(e);r eturn n&&(t=o(e)._maybeDistributeParent(),i.Logical.recordRemoveChild(e,n),s&&th is._removeDistributedChildren(s,e)&&(s._invalidInsertionPoints=!0,this._lazyDist ribute(s.host))),this._removeOwnerShadyRoot(e),s&&this._removeNodeFromHost(s.hos t,e),t},replaceChild:function(e,t){return this.insertBefore(e,t),this.removeChil d(t),e},_hasCachedOwnerRoot:function(e){return Boolean(void 0!==e._ownerShadyRoo t)},getOwnerRoot:function(){return this._ownerShadyRootForNode(this.node)},_owne rShadyRootForNode:function(e){if(e){var t=e._ownerShadyRoot;if(void 0===t){if(e. _isShadyRoot)t=e;else{var o=i.Logical.getParentNode(e);t=o?o._isShadyRoot?o:this ._ownerShadyRootForNode(o):null}(t||document.documentElement.contains(e))&&(e._o wnerShadyRoot=t)}return t}},_maybeDistribute:function(e){var t=e.nodeType===Node .DOCUMENT_FRAGMENT_NODE&&!e.__noContent&&o(e).querySelector(s),n=t&&i.Logical.ge tParentNode(t).nodeType!==Node.DOCUMENT_FRAGMENT_NODE,r=t||e.localName===s;if(r) {var d=this.getOwnerRoot();d&&this._lazyDistribute(d.host)}var a=this._nodeNeeds Distribution(this.node);return a&&this._lazyDistribute(this.node),a||r&&!n},_may beAddInsertionPoint:function(e,t){var n;if(e.nodeType!==Node.DOCUMENT_FRAGMENT_N ODE||e.__noContent)e.localName===s&&(i.Logical.saveChildNodes(t),i.Logical.saveC hildNodes(e),n=!0);else for(var r,d,a,l=o(e).querySelectorAll(s),h=0;h<l.length& &(r=l[h]);h++)d=i.Logical.getParentNode(r),d===e&&(d=t),a=this._maybeAddInsertio nPoint(r,d),n=n||a;return n},_updateInsertionPoints:function(e){for(var t,n=e.sh adyRoot._insertionPoints=o(e.shadyRoot).querySelectorAll(s),r=0;r<n.length;r++)t =n[r],i.Logical.saveChildNodes(t),i.Logical.saveChildNodes(i.Logical.getParentNo de(t))},_nodeNeedsDistribution:function(e){return e&&e.shadyRoot&&t.hasInsertion Point(e.shadyRoot)},_addNodeToHost:function(e,t){e._elementAdd&&e._elementAdd(t) },_removeNodeFromHost:function(e,t){e._elementRemove&&e._elementRemove(t)},_remo veDistributedChildren:function(e,t){for(var n,s=e._insertionPoints,r=0;r<s.lengt h;r++){var d=s[r];if(this._contains(t,d))for(var a=o(d).getDistributedNodes(),l= 0;l<a.length;l++){n=!0;var h=a[l],u=i.Composed.getParentNode(h);u&&i.Composed.re moveChild(u,h)}}return n},_contains:function(e,t){for(;t;){if(t==e)return!0;t=i. Logical.getParentNode(t)}},_removeOwnerShadyRoot:function(e){if(this._hasCachedO wnerRoot(e))for(var t,o=i.Logical.getChildNodes(e),n=0,s=o.length;n<s&&(t=o[n]); n++)this._removeOwnerShadyRoot(t);e._ownerShadyRoot=void 0},_firstComposedNode:f unction(e){for(var t,i,n=o(e).getDistributedNodes(),s=0,r=n.length;s<r&&(t=n[s]) ;s++)if(i=o(t).getDestinationInsertionPoints(),i[i.length-1]===e)return t},query Selector:function(e){var o=this._query(function(o){return t.matchesSelector.call (o,e)},this.node,function(e){return Boolean(e)})[0];return o||null},querySelecto rAll:function(e){return this._query(function(o){return t.matchesSelector.call(o, e)},this.node)},getDestinationInsertionPoints:function(){return this.node._desti nationInsertionPoints||[]},getDistributedNodes:function(){return this.node._dist ributedNodes||[]},_clear:function(){for(;this.childNodes.length;)this.removeChil d(this.childNodes[0])},setAttribute:function(e,t){this.node.setAttribute(e,t),th is._maybeDistributeParent()},removeAttribute:function(e){this.node.removeAttribu te(e),this._maybeDistributeParent()},_maybeDistributeParent:function(){if(this._ nodeNeedsDistribution(this.parentNode))return this._lazyDistribute(this.parentNo de),!0},cloneNode:function(e){var t=r.call(this.node,!1);if(e)for(var i,n=this.c hildNodes,s=o(t),d=0;d<n.length;d++)i=o(n[d]).cloneNode(!0),s.appendChild(i);ret urn t},importNode:function(e,t){var n=this.node instanceof Document?this.node:th is.node.ownerDocument,s=d.call(n,e,!1);if(t)for(var r,a=i.Logical.getChildNodes( e),l=o(s),h=0;h<a.length;h++)r=o(n).importNode(a[h],!0),l.appendChild(r);return s},_getComposedInnerHTML:function(){return n(this.node,!0)}}),Object.definePrope rties(t.prototype,{activeElement:{get:function(){var e=document.activeElement;if (!e)return null;var t=!!this.node._isShadyRoot;if(this.node!==document){if(!t)re turn null;if(this.node.host===e||!this.node.host.contains(e))return null}for(var i=o(e).getOwnerRoot();i&&i!==this.node;)e=i.host,i=o(e).getOwnerRoot();return t his.node===document?i?null:e:i===this.node?e:null},configurable:!0},childNodes:{ get:function(){var e=i.Logical.getChildNodes(this.node);return Array.isArray(e)? e:i.arrayCopyChildNodes(this.node)},configurable:!0},children:{get:function(){re turn i.Logical.hasChildNodes(this.node)?Array.prototype.filter.call(this.childNo des,function(e){return e.nodeType===Node.ELEMENT_NODE}):i.arrayCopyChildren(this .node)},configurable:!0},parentNode:{get:function(){return i.Logical.getParentNo de(this.node)},configurable:!0},firstChild:{get:function(){return i.Logical.getF irstChild(this.node)},configurable:!0},lastChild:{get:function(){return i.Logica l.getLastChild(this.node)},configurable:!0},nextSibling:{get:function(){return i .Logical.getNextSibling(this.node)},configurable:!0},previousSibling:{get:functi on(){return i.Logical.getPreviousSibling(this.node)},configurable:!0},firstEleme ntChild:{get:function(){return i.Logical.getFirstElementChild(this.node)},config urable:!0},lastElementChild:{get:function(){return i.Logical.getLastElementChild (this.node)},configurable:!0},nextElementSibling:{get:function(){return i.Logica l.getNextElementSibling(this.node)},configurable:!0},previousElementSibling:{get :function(){return i.Logical.getPreviousElementSibling(this.node)},configurable: !0},textContent:{get:function(){var e=this.node.nodeType;if(e===Node.TEXT_NODE|| e===Node.COMMENT_NODE)return this.node.textContent;for(var t,o=[],i=0,n=this.chi ldNodes;t=n[i];i++)t.nodeType!==Node.COMMENT_NODE&&o.push(t.textContent);return o.join("")},set:function(e){var t=this.node.nodeType;t===Node.TEXT_NODE||t===Nod e.COMMENT_NODE?this.node.textContent=e:(this._clear(),e&&this.appendChild(docume nt.createTextNode(e)))},configurable:!0},innerHTML:{get:function(){var e=this.no de.nodeType;return e===Node.TEXT_NODE||e===Node.COMMENT_NODE?null:n(this.node)}, set:function(e){var t=this.node.nodeType;if(t!==Node.TEXT_NODE||t!==Node.COMMENT _NODE){this._clear();var o=document.createElement("div");o.innerHTML=e;for(var n =i.arrayCopyChildNodes(o),s=0;s<n.length;s++)this.appendChild(n[s])}},configurab le:!0}}),t.hasInsertionPoint=function(e){return Boolean(e&&e._insertionPoints.le ngth)}}}(),function(){"use strict";var e=Polymer.Settings,t=Polymer.TreeApi,o=Po lymer.DomApi;if(e.useShadow){Polymer.Base.extend(o.prototype,{querySelectorAll:f unction(e){return t.arrayCopy(this.node.querySelectorAll(e))},getOwnerRoot:funct ion(){for(var e=this.node;e;){if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.hos t)return e;e=e.parentNode}},importNode:function(e,t){var o=this.node instanceof Document?this.node:this.node.ownerDocument;return o.importNode(e,t)},getDestinat ionInsertionPoints:function(){var e=this.node.getDestinationInsertionPoints&&thi s.node.getDestinationInsertionPoints();return e?t.arrayCopy(e):[]},getDistribute dNodes:function(){var e=this.node.getDistributedNodes&&this.node.getDistributedN odes();return e?t.arrayCopy(e):[]}}),Object.defineProperties(o.prototype,{active Element:{get:function(){var e=o.wrap(this.node),t=e.activeElement;return e.conta ins(t)?t:null},configurable:!0},childNodes:{get:function(){return t.arrayCopyChi ldNodes(this.node)},configurable:!0},children:{get:function(){return t.arrayCopy Children(this.node)},configurable:!0},textContent:{get:function(){return this.no de.textContent},set:function(e){return this.node.textContent=e},configurable:!0} ,innerHTML:{get:function(){return this.node.innerHTML},set:function(e){return th is.node.innerHTML=e},configurable:!0}});var i=function(e){for(var t=0;t<e.length ;t++)n(e[t])},n=function(e){o.prototype[e]=function(){return this.node[e].apply( this.node,arguments)}};i(["cloneNode","appendChild","insertBefore","removeChild" ,"replaceChild","setAttribute","removeAttribute","querySelector"]);var s=functio n(e){for(var t=0;t<e.length;t++)r(e[t])},r=function(e){Object.defineProperty(o.p rototype,e,{get:function(){return this.node[e]},configurable:!0})};s(["parentNod e","firstChild","lastChild","nextSibling","previousSibling","firstElementChild", "lastElementChild","nextElementSibling","previousElementSibling"])}}(),Polymer.B ase.extend(Polymer.dom,{_flushGuard:0,_FLUSH_MAX:100,_needsTakeRecords:!Polymer. Settings.useNativeCustomElements,_debouncers:[],_staticFlushList:[],_finishDebou ncer:null,flush:function(){for(this._flushGuard=0,this._prepareFlush();this._deb ouncers.length&&this._flushGuard<this._FLUSH_MAX;){for(;this._debouncers.length; )this._debouncers.shift().complete();this._finishDebouncer&&this._finishDebounce r.complete(),this._prepareFlush(),this._flushGuard++}this._flushGuard>=this._FLU SH_MAX&&console.warn("Polymer.dom.flush aborted. Flush may not be complete.")},_ prepareFlush:function(){this._needsTakeRecords&&CustomElements.takeRecords();for (var e=0;e<this._staticFlushList.length;e++)this._staticFlushList[e]()},addStati cFlush:function(e){this._staticFlushList.push(e)},removeStaticFlush:function(e){ var t=this._staticFlushList.indexOf(e);t>=0&&this._staticFlushList.splice(t,1)}, addDebouncer:function(e){this._debouncers.push(e),this._finishDebouncer=Polymer. Debounce(this._finishDebouncer,this._finishFlush)},_finishFlush:function(){Polym er.dom._debouncers=[]}}),Polymer.EventApi=function(){"use strict";var e=Polymer. DomApi.ctor,t=Polymer.Settings;e.Event=function(e){this.event=e},t.useShadow?e.E vent.prototype={get rootTarget(){return this.event.path[0]},get localTarget(){re turn this.event.target},get path(){var e=this.event.path;return Array.isArray(e) ||(e=Array.prototype.slice.call(e)),e}}:e.Event.prototype={get rootTarget(){retu rn this.event.target},get localTarget(){for(var e=this.event.currentTarget,t=e&& Polymer.dom(e).getOwnerRoot(),o=this.path,i=0;i<o.length;i++)if(Polymer.dom(o[i] ).getOwnerRoot()===t)return o[i]},get path(){if(!this.event._path){for(var e=[], t=this.rootTarget;t;){e.push(t);var o=Polymer.dom(t).getDestinationInsertionPoin ts();if(o.length){for(var i=0;i<o.length-1;i++)e.push(o[i]);t=o[o.length-1]}else t=Polymer.dom(t).parentNode||t.host}e.push(window),this.event._path=e}return th is.event._path}};var o=function(t){return t.__eventApi||(t.__eventApi=new e.Even t(t)),t.__eventApi};return{factory:o}}(),function(){"use strict";var e=Polymer.D omApi.ctor,t=Polymer.Settings.useShadow;Object.defineProperty(e.prototype,"class List",{get:function(){return this._classList||(this._classList=new e.ClassList(t his)),this._classList},configurable:!0}),e.ClassList=function(e){this.domApi=e,t his.node=e.node},e.ClassList.prototype={add:function(){this.node.classList.add.a pply(this.node.classList,arguments),this._distributeParent()},remove:function(){ this.node.classList.remove.apply(this.node.classList,arguments),this._distribute Parent()},toggle:function(){this.node.classList.toggle.apply(this.node.classList ,arguments),this._distributeParent()},_distributeParent:function(){t||this.domAp i._maybeDistributeParent()},contains:function(){return this.node.classList.conta ins.apply(this.node.classList,arguments)}}}(),function(){"use strict";var e=Poly mer.DomApi.ctor,t=Polymer.Settings;if(e.EffectiveNodesObserver=function(e){this. domApi=e,this.node=this.domApi.node,this._listeners=[]},e.EffectiveNodesObserver .prototype={addListener:function(e){this._isSetup||(this._setup(),this._isSetup= !0);var t={fn:e,_nodes:[]};return this._listeners.push(t),this._scheduleNotify() ,t},removeListener:function(e){var t=this._listeners.indexOf(e);t>=0&&(this._lis teners.splice(t,1),e._nodes=[]),this._hasListeners()||(this._cleanup(),this._isS etup=!1)},_setup:function(){this._observeContentElements(this.domApi.childNodes) },_cleanup:function(){this._unobserveContentElements(this.domApi.childNodes)},_h asListeners:function(){return Boolean(this._listeners.length)},_scheduleNotify:f unction(){this._debouncer&&this._debouncer.stop(),this._debouncer=Polymer.Deboun ce(this._debouncer,this._notify),this._debouncer.context=this,Polymer.dom.addDeb ouncer(this._debouncer)},notify:function(){this._hasListeners()&&this._scheduleN otify()},_notify:function(){this._beforeCallListeners(),this._callListeners()},_ beforeCallListeners:function(){this._updateContentElements()},_updateContentElem ents:function(){this._observeContentElements(this.domApi.childNodes)},_observeCo ntentElements:function(e){for(var t,o=0;o<e.length&&(t=e[o]);o++)this._isContent (t)&&(t.__observeNodesMap=t.__observeNodesMap||new WeakMap,t.__observeNodesMap.h as(this)||t.__observeNodesMap.set(this,this._observeContent(t)))},_observeConten t:function(e){var t=this,o=Polymer.dom(e).observeNodes(function(){t._scheduleNot ify()});return o._avoidChangeCalculation=!0,o},_unobserveContentElements:functio n(e){for(var t,o,i=0;i<e.length&&(t=e[i]);i++)this._isContent(t)&&(o=t.__observe NodesMap.get(this),o&&(Polymer.dom(t).unobserveNodes(o),t.__observeNodesMap.dele te(this)))},_isContent:function(e){return"content"===e.localName},_callListeners :function(){for(var e,t=this._listeners,o=this._getEffectiveNodes(),i=0;i<t.leng th&&(e=t[i]);i++){var n=this._generateListenerInfo(e,o);(n||e._alwaysNotify)&&th is._callListener(e,n)}},_getEffectiveNodes:function(){return this.domApi.getEffe ctiveChildNodes()},_generateListenerInfo:function(e,t){if(e._avoidChangeCalculat ion)return!0;for(var o,i=e._nodes,n={target:this.node,addedNodes:[],removedNodes :[]},s=Polymer.ArraySplice.calculateSplices(t,i),r=0;r<s.length&&(o=s[r]);r++)fo r(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)n.removedNodes.push(d);for( r=0,o;r<s.length&&(o=s[r]);r++)for(a=o.index;a<o.index+o.addedCount;a++)n.addedN odes.push(t[a]);return e._nodes=t,n.addedNodes.length||n.removedNodes.length?n:v oid 0},_callListener:function(e,t){return e.fn.call(this.node,t)},enableShadowAt tributeTracking:function(){}},t.useShadow){var o=e.EffectiveNodesObserver.protot ype._setup,i=e.EffectiveNodesObserver.prototype._cleanup;Polymer.Base.extend(e.E ffectiveNodesObserver.prototype,{_setup:function(){if(!this._observer){var e=thi s;this._mutationHandler=function(t){t&&t.length&&e._scheduleNotify()},this._obse rver=new MutationObserver(this._mutationHandler),this._boundFlush=function(){e._ flush()},Polymer.dom.addStaticFlush(this._boundFlush),this._observer.observe(thi s.node,{childList:!0})}o.call(this)},_cleanup:function(){this._observer.disconne ct(),this._observer=null,this._mutationHandler=null,Polymer.dom.removeStaticFlus h(this._boundFlush),i.call(this)},_flush:function(){this._observer&&this._mutati onHandler(this._observer.takeRecords())},enableShadowAttributeTracking:function( ){if(this._observer){this._makeContentListenersAlwaysNotify(),this._observer.dis connect(),this._observer.observe(this.node,{childList:!0,attributes:!0,subtree:! 0});var e=this.domApi.getOwnerRoot(),t=e&&e.host;t&&Polymer.dom(t).observer&&Pol ymer.dom(t).observer.enableShadowAttributeTracking()}},_makeContentListenersAlwa ysNotify:function(){for(var e,t=0;t<this._listeners.length;t++)e=this._listeners [t],e._alwaysNotify=e._isContentListener}})}}(),function(){"use strict";var e=Po lymer.DomApi.ctor,t=Polymer.Settings;e.DistributedNodesObserver=function(t){e.Ef fectiveNodesObserver.call(this,t)},e.DistributedNodesObserver.prototype=Object.c reate(e.EffectiveNodesObserver.prototype),Polymer.Base.extend(e.DistributedNodes Observer.prototype,{_setup:function(){},_cleanup:function(){},_beforeCallListene rs:function(){},_getEffectiveNodes:function(){return this.domApi.getDistributedN odes()}}),t.useShadow&&Polymer.Base.extend(e.DistributedNodesObserver.prototype, {_setup:function(){if(!this._observer){var e=this.domApi.getOwnerRoot(),t=e&&e.h ost;if(t){var o=this;this._observer=Polymer.dom(t).observeNodes(function(){o._sc heduleNotify()}),this._observer._isContentListener=!0,this._hasAttrSelect()&&Pol ymer.dom(t).observer.enableShadowAttributeTracking()}}},_hasAttrSelect:function( ){var e=this.node.getAttribute("select");return e&&e.match(/[[.]+/)},_cleanup:fu nction(){var e=this.domApi.getOwnerRoot(),t=e&&e.host;t&&Polymer.dom(t).unobserv eNodes(this._observer),this._observer=null}})}(),function(){function e(e,t){t._d istributedNodes.push(e);var o=e._destinationInsertionPoints;o?o.push(t):e._desti nationInsertionPoints=[t]}function t(e){var t=e._distributedNodes;if(t)for(var o =0;o<t.length;o++){var i=t[o]._destinationInsertionPoints;i&&i.splice(i.indexOf( e)+1,i.length)}}function o(e,t){var o=u.Logical.getParentNode(e);o&&o.shadyRoot& &h.hasInsertionPoint(o.shadyRoot)&&o.shadyRoot._distributionClean&&(o.shadyRoot. _distributionClean=!1,t.shadyRoot._dirtyRoots.push(o))}function i(e,t){var o=t._ destinationInsertionPoints;return o&&o[o.length-1]===e}function n(e){return"cont ent"==e.localName}function s(e){for(;e&&r(e);)e=e.domHost;return e}function r(e) {for(var t,o=u.Logical.getChildNodes(e),i=0;i<o.length;i++)if(t=o[i],t.localName &&"content"===t.localName)return e.domHost}function d(e){for(var t,o=0;o<e._inse rtionPoints.length;o++)t=e._insertionPoints[o],h.hasApi(t)&&Polymer.dom(t).notif yObserver()}function a(e){h.hasApi(e)&&Polymer.dom(e).notifyObserver()}function l(e){if(c&&e)for(var t=0;t<e.length;t++)CustomElements.upgrade(e[t])}var h=Polym er.DomApi,u=Polymer.TreeApi;Polymer.Base._addFeature({_prepShady:function(){this ._useContent=this._useContent||Boolean(this._template)},_setupShady:function(){t his.shadyRoot=null,this.__domApi||(this.__domApi=null),this.__dom||(this.__dom=n ull),this._ownerShadyRoot||(this._ownerShadyRoot=void 0)},_poolContent:function( ){this._useContent&&u.Logical.saveChildNodes(this)},_setupRoot:function(){this._ useContent&&(this._createLocalRoot(),this.dataHost||l(u.Logical.getChildNodes(th is)))},_createLocalRoot:function(){this.shadyRoot=this.root,this.shadyRoot._dist ributionClean=!1,this.shadyRoot._hasDistributed=!1,this.shadyRoot._isShadyRoot=! 0,this.shadyRoot._dirtyRoots=[];var e=this.shadyRoot._insertionPoints=!this._not es||this._notes._hasContent?this.shadyRoot.querySelectorAll("content"):[];u.Logi cal.saveChildNodes(this.shadyRoot);for(var t,o=0;o<e.length;o++)t=e[o],u.Logical .saveChildNodes(t),u.Logical.saveChildNodes(t.parentNode);this.shadyRoot.host=th is},get domHost(){var e=Polymer.dom(this).getOwnerRoot();return e&&e.host},distr ibuteContent:function(e){if(this.shadyRoot){this.shadyRoot._invalidInsertionPoin ts=this.shadyRoot._invalidInsertionPoints||e;var t=s(this);Polymer.dom(this)._la zyDistribute(t)}},_distributeContent:function(){this._useContent&&!this.shadyRoo t._distributionClean&&(this.shadyRoot._invalidInsertionPoints&&(Polymer.dom(this )._updateInsertionPoints(this),this.shadyRoot._invalidInsertionPoints=!1),this._ beginDistribute(),this._distributeDirtyRoots(),this._finishDistribute())},_begin Distribute:function(){this._useContent&&h.hasInsertionPoint(this.shadyRoot)&&(th is._resetDistribution(),this._distributePool(this.shadyRoot,this._collectPool()) ); 1 <!DOCTYPE html><html><head><meta charset="UTF-8"> </head><body><div hidden="" by -vulcanize=""><script>!function(){function e(){document.body.removeAttribute("un resolved")}window.WebComponents?addEventListener("WebComponentsReady",e):"intera ctive"===document.readyState||"complete"===document.readyState?e():addEventListe ner("DOMContentLoaded",e)}(),window.Polymer={Settings:function(){var e=window.Po lymer||{};if(!e.noUrlSettings)for(var t,r=location.search.slice(1).split("&"),i= 0;i<r.length&&(t=r[i]);i++)t=t.split("="),t[0]&&(e[t[0]]=t[1]||!0);return e.want Shadow="shadow"===e.dom,e.hasShadow=Boolean(Element.prototype.createShadowRoot), e.nativeShadow=e.hasShadow&&!window.ShadowDOMPolyfill,e.useShadow=e.wantShadow&& e.hasShadow,e.hasNativeImports=Boolean("import"in document.createElement("link") ),e.useNativeImports=e.hasNativeImports,e.useNativeCustomElements=!window.Custom Elements||window.CustomElements.useNative,e.useNativeShadow=e.useShadow&&e.nativ eShadow,e.usePolyfillProto=!e.useNativeCustomElements&&!Object.__proto__,e.hasNa tiveCSSProperties=!navigator.userAgent.match("AppleWebKit/601")&&window.CSS&&CSS .supports&&CSS.supports("box-shadow","0 0 0 var(--foo)"),e.useNativeCSSPropertie s=e.hasNativeCSSProperties&&e.lazyRegister&&e.useNativeCSSProperties,e}()},funct ion(){var e=window.Polymer;window.Polymer=function(e){"function"==typeof e&&(e=e .prototype),e||(e={});var r=t(e);e=r.prototype;var i={prototype:e};return e.exte nds&&(i.extends=e.extends),Polymer.telemetry._registrate(e),document.registerEle ment(e.is,i),r};var t=function(e){var t=Polymer.Base;return e.extends&&(t=Polyme r.Base._getExtendedPrototype(e.extends)),e=Polymer.Base.chainObject(e,t),e.regis terCallback(),e.constructor};if(e)for(var r in e)Polymer[r]=e[r];Polymer.Class=t }(),Polymer.telemetry={registrations:[],_regLog:function(e){console.log("["+e.is +"]: registered")},_registrate:function(e){this.registrations.push(e),Polymer.lo g&&this._regLog(e)},dumpRegistrations:function(){this.registrations.forEach(this ._regLog)}},Object.defineProperty(window,"currentImport",{enumerable:!0,configur able:!0,get:function(){return(document._currentScript||document.currentScript).o wnerDocument}}),Polymer.RenderStatus={_ready:!1,_callbacks:[],whenReady:function (e){this._ready?e():this._callbacks.push(e)},_makeReady:function(){this._ready=! 0;for(var e=0;e<this._callbacks.length;e++)this._callbacks[e]();this._callbacks= []},_catchFirstRender:function(){requestAnimationFrame(function(){Polymer.Render Status._makeReady()})},_afterNextRenderQueue:[],_waitingNextRender:!1,afterNextR ender:function(e,t,r){this._watchNextRender(),this._afterNextRenderQueue.push([e ,t,r])},hasRendered:function(){return this._ready},_watchNextRender:function(){i f(!this._waitingNextRender){this._waitingNextRender=!0;var e=function(){Polymer. RenderStatus._flushNextRender()};this._ready?requestAnimationFrame(e):this.whenR eady(e)}},_flushNextRender:function(){var e=this;setTimeout(function(){e._flushR enderCallbacks(e._afterNextRenderQueue),e._afterNextRenderQueue=[],e._waitingNex tRender=!1})},_flushRenderCallbacks:function(e){for(var t,r=0;r<e.length;r++)t=e [r],t[1].apply(t[0],t[2]||Polymer.nar)}},window.HTMLImports?HTMLImports.whenRead y(function(){Polymer.RenderStatus._catchFirstRender()}):Polymer.RenderStatus._ca tchFirstRender(),Polymer.ImportStatus=Polymer.RenderStatus,Polymer.ImportStatus. whenLoaded=Polymer.ImportStatus.whenReady,function(){"use strict";var e=Polymer. Settings;Polymer.Base={__isPolymerInstance__:!0,_addFeature:function(e){this.ext end(this,e)},registerCallback:function(){"max"===e.lazyRegister?this.beforeRegis ter&&this.beforeRegister():(this._desugarBehaviors(),this._doBehavior("beforeReg ister")),this._registerFeatures(),e.lazyRegister||this.ensureRegisterFinished()} ,createdCallback:function(){this.__hasRegisterFinished||this._ensureRegisterFini shed(this.__proto__),Polymer.telemetry.instanceCount++,this.root=this,this._doBe havior("created"),this._initFeatures()},ensureRegisterFinished:function(){this._ ensureRegisterFinished(this)},_ensureRegisterFinished:function(t){t.__hasRegiste rFinished===t.is&&t.is||("max"===e.lazyRegister&&(t._desugarBehaviors(),t._doBeh aviorOnly("beforeRegister")),t.__hasRegisterFinished=t.is,t._finishRegisterFeatu res&&t._finishRegisterFeatures(),t._doBehavior("registered"),e.usePolyfillProto& &t!==this&&t.extend(this,t))},attachedCallback:function(){var e=this;Polymer.Ren derStatus.whenReady(function(){e.isAttached=!0,e._doBehavior("attached")})},deta chedCallback:function(){var e=this;Polymer.RenderStatus.whenReady(function(){e.i sAttached=!1,e._doBehavior("detached")})},attributeChangedCallback:function(e,t, r){this._attributeChangedImpl(e),this._doBehavior("attributeChanged",[e,t,r])},_ attributeChangedImpl:function(e){this._setAttributeToProperty(this,e)},extend:fu nction(e,t){if(e&&t)for(var r,i=Object.getOwnPropertyNames(t),o=0;o<i.length&&(r =i[o]);o++)this.copyOwnProperty(r,t,e);return e||t},mixin:function(e,t){for(var r in t)e[r]=t[r];return e},copyOwnProperty:function(e,t,r){var i=Object.getOwnPr opertyDescriptor(t,e);i&&Object.defineProperty(r,e,i)},_logger:function(e,t){swi tch(1===t.length&&Array.isArray(t[0])&&(t=t[0]),e){case"log":case"warn":case"err or":console[e].apply(console,t)}},_log:function(){var e=Array.prototype.slice.ca ll(arguments,0);this._logger("log",e)},_warn:function(){var e=Array.prototype.sl ice.call(arguments,0);this._logger("warn",e)},_error:function(){var e=Array.prot otype.slice.call(arguments,0);this._logger("error",e)},_logf:function(){return t his._logPrefix.concat(this.is).concat(Array.prototype.slice.call(arguments,0))}} ,Polymer.Base._logPrefix=function(){var e=window.chrome&&!/edge/i.test(navigator .userAgent)||/firefox/i.test(navigator.userAgent);return e?["%c[%s::%s]:","font- weight: bold; background-color:#EEEE00;"]:["[%s::%s]:"]}(),Polymer.Base.chainObj ect=function(e,t){return e&&t&&e!==t&&(Object.__proto__||(e=Polymer.Base.extend( Object.create(t),e)),e.__proto__=t),e},Polymer.Base=Polymer.Base.chainObject(Pol ymer.Base,HTMLElement.prototype),window.CustomElements?Polymer.instanceof=Custom Elements.instanceof:Polymer.instanceof=function(e,t){return e instanceof t},Poly mer.isInstance=function(e){return Boolean(e&&e.__isPolymerInstance__)},Polymer.t elemetry.instanceCount=0}(),function(){function e(){if(s)for(var e,t=document._c urrentScript||document.currentScript,r=t&&t.ownerDocument||document,i=r.querySel ectorAll("dom-module"),o=i.length-1;o>=0&&(e=i[o]);o--){if(e.__upgraded__)return ;CustomElements.upgrade(e)}}var t={},r={},i=function(e){return t[e]||r[e.toLower Case()]},o=function(){return document.createElement("dom-module")};o.prototype=O bject.create(HTMLElement.prototype),Polymer.Base.extend(o.prototype,{constructor :o,createdCallback:function(){this.register()},register:function(e){e=e||this.id ||this.getAttribute("name")||this.getAttribute("is"),e&&(this.id=e,t[e]=this,r[e .toLowerCase()]=this)},import:function(t,r){if(t){var o=i(t);return o||(e(),o=i( t)),o&&r&&(o=o.querySelector(r)),o}}});var s=window.CustomElements&&!CustomEleme nts.useNative;document.registerElement("dom-module",o)}(),Polymer.Base._addFeatu re({_prepIs:function(){if(!this.is){var e=(document._currentScript||document.cur rentScript).parentNode;if("dom-module"===e.localName){var t=e.id||e.getAttribute ("name")||e.getAttribute("is");this.is=t}}this.is&&(this.is=this.is.toLowerCase( ))}}),Polymer.Base._addFeature({behaviors:[],_desugarBehaviors:function(){this.b ehaviors.length&&(this.behaviors=this._desugarSomeBehaviors(this.behaviors))},_d esugarSomeBehaviors:function(e){var t=[];e=this._flattenBehaviorsList(e);for(var r=e.length-1;r>=0;r--){var i=e[r];t.indexOf(i)===-1&&(this._mixinBehavior(i),t. unshift(i))}return t},_flattenBehaviorsList:function(e){for(var t=[],r=0;r<e.len gth;r++){var i=e[r];i instanceof Array?t=t.concat(this._flattenBehaviorsList(i)) :i?t.push(i):this._warn(this._logf("_flattenBehaviorsList","behavior is null, ch eck for missing or 404 import"))}return t},_mixinBehavior:function(e){for(var t, r=Object.getOwnPropertyNames(e),i=0;i<r.length&&(t=r[i]);i++)Polymer.Base._behav iorProperties[t]||this.hasOwnProperty(t)||this.copyOwnProperty(t,e,this)},_prepB ehaviors:function(){this._prepFlattenedBehaviors(this.behaviors)},_prepFlattened Behaviors:function(e){for(var t=0,r=e.length;t<r;t++)this._prepBehavior(e[t]);th is._prepBehavior(this)},_doBehavior:function(e,t){for(var r=0;r<this.behaviors.l ength;r++)this._invokeBehavior(this.behaviors[r],e,t);this._invokeBehavior(this, e,t)},_doBehaviorOnly:function(e,t){for(var r=0;r<this.behaviors.length;r++)this ._invokeBehavior(this.behaviors[r],e,t)},_invokeBehavior:function(e,t,r){var i=e [t];i&&i.apply(this,r||Polymer.nar)},_marshalBehaviors:function(){for(var e=0;e< this.behaviors.length;e++)this._marshalBehavior(this.behaviors[e]);this._marshal Behavior(this)}}),Polymer.Base._behaviorProperties={hostAttributes:!0,beforeRegi ster:!0,registered:!0,properties:!0,observers:!0,listeners:!0,created:!0,attache d:!0,detached:!0,attributeChanged:!0,ready:!0},Polymer.Base._addFeature({_getExt endedPrototype:function(e){return this._getExtendedNativePrototype(e)},_nativePr ototypes:{},_getExtendedNativePrototype:function(e){var t=this._nativePrototypes [e];if(!t){var r=this.getNativePrototype(e);t=this.extend(Object.create(r),Polym er.Base),this._nativePrototypes[e]=t}return t},getNativePrototype:function(e){re turn Object.getPrototypeOf(document.createElement(e))}}),Polymer.Base._addFeatur e({_prepConstructor:function(){this._factoryArgs=this.extends?[this.extends,this .is]:[this.is];var e=function(){return this._factory(arguments)};this.hasOwnProp erty("extends")&&(e.extends=this.extends),Object.defineProperty(this,"constructo r",{value:e,writable:!0,configurable:!0}),e.prototype=this},_factory:function(e) {var t=document.createElement.apply(document,this._factoryArgs);return this.fact oryImpl&&this.factoryImpl.apply(t,e),t}}),Polymer.nob=Object.create(null),Polyme r.Base._addFeature({properties:{},getPropertyInfo:function(e){var t=this._getPro pertyInfo(e,this.properties);if(!t)for(var r=0;r<this.behaviors.length;r++)if(t= this._getPropertyInfo(e,this.behaviors[r].properties))return t;return t||Polymer .nob},_getPropertyInfo:function(e,t){var r=t&&t[e];return"function"==typeof r&&( r=t[e]={type:r}),r&&(r.defined=!0),r},_prepPropertyInfo:function(){this._propert yInfo={};for(var e=0;e<this.behaviors.length;e++)this._addPropertyInfo(this._pro pertyInfo,this.behaviors[e].properties);this._addPropertyInfo(this._propertyInfo ,this.properties),this._addPropertyInfo(this._propertyInfo,this._propertyEffects )},_addPropertyInfo:function(e,t){if(t){var r,i;for(var o in t)r=e[o],i=t[o],("_ "!==o[0]||i.readOnly)&&(e[o]?(r.type||(r.type=i.type),r.readOnly||(r.readOnly=i. readOnly)):e[o]={type:"function"==typeof i?i:i.type,readOnly:i.readOnly,attribut e:Polymer.CaseMap.camelToDashCase(o)})}}}),Polymer.CaseMap={_caseMap:{},_rx:{das hToCamel:/-[a-z]/g,camelToDash:/([A-Z])/g},dashToCamelCase:function(e){return th is._caseMap[e]||(this._caseMap[e]=e.indexOf("-")<0?e:e.replace(this._rx.dashToCa mel,function(e){return e[1].toUpperCase()}))},camelToDashCase:function(e){return this._caseMap[e]||(this._caseMap[e]=e.replace(this._rx.camelToDash,"-$1").toLow erCase())}},Polymer.Base._addFeature({_addHostAttributes:function(e){this._aggre gatedAttributes||(this._aggregatedAttributes={}),e&&this.mixin(this._aggregatedA ttributes,e)},_marshalHostAttributes:function(){this._aggregatedAttributes&&this ._applyAttributes(this,this._aggregatedAttributes)},_applyAttributes:function(e, t){for(var r in t)if(!this.hasAttribute(r)&&"class"!==r){var i=t[r];this.seriali zeValueToAttribute(i,r,this)}},_marshalAttributes:function(){this._takeAttribute sToModel(this)},_takeAttributesToModel:function(e){if(this.hasAttributes())for(v ar t in this._propertyInfo){var r=this._propertyInfo[t];this.hasAttribute(r.attr ibute)&&this._setAttributeToProperty(e,r.attribute,t,r)}},_setAttributeToPropert y:function(e,t,r,i){if(!this._serializing&&(r=r||Polymer.CaseMap.dashToCamelCase (t),i=i||this._propertyInfo&&this._propertyInfo[r],i&&!i.readOnly)){var o=this.g etAttribute(t);e[r]=this.deserialize(o,i.type)}},_serializing:!1,reflectProperty ToAttribute:function(e,t,r){this._serializing=!0,r=void 0===r?this[e]:r,this.ser ializeValueToAttribute(r,t||Polymer.CaseMap.camelToDashCase(e)),this._serializin g=!1},serializeValueToAttribute:function(e,t,r){var i=this.serialize(e);r=r||thi s,void 0===i?r.removeAttribute(t):r.setAttribute(t,i)},deserialize:function(e,t) {switch(t){case Number:e=Number(e);break;case Boolean:e=null!=e;break;case Objec t:try{e=JSON.parse(e)}catch(e){}break;case Array:try{e=JSON.parse(e)}catch(t){e= null,console.warn("Polymer::Attributes: couldn`t decode Array as JSON")}break;ca se Date:e=new Date(e);break;case String:}return e},serialize:function(e){switch( typeof e){case"boolean":return e?"":void 0;case"object":if(e instanceof Date)ret urn e.toString();if(e)try{return JSON.stringify(e)}catch(e){return""}default:ret urn null!=e?e:void 0}}}),Polymer.version="1.7.0",Polymer.Base._addFeature({_regi sterFeatures:function(){this._prepIs(),this._prepBehaviors(),this._prepConstruct or(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHostAttributes (e.hostAttributes)},_marshalBehavior:function(e){},_initFeatures:function(){this ._marshalHostAttributes(),this._marshalBehaviors()}})</script> <script>Polymer.B ase._addFeature({_prepTemplate:function(){void 0===this._template&&(this._templa te=Polymer.DomModule.import(this.is,"template")),this._template&&this._template. hasAttribute("is")&&this._warn(this._logf("_prepTemplate","top-level Polymer tem plate must not be a type-extension, found",this._template,"Move inside simple <t emplate>.")),this._template&&!this._template.content&&window.HTMLTemplateElement &&HTMLTemplateElement.decorate&&HTMLTemplateElement.decorate(this._template)},_s tampTemplate:function(){this._template&&(this.root=this.instanceTemplate(this._t emplate))},instanceTemplate:function(e){var t=document.importNode(e._content||e. content,!0);return t}}),function(){var e=Polymer.Base.attachedCallback;Polymer.B ase._addFeature({_hostStack:[],ready:function(){},_registerHost:function(e){this .dataHost=e=e||Polymer.Base._hostStack[Polymer.Base._hostStack.length-1],e&&e._c lients&&e._clients.push(this),this._clients=null,this._clientsReadied=!1},_begin Hosting:function(){Polymer.Base._hostStack.push(this),this._clients||(this._clie nts=[])},_endHosting:function(){Polymer.Base._hostStack.pop()},_tryReady:functio n(){this._readied=!1,this._canReady()&&this._ready()},_canReady:function(){retur n!this.dataHost||this.dataHost._clientsReadied},_ready:function(){this._beforeCl ientsReady(),this._template&&(this._setupRoot(),this._readyClients()),this._clie ntsReadied=!0,this._clients=null,this._afterClientsReady(),this._readySelf()},_r eadyClients:function(){this._beginDistribute();var e=this._clients;if(e)for(var t,o=0,i=e.length;o<i&&(t=e[o]);o++)t._ready();this._finishDistribute()},_readySe lf:function(){this._doBehavior("ready"),this._readied=!0,this._attachedPending&& (this._attachedPending=!1,this.attachedCallback())},_beforeClientsReady:function (){},_afterClientsReady:function(){},_beforeAttached:function(){},attachedCallba ck:function(){this._readied?(this._beforeAttached(),e.call(this)):this._attached Pending=!0}})}(),Polymer.ArraySplice=function(){function e(e,t,o){return{index:e ,removed:t,addedCount:o}}function t(){}var o=0,i=1,n=2,s=3;return t.prototype={c alcEditDistances:function(e,t,o,i,n,s){for(var r=s-n+1,d=o-t+1,a=new Array(r),l= 0;l<r;l++)a[l]=new Array(d),a[l][0]=l;for(var h=0;h<d;h++)a[0][h]=h;for(l=1;l<r; l++)for(h=1;h<d;h++)if(this.equals(e[t+h-1],i[n+l-1]))a[l][h]=a[l-1][h-1];else{v ar u=a[l-1][h]+1,c=a[l][h-1]+1;a[l][h]=u<c?u:c}return a},spliceOperationsFromEdi tDistances:function(e){for(var t=e.length-1,r=e[0].length-1,d=e[t][r],a=[];t>0|| r>0;)if(0!=t)if(0!=r){var l,h=e[t-1][r-1],u=e[t-1][r],c=e[t][r-1];l=u<c?u<h?u:h: c<h?c:h,l==h?(h==d?a.push(o):(a.push(i),d=h),t--,r--):l==u?(a.push(s),t--,d=u):( a.push(n),r--,d=c)}else a.push(s),t--;else a.push(n),r--;return a.reverse(),a},c alcSplices:function(t,r,d,a,l,h){var u=0,c=0,_=Math.min(d-r,h-l);if(0==r&&0==l&& (u=this.sharedPrefix(t,a,_)),d==t.length&&h==a.length&&(c=this.sharedSuffix(t,a, _-u)),r+=u,l+=u,d-=c,h-=c,d-r==0&&h-l==0)return[];if(r==d){for(var f=e(r,[],0);l <h;)f.removed.push(a[l++]);return[f]}if(l==h)return[e(r,[],d-r)];var m=this.spli ceOperationsFromEditDistances(this.calcEditDistances(t,r,d,a,l,h));f=void 0;for( var p=[],v=r,g=l,b=0;b<m.length;b++)switch(m[b]){case o:f&&(p.push(f),f=void 0), v++,g++;break;case i:f||(f=e(v,[],0)),f.addedCount++,v++,f.removed.push(a[g]),g+ +;break;case n:f||(f=e(v,[],0)),f.addedCount++,v++;break;case s:f||(f=e(v,[],0)) ,f.removed.push(a[g]),g++}return f&&p.push(f),p},sharedPrefix:function(e,t,o){fo r(var i=0;i<o;i++)if(!this.equals(e[i],t[i]))return i;return o},sharedSuffix:fun ction(e,t,o){for(var i=e.length,n=t.length,s=0;s<o&&this.equals(e[--i],t[--n]);) s++;return s},calculateSplices:function(e,t){return this.calcSplices(e,0,e.lengt h,t,0,t.length)},equals:function(e,t){return e===t}},new t}(),Polymer.domInnerHT ML=function(){function e(e){switch(e){case"&":return"&amp;";case"<":return"&lt;" ;case">":return"&gt;";case'"':return"&quot;";case" ":return"&nbsp;"}}function t( t){return t.replace(r,e)}function o(t){return t.replace(d,e)}function i(e){for(v ar t={},o=0;o<e.length;o++)t[e[o]]=!0;return t}function n(e,i,n){switch(e.nodeTy pe){case Node.ELEMENT_NODE:for(var r,d=e.localName,h="<"+d,u=e.attributes,c=0;r= u[c];c++)h+=" "+r.name+'="'+t(r.value)+'"';return h+=">",a[d]?h:h+s(e,n)+"</"+d+ ">";case Node.TEXT_NODE:var _=e.data;return i&&l[i.localName]?_:o(_);case Node.C OMMENT_NODE:return"\x3c!--"+e.data+"--\x3e";default:throw console.error(e),new E rror("not implemented")}}function s(e,t){e instanceof HTMLTemplateElement&&(e=e. content);for(var o,i="",s=Polymer.dom(e).childNodes,r=0,d=s.length;r<d&&(o=s[r]) ;r++)i+=n(o,e,t);return i}var r=/[&\u00A0"]/g,d=/[&\u00A0<>]/g,a=i(["area","base ","br","col","command","embed","hr","img","input","keygen","link","meta","param" ,"source","track","wbr"]),l=i(["style","script","xmp","iframe","noembed","nofram es","plaintext","noscript"]);return{getInnerHTML:s}}(),function(){"use strict";v ar e=Element.prototype.insertBefore,t=Element.prototype.appendChild,o=Element.pr ototype.removeChild;Polymer.TreeApi={arrayCopyChildNodes:function(e){for(var t=[ ],o=0,i=e.firstChild;i;i=i.nextSibling)t[o++]=i;return t},arrayCopyChildren:func tion(e){for(var t=[],o=0,i=e.firstElementChild;i;i=i.nextElementSibling)t[o++]=i ;return t},arrayCopy:function(e){for(var t=e.length,o=new Array(t),i=0;i<t;i++)o [i]=e[i];return o}},Polymer.TreeApi.Logical={hasParentNode:function(e){return Bo olean(e.__dom&&e.__dom.parentNode)},hasChildNodes:function(e){return Boolean(e._ _dom&&void 0!==e.__dom.childNodes)},getChildNodes:function(e){return this.hasChi ldNodes(e)?this._getChildNodes(e):e.childNodes},_getChildNodes:function(e){if(!e .__dom.childNodes){e.__dom.childNodes=[];for(var t=e.__dom.firstChild;t;t=t.__do m.nextSibling)e.__dom.childNodes.push(t)}return e.__dom.childNodes},getParentNod e:function(e){return e.__dom&&void 0!==e.__dom.parentNode?e.__dom.parentNode:e.p arentNode},getFirstChild:function(e){return e.__dom&&void 0!==e.__dom.firstChild ?e.__dom.firstChild:e.firstChild},getLastChild:function(e){return e.__dom&&void 0!==e.__dom.lastChild?e.__dom.lastChild:e.lastChild},getNextSibling:function(e){ return e.__dom&&void 0!==e.__dom.nextSibling?e.__dom.nextSibling:e.nextSibling}, getPreviousSibling:function(e){return e.__dom&&void 0!==e.__dom.previousSibling? e.__dom.previousSibling:e.previousSibling},getFirstElementChild:function(e){retu rn e.__dom&&void 0!==e.__dom.firstChild?this._getFirstElementChild(e):e.firstEle mentChild},_getFirstElementChild:function(e){for(var t=e.__dom.firstChild;t&&t.n odeType!==Node.ELEMENT_NODE;)t=t.__dom.nextSibling;return t},getLastElementChild :function(e){return e.__dom&&void 0!==e.__dom.lastChild?this._getLastElementChil d(e):e.lastElementChild},_getLastElementChild:function(e){for(var t=e.__dom.last Child;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.previousSibling;return t},get NextElementSibling:function(e){return e.__dom&&void 0!==e.__dom.nextSibling?this ._getNextElementSibling(e):e.nextElementSibling},_getNextElementSibling:function (e){for(var t=e.__dom.nextSibling;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.n extSibling;return t},getPreviousElementSibling:function(e){return e.__dom&&void 0!==e.__dom.previousSibling?this._getPreviousElementSibling(e):e.previousElement Sibling},_getPreviousElementSibling:function(e){for(var t=e.__dom.previousSiblin g;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.previousSibling;return t},saveChi ldNodes:function(e){if(!this.hasChildNodes(e)){e.__dom=e.__dom||{},e.__dom.first Child=e.firstChild,e.__dom.lastChild=e.lastChild,e.__dom.childNodes=[];for(var t =e.firstChild;t;t=t.nextSibling)t.__dom=t.__dom||{},t.__dom.parentNode=e,e.__dom .childNodes.push(t),t.__dom.nextSibling=t.nextSibling,t.__dom.previousSibling=t. previousSibling}},recordInsertBefore:function(e,t,o){if(t.__dom.childNodes=null, e.nodeType===Node.DOCUMENT_FRAGMENT_NODE)for(var i=e.firstChild;i;i=i.nextSiblin g)this._linkNode(i,t,o);else this._linkNode(e,t,o)},_linkNode:function(e,t,o){e. __dom=e.__dom||{},t.__dom=t.__dom||{},o&&(o.__dom=o.__dom||{}),e.__dom.previousS ibling=o?o.__dom.previousSibling:t.__dom.lastChild,e.__dom.previousSibling&&(e._ _dom.previousSibling.__dom.nextSibling=e),e.__dom.nextSibling=o||null,e.__dom.ne xtSibling&&(e.__dom.nextSibling.__dom.previousSibling=e),e.__dom.parentNode=t,o? o===t.__dom.firstChild&&(t.__dom.firstChild=e):(t.__dom.lastChild=e,t.__dom.firs tChild||(t.__dom.firstChild=e)),t.__dom.childNodes=null},recordRemoveChild:funct ion(e,t){e.__dom=e.__dom||{},t.__dom=t.__dom||{},e===t.__dom.firstChild&&(t.__do m.firstChild=e.__dom.nextSibling),e===t.__dom.lastChild&&(t.__dom.lastChild=e.__ dom.previousSibling);var o=e.__dom.previousSibling,i=e.__dom.nextSibling;o&&(o._ _dom.nextSibling=i),i&&(i.__dom.previousSibling=o),e.__dom.parentNode=e.__dom.pr eviousSibling=e.__dom.nextSibling=void 0,t.__dom.childNodes=null}},Polymer.TreeA pi.Composed={getChildNodes:function(e){return Polymer.TreeApi.arrayCopyChildNode s(e)},getParentNode:function(e){return e.parentNode},clearChildNodes:function(e) {e.textContent=""},insertBefore:function(t,o,i){return e.call(t,o,i||null)},appe ndChild:function(e,o){return t.call(e,o)},removeChild:function(e,t){return o.cal l(e,t)}}}(),Polymer.DomApi=function(){"use strict";var e=Polymer.Settings,t=Poly mer.TreeApi,o=function(e){this.node=i?o.wrap(e):e},i=e.hasShadow&&!e.nativeShado w;o.wrap=window.wrap?window.wrap:function(e){return e},o.prototype={flush:functi on(){Polymer.dom.flush()},deepContains:function(e){if(this.node.contains(e))retu rn!0;for(var t=e,o=e.ownerDocument;t&&t!==o&&t!==this.node;)t=Polymer.dom(t).par entNode||t.host;return t===this.node},queryDistributedElements:function(e){for(v ar t,i=this.getEffectiveChildNodes(),n=[],s=0,r=i.length;s<r&&(t=i[s]);s++)t.nod eType===Node.ELEMENT_NODE&&o.matchesSelector.call(t,e)&&n.push(t);return n},getE ffectiveChildNodes:function(){for(var e,t=[],o=this.childNodes,i=0,r=o.length;i< r&&(e=o[i]);i++)if(e.localName===n)for(var d=s(e).getDistributedNodes(),a=0;a<d. length;a++)t.push(d[a]);else t.push(e);return t},observeNodes:function(e){if(e)r eturn this.observer||(this.observer=this.node.localName===n?new o.DistributedNod esObserver(this):new o.EffectiveNodesObserver(this)),this.observer.addListener(e )},unobserveNodes:function(e){this.observer&&this.observer.removeListener(e)},no tifyObserver:function(){this.observer&&this.observer.notify()},_query:function(e ,o,i){o=o||this.node;var n=[];return this._queryElements(t.Logical.getChildNodes (o),e,i,n),n},_queryElements:function(e,t,o,i){for(var n,s=0,r=e.length;s<r&&(n= e[s]);s++)if(n.nodeType===Node.ELEMENT_NODE&&this._queryElement(n,t,o,i))return! 0},_queryElement:function(e,o,i,n){var s=o(e);return s&&n.push(e),i&&i(s)?s:void this._queryElements(t.Logical.getChildNodes(e),o,i,n)}};var n=o.CONTENT="conten t",s=o.factory=function(e){return e=e||document,e.__domApi||(e.__domApi=new o.ct or(e)),e.__domApi};o.hasApi=function(e){return Boolean(e.__domApi)},o.ctor=o,Pol ymer.dom=function(e,t){return e instanceof Event?Polymer.EventApi.factory(e):o.f actory(e,t)};var r=Element.prototype;return o.matchesSelector=r.matches||r.match esSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.web kitMatchesSelector,o}(),function(){"use strict";var e=Polymer.Settings,t=Polymer .DomApi,o=t.factory,i=Polymer.TreeApi,n=Polymer.domInnerHTML.getInnerHTML,s=t.CO NTENT;if(!e.useShadow){var r=Element.prototype.cloneNode,d=Document.prototype.im portNode;Polymer.Base.extend(t.prototype,{_lazyDistribute:function(e){e.shadyRoo t&&e.shadyRoot._distributionClean&&(e.shadyRoot._distributionClean=!1,Polymer.do m.addDebouncer(e.debounce("_distribute",e._distributeContent)))},appendChild:fun ction(e){return this.insertBefore(e)},insertBefore:function(e,n){if(n&&i.Logical .getParentNode(n)!==this.node)throw Error("The ref_node to be inserted before is not a child of this node");if(e.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var r=i .Logical.getParentNode(e);r?(t.hasApi(r)&&o(r).notifyObserver(),this._removeNode (e)):this._removeOwnerShadyRoot(e)}if(!this._addNode(e,n)){n&&(n=n.localName===s ?this._firstComposedNode(n):n);var d=this.node._isShadyRoot?this.node.host:this. node;n?i.Composed.insertBefore(d,e,n):i.Composed.appendChild(d,e)}return this.no tifyObserver(),e},_addNode:function(e,t){var o=this.getOwnerRoot();if(o){var n=t his._maybeAddInsertionPoint(e,this.node);o._invalidInsertionPoints||(o._invalidI nsertionPoints=n),this._addNodeToHost(o.host,e)}i.Logical.hasChildNodes(this.nod e)&&i.Logical.recordInsertBefore(e,this.node,t);var s=this._maybeDistribute(e)|| this.node.shadyRoot;if(s)if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE)for(;e.firs tChild;)i.Composed.removeChild(e,e.firstChild);else{var r=i.Composed.getParentNo de(e);r&&i.Composed.removeChild(r,e)}return s},removeChild:function(e){if(i.Logi cal.getParentNode(e)!==this.node)throw Error("The node to be removed is not a ch ild of this node: "+e);if(!this._removeNode(e)){var t=this.node._isShadyRoot?thi s.node.host:this.node,o=i.Composed.getParentNode(e);t===o&&i.Composed.removeChil d(t,e)}return this.notifyObserver(),e},_removeNode:function(e){var t,n=i.Logical .hasParentNode(e)&&i.Logical.getParentNode(e),s=this._ownerShadyRootForNode(e);r eturn n&&(t=o(e)._maybeDistributeParent(),i.Logical.recordRemoveChild(e,n),s&&th is._removeDistributedChildren(s,e)&&(s._invalidInsertionPoints=!0,this._lazyDist ribute(s.host))),this._removeOwnerShadyRoot(e),s&&this._removeNodeFromHost(s.hos t,e),t},replaceChild:function(e,t){return this.insertBefore(e,t),this.removeChil d(t),e},_hasCachedOwnerRoot:function(e){return Boolean(void 0!==e._ownerShadyRoo t)},getOwnerRoot:function(){return this._ownerShadyRootForNode(this.node)},_owne rShadyRootForNode:function(e){if(e){var t=e._ownerShadyRoot;if(void 0===t){if(e. _isShadyRoot)t=e;else{var o=i.Logical.getParentNode(e);t=o?o._isShadyRoot?o:this ._ownerShadyRootForNode(o):null}(t||document.documentElement.contains(e))&&(e._o wnerShadyRoot=t)}return t}},_maybeDistribute:function(e){var t=e.nodeType===Node .DOCUMENT_FRAGMENT_NODE&&!e.__noContent&&o(e).querySelector(s),n=t&&i.Logical.ge tParentNode(t).nodeType!==Node.DOCUMENT_FRAGMENT_NODE,r=t||e.localName===s;if(r) {var d=this.getOwnerRoot();d&&this._lazyDistribute(d.host)}var a=this._nodeNeeds Distribution(this.node);return a&&this._lazyDistribute(this.node),a||r&&!n},_may beAddInsertionPoint:function(e,t){var n;if(e.nodeType!==Node.DOCUMENT_FRAGMENT_N ODE||e.__noContent)e.localName===s&&(i.Logical.saveChildNodes(t),i.Logical.saveC hildNodes(e),n=!0);else for(var r,d,a,l=o(e).querySelectorAll(s),h=0;h<l.length& &(r=l[h]);h++)d=i.Logical.getParentNode(r),d===e&&(d=t),a=this._maybeAddInsertio nPoint(r,d),n=n||a;return n},_updateInsertionPoints:function(e){for(var t,n=e.sh adyRoot._insertionPoints=o(e.shadyRoot).querySelectorAll(s),r=0;r<n.length;r++)t =n[r],i.Logical.saveChildNodes(t),i.Logical.saveChildNodes(i.Logical.getParentNo de(t))},_nodeNeedsDistribution:function(e){return e&&e.shadyRoot&&t.hasInsertion Point(e.shadyRoot)},_addNodeToHost:function(e,t){e._elementAdd&&e._elementAdd(t) },_removeNodeFromHost:function(e,t){e._elementRemove&&e._elementRemove(t)},_remo veDistributedChildren:function(e,t){for(var n,s=e._insertionPoints,r=0;r<s.lengt h;r++){var d=s[r];if(this._contains(t,d))for(var a=o(d).getDistributedNodes(),l= 0;l<a.length;l++){n=!0;var h=a[l],u=i.Composed.getParentNode(h);u&&i.Composed.re moveChild(u,h)}}return n},_contains:function(e,t){for(;t;){if(t==e)return!0;t=i. Logical.getParentNode(t)}},_removeOwnerShadyRoot:function(e){if(this._hasCachedO wnerRoot(e))for(var t,o=i.Logical.getChildNodes(e),n=0,s=o.length;n<s&&(t=o[n]); n++)this._removeOwnerShadyRoot(t);e._ownerShadyRoot=void 0},_firstComposedNode:f unction(e){for(var t,i,n=o(e).getDistributedNodes(),s=0,r=n.length;s<r&&(t=n[s]) ;s++)if(i=o(t).getDestinationInsertionPoints(),i[i.length-1]===e)return t},query Selector:function(e){var o=this._query(function(o){return t.matchesSelector.call (o,e)},this.node,function(e){return Boolean(e)})[0];return o||null},querySelecto rAll:function(e){return this._query(function(o){return t.matchesSelector.call(o, e)},this.node)},getDestinationInsertionPoints:function(){return this.node._desti nationInsertionPoints||[]},getDistributedNodes:function(){return this.node._dist ributedNodes||[]},_clear:function(){for(;this.childNodes.length;)this.removeChil d(this.childNodes[0])},setAttribute:function(e,t){this.node.setAttribute(e,t),th is._maybeDistributeParent()},removeAttribute:function(e){this.node.removeAttribu te(e),this._maybeDistributeParent()},_maybeDistributeParent:function(){if(this._ nodeNeedsDistribution(this.parentNode))return this._lazyDistribute(this.parentNo de),!0},cloneNode:function(e){var t=r.call(this.node,!1);if(e)for(var i,n=this.c hildNodes,s=o(t),d=0;d<n.length;d++)i=o(n[d]).cloneNode(!0),s.appendChild(i);ret urn t},importNode:function(e,t){var n=this.node instanceof Document?this.node:th is.node.ownerDocument,s=d.call(n,e,!1);if(t)for(var r,a=i.Logical.getChildNodes( e),l=o(s),h=0;h<a.length;h++)r=o(n).importNode(a[h],!0),l.appendChild(r);return s},_getComposedInnerHTML:function(){return n(this.node,!0)}}),Object.definePrope rties(t.prototype,{activeElement:{get:function(){var e=document.activeElement;if (!e)return null;var t=!!this.node._isShadyRoot;if(this.node!==document){if(!t)re turn null;if(this.node.host===e||!this.node.host.contains(e))return null}for(var i=o(e).getOwnerRoot();i&&i!==this.node;)e=i.host,i=o(e).getOwnerRoot();return t his.node===document?i?null:e:i===this.node?e:null},configurable:!0},childNodes:{ get:function(){var e=i.Logical.getChildNodes(this.node);return Array.isArray(e)? e:i.arrayCopyChildNodes(this.node)},configurable:!0},children:{get:function(){re turn i.Logical.hasChildNodes(this.node)?Array.prototype.filter.call(this.childNo des,function(e){return e.nodeType===Node.ELEMENT_NODE}):i.arrayCopyChildren(this .node)},configurable:!0},parentNode:{get:function(){return i.Logical.getParentNo de(this.node)},configurable:!0},firstChild:{get:function(){return i.Logical.getF irstChild(this.node)},configurable:!0},lastChild:{get:function(){return i.Logica l.getLastChild(this.node)},configurable:!0},nextSibling:{get:function(){return i .Logical.getNextSibling(this.node)},configurable:!0},previousSibling:{get:functi on(){return i.Logical.getPreviousSibling(this.node)},configurable:!0},firstEleme ntChild:{get:function(){return i.Logical.getFirstElementChild(this.node)},config urable:!0},lastElementChild:{get:function(){return i.Logical.getLastElementChild (this.node)},configurable:!0},nextElementSibling:{get:function(){return i.Logica l.getNextElementSibling(this.node)},configurable:!0},previousElementSibling:{get :function(){return i.Logical.getPreviousElementSibling(this.node)},configurable: !0},textContent:{get:function(){var e=this.node.nodeType;if(e===Node.TEXT_NODE|| e===Node.COMMENT_NODE)return this.node.textContent;for(var t,o=[],i=0,n=this.chi ldNodes;t=n[i];i++)t.nodeType!==Node.COMMENT_NODE&&o.push(t.textContent);return o.join("")},set:function(e){var t=this.node.nodeType;t===Node.TEXT_NODE||t===Nod e.COMMENT_NODE?this.node.textContent=e:(this._clear(),e&&this.appendChild(docume nt.createTextNode(e)))},configurable:!0},innerHTML:{get:function(){var e=this.no de.nodeType;return e===Node.TEXT_NODE||e===Node.COMMENT_NODE?null:n(this.node)}, set:function(e){var t=this.node.nodeType;if(t!==Node.TEXT_NODE||t!==Node.COMMENT _NODE){this._clear();var o=document.createElement("div");o.innerHTML=e;for(var n =i.arrayCopyChildNodes(o),s=0;s<n.length;s++)this.appendChild(n[s])}},configurab le:!0}}),t.hasInsertionPoint=function(e){return Boolean(e&&e._insertionPoints.le ngth)}}}(),function(){"use strict";var e=Polymer.Settings,t=Polymer.TreeApi,o=Po lymer.DomApi;if(e.useShadow){Polymer.Base.extend(o.prototype,{querySelectorAll:f unction(e){return t.arrayCopy(this.node.querySelectorAll(e))},getOwnerRoot:funct ion(){for(var e=this.node;e;){if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.hos t)return e;e=e.parentNode}},importNode:function(e,t){var o=this.node instanceof Document?this.node:this.node.ownerDocument;return o.importNode(e,t)},getDestinat ionInsertionPoints:function(){var e=this.node.getDestinationInsertionPoints&&thi s.node.getDestinationInsertionPoints();return e?t.arrayCopy(e):[]},getDistribute dNodes:function(){var e=this.node.getDistributedNodes&&this.node.getDistributedN odes();return e?t.arrayCopy(e):[]}}),Object.defineProperties(o.prototype,{active Element:{get:function(){var e=o.wrap(this.node),t=e.activeElement;return e.conta ins(t)?t:null},configurable:!0},childNodes:{get:function(){return t.arrayCopyChi ldNodes(this.node)},configurable:!0},children:{get:function(){return t.arrayCopy Children(this.node)},configurable:!0},textContent:{get:function(){return this.no de.textContent},set:function(e){return this.node.textContent=e},configurable:!0} ,innerHTML:{get:function(){return this.node.innerHTML},set:function(e){return th is.node.innerHTML=e},configurable:!0}});var i=function(e){for(var t=0;t<e.length ;t++)n(e[t])},n=function(e){o.prototype[e]=function(){return this.node[e].apply( this.node,arguments)}};i(["cloneNode","appendChild","insertBefore","removeChild" ,"replaceChild","setAttribute","removeAttribute","querySelector"]);var s=functio n(e){for(var t=0;t<e.length;t++)r(e[t])},r=function(e){Object.defineProperty(o.p rototype,e,{get:function(){return this.node[e]},configurable:!0})};s(["parentNod e","firstChild","lastChild","nextSibling","previousSibling","firstElementChild", "lastElementChild","nextElementSibling","previousElementSibling"])}}(),Polymer.B ase.extend(Polymer.dom,{_flushGuard:0,_FLUSH_MAX:100,_needsTakeRecords:!Polymer. Settings.useNativeCustomElements,_debouncers:[],_staticFlushList:[],_finishDebou ncer:null,flush:function(){for(this._flushGuard=0,this._prepareFlush();this._deb ouncers.length&&this._flushGuard<this._FLUSH_MAX;){for(;this._debouncers.length; )this._debouncers.shift().complete();this._finishDebouncer&&this._finishDebounce r.complete(),this._prepareFlush(),this._flushGuard++}this._flushGuard>=this._FLU SH_MAX&&console.warn("Polymer.dom.flush aborted. Flush may not be complete.")},_ prepareFlush:function(){this._needsTakeRecords&&CustomElements.takeRecords();for (var e=0;e<this._staticFlushList.length;e++)this._staticFlushList[e]()},addStati cFlush:function(e){this._staticFlushList.push(e)},removeStaticFlush:function(e){ var t=this._staticFlushList.indexOf(e);t>=0&&this._staticFlushList.splice(t,1)}, addDebouncer:function(e){this._debouncers.push(e),this._finishDebouncer=Polymer. Debounce(this._finishDebouncer,this._finishFlush)},_finishFlush:function(){Polym er.dom._debouncers=[]}}),Polymer.EventApi=function(){"use strict";var e=Polymer. DomApi.ctor,t=Polymer.Settings;e.Event=function(e){this.event=e},t.useShadow?e.E vent.prototype={get rootTarget(){return this.event.path[0]},get localTarget(){re turn this.event.target},get path(){var e=this.event.path;return Array.isArray(e) ||(e=Array.prototype.slice.call(e)),e}}:e.Event.prototype={get rootTarget(){retu rn this.event.target},get localTarget(){for(var e=this.event.currentTarget,t=e&& Polymer.dom(e).getOwnerRoot(),o=this.path,i=0;i<o.length;i++)if(Polymer.dom(o[i] ).getOwnerRoot()===t)return o[i]},get path(){if(!this.event._path){for(var e=[], t=this.rootTarget;t;){e.push(t);var o=Polymer.dom(t).getDestinationInsertionPoin ts();if(o.length){for(var i=0;i<o.length-1;i++)e.push(o[i]);t=o[o.length-1]}else t=Polymer.dom(t).parentNode||t.host}e.push(window),this.event._path=e}return th is.event._path}};var o=function(t){return t.__eventApi||(t.__eventApi=new e.Even t(t)),t.__eventApi};return{factory:o}}(),function(){"use strict";var e=Polymer.D omApi.ctor,t=Polymer.Settings.useShadow;Object.defineProperty(e.prototype,"class List",{get:function(){return this._classList||(this._classList=new e.ClassList(t his)),this._classList},configurable:!0}),e.ClassList=function(e){this.domApi=e,t his.node=e.node},e.ClassList.prototype={add:function(){this.node.classList.add.a pply(this.node.classList,arguments),this._distributeParent()},remove:function(){ this.node.classList.remove.apply(this.node.classList,arguments),this._distribute Parent()},toggle:function(){this.node.classList.toggle.apply(this.node.classList ,arguments),this._distributeParent()},_distributeParent:function(){t||this.domAp i._maybeDistributeParent()},contains:function(){return this.node.classList.conta ins.apply(this.node.classList,arguments)}}}(),function(){"use strict";var e=Poly mer.DomApi.ctor,t=Polymer.Settings;if(e.EffectiveNodesObserver=function(e){this. domApi=e,this.node=this.domApi.node,this._listeners=[]},e.EffectiveNodesObserver .prototype={addListener:function(e){this._isSetup||(this._setup(),this._isSetup= !0);var t={fn:e,_nodes:[]};return this._listeners.push(t),this._scheduleNotify() ,t},removeListener:function(e){var t=this._listeners.indexOf(e);t>=0&&(this._lis teners.splice(t,1),e._nodes=[]),this._hasListeners()||(this._cleanup(),this._isS etup=!1)},_setup:function(){this._observeContentElements(this.domApi.childNodes) },_cleanup:function(){this._unobserveContentElements(this.domApi.childNodes)},_h asListeners:function(){return Boolean(this._listeners.length)},_scheduleNotify:f unction(){this._debouncer&&this._debouncer.stop(),this._debouncer=Polymer.Deboun ce(this._debouncer,this._notify),this._debouncer.context=this,Polymer.dom.addDeb ouncer(this._debouncer)},notify:function(){this._hasListeners()&&this._scheduleN otify()},_notify:function(){this._beforeCallListeners(),this._callListeners()},_ beforeCallListeners:function(){this._updateContentElements()},_updateContentElem ents:function(){this._observeContentElements(this.domApi.childNodes)},_observeCo ntentElements:function(e){for(var t,o=0;o<e.length&&(t=e[o]);o++)this._isContent (t)&&(t.__observeNodesMap=t.__observeNodesMap||new WeakMap,t.__observeNodesMap.h as(this)||t.__observeNodesMap.set(this,this._observeContent(t)))},_observeConten t:function(e){var t=this,o=Polymer.dom(e).observeNodes(function(){t._scheduleNot ify()});return o._avoidChangeCalculation=!0,o},_unobserveContentElements:functio n(e){for(var t,o,i=0;i<e.length&&(t=e[i]);i++)this._isContent(t)&&(o=t.__observe NodesMap.get(this),o&&(Polymer.dom(t).unobserveNodes(o),t.__observeNodesMap.dele te(this)))},_isContent:function(e){return"content"===e.localName},_callListeners :function(){for(var e,t=this._listeners,o=this._getEffectiveNodes(),i=0;i<t.leng th&&(e=t[i]);i++){var n=this._generateListenerInfo(e,o);(n||e._alwaysNotify)&&th is._callListener(e,n)}},_getEffectiveNodes:function(){return this.domApi.getEffe ctiveChildNodes()},_generateListenerInfo:function(e,t){if(e._avoidChangeCalculat ion)return!0;for(var o,i=e._nodes,n={target:this.node,addedNodes:[],removedNodes :[]},s=Polymer.ArraySplice.calculateSplices(t,i),r=0;r<s.length&&(o=s[r]);r++)fo r(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)n.removedNodes.push(d);for( r=0,o;r<s.length&&(o=s[r]);r++)for(a=o.index;a<o.index+o.addedCount;a++)n.addedN odes.push(t[a]);return e._nodes=t,n.addedNodes.length||n.removedNodes.length?n:v oid 0},_callListener:function(e,t){return e.fn.call(this.node,t)},enableShadowAt tributeTracking:function(){}},t.useShadow){var o=e.EffectiveNodesObserver.protot ype._setup,i=e.EffectiveNodesObserver.prototype._cleanup;Polymer.Base.extend(e.E ffectiveNodesObserver.prototype,{_setup:function(){if(!this._observer){var e=thi s;this._mutationHandler=function(t){t&&t.length&&e._scheduleNotify()},this._obse rver=new MutationObserver(this._mutationHandler),this._boundFlush=function(){e._ flush()},Polymer.dom.addStaticFlush(this._boundFlush),this._observer.observe(thi s.node,{childList:!0})}o.call(this)},_cleanup:function(){this._observer.disconne ct(),this._observer=null,this._mutationHandler=null,Polymer.dom.removeStaticFlus h(this._boundFlush),i.call(this)},_flush:function(){this._observer&&this._mutati onHandler(this._observer.takeRecords())},enableShadowAttributeTracking:function( ){if(this._observer){this._makeContentListenersAlwaysNotify(),this._observer.dis connect(),this._observer.observe(this.node,{childList:!0,attributes:!0,subtree:! 0});var e=this.domApi.getOwnerRoot(),t=e&&e.host;t&&Polymer.dom(t).observer&&Pol ymer.dom(t).observer.enableShadowAttributeTracking()}},_makeContentListenersAlwa ysNotify:function(){for(var e,t=0;t<this._listeners.length;t++)e=this._listeners [t],e._alwaysNotify=e._isContentListener}})}}(),function(){"use strict";var e=Po lymer.DomApi.ctor,t=Polymer.Settings;e.DistributedNodesObserver=function(t){e.Ef fectiveNodesObserver.call(this,t)},e.DistributedNodesObserver.prototype=Object.c reate(e.EffectiveNodesObserver.prototype),Polymer.Base.extend(e.DistributedNodes Observer.prototype,{_setup:function(){},_cleanup:function(){},_beforeCallListene rs:function(){},_getEffectiveNodes:function(){return this.domApi.getDistributedN odes()}}),t.useShadow&&Polymer.Base.extend(e.DistributedNodesObserver.prototype, {_setup:function(){if(!this._observer){var e=this.domApi.getOwnerRoot(),t=e&&e.h ost;if(t){var o=this;this._observer=Polymer.dom(t).observeNodes(function(){o._sc heduleNotify()}),this._observer._isContentListener=!0,this._hasAttrSelect()&&Pol ymer.dom(t).observer.enableShadowAttributeTracking()}}},_hasAttrSelect:function( ){var e=this.node.getAttribute("select");return e&&e.match(/[[.]+/)},_cleanup:fu nction(){var e=this.domApi.getOwnerRoot(),t=e&&e.host;t&&Polymer.dom(t).unobserv eNodes(this._observer),this._observer=null}})}(),function(){function e(e,t){t._d istributedNodes.push(e);var o=e._destinationInsertionPoints;o?o.push(t):e._desti nationInsertionPoints=[t]}function t(e){var t=e._distributedNodes;if(t)for(var o =0;o<t.length;o++){var i=t[o]._destinationInsertionPoints;i&&i.splice(i.indexOf( e)+1,i.length)}}function o(e,t){var o=u.Logical.getParentNode(e);o&&o.shadyRoot& &h.hasInsertionPoint(o.shadyRoot)&&o.shadyRoot._distributionClean&&(o.shadyRoot. _distributionClean=!1,t.shadyRoot._dirtyRoots.push(o))}function i(e,t){var o=t._ destinationInsertionPoints;return o&&o[o.length-1]===e}function n(e){return"cont ent"==e.localName}function s(e){for(;e&&r(e);)e=e.domHost;return e}function r(e) {for(var t,o=u.Logical.getChildNodes(e),i=0;i<o.length;i++)if(t=o[i],t.localName &&"content"===t.localName)return e.domHost}function d(e){for(var t,o=0;o<e._inse rtionPoints.length;o++)t=e._insertionPoints[o],h.hasApi(t)&&Polymer.dom(t).notif yObserver()}function a(e){h.hasApi(e)&&Polymer.dom(e).notifyObserver()}function l(e){if(c&&e)for(var t=0;t<e.length;t++)CustomElements.upgrade(e[t])}var h=Polym er.DomApi,u=Polymer.TreeApi;Polymer.Base._addFeature({_prepShady:function(){this ._useContent=this._useContent||Boolean(this._template)},_setupShady:function(){t his.shadyRoot=null,this.__domApi||(this.__domApi=null),this.__dom||(this.__dom=n ull),this._ownerShadyRoot||(this._ownerShadyRoot=void 0)},_poolContent:function( ){this._useContent&&u.Logical.saveChildNodes(this)},_setupRoot:function(){this._ useContent&&(this._createLocalRoot(),this.dataHost||l(u.Logical.getChildNodes(th is)))},_createLocalRoot:function(){this.shadyRoot=this.root,this.shadyRoot._dist ributionClean=!1,this.shadyRoot._hasDistributed=!1,this.shadyRoot._isShadyRoot=! 0,this.shadyRoot._dirtyRoots=[];var e=this.shadyRoot._insertionPoints=!this._not es||this._notes._hasContent?this.shadyRoot.querySelectorAll("content"):[];u.Logi cal.saveChildNodes(this.shadyRoot);for(var t,o=0;o<e.length;o++)t=e[o],u.Logical .saveChildNodes(t),u.Logical.saveChildNodes(t.parentNode);this.shadyRoot.host=th is},get domHost(){var e=Polymer.dom(this).getOwnerRoot();return e&&e.host},distr ibuteContent:function(e){if(this.shadyRoot){this.shadyRoot._invalidInsertionPoin ts=this.shadyRoot._invalidInsertionPoints||e;var t=s(this);Polymer.dom(this)._la zyDistribute(t)}},_distributeContent:function(){this._useContent&&!this.shadyRoo t._distributionClean&&(this.shadyRoot._invalidInsertionPoints&&(Polymer.dom(this )._updateInsertionPoints(this),this.shadyRoot._invalidInsertionPoints=!1),this._ beginDistribute(),this._distributeDirtyRoots(),this._finishDistribute())},_begin Distribute:function(){this._useContent&&h.hasInsertionPoint(this.shadyRoot)&&(th is._resetDistribution(),this._distributePool(this.shadyRoot,this._collectPool()) );
2 },_distributeDirtyRoots:function(){for(var e,t=this.shadyRoot._dirtyRoots,o=0,i= t.length;o<i&&(e=t[o]);o++)e._distributeContent();this.shadyRoot._dirtyRoots=[]} ,_finishDistribute:function(){if(this._useContent){if(this.shadyRoot._distributi onClean=!0,h.hasInsertionPoint(this.shadyRoot))this._composeTree(),d(this.shadyR oot);else if(this.shadyRoot._hasDistributed){var e=this._composeNode(this);this. _updateChildNodes(this,e)}else u.Composed.clearChildNodes(this),this.appendChild (this.shadyRoot);this.shadyRoot._hasDistributed||a(this),this.shadyRoot._hasDist ributed=!0}},elementMatches:function(e,t){return t=t||this,h.matchesSelector.cal l(t,e)},_resetDistribution:function(){for(var e=u.Logical.getChildNodes(this),o= 0;o<e.length;o++){var i=e[o];i._destinationInsertionPoints&&(i._destinationInser tionPoints=void 0),n(i)&&t(i)}for(var s=this.shadyRoot,r=s._insertionPoints,d=0; d<r.length;d++)r[d]._distributedNodes=[]},_collectPool:function(){for(var e=[],t =u.Logical.getChildNodes(this),o=0;o<t.length;o++){var i=t[o];n(i)?e.push.apply( e,i._distributedNodes):e.push(i)}return e},_distributePool:function(e,t){for(var i,n=e._insertionPoints,s=0,r=n.length;s<r&&(i=n[s]);s++)this._distributeInserti onPoint(i,t),o(i,this)},_distributeInsertionPoint:function(t,o){for(var i,n=!1,s =0,r=o.length;s<r;s++)i=o[s],i&&this._matchesContentSelect(i,t)&&(e(i,t),o[s]=vo id 0,n=!0);if(!n)for(var d=u.Logical.getChildNodes(t),a=0;a<d.length;a++)e(d[a], t)},_composeTree:function(){this._updateChildNodes(this,this._composeNode(this)) ;for(var e,t,o=this.shadyRoot._insertionPoints,i=0,n=o.length;i<n&&(e=o[i]);i++) t=u.Logical.getParentNode(e),t._useContent||t===this||t===this.shadyRoot||this._ updateChildNodes(t,this._composeNode(t))},_composeNode:function(e){for(var t=[], o=u.Logical.getChildNodes(e.shadyRoot||e),s=0;s<o.length;s++){var r=o[s];if(n(r) )for(var d=r._distributedNodes,a=0;a<d.length;a++){var l=d[a];i(r,l)&&t.push(l)} else t.push(r)}return t},_updateChildNodes:function(e,t){for(var o,i=u.Composed. getChildNodes(e),n=Polymer.ArraySplice.calculateSplices(t,i),s=0,r=0;s<n.length& &(o=n[s]);s++){for(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)u.Composed .getParentNode(d)===e&&u.Composed.removeChild(e,d),i.splice(o.index+r,1);r-=o.ad dedCount}for(var o,l,s=0;s<n.length&&(o=n[s]);s++)for(l=i[o.index],a=o.index,d;a <o.index+o.addedCount;a++)d=t[a],u.Composed.insertBefore(e,d,l),i.splice(a,0,d)} ,_matchesContentSelect:function(e,t){var o=t.getAttribute("select");if(!o)return !0;if(o=o.trim(),!o)return!0;if(!(e instanceof Element))return!1;var i=/^(:not\( )?[*.#[a-zA-Z_|]/;return!!i.test(o)&&this.elementMatches(o,e)},_elementAdd:funct ion(){},_elementRemove:function(){}});var c=window.CustomElements&&!CustomElemen ts.useNative}(),Polymer.Settings.useShadow&&Polymer.Base._addFeature({_poolConte nt:function(){},_beginDistribute:function(){},distributeContent:function(){},_di stributeContent:function(){},_finishDistribute:function(){},_createLocalRoot:fun ction(){this.createShadowRoot(),this.shadowRoot.appendChild(this.root),this.root =this.shadowRoot}}),Polymer.Async={_currVal:0,_lastVal:0,_callbacks:[],_twiddleC ontent:0,_twiddle:document.createTextNode(""),run:function(e,t){return t>0?~setT imeout(e,t):(this._twiddle.textContent=this._twiddleContent++,this._callbacks.pu sh(e),this._currVal++)},cancel:function(e){if(e<0)clearTimeout(~e);else{var t=e- this._lastVal;if(t>=0){if(!this._callbacks[t])throw"invalid async handle: "+e;th is._callbacks[t]=null}}},_atEndOfMicrotask:function(){for(var e=this._callbacks. length,t=0;t<e;t++){var o=this._callbacks[t];if(o)try{o()}catch(e){throw t++,thi s._callbacks.splice(0,t),this._lastVal+=t,this._twiddle.textContent=this._twiddl eContent++,e}}this._callbacks.splice(0,e),this._lastVal+=e}},new window.Mutation Observer(function(){Polymer.Async._atEndOfMicrotask()}).observe(Polymer.Async._t widdle,{characterData:!0}),Polymer.Debounce=function(){function e(e,t,i){return e?e.stop():e=new o(this),e.go(t,i),e}var t=Polymer.Async,o=function(e){this.cont ext=e;var t=this;this.boundComplete=function(){t.complete()}};return o.prototype ={go:function(e,o){var i;this.finish=function(){t.cancel(i)},i=t.run(this.boundC omplete,o),this.callback=e},stop:function(){this.finish&&(this.finish(),this.fin ish=null,this.callback=null)},complete:function(){if(this.finish){var e=this.cal lback;this.stop(),e.call(this.context)}}},e}(),Polymer.Base._addFeature({_setupD ebouncers:function(){this._debouncers={}},debounce:function(e,t,o){return this._ debouncers[e]=Polymer.Debounce.call(this,this._debouncers[e],t,o)},isDebouncerAc tive:function(e){var t=this._debouncers[e];return!(!t||!t.finish)},flushDebounce r:function(e){var t=this._debouncers[e];t&&t.complete()},cancelDebouncer:functio n(e){var t=this._debouncers[e];t&&t.stop()}}),Polymer.DomModule=document.createE lement("dom-module"),Polymer.Base._addFeature({_registerFeatures:function(){this ._prepIs(),this._prepBehaviors(),this._prepConstructor(),this._prepTemplate(),th is._prepShady(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHos tAttributes(e.hostAttributes)},_initFeatures:function(){this._registerHost(),thi s._template&&(this._poolContent(),this._beginHosting(),this._stampTemplate(),thi s._endHosting()),this._marshalHostAttributes(),this._setupDebouncers(),this._mar shalBehaviors(),this._tryReady()},_marshalBehavior:function(e){}})</script> <scr ipt>Polymer.nar=[],Polymer.Annotations={parseAnnotations:function(e){var t=[],n= e._content||e.content;return this._parseNodeAnnotations(n,t,e.hasAttribute("stri p-whitespace")),t},_parseNodeAnnotations:function(e,t,n){return e.nodeType===Nod e.TEXT_NODE?this._parseTextNodeAnnotation(e,t):this._parseElementAnnotations(e,t ,n)},_bindingRegex:function(){var e="(?:[a-zA-Z_$][\\w.:$\\-*]*)",t="(?:[-+]?[0- 9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?)",n="(?:'(?:[^'\\\\]|\\\\.)*')",r='(?:"(?:[^"\ \\\]|\\\\.)*")',s="(?:"+n+"|"+r+")",i="(?:"+e+"|"+t+"|"+s+"\\s*)",o="(?:"+i+"(?: ,\\s*"+i+")*)",a="(?:\\(\\s*(?:"+o+"?)\\)\\s*)",l="("+e+"\\s*"+a+"?)",c="(\\[\\[ |{{)\\s*",h="(?:]]|}})",u="(?:(!)\\s*)?",f=c+u+l+h;return new RegExp(f,"g")}(),_ parseBindings:function(e){for(var t,n=this._bindingRegex,r=[],s=0;null!==(t=n.ex ec(e));){t.index>s&&r.push({literal:e.slice(s,t.index)});var i,o,a,l=t[1][0],c=B oolean(t[2]),h=t[3].trim();"{"==l&&(a=h.indexOf("::"))>0&&(o=h.substring(a+2),h= h.substring(0,a),i=!0),r.push({compoundIndex:r.length,value:h,mode:l,negate:c,ev ent:o,customEvent:i}),s=n.lastIndex}if(s&&s<e.length){var u=e.substring(s);u&&r. push({literal:u})}if(r.length)return r},_literalFromParts:function(e){for(var t= "",n=0;n<e.length;n++){var r=e[n].literal;t+=r||""}return t},_parseTextNodeAnnot ation:function(e,t){var n=this._parseBindings(e.textContent);if(n){e.textContent =this._literalFromParts(n)||" ";var r={bindings:[{kind:"text",name:"textContent" ,parts:n,isCompound:1!==n.length}]};return t.push(r),r}},_parseElementAnnotation s:function(e,t,n){var r={bindings:[],events:[]};return"content"===e.localName&&( t._hasContent=!0),this._parseChildNodesAnnotations(e,r,t,n),e.attributes&&(this. _parseNodeAttributeAnnotations(e,r,t),this.prepElement&&this.prepElement(e)),(r. bindings.length||r.events.length||r.id)&&t.push(r),r},_parseChildNodesAnnotation s:function(e,t,n,r){if(e.firstChild)for(var s=e.firstChild,i=0;s;){var o=s.nextS ibling;if("template"!==s.localName||s.hasAttribute("preserve-content")||this._pa rseTemplate(s,i,n,t),"slot"==s.localName&&(s=this._replaceSlotWithContent(s)),s. nodeType===Node.TEXT_NODE){for(var a=o;a&&a.nodeType===Node.TEXT_NODE;)s.textCon tent+=a.textContent,o=a.nextSibling,e.removeChild(a),a=o;r&&!s.textContent.trim( )&&(e.removeChild(s),i--)}if(s.parentNode){var l=this._parseNodeAnnotations(s,n, r);l&&(l.parent=t,l.index=i)}s=o,i++}},_replaceSlotWithContent:function(e){for(v ar t=e.ownerDocument.createElement("content");e.firstChild;)t.appendChild(e.firs tChild);for(var n=e.attributes,r=0;r<n.length;r++){var s=n[r];t.setAttribute(s.n ame,s.value)}var i=e.getAttribute("name"),o=i?"[slot='"+i+"']":":not([slot])";re turn t.setAttribute("select",o),e.parentNode.replaceChild(t,e),t},_parseTemplate :function(e,t,n,r){var s=document.createDocumentFragment();s._notes=this.parseAn notations(e),s.appendChild(e.content),n.push({bindings:Polymer.nar,events:Polyme r.nar,templateContent:s,parent:r,index:t})},_parseNodeAttributeAnnotations:funct ion(e,t){for(var n,r=Array.prototype.slice.call(e.attributes),s=r.length-1;n=r[s ];s--){var i,o=n.name,a=n.value;"on-"===o.slice(0,3)?(e.removeAttribute(o),t.eve nts.push({name:o.slice(3),value:a})):(i=this._parseNodeAttributeAnnotation(e,o,a ))?t.bindings.push(i):"id"===o&&(t.id=a)}},_parseNodeAttributeAnnotation:functio n(e,t,n){var r=this._parseBindings(n);if(r){var s=t,i="property";"$"==t[t.length -1]&&(t=t.slice(0,-1),i="attribute");var o=this._literalFromParts(r);o&&"attribu te"==i&&e.setAttribute(t,o),"input"===e.localName&&"value"===s&&e.setAttribute(s ,""),e.removeAttribute(s);var a=Polymer.CaseMap.dashToCamelCase(t);return"proper ty"===i&&(t=a),{kind:i,name:t,propertyName:a,parts:r,literal:o,isCompound:1!==r. length}}},findAnnotatedNode:function(e,t){var n=t.parent&&Polymer.Annotations.fi ndAnnotatedNode(e,t.parent);if(!n)return e;for(var r=n.firstChild,s=0;r;r=r.next Sibling)if(t.index===s++)return r}},function(){function e(e,t){return e.replace( a,function(e,r,s,i){return r+"'"+n(s.replace(/["']/g,""),t)+"'"+i})}function t(t ,r){for(var s in l)for(var i,o,a,c=l[s],u=0,f=c.length;u<f&&(i=c[u]);u++)"*"!==s &&t.localName!==s||(o=t.attributes[i],a=o&&o.value,a&&a.search(h)<0&&(o.value="s tyle"===i?e(a,r):n(a,r)))}function n(e,t){if(e&&c.test(e))return e;var n=s(t);re turn n.href=e,n.href||e}function r(e,t){return i||(i=document.implementation.cre ateHTMLDocument("temp"),o=i.createElement("base"),i.head.appendChild(o)),o.href= t,n(e,i)}function s(e){return e.__urlResolver||(e.__urlResolver=e.createElement( "a"))}var i,o,a=/(url\()([^)]*)(\))/g,l={"*":["href","src","style","url"],form:[ "action"]},c=/(^\/)|(^#)|(^[\w-\d]*:)/,h=/\{\{|\[\[/;Polymer.ResolveUrl={resolve Css:e,resolveAttrs:t,resolveUrl:r}}(),Polymer.Path={root:function(e){var t=e.ind exOf(".");return t===-1?e:e.slice(0,t)},isDeep:function(e){return e.indexOf(".") !==-1},isAncestor:function(e,t){return 0===e.indexOf(t+".")},isDescendant:functi on(e,t){return 0===t.indexOf(e+".")},translate:function(e,t,n){return t+n.slice( e.length)},matches:function(e,t,n){return e===n||this.isAncestor(e,n)||Boolean(t )&&this.isDescendant(e,n)}},Polymer.Base._addFeature({_prepAnnotations:function( ){if(this._template){var e=this;Polymer.Annotations.prepElement=function(t){e._p repElement(t)},this._template._content&&this._template._content._notes?this._not es=this._template._content._notes:(this._notes=Polymer.Annotations.parseAnnotati ons(this._template),this._processAnnotations(this._notes)),Polymer.Annotations.p repElement=null}else this._notes=[]},_processAnnotations:function(e){for(var t=0 ;t<e.length;t++){for(var n=e[t],r=0;r<n.bindings.length;r++)for(var s=n.bindings [r],i=0;i<s.parts.length;i++){var o=s.parts[i];if(!o.literal){var a=this._parseM ethod(o.value);a?o.signature=a:o.model=Polymer.Path.root(o.value)}}if(n.template Content){this._processAnnotations(n.templateContent._notes);var l=n.templateCont ent._parentProps=this._discoverTemplateParentProps(n.templateContent._notes),c=[ ];for(var h in l){var u="_parent_"+h;c.push({index:n.index,kind:"property",name: u,propertyName:u,parts:[{mode:"{",model:h,value:h}]})}n.bindings=n.bindings.conc at(c)}}},_discoverTemplateParentProps:function(e){for(var t,n={},r=0;r<e.length& &(t=e[r]);r++){for(var s,i=0,o=t.bindings;i<o.length&&(s=o[i]);i++)for(var a,l=0 ,c=s.parts;l<c.length&&(a=c[l]);l++)if(a.signature){for(var h=a.signature.args,u =0;u<h.length;u++){var f=h[u].model;f&&(n[f]=!0)}a.signature.dynamicFn&&(n[a.sig nature.method]=!0)}else a.model&&(n[a.model]=!0);if(t.templateContent){var p=t.t emplateContent._parentProps;Polymer.Base.mixin(n,p)}}return n},_prepElement:func tion(e){Polymer.ResolveUrl.resolveAttrs(e,this._template.ownerDocument)},_findAn notatedNode:Polymer.Annotations.findAnnotatedNode,_marshalAnnotationReferences:f unction(){this._template&&(this._marshalIdNodes(),this._marshalAnnotatedNodes(), this._marshalAnnotatedListeners())},_configureAnnotationReferences:function(){fo r(var e=this._notes,t=this._nodes,n=0;n<e.length;n++){var r=e[n],s=t[n];this._co nfigureTemplateContent(r,s),this._configureCompoundBindings(r,s)}},_configureTem plateContent:function(e,t){e.templateContent&&(t._content=e.templateContent)},_c onfigureCompoundBindings:function(e,t){for(var n=e.bindings,r=0;r<n.length;r++){ var s=n[r];if(s.isCompound){for(var i=t.__compoundStorage__||(t.__compoundStorag e__={}),o=s.parts,a=new Array(o.length),l=0;l<o.length;l++)a[l]=o[l].literal;var c=s.name;i[c]=a,s.literal&&"property"==s.kind&&(t._configValue?t._configValue(c ,s.literal):t[c]=s.literal)}}},_marshalIdNodes:function(){this.$={};for(var e,t= 0,n=this._notes.length;t<n&&(e=this._notes[t]);t++)e.id&&(this.$[e.id]=this._fin dAnnotatedNode(this.root,e))},_marshalAnnotatedNodes:function(){if(this._notes&& this._notes.length){for(var e=new Array(this._notes.length),t=0;t<this._notes.le ngth;t++)e[t]=this._findAnnotatedNode(this.root,this._notes[t]);this._nodes=e}}, _marshalAnnotatedListeners:function(){for(var e,t=0,n=this._notes.length;t<n&&(e =this._notes[t]);t++)if(e.events&&e.events.length)for(var r,s=this._findAnnotate dNode(this.root,e),i=0,o=e.events;i<o.length&&(r=o[i]);i++)this.listen(s,r.name, r.value)}}),Polymer.Base._addFeature({listeners:{},_listenListeners:function(e){ var t,n,r;for(r in e)r.indexOf(".")<0?(t=this,n=r):(n=r.split("."),t=this.$[n[0] ],n=n[1]),this.listen(t,n,e[r])},listen:function(e,t,n){var r=this._recallEventH andler(this,t,e,n);r||(r=this._createEventHandler(e,t,n)),r._listening||(this._l isten(e,t,r),r._listening=!0)},_boundListenerKey:function(e,t){return e+":"+t},_ recordEventHandler:function(e,t,n,r,s){var i=e.__boundListeners;i||(i=e.__boundL isteners=new WeakMap);var o=i.get(n);o||(o={},i.set(n,o));var a=this._boundListe nerKey(t,r);o[a]=s},_recallEventHandler:function(e,t,n,r){var s=e.__boundListene rs;if(s){var i=s.get(n);if(i){var o=this._boundListenerKey(t,r);return i[o]}}},_ createEventHandler:function(e,t,n){var r=this,s=function(e){r[n]?r[n](e,e.detail ):r._warn(r._logf("_createEventHandler","listener method `"+n+"` not defined"))} ;return s._listening=!1,this._recordEventHandler(r,t,e,n,s),s},unlisten:function (e,t,n){var r=this._recallEventHandler(this,t,e,n);r&&(this._unlisten(e,t,r),r._ listening=!1)},_listen:function(e,t,n){e.addEventListener(t,n)},_unlisten:functi on(e,t,n){e.removeEventListener(t,n)}}),function(){"use strict";function e(e){fo r(var t,n=g?["click"]:m,r=0;r<n.length;r++)t=n[r],e?document.addEventListener(t, P,!0):document.removeEventListener(t,P,!0)}function t(){S.mouse.mouseIgnoreJob|| e(!0);var t=function(){e(),S.mouse.target=null,S.mouse.mouseIgnoreJob=null};S.mo use.mouseIgnoreJob=Polymer.Debounce(S.mouse.mouseIgnoreJob,t,d)}function n(e){va r t=e.type;if(m.indexOf(t)===-1)return!1;if("mousemove"===t){var n=void 0===e.bu ttons?1:e.buttons;return e instanceof window.MouseEvent&&!v&&(n=y[e.which]||0),B oolean(1&n)}var r=void 0===e.button?0:e.button;return 0===r}function r(e){if("cl ick"===e.type){if(0===e.detail)return!0;var t=C.findOriginalTarget(e),n=t.getBou ndingClientRect(),r=e.pageX,s=e.pageY;return!(r>=n.left&&r<=n.right&&s>=n.top&&s <=n.bottom)}return!1}function s(e){for(var t,n=Polymer.dom(e).path,r="auto",s=0; s<n.length;s++)if(t=n[s],t[u]){r=t[u];break}return r}function i(e,t,n){e.movefn= t,e.upfn=n,document.addEventListener("mousemove",t),document.addEventListener("m ouseup",n)}function o(e){document.removeEventListener("mousemove",e.movefn),docu ment.removeEventListener("mouseup",e.upfn),e.movefn=null,e.upfn=null}var a=Polym er.DomApi.wrap,l="string"==typeof document.head.style.touchAction,c="__polymerGe stures",h="__polymerGesturesHandled",u="__polymerGesturesTouchAction",f=25,p=5,_ =2,d=2500,m=["mousedown","mousemove","mouseup","click"],y=[0,1,4,2],v=function() {try{return 1===new MouseEvent("test",{buttons:1}).buttons}catch(e){return!1}}() ,g=navigator.userAgent.match(/iP(?:[oa]d|hone)|Android/),P=function(e){var t=e.s ourceCapabilities;if((!t||t.firesTouchEvents)&&(e[h]={skip:!0},"click"===e.type) ){for(var n=Polymer.dom(e).path,r=0;r<n.length;r++)if(n[r]===S.mouse.target)retu rn;e.preventDefault(),e.stopPropagation()}},S={mouse:{target:null,mouseIgnoreJob :null},touch:{x:0,y:0,id:-1,scrollDecided:!1}},C={gestures:{},recognizers:[],dee pTargetFind:function(e,t){for(var n=document.elementFromPoint(e,t),r=n;r&&r.shad owRoot;)r=r.shadowRoot.elementFromPoint(e,t),r&&(n=r);return n},findOriginalTarg et:function(e){return e.path?e.path[0]:e.target},handleNative:function(e){var n, r=e.type,s=a(e.currentTarget),i=s[c];if(i){var o=i[r];if(o){if(!e[h]&&(e[h]={}," touch"===r.slice(0,5))){var u=e.changedTouches[0];if("touchstart"===r&&1===e.tou ches.length&&(S.touch.id=u.identifier),S.touch.id!==u.identifier)return;l||"touc hstart"!==r&&"touchmove"!==r||C.handleTouchAction(e),"touchend"===r&&(S.mouse.ta rget=Polymer.dom(e).rootTarget,t())}if(n=e[h],!n.skip){for(var f,p=C.recognizers ,_=0;_<p.length;_++)f=p[_],o[f.name]&&!n[f.name]&&f.flow&&f.flow.start.indexOf(e .type)>-1&&f.reset&&f.reset();for(_=0,f;_<p.length;_++)f=p[_],o[f.name]&&!n[f.na me]&&(n[f.name]=!0,f[r](e))}}}},handleTouchAction:function(e){var t=e.changedTou ches[0],n=e.type;if("touchstart"===n)S.touch.x=t.clientX,S.touch.y=t.clientY,S.t ouch.scrollDecided=!1;else if("touchmove"===n){if(S.touch.scrollDecided)return;S .touch.scrollDecided=!0;var r=s(e),i=!1,o=Math.abs(S.touch.x-t.clientX),a=Math.a bs(S.touch.y-t.clientY);e.cancelable&&("none"===r?i=!0:"pan-x"===r?i=a>o:"pan-y" ===r&&(i=o>a)),i?e.preventDefault():C.prevent("track")}},add:function(e,t,n){e=a (e);var r=this.gestures[t],s=r.deps,i=r.name,o=e[c];o||(e[c]=o={});for(var l,h,u =0;u<s.length;u++)l=s[u],g&&m.indexOf(l)>-1&&"click"!==l||(h=o[l],h||(o[l]=h={_c ount:0}),0===h._count&&e.addEventListener(l,this.handleNative),h[i]=(h[i]||0)+1, h._count=(h._count||0)+1);e.addEventListener(t,n),r.touchAction&&this.setTouchAc tion(e,r.touchAction)},remove:function(e,t,n){e=a(e);var r=this.gestures[t],s=r. deps,i=r.name,o=e[c];if(o)for(var l,h,u=0;u<s.length;u++)l=s[u],h=o[l],h&&h[i]&& (h[i]=(h[i]||1)-1,h._count=(h._count||1)-1,0===h._count&&e.removeEventListener(l ,this.handleNative));e.removeEventListener(t,n)},register:function(e){this.recog nizers.push(e);for(var t=0;t<e.emits.length;t++)this.gestures[e.emits[t]]=e},fin dRecognizerByEvent:function(e){for(var t,n=0;n<this.recognizers.length;n++){t=th is.recognizers[n];for(var r,s=0;s<t.emits.length;s++)if(r=t.emits[s],r===e)retur n t}return null},setTouchAction:function(e,t){l&&(e.style.touchAction=t),e[u]=t} ,fire:function(e,t,n){var r=Polymer.Base.fire(t,n,{node:e,bubbles:!0,cancelable: !0});if(r.defaultPrevented){var s=n.preventer||n.sourceEvent;s&&s.preventDefault &&s.preventDefault()}},prevent:function(e){var t=this.findRecognizerByEvent(e);t .info&&(t.info.prevent=!0)},resetMouseCanceller:function(){S.mouse.mouseIgnoreJo b&&S.mouse.mouseIgnoreJob.complete()}};C.register({name:"downup",deps:["mousedow n","touchstart","touchend"],flow:{start:["mousedown","touchstart"],end:["mouseup ","touchend"]},emits:["down","up"],info:{movefn:null,upfn:null},reset:function() {o(this.info)},mousedown:function(e){if(n(e)){var t=C.findOriginalTarget(e),r=th is,s=function(e){n(e)||(r.fire("up",t,e),o(r.info))},a=function(e){n(e)&&r.fire( "up",t,e),o(r.info)};i(this.info,s,a),this.fire("down",t,e)}},touchstart:functio n(e){this.fire("down",C.findOriginalTarget(e),e.changedTouches[0],e)},touchend:f unction(e){this.fire("up",C.findOriginalTarget(e),e.changedTouches[0],e)},fire:f unction(e,t,n,r){C.fire(t,e,{x:n.clientX,y:n.clientY,sourceEvent:n,preventer:r,p revent:function(e){return C.prevent(e)}})}}),C.register({name:"track",touchActio n:"none",deps:["mousedown","touchstart","touchmove","touchend"],flow:{start:["mo usedown","touchstart"],end:["mouseup","touchend"]},emits:["track"],info:{x:0,y:0 ,state:"start",started:!1,moves:[],addMove:function(e){this.moves.length>_&&this .moves.shift(),this.moves.push(e)},movefn:null,upfn:null,prevent:!1},reset:funct ion(){this.info.state="start",this.info.started=!1,this.info.moves=[],this.info. x=0,this.info.y=0,this.info.prevent=!1,o(this.info)},hasMovedEnough:function(e,t ){if(this.info.prevent)return!1;if(this.info.started)return!0;var n=Math.abs(thi s.info.x-e),r=Math.abs(this.info.y-t);return n>=p||r>=p},mousedown:function(e){i f(n(e)){var t=C.findOriginalTarget(e),r=this,s=function(e){var s=e.clientX,i=e.c lientY;r.hasMovedEnough(s,i)&&(r.info.state=r.info.started?"mouseup"===e.type?"e nd":"track":"start","start"===r.info.state&&C.prevent("tap"),r.info.addMove({x:s ,y:i}),n(e)||(r.info.state="end",o(r.info)),r.fire(t,e),r.info.started=!0)},a=fu nction(e){r.info.started&&s(e),o(r.info)};i(this.info,s,a),this.info.x=e.clientX ,this.info.y=e.clientY}},touchstart:function(e){var t=e.changedTouches[0];this.i nfo.x=t.clientX,this.info.y=t.clientY},touchmove:function(e){var t=C.findOrigina lTarget(e),n=e.changedTouches[0],r=n.clientX,s=n.clientY;this.hasMovedEnough(r,s )&&("start"===this.info.state&&C.prevent("tap"),this.info.addMove({x:r,y:s}),thi s.fire(t,n),this.info.state="track",this.info.started=!0)},touchend:function(e){ var t=C.findOriginalTarget(e),n=e.changedTouches[0];this.info.started&&(this.inf o.state="end",this.info.addMove({x:n.clientX,y:n.clientY}),this.fire(t,n,e))},fi re:function(e,t,n){var r,s=this.info.moves[this.info.moves.length-2],i=this.info .moves[this.info.moves.length-1],o=i.x-this.info.x,a=i.y-this.info.y,l=0;return s&&(r=i.x-s.x,l=i.y-s.y),C.fire(e,"track",{state:this.info.state,x:t.clientX,y:t .clientY,dx:o,dy:a,ddx:r,ddy:l,sourceEvent:t,preventer:n,hover:function(){return C.deepTargetFind(t.clientX,t.clientY)}})}}),C.register({name:"tap",deps:["mouse down","click","touchstart","touchend"],flow:{start:["mousedown","touchstart"],en d:["click","touchend"]},emits:["tap"],info:{x:NaN,y:NaN,prevent:!1},reset:functi on(){this.info.x=NaN,this.info.y=NaN,this.info.prevent=!1},save:function(e){this .info.x=e.clientX,this.info.y=e.clientY},mousedown:function(e){n(e)&&this.save(e )},click:function(e){n(e)&&this.forward(e)},touchstart:function(e){this.save(e.c hangedTouches[0],e)},touchend:function(e){this.forward(e.changedTouches[0],e)},f orward:function(e,t){var n=Math.abs(e.clientX-this.info.x),s=Math.abs(e.clientY- this.info.y),i=C.findOriginalTarget(e);(isNaN(n)||isNaN(s)||n<=f&&s<=f||r(e))&&( this.info.prevent||C.fire(i,"tap",{x:e.clientX,y:e.clientY,sourceEvent:e,prevent er:t}))}});var E={x:"pan-x",y:"pan-y",none:"none",all:"auto"};Polymer.Base._addF eature({_setupGestures:function(){this.__polymerGestures=null},_listen:function( e,t,n){C.gestures[t]?C.add(e,t,n):e.addEventListener(t,n)},_unlisten:function(e, t,n){C.gestures[t]?C.remove(e,t,n):e.removeEventListener(t,n)},setScrollDirectio n:function(e,t){t=t||this,C.setTouchAction(t,E[e]||"auto")}}),Polymer.Gestures=C }(),function(){"use strict";if(Polymer.Base._addFeature({$$:function(e){return P olymer.dom(this.root).querySelector(e)},toggleClass:function(e,t,n){n=n||this,1= =arguments.length&&(t=!n.classList.contains(e)),t?Polymer.dom(n).classList.add(e ):Polymer.dom(n).classList.remove(e)},toggleAttribute:function(e,t,n){n=n||this, 1==arguments.length&&(t=!n.hasAttribute(e)),t?Polymer.dom(n).setAttribute(e,""): Polymer.dom(n).removeAttribute(e)},classFollows:function(e,t,n){n&&Polymer.dom(n ).classList.remove(e),t&&Polymer.dom(t).classList.add(e)},attributeFollows:funct ion(e,t,n){n&&Polymer.dom(n).removeAttribute(e),t&&Polymer.dom(t).setAttribute(e ,"")},getEffectiveChildNodes:function(){return Polymer.dom(this).getEffectiveChi ldNodes()},getEffectiveChildren:function(){var e=Polymer.dom(this).getEffectiveC hildNodes();return e.filter(function(e){return e.nodeType===Node.ELEMENT_NODE})} ,getEffectiveTextContent:function(){for(var e,t=this.getEffectiveChildNodes(),n= [],r=0;e=t[r];r++)e.nodeType!==Node.COMMENT_NODE&&n.push(Polymer.dom(e).textCont ent);return n.join("")},queryEffectiveChildren:function(e){var t=Polymer.dom(thi s).queryDistributedElements(e);return t&&t[0]},queryAllEffectiveChildren:functio n(e){return Polymer.dom(this).queryDistributedElements(e)},getContentChildNodes: function(e){var t=Polymer.dom(this.root).querySelector(e||"content");return t?Po lymer.dom(t).getDistributedNodes():[]},getContentChildren:function(e){return thi s.getContentChildNodes(e).filter(function(e){return e.nodeType===Node.ELEMENT_NO DE})},fire:function(e,t,n){n=n||Polymer.nob;var r=n.node||this;t=null===t||void 0===t?{}:t;var s=void 0===n.bubbles||n.bubbles,i=Boolean(n.cancelable),o=n._useC ache,a=this._getEvent(e,s,i,o);return a.detail=t,o&&(this.__eventCache[e]=null), r.dispatchEvent(a),o&&(this.__eventCache[e]=a),a},__eventCache:{},_getEvent:func tion(e,t,n,r){var s=r&&this.__eventCache[e];return s&&s.bubbles==t&&s.cancelable ==n||(s=new Event(e,{bubbles:Boolean(t),cancelable:n})),s},async:function(e,t){v ar n=this;return Polymer.Async.run(function(){e.call(n)},t)},cancelAsync:functio n(e){Polymer.Async.cancel(e)},arrayDelete:function(e,t){var n;if(Array.isArray(e )){if(n=e.indexOf(t),n>=0)return e.splice(n,1)}else{var r=this._get(e);if(n=r.in dexOf(t),n>=0)return this.splice(e,n,1)}},transform:function(e,t){t=t||this,t.st yle.webkitTransform=e,t.style.transform=e},translate3d:function(e,t,n,r){r=r||th is,this.transform("translate3d("+e+","+t+","+n+")",r)},importHref:function(e,t,n ,r){var s=document.createElement("link");s.rel="import",s.href=e;var i=Polymer.B ase.importHref.imported=Polymer.Base.importHref.imported||{},o=i[s.href],a=o||s, l=this;if(t){var c=function(e){return e.target.__firedLoad=!0,e.target.removeEve ntListener("load",c),t.call(l,e)};a.addEventListener("load",c)}if(n){var h=funct ion(e){return e.target.__firedError=!0,e.target.removeEventListener("error",h),n .call(l,e)};a.addEventListener("error",h)}return o?(o.__firedLoad&&o.dispatchEve nt(new Event("load")),o.__firedError&&o.dispatchEvent(new Event("error"))):(i[s. href]=s,r=Boolean(r),r&&s.setAttribute("async",""),document.head.appendChild(s)) ,a},create:function(e,t){var n=document.createElement(e);if(t)for(var r in t)n[r ]=t[r];return n},isLightDescendant:function(e){return this!==e&&this.contains(e) &&Polymer.dom(this).getOwnerRoot()===Polymer.dom(e).getOwnerRoot()},isLocalDesce ndant:function(e){return this.root===Polymer.dom(e).getOwnerRoot()}}),!Polymer.S ettings.useNativeCustomElements){var e=Polymer.Base.importHref;Polymer.Base.impo rtHref=function(t,n,r,s){CustomElements.ready=!1;var i=function(e){if(CustomElem ents.upgradeDocumentTree(document),CustomElements.ready=!0,n)return n.call(this, e)};return e.call(this,t,i,r,s)}}}(),Polymer.Bind={prepareModel:function(e){Poly mer.Base.mixin(e,this._modelApi)},_modelApi:{_notifyChange:function(e,t,n){n=voi d 0===n?this[e]:n,t=t||Polymer.CaseMap.camelToDashCase(e)+"-changed",this.fire(t ,{value:n},{bubbles:!1,cancelable:!1,_useCache:!0})},_propertySetter:function(e, t,n,r){var s=this.__data__[e];return s===t||s!==s&&t!==t||(this.__data__[e]=t,"o bject"==typeof t&&this._clearPath(e),this._propertyChanged&&this._propertyChange d(e,t,s),n&&this._effectEffects(e,t,n,s,r)),s},__setProperty:function(e,t,n,r){r =r||this;var s=r._propertyEffects&&r._propertyEffects[e];s?r._propertySetter(e,t ,s,n):r[e]!==t&&(r[e]=t)},_effectEffects:function(e,t,n,r,s){for(var i,o=0,a=n.l ength;o<a&&(i=n[o]);o++)i.fn.call(this,e,this[e],i.effect,r,s)},_clearPath:funct ion(e){for(var t in this.__data__)Polymer.Path.isDescendant(e,t)&&(this.__data__ [t]=void 0)}},ensurePropertyEffects:function(e,t){e._propertyEffects||(e._proper tyEffects={});var n=e._propertyEffects[t];return n||(n=e._propertyEffects[t]=[]) ,n},addPropertyEffect:function(e,t,n,r){var s=this.ensurePropertyEffects(e,t),i= {kind:n,effect:r,fn:Polymer.Bind["_"+n+"Effect"]};return s.push(i),i},createBind ings:function(e){var t=e._propertyEffects;if(t)for(var n in t){var r=t[n];r.sort (this._sortPropertyEffects),this._createAccessors(e,n,r)}},_sortPropertyEffects: function(){var e={compute:0,annotation:1,annotatedComputation:2,reflect:3,notify :4,observer:5,complexObserver:6,function:7};return function(t,n){return e[t.kind ]-e[n.kind]}}(),_createAccessors:function(e,t,n){var r={get:function(){return th is.__data__[t]}},s=function(e){this._propertySetter(t,e,n)},i=e.getPropertyInfo& &e.getPropertyInfo(t);i&&i.readOnly?i.computed||(e["_set"+this.upper(t)]=s):r.se t=s,Object.defineProperty(e,t,r)},upper:function(e){return e[0].toUpperCase()+e. substring(1)},_addAnnotatedListener:function(e,t,n,r,s,i){e._bindListeners||(e._ bindListeners=[]);var o=this._notedListenerFactory(n,r,Polymer.Path.isDeep(r),i) ,a=s||Polymer.CaseMap.camelToDashCase(n)+"-changed";e._bindListeners.push({index :t,property:n,path:r,changedFn:o,event:a})},_isEventBogus:function(e,t){return e .path&&e.path[0]!==t},_notedListenerFactory:function(e,t,n,r){return function(s, i,o){if(o){var a=Polymer.Path.translate(e,t,o);this._notifyPath(a,i)}else i=s[e] ,r&&(i=!i),n?this.__data__[t]!=i&&this.set(t,i):this[t]=i}},prepareInstance:func tion(e){e.__data__=Object.create(null)},setupBindListeners:function(e){for(var t ,n=e._bindListeners,r=0,s=n.length;r<s&&(t=n[r]);r++){var i=e._nodes[t.index];th is._addNotifyListener(i,e,t.event,t.changedFn)}},_addNotifyListener:function(e,t ,n,r){e.addEventListener(n,function(e){return t._notifyListener(r,e)})}},Polymer .Base.extend(Polymer.Bind,{_shouldAddListener:function(e){return e.name&&"attrib ute"!=e.kind&&"text"!=e.kind&&!e.isCompound&&"{"===e.parts[0].mode},_annotationE ffect:function(e,t,n){e!=n.value&&(t=this._get(n.value),this.__data__[n.value]=t ),this._applyEffectValue(n,t)},_reflectEffect:function(e,t,n){this.reflectProper tyToAttribute(e,n.attribute,t)},_notifyEffect:function(e,t,n,r,s){s||this._notif yChange(e,n.event,t)},_functionEffect:function(e,t,n,r,s){n.call(this,e,t,r,s)}, _observerEffect:function(e,t,n,r){var s=this[n.method];s?s.call(this,t,r):this._ warn(this._logf("_observerEffect","observer method `"+n.method+"` not defined")) },_complexObserverEffect:function(e,t,n){var r=this[n.method];if(r){var s=Polyme r.Bind._marshalArgs(this.__data__,n,e,t);s&&r.apply(this,s)}else n.dynamicFn||th is._warn(this._logf("_complexObserverEffect","observer method `"+n.method+"` not defined"))},_computeEffect:function(e,t,n){var r=this[n.method];if(r){var s=Pol ymer.Bind._marshalArgs(this.__data__,n,e,t);if(s){var i=r.apply(this,s);this.__s etProperty(n.name,i)}}else n.dynamicFn||this._warn(this._logf("_computeEffect"," compute method `"+n.method+"` not defined"))},_annotatedComputationEffect:functi on(e,t,n){var r=this._rootDataHost||this,s=r[n.method];if(s){var i=Polymer.Bind. _marshalArgs(this.__data__,n,e,t);if(i){var o=s.apply(r,i);this._applyEffectValu e(n,o)}}else n.dynamicFn||r._warn(r._logf("_annotatedComputationEffect","compute method `"+n.method+"` not defined"))},_marshalArgs:function(e,t,n,r){for(var s= [],i=t.args,o=i.length>1||t.dynamicFn,a=0,l=i.length;a<l;a++){var c,h=i[a],u=h.n ame;if(h.literal?c=h.value:n===u?c=r:(c=e[u],void 0===c&&h.structured&&(c=Polyme r.Base._get(u,e))),o&&void 0===c)return;if(h.wildcard){var f=Polymer.Path.isAnce stor(n,u);s[a]={path:f?n:u,value:f?r:c,base:c}}else s[a]=c}return s}}),Polymer.B ase._addFeature({_addPropertyEffect:function(e,t,n){var r=Polymer.Bind.addProper tyEffect(this,e,t,n);r.pathFn=this["_"+r.kind+"PathEffect"]},_prepEffects:functi on(){Polymer.Bind.prepareModel(this),this._addAnnotationEffects(this._notes)},_p repBindings:function(){Polymer.Bind.createBindings(this)},_addPropertyEffects:fu nction(e){if(e)for(var t in e){var n=e[t];if(n.observer&&this._addObserverEffect (t,n.observer),n.computed&&(n.readOnly=!0,this._addComputedEffect(t,n.computed)) ,n.notify&&this._addPropertyEffect(t,"notify",{event:Polymer.CaseMap.camelToDash Case(t)+"-changed"}),n.reflectToAttribute){var r=Polymer.CaseMap.camelToDashCase (t);"-"===r[0]?this._warn(this._logf("_addPropertyEffects","Property "+t+" canno t be reflected to attribute "+r+' because "-" is not a valid starting attribute name. Use a lowercase first letter for the property instead.')):this._addPropert yEffect(t,"reflect",{attribute:r})}n.readOnly&&Polymer.Bind.ensurePropertyEffect s(this,t)}},_addComputedEffect:function(e,t){for(var n,r=this._parseMethod(t),s= r.dynamicFn,i=0;i<r.args.length&&(n=r.args[i]);i++)this._addPropertyEffect(n.mod el,"compute",{method:r.method,args:r.args,trigger:n,name:e,dynamicFn:s});s&&this ._addPropertyEffect(r.method,"compute",{method:r.method,args:r.args,trigger:null ,name:e,dynamicFn:s})},_addObserverEffect:function(e,t){this._addPropertyEffect( e,"observer",{method:t,property:e})},_addComplexObserverEffects:function(e){if(e )for(var t,n=0;n<e.length&&(t=e[n]);n++)this._addComplexObserverEffect(t)},_addC omplexObserverEffect:function(e){var t=this._parseMethod(e);if(!t)throw new Erro r("Malformed observer expression '"+e+"'");for(var n,r=t.dynamicFn,s=0;s<t.args. length&&(n=t.args[s]);s++)this._addPropertyEffect(n.model,"complexObserver",{met hod:t.method,args:t.args,trigger:n,dynamicFn:r});r&&this._addPropertyEffect(t.me thod,"complexObserver",{method:t.method,args:t.args,trigger:null,dynamicFn:r})}, _addAnnotationEffects:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++)for(var r,s=t.bindings,i=0;i<s.length&&(r=s[i]);i++)this._addAnnotationEffect(r,n)},_ad dAnnotationEffect:function(e,t){Polymer.Bind._shouldAddListener(e)&&Polymer.Bind ._addAnnotatedListener(this,t,e.name,e.parts[0].value,e.parts[0].event,e.parts[0 ].negate);for(var n=0;n<e.parts.length;n++){var r=e.parts[n];r.signature?this._a ddAnnotatedComputationEffect(e,r,t):r.literal||("attribute"===e.kind&&"-"===e.na me[0]?this._warn(this._logf("_addAnnotationEffect","Cannot set attribute "+e.nam e+' because "-" is not a valid attribute starting character')):this._addProperty Effect(r.model,"annotation",{kind:e.kind,index:t,name:e.name,propertyName:e.prop ertyName,value:r.value,isCompound:e.isCompound,compoundIndex:r.compoundIndex,eve nt:r.event,customEvent:r.customEvent,negate:r.negate}))}},_addAnnotatedComputati onEffect:function(e,t,n){var r=t.signature;if(r.static)this.__addAnnotatedComput ationEffect("__static__",n,e,t,null);else{for(var s,i=0;i<r.args.length&&(s=r.ar gs[i]);i++)s.literal||this.__addAnnotatedComputationEffect(s.model,n,e,t,s);r.dy namicFn&&this.__addAnnotatedComputationEffect(r.method,n,e,t,null)}},__addAnnota tedComputationEffect:function(e,t,n,r,s){this._addPropertyEffect(e,"annotatedCom putation",{index:t,isCompound:n.isCompound,compoundIndex:r.compoundIndex,kind:n. kind,name:n.name,negate:r.negate,method:r.signature.method,args:r.signature.args ,trigger:s,dynamicFn:r.signature.dynamicFn})},_parseMethod:function(e){var t=e.m atch(/([^\s]+?)\(([\s\S]*)\)/);if(t){var n={method:t[1],static:!0};if(this.getPr opertyInfo(n.method)!==Polymer.nob&&(n.static=!1,n.dynamicFn=!0),t[2].trim()){va r r=t[2].replace(/\\,/g,"&comma;").split(",");return this._parseArgs(r,n)}return n.args=Polymer.nar,n}},_parseArgs:function(e,t){return t.args=e.map(function(e) {var n=this._parseArg(e);return n.literal||(t.static=!1),n},this),t},_parseArg:f unction(e){var t=e.trim().replace(/&comma;/g,",").replace(/\\(.)/g,"$1"),n={name :t},r=t[0];switch("-"===r&&(r=t[1]),r>="0"&&r<="9"&&(r="#"),r){case"'":case'"':n .value=t.slice(1,-1),n.literal=!0;break;case"#":n.value=Number(t),n.literal=!0}r eturn n.literal||(n.model=Polymer.Path.root(t),n.structured=Polymer.Path.isDeep( t),n.structured&&(n.wildcard=".*"==t.slice(-2),n.wildcard&&(n.name=t.slice(0,-2) ))),n},_marshalInstanceEffects:function(){Polymer.Bind.prepareInstance(this),thi s._bindListeners&&Polymer.Bind.setupBindListeners(this)},_applyEffectValue:funct ion(e,t){var n=this._nodes[e.index],r=e.name;if(t=this._computeFinalAnnotationVa lue(n,r,t,e),"attribute"==e.kind)this.serializeValueToAttribute(t,r,n);else{var s=n._propertyInfo&&n._propertyInfo[r];if(s&&s.readOnly)return;this.__setProperty (r,t,!1,n)}},_computeFinalAnnotationValue:function(e,t,n,r){if(r.negate&&(n=!n), r.isCompound){var s=e.__compoundStorage__[t];s[r.compoundIndex]=n,n=s.join("")}r eturn"attribute"!==r.kind&&("className"===t&&(n=this._scopeElementClass(e,n)),(" textContent"===t||"input"==e.localName&&"value"==t)&&(n=void 0==n?"":n)),n},_exe cuteStaticEffects:function(){this._propertyEffects&&this._propertyEffects.__stat ic__&&this._effectEffects("__static__",null,this._propertyEffects.__static__)}}) ,function(){var e=Polymer.Settings.usePolyfillProto;Polymer.Base._addFeature({_s etupConfigure:function(e){if(this._config={},this._handlers=[],this._aboveConfig =null,e)for(var t in e)void 0!==e[t]&&(this._config[t]=e[t])},_marshalAttributes :function(){this._takeAttributesToModel(this._config)},_attributeChangedImpl:fun ction(e){var t=this._clientsReadied?this:this._config;this._setAttributeToProper ty(t,e)},_configValue:function(e,t){var n=this._propertyInfo[e];n&&n.readOnly||( this._config[e]=t)},_beforeClientsReady:function(){this._configure()},_configure :function(){this._configureAnnotationReferences(),this._configureInstancePropert ies(),this._aboveConfig=this.mixin({},this._config);for(var e={},t=0;t<this.beha viors.length;t++)this._configureProperties(this.behaviors[t].properties,e);this. _configureProperties(this.properties,e),this.mixin(e,this._aboveConfig),this._co nfig=e,this._clients&&this._clients.length&&this._distributeConfig(this._config) },_configureInstanceProperties:function(){for(var t in this._propertyEffects)!e& &this.hasOwnProperty(t)&&(this._configValue(t,this[t]), 2 },_distributeDirtyRoots:function(){for(var e,t=this.shadyRoot._dirtyRoots,o=0,i= t.length;o<i&&(e=t[o]);o++)e._distributeContent();this.shadyRoot._dirtyRoots=[]} ,_finishDistribute:function(){if(this._useContent){if(this.shadyRoot._distributi onClean=!0,h.hasInsertionPoint(this.shadyRoot))this._composeTree(),d(this.shadyR oot);else if(this.shadyRoot._hasDistributed){var e=this._composeNode(this);this. _updateChildNodes(this,e)}else u.Composed.clearChildNodes(this),this.appendChild (this.shadyRoot);this.shadyRoot._hasDistributed||a(this),this.shadyRoot._hasDist ributed=!0}},elementMatches:function(e,t){return t=t||this,h.matchesSelector.cal l(t,e)},_resetDistribution:function(){for(var e=u.Logical.getChildNodes(this),o= 0;o<e.length;o++){var i=e[o];i._destinationInsertionPoints&&(i._destinationInser tionPoints=void 0),n(i)&&t(i)}for(var s=this.shadyRoot,r=s._insertionPoints,d=0; d<r.length;d++)r[d]._distributedNodes=[]},_collectPool:function(){for(var e=[],t =u.Logical.getChildNodes(this),o=0;o<t.length;o++){var i=t[o];n(i)?e.push.apply( e,i._distributedNodes):e.push(i)}return e},_distributePool:function(e,t){for(var i,n=e._insertionPoints,s=0,r=n.length;s<r&&(i=n[s]);s++)this._distributeInserti onPoint(i,t),o(i,this)},_distributeInsertionPoint:function(t,o){for(var i,n=!1,s =0,r=o.length;s<r;s++)i=o[s],i&&this._matchesContentSelect(i,t)&&(e(i,t),o[s]=vo id 0,n=!0);if(!n)for(var d=u.Logical.getChildNodes(t),a=0;a<d.length;a++)e(d[a], t)},_composeTree:function(){this._updateChildNodes(this,this._composeNode(this)) ;for(var e,t,o=this.shadyRoot._insertionPoints,i=0,n=o.length;i<n&&(e=o[i]);i++) t=u.Logical.getParentNode(e),t._useContent||t===this||t===this.shadyRoot||this._ updateChildNodes(t,this._composeNode(t))},_composeNode:function(e){for(var t=[], o=u.Logical.getChildNodes(e.shadyRoot||e),s=0;s<o.length;s++){var r=o[s];if(n(r) )for(var d=r._distributedNodes,a=0;a<d.length;a++){var l=d[a];i(r,l)&&t.push(l)} else t.push(r)}return t},_updateChildNodes:function(e,t){for(var o,i=u.Composed. getChildNodes(e),n=Polymer.ArraySplice.calculateSplices(t,i),s=0,r=0;s<n.length& &(o=n[s]);s++){for(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)u.Composed .getParentNode(d)===e&&u.Composed.removeChild(e,d),i.splice(o.index+r,1);r-=o.ad dedCount}for(var o,l,s=0;s<n.length&&(o=n[s]);s++)for(l=i[o.index],a=o.index,d;a <o.index+o.addedCount;a++)d=t[a],u.Composed.insertBefore(e,d,l),i.splice(a,0,d)} ,_matchesContentSelect:function(e,t){var o=t.getAttribute("select");if(!o)return !0;if(o=o.trim(),!o)return!0;if(!(e instanceof Element))return!1;var i=/^(:not\( )?[*.#[a-zA-Z_|]/;return!!i.test(o)&&this.elementMatches(o,e)},_elementAdd:funct ion(){},_elementRemove:function(){}});var c=window.CustomElements&&!CustomElemen ts.useNative}(),Polymer.Settings.useShadow&&Polymer.Base._addFeature({_poolConte nt:function(){},_beginDistribute:function(){},distributeContent:function(){},_di stributeContent:function(){},_finishDistribute:function(){},_createLocalRoot:fun ction(){this.createShadowRoot(),this.shadowRoot.appendChild(this.root),this.root =this.shadowRoot}}),Polymer.Async={_currVal:0,_lastVal:0,_callbacks:[],_twiddleC ontent:0,_twiddle:document.createTextNode(""),run:function(e,t){return t>0?~setT imeout(e,t):(this._twiddle.textContent=this._twiddleContent++,this._callbacks.pu sh(e),this._currVal++)},cancel:function(e){if(e<0)clearTimeout(~e);else{var t=e- this._lastVal;if(t>=0){if(!this._callbacks[t])throw"invalid async handle: "+e;th is._callbacks[t]=null}}},_atEndOfMicrotask:function(){for(var e=this._callbacks. length,t=0;t<e;t++){var o=this._callbacks[t];if(o)try{o()}catch(e){throw t++,thi s._callbacks.splice(0,t),this._lastVal+=t,this._twiddle.textContent=this._twiddl eContent++,e}}this._callbacks.splice(0,e),this._lastVal+=e}},new window.Mutation Observer(function(){Polymer.Async._atEndOfMicrotask()}).observe(Polymer.Async._t widdle,{characterData:!0}),Polymer.Debounce=function(){function e(e,t,i){return e?e.stop():e=new o(this),e.go(t,i),e}var t=Polymer.Async,o=function(e){this.cont ext=e;var t=this;this.boundComplete=function(){t.complete()}};return o.prototype ={go:function(e,o){var i;this.finish=function(){t.cancel(i)},i=t.run(this.boundC omplete,o),this.callback=e},stop:function(){this.finish&&(this.finish(),this.fin ish=null,this.callback=null)},complete:function(){if(this.finish){var e=this.cal lback;this.stop(),e.call(this.context)}}},e}(),Polymer.Base._addFeature({_setupD ebouncers:function(){this._debouncers={}},debounce:function(e,t,o){return this._ debouncers[e]=Polymer.Debounce.call(this,this._debouncers[e],t,o)},isDebouncerAc tive:function(e){var t=this._debouncers[e];return!(!t||!t.finish)},flushDebounce r:function(e){var t=this._debouncers[e];t&&t.complete()},cancelDebouncer:functio n(e){var t=this._debouncers[e];t&&t.stop()}}),Polymer.DomModule=document.createE lement("dom-module"),Polymer.Base._addFeature({_registerFeatures:function(){this ._prepIs(),this._prepBehaviors(),this._prepConstructor(),this._prepTemplate(),th is._prepShady(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHos tAttributes(e.hostAttributes)},_initFeatures:function(){this._registerHost(),thi s._template&&(this._poolContent(),this._beginHosting(),this._stampTemplate(),thi s._endHosting()),this._marshalHostAttributes(),this._setupDebouncers(),this._mar shalBehaviors(),this._tryReady()},_marshalBehavior:function(e){}})</script> <scr ipt>Polymer.nar=[],Polymer.Annotations={parseAnnotations:function(e){var t=[],n= e._content||e.content;return this._parseNodeAnnotations(n,t,e.hasAttribute("stri p-whitespace")),t},_parseNodeAnnotations:function(e,t,n){return e.nodeType===Nod e.TEXT_NODE?this._parseTextNodeAnnotation(e,t):this._parseElementAnnotations(e,t ,n)},_bindingRegex:function(){var e="(?:[a-zA-Z_$][\\w.:$\\-*]*)",t="(?:[-+]?[0- 9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?)",n="(?:'(?:[^'\\\\]|\\\\.)*')",r='(?:"(?:[^"\ \\\]|\\\\.)*")',s="(?:"+n+"|"+r+")",i="(?:"+e+"|"+t+"|"+s+"\\s*)",o="(?:"+i+"(?: ,\\s*"+i+")*)",a="(?:\\(\\s*(?:"+o+"?)\\)\\s*)",l="("+e+"\\s*"+a+"?)",c="(\\[\\[ |{{)\\s*",h="(?:]]|}})",u="(?:(!)\\s*)?",f=c+u+l+h;return new RegExp(f,"g")}(),_ parseBindings:function(e){for(var t,n=this._bindingRegex,r=[],s=0;null!==(t=n.ex ec(e));){t.index>s&&r.push({literal:e.slice(s,t.index)});var i,o,a,l=t[1][0],c=B oolean(t[2]),h=t[3].trim();"{"==l&&(a=h.indexOf("::"))>0&&(o=h.substring(a+2),h= h.substring(0,a),i=!0),r.push({compoundIndex:r.length,value:h,mode:l,negate:c,ev ent:o,customEvent:i}),s=n.lastIndex}if(s&&s<e.length){var u=e.substring(s);u&&r. push({literal:u})}if(r.length)return r},_literalFromParts:function(e){for(var t= "",n=0;n<e.length;n++){var r=e[n].literal;t+=r||""}return t},_parseTextNodeAnnot ation:function(e,t){var n=this._parseBindings(e.textContent);if(n){e.textContent =this._literalFromParts(n)||" ";var r={bindings:[{kind:"text",name:"textContent" ,parts:n,isCompound:1!==n.length}]};return t.push(r),r}},_parseElementAnnotation s:function(e,t,n){var r={bindings:[],events:[]};return"content"===e.localName&&( t._hasContent=!0),this._parseChildNodesAnnotations(e,r,t,n),e.attributes&&(this. _parseNodeAttributeAnnotations(e,r,t),this.prepElement&&this.prepElement(e)),(r. bindings.length||r.events.length||r.id)&&t.push(r),r},_parseChildNodesAnnotation s:function(e,t,n,r){if(e.firstChild)for(var s=e.firstChild,i=0;s;){var o=s.nextS ibling;if("template"!==s.localName||s.hasAttribute("preserve-content")||this._pa rseTemplate(s,i,n,t),"slot"==s.localName&&(s=this._replaceSlotWithContent(s)),s. nodeType===Node.TEXT_NODE){for(var a=o;a&&a.nodeType===Node.TEXT_NODE;)s.textCon tent+=a.textContent,o=a.nextSibling,e.removeChild(a),a=o;r&&!s.textContent.trim( )&&(e.removeChild(s),i--)}if(s.parentNode){var l=this._parseNodeAnnotations(s,n, r);l&&(l.parent=t,l.index=i)}s=o,i++}},_replaceSlotWithContent:function(e){for(v ar t=e.ownerDocument.createElement("content");e.firstChild;)t.appendChild(e.firs tChild);for(var n=e.attributes,r=0;r<n.length;r++){var s=n[r];t.setAttribute(s.n ame,s.value)}var i=e.getAttribute("name"),o=i?"[slot='"+i+"']":":not([slot])";re turn t.setAttribute("select",o),e.parentNode.replaceChild(t,e),t},_parseTemplate :function(e,t,n,r){var s=document.createDocumentFragment();s._notes=this.parseAn notations(e),s.appendChild(e.content),n.push({bindings:Polymer.nar,events:Polyme r.nar,templateContent:s,parent:r,index:t})},_parseNodeAttributeAnnotations:funct ion(e,t){for(var n,r=Array.prototype.slice.call(e.attributes),s=r.length-1;n=r[s ];s--){var i,o=n.name,a=n.value;"on-"===o.slice(0,3)?(e.removeAttribute(o),t.eve nts.push({name:o.slice(3),value:a})):(i=this._parseNodeAttributeAnnotation(e,o,a ))?t.bindings.push(i):"id"===o&&(t.id=a)}},_parseNodeAttributeAnnotation:functio n(e,t,n){var r=this._parseBindings(n);if(r){var s=t,i="property";"$"==t[t.length -1]&&(t=t.slice(0,-1),i="attribute");var o=this._literalFromParts(r);o&&"attribu te"==i&&e.setAttribute(t,o),"input"===e.localName&&"value"===s&&e.setAttribute(s ,""),e.removeAttribute(s);var a=Polymer.CaseMap.dashToCamelCase(t);return"proper ty"===i&&(t=a),{kind:i,name:t,propertyName:a,parts:r,literal:o,isCompound:1!==r. length}}},findAnnotatedNode:function(e,t){var n=t.parent&&Polymer.Annotations.fi ndAnnotatedNode(e,t.parent);if(!n)return e;for(var r=n.firstChild,s=0;r;r=r.next Sibling)if(t.index===s++)return r}},function(){function e(e,t){return e.replace( a,function(e,r,s,i){return r+"'"+n(s.replace(/["']/g,""),t)+"'"+i})}function t(t ,r){for(var s in l)for(var i,o,a,c=l[s],u=0,f=c.length;u<f&&(i=c[u]);u++)"*"!==s &&t.localName!==s||(o=t.attributes[i],a=o&&o.value,a&&a.search(h)<0&&(o.value="s tyle"===i?e(a,r):n(a,r)))}function n(e,t){if(e&&c.test(e))return e;var n=s(t);re turn n.href=e,n.href||e}function r(e,t){return i||(i=document.implementation.cre ateHTMLDocument("temp"),o=i.createElement("base"),i.head.appendChild(o)),o.href= t,n(e,i)}function s(e){return e.__urlResolver||(e.__urlResolver=e.createElement( "a"))}var i,o,a=/(url\()([^)]*)(\))/g,l={"*":["href","src","style","url"],form:[ "action"]},c=/(^\/)|(^#)|(^[\w-\d]*:)/,h=/\{\{|\[\[/;Polymer.ResolveUrl={resolve Css:e,resolveAttrs:t,resolveUrl:r}}(),Polymer.Path={root:function(e){var t=e.ind exOf(".");return t===-1?e:e.slice(0,t)},isDeep:function(e){return e.indexOf(".") !==-1},isAncestor:function(e,t){return 0===e.indexOf(t+".")},isDescendant:functi on(e,t){return 0===t.indexOf(e+".")},translate:function(e,t,n){return t+n.slice( e.length)},matches:function(e,t,n){return e===n||this.isAncestor(e,n)||Boolean(t )&&this.isDescendant(e,n)}},Polymer.Base._addFeature({_prepAnnotations:function( ){if(this._template){var e=this;Polymer.Annotations.prepElement=function(t){e._p repElement(t)},this._template._content&&this._template._content._notes?this._not es=this._template._content._notes:(this._notes=Polymer.Annotations.parseAnnotati ons(this._template),this._processAnnotations(this._notes)),Polymer.Annotations.p repElement=null}else this._notes=[]},_processAnnotations:function(e){for(var t=0 ;t<e.length;t++){for(var n=e[t],r=0;r<n.bindings.length;r++)for(var s=n.bindings [r],i=0;i<s.parts.length;i++){var o=s.parts[i];if(!o.literal){var a=this._parseM ethod(o.value);a?o.signature=a:o.model=Polymer.Path.root(o.value)}}if(n.template Content){this._processAnnotations(n.templateContent._notes);var l=n.templateCont ent._parentProps=this._discoverTemplateParentProps(n.templateContent._notes),c=[ ];for(var h in l){var u="_parent_"+h;c.push({index:n.index,kind:"property",name: u,propertyName:u,parts:[{mode:"{",model:h,value:h}]})}n.bindings=n.bindings.conc at(c)}}},_discoverTemplateParentProps:function(e){for(var t,n={},r=0;r<e.length& &(t=e[r]);r++){for(var s,i=0,o=t.bindings;i<o.length&&(s=o[i]);i++)for(var a,l=0 ,c=s.parts;l<c.length&&(a=c[l]);l++)if(a.signature){for(var h=a.signature.args,u =0;u<h.length;u++){var f=h[u].model;f&&(n[f]=!0)}a.signature.dynamicFn&&(n[a.sig nature.method]=!0)}else a.model&&(n[a.model]=!0);if(t.templateContent){var p=t.t emplateContent._parentProps;Polymer.Base.mixin(n,p)}}return n},_prepElement:func tion(e){Polymer.ResolveUrl.resolveAttrs(e,this._template.ownerDocument)},_findAn notatedNode:Polymer.Annotations.findAnnotatedNode,_marshalAnnotationReferences:f unction(){this._template&&(this._marshalIdNodes(),this._marshalAnnotatedNodes(), this._marshalAnnotatedListeners())},_configureAnnotationReferences:function(){fo r(var e=this._notes,t=this._nodes,n=0;n<e.length;n++){var r=e[n],s=t[n];this._co nfigureTemplateContent(r,s),this._configureCompoundBindings(r,s)}},_configureTem plateContent:function(e,t){e.templateContent&&(t._content=e.templateContent)},_c onfigureCompoundBindings:function(e,t){for(var n=e.bindings,r=0;r<n.length;r++){ var s=n[r];if(s.isCompound){for(var i=t.__compoundStorage__||(t.__compoundStorag e__={}),o=s.parts,a=new Array(o.length),l=0;l<o.length;l++)a[l]=o[l].literal;var c=s.name;i[c]=a,s.literal&&"property"==s.kind&&(t._configValue?t._configValue(c ,s.literal):t[c]=s.literal)}}},_marshalIdNodes:function(){this.$={};for(var e,t= 0,n=this._notes.length;t<n&&(e=this._notes[t]);t++)e.id&&(this.$[e.id]=this._fin dAnnotatedNode(this.root,e))},_marshalAnnotatedNodes:function(){if(this._notes&& this._notes.length){for(var e=new Array(this._notes.length),t=0;t<this._notes.le ngth;t++)e[t]=this._findAnnotatedNode(this.root,this._notes[t]);this._nodes=e}}, _marshalAnnotatedListeners:function(){for(var e,t=0,n=this._notes.length;t<n&&(e =this._notes[t]);t++)if(e.events&&e.events.length)for(var r,s=this._findAnnotate dNode(this.root,e),i=0,o=e.events;i<o.length&&(r=o[i]);i++)this.listen(s,r.name, r.value)}}),Polymer.Base._addFeature({listeners:{},_listenListeners:function(e){ var t,n,r;for(r in e)r.indexOf(".")<0?(t=this,n=r):(n=r.split("."),t=this.$[n[0] ],n=n[1]),this.listen(t,n,e[r])},listen:function(e,t,n){var r=this._recallEventH andler(this,t,e,n);r||(r=this._createEventHandler(e,t,n)),r._listening||(this._l isten(e,t,r),r._listening=!0)},_boundListenerKey:function(e,t){return e+":"+t},_ recordEventHandler:function(e,t,n,r,s){var i=e.__boundListeners;i||(i=e.__boundL isteners=new WeakMap);var o=i.get(n);o||(o={},i.set(n,o));var a=this._boundListe nerKey(t,r);o[a]=s},_recallEventHandler:function(e,t,n,r){var s=e.__boundListene rs;if(s){var i=s.get(n);if(i){var o=this._boundListenerKey(t,r);return i[o]}}},_ createEventHandler:function(e,t,n){var r=this,s=function(e){r[n]?r[n](e,e.detail ):r._warn(r._logf("_createEventHandler","listener method `"+n+"` not defined"))} ;return s._listening=!1,this._recordEventHandler(r,t,e,n,s),s},unlisten:function (e,t,n){var r=this._recallEventHandler(this,t,e,n);r&&(this._unlisten(e,t,r),r._ listening=!1)},_listen:function(e,t,n){e.addEventListener(t,n)},_unlisten:functi on(e,t,n){e.removeEventListener(t,n)}}),function(){"use strict";function e(e){fo r(var t,n=g?["click"]:m,r=0;r<n.length;r++)t=n[r],e?document.addEventListener(t, P,!0):document.removeEventListener(t,P,!0)}function t(){S.mouse.mouseIgnoreJob|| e(!0);var t=function(){e(),S.mouse.target=null,S.mouse.mouseIgnoreJob=null};S.mo use.mouseIgnoreJob=Polymer.Debounce(S.mouse.mouseIgnoreJob,t,d)}function n(e){va r t=e.type;if(m.indexOf(t)===-1)return!1;if("mousemove"===t){var n=void 0===e.bu ttons?1:e.buttons;return e instanceof window.MouseEvent&&!v&&(n=y[e.which]||0),B oolean(1&n)}var r=void 0===e.button?0:e.button;return 0===r}function r(e){if("cl ick"===e.type){if(0===e.detail)return!0;var t=C.findOriginalTarget(e),n=t.getBou ndingClientRect(),r=e.pageX,s=e.pageY;return!(r>=n.left&&r<=n.right&&s>=n.top&&s <=n.bottom)}return!1}function s(e){for(var t,n=Polymer.dom(e).path,r="auto",s=0; s<n.length;s++)if(t=n[s],t[u]){r=t[u];break}return r}function i(e,t,n){e.movefn= t,e.upfn=n,document.addEventListener("mousemove",t),document.addEventListener("m ouseup",n)}function o(e){document.removeEventListener("mousemove",e.movefn),docu ment.removeEventListener("mouseup",e.upfn),e.movefn=null,e.upfn=null}var a=Polym er.DomApi.wrap,l="string"==typeof document.head.style.touchAction,c="__polymerGe stures",h="__polymerGesturesHandled",u="__polymerGesturesTouchAction",f=25,p=5,_ =2,d=2500,m=["mousedown","mousemove","mouseup","click"],y=[0,1,4,2],v=function() {try{return 1===new MouseEvent("test",{buttons:1}).buttons}catch(e){return!1}}() ,g=navigator.userAgent.match(/iP(?:[oa]d|hone)|Android/),P=function(e){var t=e.s ourceCapabilities;if((!t||t.firesTouchEvents)&&(e[h]={skip:!0},"click"===e.type) ){for(var n=Polymer.dom(e).path,r=0;r<n.length;r++)if(n[r]===S.mouse.target)retu rn;e.preventDefault(),e.stopPropagation()}},S={mouse:{target:null,mouseIgnoreJob :null},touch:{x:0,y:0,id:-1,scrollDecided:!1}},C={gestures:{},recognizers:[],dee pTargetFind:function(e,t){for(var n=document.elementFromPoint(e,t),r=n;r&&r.shad owRoot;)r=r.shadowRoot.elementFromPoint(e,t),r&&(n=r);return n},findOriginalTarg et:function(e){return e.path?e.path[0]:e.target},handleNative:function(e){var n, r=e.type,s=a(e.currentTarget),i=s[c];if(i){var o=i[r];if(o){if(!e[h]&&(e[h]={}," touch"===r.slice(0,5))){var u=e.changedTouches[0];if("touchstart"===r&&1===e.tou ches.length&&(S.touch.id=u.identifier),S.touch.id!==u.identifier)return;l||"touc hstart"!==r&&"touchmove"!==r||C.handleTouchAction(e),"touchend"===r&&(S.mouse.ta rget=Polymer.dom(e).rootTarget,t())}if(n=e[h],!n.skip){for(var f,p=C.recognizers ,_=0;_<p.length;_++)f=p[_],o[f.name]&&!n[f.name]&&f.flow&&f.flow.start.indexOf(e .type)>-1&&f.reset&&f.reset();for(_=0,f;_<p.length;_++)f=p[_],o[f.name]&&!n[f.na me]&&(n[f.name]=!0,f[r](e))}}}},handleTouchAction:function(e){var t=e.changedTou ches[0],n=e.type;if("touchstart"===n)S.touch.x=t.clientX,S.touch.y=t.clientY,S.t ouch.scrollDecided=!1;else if("touchmove"===n){if(S.touch.scrollDecided)return;S .touch.scrollDecided=!0;var r=s(e),i=!1,o=Math.abs(S.touch.x-t.clientX),a=Math.a bs(S.touch.y-t.clientY);e.cancelable&&("none"===r?i=!0:"pan-x"===r?i=a>o:"pan-y" ===r&&(i=o>a)),i?e.preventDefault():C.prevent("track")}},add:function(e,t,n){e=a (e);var r=this.gestures[t],s=r.deps,i=r.name,o=e[c];o||(e[c]=o={});for(var l,h,u =0;u<s.length;u++)l=s[u],g&&m.indexOf(l)>-1&&"click"!==l||(h=o[l],h||(o[l]=h={_c ount:0}),0===h._count&&e.addEventListener(l,this.handleNative),h[i]=(h[i]||0)+1, h._count=(h._count||0)+1);e.addEventListener(t,n),r.touchAction&&this.setTouchAc tion(e,r.touchAction)},remove:function(e,t,n){e=a(e);var r=this.gestures[t],s=r. deps,i=r.name,o=e[c];if(o)for(var l,h,u=0;u<s.length;u++)l=s[u],h=o[l],h&&h[i]&& (h[i]=(h[i]||1)-1,h._count=(h._count||1)-1,0===h._count&&e.removeEventListener(l ,this.handleNative));e.removeEventListener(t,n)},register:function(e){this.recog nizers.push(e);for(var t=0;t<e.emits.length;t++)this.gestures[e.emits[t]]=e},fin dRecognizerByEvent:function(e){for(var t,n=0;n<this.recognizers.length;n++){t=th is.recognizers[n];for(var r,s=0;s<t.emits.length;s++)if(r=t.emits[s],r===e)retur n t}return null},setTouchAction:function(e,t){l&&(e.style.touchAction=t),e[u]=t} ,fire:function(e,t,n){var r=Polymer.Base.fire(t,n,{node:e,bubbles:!0,cancelable: !0});if(r.defaultPrevented){var s=n.preventer||n.sourceEvent;s&&s.preventDefault &&s.preventDefault()}},prevent:function(e){var t=this.findRecognizerByEvent(e);t .info&&(t.info.prevent=!0)},resetMouseCanceller:function(){S.mouse.mouseIgnoreJo b&&S.mouse.mouseIgnoreJob.complete()}};C.register({name:"downup",deps:["mousedow n","touchstart","touchend"],flow:{start:["mousedown","touchstart"],end:["mouseup ","touchend"]},emits:["down","up"],info:{movefn:null,upfn:null},reset:function() {o(this.info)},mousedown:function(e){if(n(e)){var t=C.findOriginalTarget(e),r=th is,s=function(e){n(e)||(r.fire("up",t,e),o(r.info))},a=function(e){n(e)&&r.fire( "up",t,e),o(r.info)};i(this.info,s,a),this.fire("down",t,e)}},touchstart:functio n(e){this.fire("down",C.findOriginalTarget(e),e.changedTouches[0],e)},touchend:f unction(e){this.fire("up",C.findOriginalTarget(e),e.changedTouches[0],e)},fire:f unction(e,t,n,r){C.fire(t,e,{x:n.clientX,y:n.clientY,sourceEvent:n,preventer:r,p revent:function(e){return C.prevent(e)}})}}),C.register({name:"track",touchActio n:"none",deps:["mousedown","touchstart","touchmove","touchend"],flow:{start:["mo usedown","touchstart"],end:["mouseup","touchend"]},emits:["track"],info:{x:0,y:0 ,state:"start",started:!1,moves:[],addMove:function(e){this.moves.length>_&&this .moves.shift(),this.moves.push(e)},movefn:null,upfn:null,prevent:!1},reset:funct ion(){this.info.state="start",this.info.started=!1,this.info.moves=[],this.info. x=0,this.info.y=0,this.info.prevent=!1,o(this.info)},hasMovedEnough:function(e,t ){if(this.info.prevent)return!1;if(this.info.started)return!0;var n=Math.abs(thi s.info.x-e),r=Math.abs(this.info.y-t);return n>=p||r>=p},mousedown:function(e){i f(n(e)){var t=C.findOriginalTarget(e),r=this,s=function(e){var s=e.clientX,i=e.c lientY;r.hasMovedEnough(s,i)&&(r.info.state=r.info.started?"mouseup"===e.type?"e nd":"track":"start","start"===r.info.state&&C.prevent("tap"),r.info.addMove({x:s ,y:i}),n(e)||(r.info.state="end",o(r.info)),r.fire(t,e),r.info.started=!0)},a=fu nction(e){r.info.started&&s(e),o(r.info)};i(this.info,s,a),this.info.x=e.clientX ,this.info.y=e.clientY}},touchstart:function(e){var t=e.changedTouches[0];this.i nfo.x=t.clientX,this.info.y=t.clientY},touchmove:function(e){var t=C.findOrigina lTarget(e),n=e.changedTouches[0],r=n.clientX,s=n.clientY;this.hasMovedEnough(r,s )&&("start"===this.info.state&&C.prevent("tap"),this.info.addMove({x:r,y:s}),thi s.fire(t,n),this.info.state="track",this.info.started=!0)},touchend:function(e){ var t=C.findOriginalTarget(e),n=e.changedTouches[0];this.info.started&&(this.inf o.state="end",this.info.addMove({x:n.clientX,y:n.clientY}),this.fire(t,n,e))},fi re:function(e,t,n){var r,s=this.info.moves[this.info.moves.length-2],i=this.info .moves[this.info.moves.length-1],o=i.x-this.info.x,a=i.y-this.info.y,l=0;return s&&(r=i.x-s.x,l=i.y-s.y),C.fire(e,"track",{state:this.info.state,x:t.clientX,y:t .clientY,dx:o,dy:a,ddx:r,ddy:l,sourceEvent:t,preventer:n,hover:function(){return C.deepTargetFind(t.clientX,t.clientY)}})}}),C.register({name:"tap",deps:["mouse down","click","touchstart","touchend"],flow:{start:["mousedown","touchstart"],en d:["click","touchend"]},emits:["tap"],info:{x:NaN,y:NaN,prevent:!1},reset:functi on(){this.info.x=NaN,this.info.y=NaN,this.info.prevent=!1},save:function(e){this .info.x=e.clientX,this.info.y=e.clientY},mousedown:function(e){n(e)&&this.save(e )},click:function(e){n(e)&&this.forward(e)},touchstart:function(e){this.save(e.c hangedTouches[0],e)},touchend:function(e){this.forward(e.changedTouches[0],e)},f orward:function(e,t){var n=Math.abs(e.clientX-this.info.x),s=Math.abs(e.clientY- this.info.y),i=C.findOriginalTarget(e);(isNaN(n)||isNaN(s)||n<=f&&s<=f||r(e))&&( this.info.prevent||C.fire(i,"tap",{x:e.clientX,y:e.clientY,sourceEvent:e,prevent er:t}))}});var E={x:"pan-x",y:"pan-y",none:"none",all:"auto"};Polymer.Base._addF eature({_setupGestures:function(){this.__polymerGestures=null},_listen:function( e,t,n){C.gestures[t]?C.add(e,t,n):e.addEventListener(t,n)},_unlisten:function(e, t,n){C.gestures[t]?C.remove(e,t,n):e.removeEventListener(t,n)},setScrollDirectio n:function(e,t){t=t||this,C.setTouchAction(t,E[e]||"auto")}}),Polymer.Gestures=C }(),function(){"use strict";if(Polymer.Base._addFeature({$$:function(e){return P olymer.dom(this.root).querySelector(e)},toggleClass:function(e,t,n){n=n||this,1= =arguments.length&&(t=!n.classList.contains(e)),t?Polymer.dom(n).classList.add(e ):Polymer.dom(n).classList.remove(e)},toggleAttribute:function(e,t,n){n=n||this, 1==arguments.length&&(t=!n.hasAttribute(e)),t?Polymer.dom(n).setAttribute(e,""): Polymer.dom(n).removeAttribute(e)},classFollows:function(e,t,n){n&&Polymer.dom(n ).classList.remove(e),t&&Polymer.dom(t).classList.add(e)},attributeFollows:funct ion(e,t,n){n&&Polymer.dom(n).removeAttribute(e),t&&Polymer.dom(t).setAttribute(e ,"")},getEffectiveChildNodes:function(){return Polymer.dom(this).getEffectiveChi ldNodes()},getEffectiveChildren:function(){var e=Polymer.dom(this).getEffectiveC hildNodes();return e.filter(function(e){return e.nodeType===Node.ELEMENT_NODE})} ,getEffectiveTextContent:function(){for(var e,t=this.getEffectiveChildNodes(),n= [],r=0;e=t[r];r++)e.nodeType!==Node.COMMENT_NODE&&n.push(Polymer.dom(e).textCont ent);return n.join("")},queryEffectiveChildren:function(e){var t=Polymer.dom(thi s).queryDistributedElements(e);return t&&t[0]},queryAllEffectiveChildren:functio n(e){return Polymer.dom(this).queryDistributedElements(e)},getContentChildNodes: function(e){var t=Polymer.dom(this.root).querySelector(e||"content");return t?Po lymer.dom(t).getDistributedNodes():[]},getContentChildren:function(e){return thi s.getContentChildNodes(e).filter(function(e){return e.nodeType===Node.ELEMENT_NO DE})},fire:function(e,t,n){n=n||Polymer.nob;var r=n.node||this;t=null===t||void 0===t?{}:t;var s=void 0===n.bubbles||n.bubbles,i=Boolean(n.cancelable),o=n._useC ache,a=this._getEvent(e,s,i,o);return a.detail=t,o&&(this.__eventCache[e]=null), r.dispatchEvent(a),o&&(this.__eventCache[e]=a),a},__eventCache:{},_getEvent:func tion(e,t,n,r){var s=r&&this.__eventCache[e];return s&&s.bubbles==t&&s.cancelable ==n||(s=new Event(e,{bubbles:Boolean(t),cancelable:n})),s},async:function(e,t){v ar n=this;return Polymer.Async.run(function(){e.call(n)},t)},cancelAsync:functio n(e){Polymer.Async.cancel(e)},arrayDelete:function(e,t){var n;if(Array.isArray(e )){if(n=e.indexOf(t),n>=0)return e.splice(n,1)}else{var r=this._get(e);if(n=r.in dexOf(t),n>=0)return this.splice(e,n,1)}},transform:function(e,t){t=t||this,t.st yle.webkitTransform=e,t.style.transform=e},translate3d:function(e,t,n,r){r=r||th is,this.transform("translate3d("+e+","+t+","+n+")",r)},importHref:function(e,t,n ,r){var s=document.createElement("link");s.rel="import",s.href=e;var i=Polymer.B ase.importHref.imported=Polymer.Base.importHref.imported||{},o=i[s.href],a=o||s, l=this;if(t){var c=function(e){return e.target.__firedLoad=!0,e.target.removeEve ntListener("load",c),t.call(l,e)};a.addEventListener("load",c)}if(n){var h=funct ion(e){return e.target.__firedError=!0,e.target.removeEventListener("error",h),n .call(l,e)};a.addEventListener("error",h)}return o?(o.__firedLoad&&o.dispatchEve nt(new Event("load")),o.__firedError&&o.dispatchEvent(new Event("error"))):(i[s. href]=s,r=Boolean(r),r&&s.setAttribute("async",""),document.head.appendChild(s)) ,a},create:function(e,t){var n=document.createElement(e);if(t)for(var r in t)n[r ]=t[r];return n},isLightDescendant:function(e){return this!==e&&this.contains(e) &&Polymer.dom(this).getOwnerRoot()===Polymer.dom(e).getOwnerRoot()},isLocalDesce ndant:function(e){return this.root===Polymer.dom(e).getOwnerRoot()}}),!Polymer.S ettings.useNativeCustomElements){var e=Polymer.Base.importHref;Polymer.Base.impo rtHref=function(t,n,r,s){CustomElements.ready=!1;var i=function(e){if(CustomElem ents.upgradeDocumentTree(document),CustomElements.ready=!0,n)return n.call(this, e)};return e.call(this,t,i,r,s)}}}(),Polymer.Bind={prepareModel:function(e){Poly mer.Base.mixin(e,this._modelApi)},_modelApi:{_notifyChange:function(e,t,n){n=voi d 0===n?this[e]:n,t=t||Polymer.CaseMap.camelToDashCase(e)+"-changed",this.fire(t ,{value:n},{bubbles:!1,cancelable:!1,_useCache:!0})},_propertySetter:function(e, t,n,r){var s=this.__data__[e];return s===t||s!==s&&t!==t||(this.__data__[e]=t,"o bject"==typeof t&&this._clearPath(e),this._propertyChanged&&this._propertyChange d(e,t,s),n&&this._effectEffects(e,t,n,s,r)),s},__setProperty:function(e,t,n,r){r =r||this;var s=r._propertyEffects&&r._propertyEffects[e];s?r._propertySetter(e,t ,s,n):r[e]!==t&&(r[e]=t)},_effectEffects:function(e,t,n,r,s){for(var i,o=0,a=n.l ength;o<a&&(i=n[o]);o++)i.fn.call(this,e,this[e],i.effect,r,s)},_clearPath:funct ion(e){for(var t in this.__data__)Polymer.Path.isDescendant(e,t)&&(this.__data__ [t]=void 0)}},ensurePropertyEffects:function(e,t){e._propertyEffects||(e._proper tyEffects={});var n=e._propertyEffects[t];return n||(n=e._propertyEffects[t]=[]) ,n},addPropertyEffect:function(e,t,n,r){var s=this.ensurePropertyEffects(e,t),i= {kind:n,effect:r,fn:Polymer.Bind["_"+n+"Effect"]};return s.push(i),i},createBind ings:function(e){var t=e._propertyEffects;if(t)for(var n in t){var r=t[n];r.sort (this._sortPropertyEffects),this._createAccessors(e,n,r)}},_sortPropertyEffects: function(){var e={compute:0,annotation:1,annotatedComputation:2,reflect:3,notify :4,observer:5,complexObserver:6,function:7};return function(t,n){return e[t.kind ]-e[n.kind]}}(),_createAccessors:function(e,t,n){var r={get:function(){return th is.__data__[t]}},s=function(e){this._propertySetter(t,e,n)},i=e.getPropertyInfo& &e.getPropertyInfo(t);i&&i.readOnly?i.computed||(e["_set"+this.upper(t)]=s):r.se t=s,Object.defineProperty(e,t,r)},upper:function(e){return e[0].toUpperCase()+e. substring(1)},_addAnnotatedListener:function(e,t,n,r,s,i){e._bindListeners||(e._ bindListeners=[]);var o=this._notedListenerFactory(n,r,Polymer.Path.isDeep(r),i) ,a=s||Polymer.CaseMap.camelToDashCase(n)+"-changed";e._bindListeners.push({index :t,property:n,path:r,changedFn:o,event:a})},_isEventBogus:function(e,t){return e .path&&e.path[0]!==t},_notedListenerFactory:function(e,t,n,r){return function(s, i,o){if(o){var a=Polymer.Path.translate(e,t,o);this._notifyPath(a,i)}else i=s[e] ,r&&(i=!i),n?this.__data__[t]!=i&&this.set(t,i):this[t]=i}},prepareInstance:func tion(e){e.__data__=Object.create(null)},setupBindListeners:function(e){for(var t ,n=e._bindListeners,r=0,s=n.length;r<s&&(t=n[r]);r++){var i=e._nodes[t.index];th is._addNotifyListener(i,e,t.event,t.changedFn)}},_addNotifyListener:function(e,t ,n,r){e.addEventListener(n,function(e){return t._notifyListener(r,e)})}},Polymer .Base.extend(Polymer.Bind,{_shouldAddListener:function(e){return e.name&&"attrib ute"!=e.kind&&"text"!=e.kind&&!e.isCompound&&"{"===e.parts[0].mode},_annotationE ffect:function(e,t,n){e!=n.value&&(t=this._get(n.value),this.__data__[n.value]=t ),this._applyEffectValue(n,t)},_reflectEffect:function(e,t,n){this.reflectProper tyToAttribute(e,n.attribute,t)},_notifyEffect:function(e,t,n,r,s){s||this._notif yChange(e,n.event,t)},_functionEffect:function(e,t,n,r,s){n.call(this,e,t,r,s)}, _observerEffect:function(e,t,n,r){var s=this[n.method];s?s.call(this,t,r):this._ warn(this._logf("_observerEffect","observer method `"+n.method+"` not defined")) },_complexObserverEffect:function(e,t,n){var r=this[n.method];if(r){var s=Polyme r.Bind._marshalArgs(this.__data__,n,e,t);s&&r.apply(this,s)}else n.dynamicFn||th is._warn(this._logf("_complexObserverEffect","observer method `"+n.method+"` not defined"))},_computeEffect:function(e,t,n){var r=this[n.method];if(r){var s=Pol ymer.Bind._marshalArgs(this.__data__,n,e,t);if(s){var i=r.apply(this,s);this.__s etProperty(n.name,i)}}else n.dynamicFn||this._warn(this._logf("_computeEffect"," compute method `"+n.method+"` not defined"))},_annotatedComputationEffect:functi on(e,t,n){var r=this._rootDataHost||this,s=r[n.method];if(s){var i=Polymer.Bind. _marshalArgs(this.__data__,n,e,t);if(i){var o=s.apply(r,i);this._applyEffectValu e(n,o)}}else n.dynamicFn||r._warn(r._logf("_annotatedComputationEffect","compute method `"+n.method+"` not defined"))},_marshalArgs:function(e,t,n,r){for(var s= [],i=t.args,o=i.length>1||t.dynamicFn,a=0,l=i.length;a<l;a++){var c,h=i[a],u=h.n ame;if(h.literal?c=h.value:n===u?c=r:(c=e[u],void 0===c&&h.structured&&(c=Polyme r.Base._get(u,e))),o&&void 0===c)return;if(h.wildcard){var f=Polymer.Path.isAnce stor(n,u);s[a]={path:f?n:u,value:f?r:c,base:c}}else s[a]=c}return s}}),Polymer.B ase._addFeature({_addPropertyEffect:function(e,t,n){var r=Polymer.Bind.addProper tyEffect(this,e,t,n);r.pathFn=this["_"+r.kind+"PathEffect"]},_prepEffects:functi on(){Polymer.Bind.prepareModel(this),this._addAnnotationEffects(this._notes)},_p repBindings:function(){Polymer.Bind.createBindings(this)},_addPropertyEffects:fu nction(e){if(e)for(var t in e){var n=e[t];if(n.observer&&this._addObserverEffect (t,n.observer),n.computed&&(n.readOnly=!0,this._addComputedEffect(t,n.computed)) ,n.notify&&this._addPropertyEffect(t,"notify",{event:Polymer.CaseMap.camelToDash Case(t)+"-changed"}),n.reflectToAttribute){var r=Polymer.CaseMap.camelToDashCase (t);"-"===r[0]?this._warn(this._logf("_addPropertyEffects","Property "+t+" canno t be reflected to attribute "+r+' because "-" is not a valid starting attribute name. Use a lowercase first letter for the property instead.')):this._addPropert yEffect(t,"reflect",{attribute:r})}n.readOnly&&Polymer.Bind.ensurePropertyEffect s(this,t)}},_addComputedEffect:function(e,t){for(var n,r=this._parseMethod(t),s= r.dynamicFn,i=0;i<r.args.length&&(n=r.args[i]);i++)this._addPropertyEffect(n.mod el,"compute",{method:r.method,args:r.args,trigger:n,name:e,dynamicFn:s});s&&this ._addPropertyEffect(r.method,"compute",{method:r.method,args:r.args,trigger:null ,name:e,dynamicFn:s})},_addObserverEffect:function(e,t){this._addPropertyEffect( e,"observer",{method:t,property:e})},_addComplexObserverEffects:function(e){if(e )for(var t,n=0;n<e.length&&(t=e[n]);n++)this._addComplexObserverEffect(t)},_addC omplexObserverEffect:function(e){var t=this._parseMethod(e);if(!t)throw new Erro r("Malformed observer expression '"+e+"'");for(var n,r=t.dynamicFn,s=0;s<t.args. length&&(n=t.args[s]);s++)this._addPropertyEffect(n.model,"complexObserver",{met hod:t.method,args:t.args,trigger:n,dynamicFn:r});r&&this._addPropertyEffect(t.me thod,"complexObserver",{method:t.method,args:t.args,trigger:null,dynamicFn:r})}, _addAnnotationEffects:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++)for(var r,s=t.bindings,i=0;i<s.length&&(r=s[i]);i++)this._addAnnotationEffect(r,n)},_ad dAnnotationEffect:function(e,t){Polymer.Bind._shouldAddListener(e)&&Polymer.Bind ._addAnnotatedListener(this,t,e.name,e.parts[0].value,e.parts[0].event,e.parts[0 ].negate);for(var n=0;n<e.parts.length;n++){var r=e.parts[n];r.signature?this._a ddAnnotatedComputationEffect(e,r,t):r.literal||("attribute"===e.kind&&"-"===e.na me[0]?this._warn(this._logf("_addAnnotationEffect","Cannot set attribute "+e.nam e+' because "-" is not a valid attribute starting character')):this._addProperty Effect(r.model,"annotation",{kind:e.kind,index:t,name:e.name,propertyName:e.prop ertyName,value:r.value,isCompound:e.isCompound,compoundIndex:r.compoundIndex,eve nt:r.event,customEvent:r.customEvent,negate:r.negate}))}},_addAnnotatedComputati onEffect:function(e,t,n){var r=t.signature;if(r.static)this.__addAnnotatedComput ationEffect("__static__",n,e,t,null);else{for(var s,i=0;i<r.args.length&&(s=r.ar gs[i]);i++)s.literal||this.__addAnnotatedComputationEffect(s.model,n,e,t,s);r.dy namicFn&&this.__addAnnotatedComputationEffect(r.method,n,e,t,null)}},__addAnnota tedComputationEffect:function(e,t,n,r,s){this._addPropertyEffect(e,"annotatedCom putation",{index:t,isCompound:n.isCompound,compoundIndex:r.compoundIndex,kind:n. kind,name:n.name,negate:r.negate,method:r.signature.method,args:r.signature.args ,trigger:s,dynamicFn:r.signature.dynamicFn})},_parseMethod:function(e){var t=e.m atch(/([^\s]+?)\(([\s\S]*)\)/);if(t){var n={method:t[1],static:!0};if(this.getPr opertyInfo(n.method)!==Polymer.nob&&(n.static=!1,n.dynamicFn=!0),t[2].trim()){va r r=t[2].replace(/\\,/g,"&comma;").split(",");return this._parseArgs(r,n)}return n.args=Polymer.nar,n}},_parseArgs:function(e,t){return t.args=e.map(function(e) {var n=this._parseArg(e);return n.literal||(t.static=!1),n},this),t},_parseArg:f unction(e){var t=e.trim().replace(/&comma;/g,",").replace(/\\(.)/g,"$1"),n={name :t},r=t[0];switch("-"===r&&(r=t[1]),r>="0"&&r<="9"&&(r="#"),r){case"'":case'"':n .value=t.slice(1,-1),n.literal=!0;break;case"#":n.value=Number(t),n.literal=!0}r eturn n.literal||(n.model=Polymer.Path.root(t),n.structured=Polymer.Path.isDeep( t),n.structured&&(n.wildcard=".*"==t.slice(-2),n.wildcard&&(n.name=t.slice(0,-2) ))),n},_marshalInstanceEffects:function(){Polymer.Bind.prepareInstance(this),thi s._bindListeners&&Polymer.Bind.setupBindListeners(this)},_applyEffectValue:funct ion(e,t){var n=this._nodes[e.index],r=e.name;if(t=this._computeFinalAnnotationVa lue(n,r,t,e),"attribute"==e.kind)this.serializeValueToAttribute(t,r,n);else{var s=n._propertyInfo&&n._propertyInfo[r];if(s&&s.readOnly)return;this.__setProperty (r,t,!1,n)}},_computeFinalAnnotationValue:function(e,t,n,r){if(r.negate&&(n=!n), r.isCompound){var s=e.__compoundStorage__[t];s[r.compoundIndex]=n,n=s.join("")}r eturn"attribute"!==r.kind&&("className"===t&&(n=this._scopeElementClass(e,n)),(" textContent"===t||"input"==e.localName&&"value"==t)&&(n=void 0==n?"":n)),n},_exe cuteStaticEffects:function(){this._propertyEffects&&this._propertyEffects.__stat ic__&&this._effectEffects("__static__",null,this._propertyEffects.__static__)}}) ,function(){var e=Polymer.Settings.usePolyfillProto;Polymer.Base._addFeature({_s etupConfigure:function(e){if(this._config={},this._handlers=[],this._aboveConfig =null,e)for(var t in e)void 0!==e[t]&&(this._config[t]=e[t])},_marshalAttributes :function(){this._takeAttributesToModel(this._config)},_attributeChangedImpl:fun ction(e){var t=this._clientsReadied?this:this._config;this._setAttributeToProper ty(t,e)},_configValue:function(e,t){var n=this._propertyInfo[e];n&&n.readOnly||( this._config[e]=t)},_beforeClientsReady:function(){this._configure()},_configure :function(){this._configureAnnotationReferences(),this._configureInstancePropert ies(),this._aboveConfig=this.mixin({},this._config);for(var e={},t=0;t<this.beha viors.length;t++)this._configureProperties(this.behaviors[t].properties,e);this. _configureProperties(this.properties,e),this.mixin(e,this._aboveConfig),this._co nfig=e,this._clients&&this._clients.length&&this._distributeConfig(this._config) },_configureInstanceProperties:function(){for(var t in this._propertyEffects)!e& &this.hasOwnProperty(t)&&(this._configValue(t,this[t]),
3 delete this[t])},_configureProperties:function(e,t){for(var n in e){var r=e[n];i f(void 0!==r.value){var s=r.value;"function"==typeof s&&(s=s.call(this,this._con fig)),t[n]=s}}},_distributeConfig:function(e){var t=this._propertyEffects;if(t)f or(var n in e){var r=t[n];if(r)for(var s,i=0,o=r.length;i<o&&(s=r[i]);i++)if("an notation"===s.kind){var a=this._nodes[s.effect.index],l=s.effect.propertyName,c= "attribute"==s.effect.kind,h=a._propertyEffects&&a._propertyEffects[l];if(a._con figValue&&(h||!c)){var u=n===s.effect.value?e[n]:this._get(s.effect.value,e);u=t his._computeFinalAnnotationValue(a,l,u,s.effect),c&&(u=a.deserialize(this.serial ize(u),a._propertyInfo[l].type)),a._configValue(l,u)}}}},_afterClientsReady:func tion(){this._executeStaticEffects(),this._applyConfig(this._config,this._aboveCo nfig),this._flushHandlers()},_applyConfig:function(e,t){for(var n in e)void 0=== this[n]&&this.__setProperty(n,e[n],n in t)},_notifyListener:function(e,t){if(!Po lymer.Bind._isEventBogus(t,t.target)){var n,r;if(t.detail&&(n=t.detail.value,r=t .detail.path),this._clientsReadied)return e.call(this,t.target,n,r);this._queueH andler([e,t.target,n,r])}},_queueHandler:function(e){this._handlers.push(e)},_fl ushHandlers:function(){for(var e,t=this._handlers,n=0,r=t.length;n<r&&(e=t[n]);n ++)e[0].call(this,e[1],e[2],e[3]);this._handlers=[]}})}(),function(){"use strict ";var e=Polymer.Path;Polymer.Base._addFeature({notifyPath:function(e,t,n){var r= {},s=this._get(e,this,r);1===arguments.length&&(t=s),r.path&&this._notifyPath(r. path,t,n)},_notifyPath:function(e,t,n){var r=this._propertySetter(e,t);if(r!==t& &(r===r||t===t))return this._pathEffector(e,t),n||this._notifyPathUp(e,t),!0},_g etPathParts:function(e){if(Array.isArray(e)){for(var t=[],n=0;n<e.length;n++)for (var r=e[n].toString().split("."),s=0;s<r.length;s++)t.push(r[s]);return t}retur n e.toString().split(".")},set:function(e,t,n){var r,s=n||this,i=this._getPathPa rts(e),o=i[i.length-1];if(i.length>1){for(var a=0;a<i.length-1;a++){var l=i[a];i f(r&&"#"==l[0]?s=Polymer.Collection.get(r).getItem(l):(s=s[l],r&&parseInt(l,10)= =l&&(i[a]=Polymer.Collection.get(r).getKey(s))),!s)return;r=Array.isArray(s)?s:n ull}if(r){var c,h,u=Polymer.Collection.get(r);"#"==o[0]?(h=o,c=u.getItem(h),o=r. indexOf(c),u.setItem(h,t)):parseInt(o,10)==o&&(c=s[o],h=u.getKey(c),i[a]=h,u.set Item(h,t))}s[o]=t,n||this._notifyPath(i.join("."),t)}else s[e]=t},get:function(e ,t){return this._get(e,t)},_get:function(e,t,n){for(var r,s=t||this,i=this._getP athParts(e),o=0;o<i.length;o++){if(!s)return;var a=i[o];r&&"#"==a[0]?s=Polymer.C ollection.get(r).getItem(a):(s=s[a],n&&r&&parseInt(a,10)==a&&(i[o]=Polymer.Colle ction.get(r).getKey(s))),r=Array.isArray(s)?s:null}return n&&(n.path=i.join(".") ),s},_pathEffector:function(t,n){var r=e.root(t),s=this._propertyEffects&&this._ propertyEffects[r];if(s)for(var i,o=0;o<s.length&&(i=s[o]);o++){var a=i.pathFn;a &&a.call(this,t,n,i.effect)}this._boundPaths&&this._notifyBoundPaths(t,n)},_anno tationPathEffect:function(t,n,r){if(e.matches(r.value,!1,t))Polymer.Bind._annota tionEffect.call(this,t,n,r);else if(!r.negate&&e.isDescendant(r.value,t)){var s= this._nodes[r.index];if(s&&s._notifyPath){var i=e.translate(r.value,r.name,t);s. _notifyPath(i,n,!0)}}},_complexObserverPathEffect:function(t,n,r){e.matches(r.tr igger.name,r.trigger.wildcard,t)&&Polymer.Bind._complexObserverEffect.call(this, t,n,r)},_computePathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wi ldcard,t)&&Polymer.Bind._computeEffect.call(this,t,n,r)},_annotatedComputationPa thEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer .Bind._annotatedComputationEffect.call(this,t,n,r)},linkPaths:function(e,t){this ._boundPaths=this._boundPaths||{},t?this._boundPaths[e]=t:this.unlinkPaths(e)},u nlinkPaths:function(e){this._boundPaths&&delete this._boundPaths[e]},_notifyBoun dPaths:function(t,n){for(var r in this._boundPaths){var s=this._boundPaths[r];e. isDescendant(r,t)?this._notifyPath(e.translate(r,s,t),n):e.isDescendant(s,t)&&th is._notifyPath(e.translate(s,r,t),n)}},_notifyPathUp:function(t,n){var r=e.root( t),s=Polymer.CaseMap.camelToDashCase(r),i=s+this._EVENT_CHANGED;this.fire(i,{pat h:t,value:n},{bubbles:!1,_useCache:!0})},_EVENT_CHANGED:"-changed",notifySplices :function(e,t){var n={},r=this._get(e,this,n);this._notifySplices(r,n.path,t)},_ notifySplices:function(e,t,n){var r={keySplices:Polymer.Collection.applySplices( e,n),indexSplices:n},s=t+".splices";this._notifyPath(s,r),this._notifyPath(t+".l ength",e.length),this.__data__[s]={keySplices:null,indexSplices:null}},_notifySp lice:function(e,t,n,r,s){this._notifySplices(e,t,[{index:n,addedCount:r,removed: s,object:e,type:"splice"}])},push:function(e){var t={},n=this._get(e,this,t),r=A rray.prototype.slice.call(arguments,1),s=n.length,i=n.push.apply(n,r);return r.l ength&&this._notifySplice(n,t.path,s,r.length,[]),i},pop:function(e){var t={},n= this._get(e,this,t),r=Boolean(n.length),s=Array.prototype.slice.call(arguments,1 ),i=n.pop.apply(n,s);return r&&this._notifySplice(n,t.path,n.length,0,[i]),i},sp lice:function(e,t){var n={},r=this._get(e,this,n);t=t<0?r.length-Math.floor(-t): Math.floor(t),t||(t=0);var s=Array.prototype.slice.call(arguments,1),i=r.splice. apply(r,s),o=Math.max(s.length-2,0);return(o||i.length)&&this._notifySplice(r,n. path,t,o,i),i},shift:function(e){var t={},n=this._get(e,this,t),r=Boolean(n.leng th),s=Array.prototype.slice.call(arguments,1),i=n.shift.apply(n,s);return r&&thi s._notifySplice(n,t.path,0,0,[i]),i},unshift:function(e){var t={},n=this._get(e, this,t),r=Array.prototype.slice.call(arguments,1),s=n.unshift.apply(n,r);return r.length&&this._notifySplice(n,t.path,0,r.length,[]),s},prepareModelNotifyPath:f unction(e){this.mixin(e,{fire:Polymer.Base.fire,_getEvent:Polymer.Base._getEvent ,__eventCache:Polymer.Base.__eventCache,notifyPath:Polymer.Base.notifyPath,_get: Polymer.Base._get,_EVENT_CHANGED:Polymer.Base._EVENT_CHANGED,_notifyPath:Polymer .Base._notifyPath,_notifyPathUp:Polymer.Base._notifyPathUp,_pathEffector:Polymer .Base._pathEffector,_annotationPathEffect:Polymer.Base._annotationPathEffect,_co mplexObserverPathEffect:Polymer.Base._complexObserverPathEffect,_annotatedComput ationPathEffect:Polymer.Base._annotatedComputationPathEffect,_computePathEffect: Polymer.Base._computePathEffect,_notifyBoundPaths:Polymer.Base._notifyBoundPaths ,_getPathParts:Polymer.Base._getPathParts})}})}(),Polymer.Base._addFeature({reso lveUrl:function(e){var t=Polymer.DomModule.import(this.is),n="";if(t){var r=t.ge tAttribute("assetpath")||"";n=Polymer.ResolveUrl.resolveUrl(r,t.ownerDocument.ba seURI)}return Polymer.ResolveUrl.resolveUrl(e,n)}}),Polymer.CssParse=function(){ return{parse:function(e){return e=this._clean(e),this._parseCss(this._lex(e),e)} ,_clean:function(e){return e.replace(this._rx.comments,"").replace(this._rx.port ,"")},_lex:function(e){for(var t={start:0,end:e.length},n=t,r=0,s=e.length;r<s;r ++)switch(e[r]){case this.OPEN_BRACE:n.rules||(n.rules=[]);var i=n,o=i.rules[i.r ules.length-1];n={start:r+1,parent:i,previous:o},i.rules.push(n);break;case this .CLOSE_BRACE:n.end=r+1,n=n.parent||t}return t},_parseCss:function(e,t){var n=t.s ubstring(e.start,e.end-1);if(e.parsedCssText=e.cssText=n.trim(),e.parent){var r= e.previous?e.previous.end:e.parent.start;n=t.substring(r,e.start-1),n=this._expa ndUnicodeEscapes(n),n=n.replace(this._rx.multipleSpaces," "),n=n.substring(n.las tIndexOf(";")+1);var s=e.parsedSelector=e.selector=n.trim();e.atRule=0===s.index Of(this.AT_START),e.atRule?0===s.indexOf(this.MEDIA_START)?e.type=this.types.MED IA_RULE:s.match(this._rx.keyframesRule)&&(e.type=this.types.KEYFRAMES_RULE,e.key framesName=e.selector.split(this._rx.multipleSpaces).pop()):0===s.indexOf(this.V AR_START)?e.type=this.types.MIXIN_RULE:e.type=this.types.STYLE_RULE}var i=e.rule s;if(i)for(var o,a=0,l=i.length;a<l&&(o=i[a]);a++)this._parseCss(o,t);return e}, _expandUnicodeEscapes:function(e){return e.replace(/\\([0-9a-f]{1,6})\s/gi,funct ion(){for(var e=arguments[1],t=6-e.length;t--;)e="0"+e;return"\\"+e})},stringify :function(e,t,n){n=n||"";var r="";if(e.cssText||e.rules){var s=e.rules;if(s&&!th is._hasMixinRules(s))for(var i,o=0,a=s.length;o<a&&(i=s[o]);o++)r=this.stringify (i,t,r);else r=t?e.cssText:this.removeCustomProps(e.cssText),r=r.trim(),r&&(r=" "+r+"\n")}return r&&(e.selector&&(n+=e.selector+" "+this.OPEN_BRACE+"\n"),n+=r, e.selector&&(n+=this.CLOSE_BRACE+"\n\n")),n},_hasMixinRules:function(e){return 0 ===e[0].selector.indexOf(this.VAR_START)},removeCustomProps:function(e){return e =this.removeCustomPropAssignment(e),this.removeCustomPropApply(e)},removeCustomP ropAssignment:function(e){return e.replace(this._rx.customProp,"").replace(this. _rx.mixinProp,"")},removeCustomPropApply:function(e){return e.replace(this._rx.m ixinApply,"").replace(this._rx.varApply,"")},types:{STYLE_RULE:1,KEYFRAMES_RULE: 7,MEDIA_RULE:4,MIXIN_RULE:1e3},OPEN_BRACE:"{",CLOSE_BRACE:"}",_rx:{comments:/\/\ *[^*]*\*+([^\/*][^*]*\*+)*\//gim,port:/@import[^;]*;/gim,customProp:/(?:^[^;\-\s }]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,mixinProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^ {};]*?{[^}]*?}(?:[;\n]|$)?/gim,mixinApply:/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/ gim,varApply:/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,keyframesRule:/^@[^\s]* keyframes/,multipleSpaces:/\s+/g},VAR_START:"--",MEDIA_START:"@media",AT_START:" @"}}(),Polymer.StyleUtil=function(){var e=Polymer.Settings;return{NATIVE_VARIABL ES:Polymer.Settings.useNativeCSSProperties,MODULE_STYLES_SELECTOR:"style, link[r el=import][type~=css], template",INCLUDE_ATTR:"include",toCssText:function(e,t){ return"string"==typeof e&&(e=this.parser.parse(e)),t&&this.forEachRule(e,t),this .parser.stringify(e,this.NATIVE_VARIABLES)},forRulesInStyles:function(e,t,n){if( e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);s++)this.forEachRuleInStyle(r,t,n)},for ActiveRulesInStyles:function(e,t,n){if(e)for(var r,s=0,i=e.length;s<i&&(r=e[s]); s++)this.forEachRuleInStyle(r,t,n,!0)},rulesForStyle:function(e){return!e.__cssR ules&&e.textContent&&(e.__cssRules=this.parser.parse(e.textContent)),e.__cssRule s},isKeyframesSelector:function(e){return e.parent&&e.parent.type===this.ruleTyp es.KEYFRAMES_RULE},forEachRuleInStyle:function(e,t,n,r){var s,i,o=this.rulesForS tyle(e);t&&(s=function(n){t(n,e)}),n&&(i=function(t){n(t,e)}),this.forEachRule(o ,s,i,r)},forEachRule:function(e,t,n,r){if(e){var s=!1;if(r&&e.type===this.ruleTy pes.MEDIA_RULE){var i=e.selector.match(this.rx.MEDIA_MATCH);i&&(window.matchMedi a(i[1]).matches||(s=!0))}e.type===this.ruleTypes.STYLE_RULE?t(e):n&&e.type===thi s.ruleTypes.KEYFRAMES_RULE?n(e):e.type===this.ruleTypes.MIXIN_RULE&&(s=!0);var o =e.rules;if(o&&!s)for(var a,l=0,c=o.length;l<c&&(a=o[l]);l++)this.forEachRule(a, t,n,r)}},applyCss:function(e,t,n,r){var s=this.createScopeStyle(e,t);return this .applyStyle(s,n,r)},applyStyle:function(e,t,n){t=t||document.head;var r=n&&n.nex tSibling||t.firstChild;return this.__lastHeadApplyNode=e,t.insertBefore(e,r)},cr eateScopeStyle:function(e,t){var n=document.createElement("style");return t&&n.s etAttribute("scope",t),n.textContent=e,n},__lastHeadApplyNode:null,applyStylePla ceHolder:function(e){var t=document.createComment(" Shady DOM styles for "+e+" " ),n=this.__lastHeadApplyNode?this.__lastHeadApplyNode.nextSibling:null,r=documen t.head;return r.insertBefore(t,n||r.firstChild),this.__lastHeadApplyNode=t,t},cs sFromModules:function(e,t){for(var n=e.trim().split(" "),r="",s=0;s<n.length;s++ )r+=this.cssFromModule(n[s],t);return r},cssFromModule:function(e,t){var n=Polym er.DomModule.import(e);return n&&!n._cssText&&(n._cssText=this.cssFromElement(n) ),!n&&t&&console.warn("Could not find style data in module named",e),n&&n._cssTe xt||""},cssFromElement:function(e){for(var t,n="",r=e.content||e,s=Polymer.TreeA pi.arrayCopy(r.querySelectorAll(this.MODULE_STYLES_SELECTOR)),i=0;i<s.length;i++ )if(t=s[i],"template"===t.localName)t.hasAttribute("preserve-content")||(n+=this .cssFromElement(t));else if("style"===t.localName){var o=t.getAttribute(this.INC LUDE_ATTR);o&&(n+=this.cssFromModules(o,!0)),t=t.__appliedElement||t,t.parentNod e.removeChild(t),n+=this.resolveCss(t.textContent,e.ownerDocument)}else t.import &&t.import.body&&(n+=this.resolveCss(t.import.body.textContent,t.import));return n},isTargetedBuild:function(t){return e.useNativeShadow?"shadow"===t:"shady"=== t},cssBuildTypeForModule:function(e){var t=Polymer.DomModule.import(e);if(t)retu rn this.getCssBuildType(t)},getCssBuildType:function(e){return e.getAttribute("c ss-build")},_findMatchingParen:function(e,t){for(var n=0,r=t,s=e.length;r<s;r++) switch(e[r]){case"(":n++;break;case")":if(0===--n)return r}return-1},processVari ableAndFallback:function(e,t){var n=e.indexOf("var(");if(n===-1)return t(e,"","" ,"");var r=this._findMatchingParen(e,n+3),s=e.substring(n+4,r),i=e.substring(0,n ),o=this.processVariableAndFallback(e.substring(r+1),t),a=s.indexOf(",");if(a=== -1)return t(i,s.trim(),"",o);var l=s.substring(0,a).trim(),c=s.substring(a+1).tr im();return t(i,l,c,o)},rx:{VAR_ASSIGN:/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:([^; {]*)|{([^}]*)})(?:(?=[;\s}])|$)/gi,MIXIN_MATCH:/(?:^|\W+)@apply\s*\(?([^);\n]*)\ )?/gi,VAR_CONSUMED:/(--[\w-]+)\s*([:,;)]|$)/gi,ANIMATION_MATCH:/(animation\s*:)| (animation-name\s*:)/,MEDIA_MATCH:/@media[^(]*(\([^)]*\))/,IS_VAR:/^--/,BRACKETE D:/\{[^}]*\}/g,HOST_PREFIX:"(?:^|[^.#[:])",HOST_SUFFIX:"($|[.:[\\s>+~])"},resolv eCss:Polymer.ResolveUrl.resolveCss,parser:Polymer.CssParse,ruleTypes:Polymer.Css Parse.types}}(),Polymer.StyleTransformer=function(){var e=Polymer.StyleUtil,t=Po lymer.Settings,n={dom:function(e,t,n,r){this._transformDom(e,t||"",n,r)},_transf ormDom:function(e,t,n,r){e.setAttribute&&this.element(e,t,n,r);for(var s=Polymer .dom(e).childNodes,i=0;i<s.length;i++)this._transformDom(s[i],t,n,r)},element:fu nction(e,t,n,s){if(n)s?e.removeAttribute(r):e.setAttribute(r,t);else if(t)if(e.c lassList)s?(e.classList.remove(r),e.classList.remove(t)):(e.classList.add(r),e.c lassList.add(t));else if(e.getAttribute){var i=e.getAttribute(g);s?i&&e.setAttri bute(g,i.replace(r,"").replace(t,"")):e.setAttribute(g,(i?i+" ":"")+r+" "+t)}},e lementStyles:function(n,r){var s,i=n._styles,o="",a=n.__cssBuild,l=t.useNativeSh adow||"shady"===a;if(l){var h=this;s=function(e){e.selector=h._slottedToContent( e.selector),e.selector=e.selector.replace(c,":host > *"),r&&r(e)}}for(var u,f=0, p=i.length;f<p&&(u=i[f]);f++){var _=e.rulesForStyle(u);o+=l?e.toCssText(_,s):thi s.css(_,n.is,n.extends,r,n._scopeCssViaAttr)+"\n\n"}return o.trim()},css:functio n(t,n,r,s,i){var o=this._calcHostScope(n,r);n=this._calcElementScope(n,i);var a= this;return e.toCssText(t,function(e){e.isScoped||(a.rule(e,n,o),e.isScoped=!0), s&&s(e,n,o)})},_calcElementScope:function(e,t){return e?t?m+e+y:d+e:""},_calcHos tScope:function(e,t){return t?"[is="+e+"]":e},rule:function(e,t,n){this._transfo rmRule(e,this._transformComplexSelector,t,n)},_transformRule:function(e,t,n,r){e .selector=e.transformedSelector=this._transformRuleCss(e,t,n,r)},_transformRuleC ss:function(t,n,r,s){var o=t.selector.split(i);if(!e.isKeyframesSelector(t))for( var a,l=0,c=o.length;l<c&&(a=o[l]);l++)o[l]=n.call(this,a,r,s);return o.join(i)} ,_transformComplexSelector:function(e,t,n){var r=!1,s=!1,a=this;return e=e.trim( ),e=this._slottedToContent(e),e=e.replace(c,":host > *"),e=e.replace(P,l+" $1"), e=e.replace(o,function(e,i,o){if(r)o=o.replace(_," ");else{var l=a._transformCom poundSelector(o,i,t,n);r=r||l.stop,s=s||l.hostContext,i=l.combinator,o=l.value}r eturn i+o}),s&&(e=e.replace(f,function(e,t,r,s){return t+r+" "+n+s+i+" "+t+n+r+s })),e},_transformCompoundSelector:function(e,t,n,r){var s=e.search(_),i=!1;e.ind exOf(u)>=0?i=!0:e.indexOf(l)>=0?e=this._transformHostSelector(e,r):0!==s&&(e=n?t his._transformSimpleSelector(e,n):e),e.indexOf(p)>=0&&(t="");var o;return s>=0&& (e=e.replace(_," "),o=!0),{value:e,combinator:t,stop:o,hostContext:i}},_transfor mSimpleSelector:function(e,t){var n=e.split(v);return n[0]+=t,n.join(v)},_transf ormHostSelector:function(e,t){var n=e.match(h),r=n&&n[2].trim()||"";if(r){if(r[0 ].match(a))return e.replace(h,function(e,n,r){return t+r});var s=r.split(a)[0];r eturn s===t?r:S}return e.replace(l,t)},documentRule:function(e){e.selector=e.par sedSelector,this.normalizeRootSelector(e),t.useNativeShadow||this._transformRule (e,this._transformDocumentSelector)},normalizeRootSelector:function(e){e.selecto r=e.selector.replace(c,"html")},_transformDocumentSelector:function(e){return e. match(_)?this._transformComplexSelector(e,s):this._transformSimpleSelector(e.tri m(),s)},_slottedToContent:function(e){return e.replace(C,p+"> $1")},SCOPE_NAME:" style-scope"},r=n.SCOPE_NAME,s=":not(["+r+"]):not(."+r+")",i=",",o=/(^|[\s>+~]+) ((?:\[.+?\]|[^\s>+~=\[])+)/g,a=/[[.:#*]/,l=":host",c=":root",h=/(:host)(?:\(((?: \([^)(]*\)|[^)(]*)+?)\))/,u=":host-context",f=/(.*)(?::host-context)(?:\(((?:\([ ^)(]*\)|[^)(]*)+?)\))(.*)/,p="::content",_=/::content|::shadow|\/deep\//,d=".",m ="["+r+"~=",y="]",v=":",g="class",P=new RegExp("^("+p+")"),S="should_not_match", C=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/g;return n}(),Polymer.StyleExt ends=function(){var e=Polymer.StyleUtil;return{hasExtends:function(e){return Boo lean(e.match(this.rx.EXTEND))},transform:function(t){var n=e.rulesForStyle(t),r= this;return e.forEachRule(n,function(e){if(r._mapRuleOntoParent(e),e.parent)for( var t;t=r.rx.EXTEND.exec(e.cssText);){var n=t[1],s=r._findExtendor(n,e);s&&r._ex tendRule(e,s)}e.cssText=e.cssText.replace(r.rx.EXTEND,"")}),e.toCssText(n,functi on(e){e.selector.match(r.rx.STRIP)&&(e.cssText="")},!0)},_mapRuleOntoParent:func tion(e){if(e.parent){for(var t,n=e.parent.map||(e.parent.map={}),r=e.selector.sp lit(","),s=0;s<r.length;s++)t=r[s],n[t.trim()]=e;return n}},_findExtendor:functi on(e,t){return t.parent&&t.parent.map&&t.parent.map[e]||this._findExtendor(e,t.p arent)},_extendRule:function(e,t){e.parent!==t.parent&&this._cloneAndAddRuleToPa rent(t,e.parent),e.extends=e.extends||[],e.extends.push(t),t.selector=t.selector .replace(this.rx.STRIP,""),t.selector=(t.selector&&t.selector+",\n")+e.selector, t.extends&&t.extends.forEach(function(t){this._extendRule(e,t)},this)},_cloneAnd AddRuleToParent:function(e,t){e=Object.create(e),e.parent=t,e.extends&&(e.extend s=e.extends.slice()),t.rules.push(e)},rx:{EXTEND:/@extends\(([^)]*)\)\s*?;/gim,S TRIP:/%[^,]*$/}}}(),Polymer.ApplyShim=function(){"use strict";function e(e,t){e= e.trim(),m[e]={properties:t,dependants:{}}}function t(e){return e=e.trim(),m[e]} function n(e,t){var n=_.exec(t);return n&&(t=n[1]?y._getInitialValueForProperty( e):"apply-shim-inherit"),t}function r(e){for(var t,r,s,i,o=e.split(";"),a={},l=0 ;l<o.length;l++)s=o[l],s&&(i=s.split(":"),i.length>1&&(t=i[0].trim(),r=n(t,i.sli ce(1).join(":")),a[t]=r));return a}function s(e){var t=y.__currentElementProto,n =t&&t.is;for(var r in e.dependants)r!==n&&(e.dependants[r].__applyShimInvalid=!0 )}function i(n,i,o,a){if(o&&c.processVariableAndFallback(o,function(e,n){n&&t(n) &&(a="@apply "+n+";")}),!a)return n;var h=l(a),u=n.slice(0,n.indexOf("--")),f=r( h),p=f,_=t(i),m=_&&_.properties;m?(p=Object.create(m),p=Polymer.Base.mixin(p,f)) :e(i,p);var y,v,g=[],P=!1;for(y in p)v=f[y],void 0===v&&(v="initial"),!m||y in m ||(P=!0),g.push(i+d+y+": "+v);return P&&s(_),_&&(_.properties=p),o&&(u=n+";"+u), u+g.join("; ")+";"}function o(e,t,n){return"var("+t+",var("+n+"))"}function a(n, r){n=n.replace(p,"");var s=[],i=t(n);if(i||(e(n,{}),i=t(n)),i){var o=y.__current ElementProto;o&&(i.dependants[o.is]=o);var a,l,c;for(a in i.properties)c=r&&r[a] ,l=[a,": var(",n,d,a],c&&l.push(",",c),l.push(")"),s.push(l.join(""))}return s.j oin("; ")}function l(e){for(var t;t=h.exec(e);){var n=t[0],s=t[1],i=t.index,o=i+ n.indexOf("@apply"),l=i+n.length,c=e.slice(0,o),u=e.slice(l),f=r(c),p=a(s,f);e=[ c,p,u].join(""),h.lastIndex=i+p.length}return e}var c=Polymer.StyleUtil,h=c.rx.M IXIN_MATCH,u=c.rx.VAR_ASSIGN,f=/var\(\s*(--[^,]*),\s*(--[^)]*)\)/g,p=/;\s*/m,_=/ ^\s*(initial)|(inherit)\s*$/,d="_-_",m={},y={_measureElement:null,_map:m,_separa tor:d,transform:function(e,t){this.__currentElementProto=t,c.forRulesInStyles(e, this._boundFindDefinitions),c.forRulesInStyles(e,this._boundFindApplications),t& &(t.__applyShimInvalid=!1),this.__currentElementProto=null},_findDefinitions:fun ction(e){var t=e.parsedCssText;t=t.replace(f,o),t=t.replace(u,i),e.cssText=t,":r oot"===e.selector&&(e.selector=":host > *")},_findApplications:function(e){e.css Text=l(e.cssText)},transformRule:function(e){this._findDefinitions(e),this._find Applications(e)},_getInitialValueForProperty:function(e){return this._measureEle ment||(this._measureElement=document.createElement("meta"),this._measureElement. style.all="initial",document.head.appendChild(this._measureElement)),window.getC omputedStyle(this._measureElement).getPropertyValue(e)}};return y._boundTransfor mRule=y.transformRule.bind(y),y._boundFindDefinitions=y._findDefinitions.bind(y) ,y._boundFindApplications=y._findApplications.bind(y),y}(),function(){var e=Poly mer.Base._prepElement,t=Polymer.Settings.useNativeShadow,n=Polymer.StyleUtil,r=P olymer.StyleTransformer,s=Polymer.StyleExtends,i=Polymer.ApplyShim,o=Polymer.Set tings;Polymer.Base._addFeature({_prepElement:function(t){this._encapsulateStyle& &"shady"!==this.__cssBuild&&r.element(t,this.is,this._scopeCssViaAttr),e.call(th is,t)},_prepStyles:function(){void 0===this._encapsulateStyle&&(this._encapsulat eStyle=!t),t||(this._scopeStyle=n.applyStylePlaceHolder(this.is)),this.__cssBuil d=n.cssBuildTypeForModule(this.is)},_prepShimStyles:function(){if(this._template ){var e=n.isTargetedBuild(this.__cssBuild);if(o.useNativeCSSProperties&&"shadow" ===this.__cssBuild&&e)return;this._styles=this._styles||this._collectStyles(),o. useNativeCSSProperties&&!this.__cssBuild&&i.transform(this._styles,this);var s=o .useNativeCSSProperties&&e?this._styles.length&&this._styles[0].textContent.trim ():r.elementStyles(this);this._prepStyleProperties(),!this._needsStyleProperties ()&&s&&n.applyCss(s,this.is,t?this._template.content:null,this._scopeStyle)}else this._styles=[]},_collectStyles:function(){var e=[],t="",r=this.styleModules;if (r)for(var i,o=0,a=r.length;o<a&&(i=r[o]);o++)t+=n.cssFromModule(i);t+=n.cssFrom Module(this.is);var l=this._template&&this._template.parentNode;if(!this._templa te||l&&l.id.toLowerCase()===this.is||(t+=n.cssFromElement(this._template)),t){va r c=document.createElement("style");c.textContent=t,s.hasExtends(c.textContent)& &(t=s.transform(c)),e.push(c)}return e},_elementAdd:function(e){this._encapsulat eStyle&&(e.__styleScoped?e.__styleScoped=!1:r.dom(e,this.is,this._scopeCssViaAtt r))},_elementRemove:function(e){this._encapsulateStyle&&r.dom(e,this.is,this._sc opeCssViaAttr,!0)},scopeSubtree:function(e,n){if(!t){var r=this,s=function(e){if (e.nodeType===Node.ELEMENT_NODE){var t=e.getAttribute("class");e.setAttribute("c lass",r._scopeElementClass(e,t));for(var n,s=e.querySelectorAll("*"),i=0;i<s.len gth&&(n=s[i]);i++)t=n.getAttribute("class"),n.setAttribute("class",r._scopeEleme ntClass(n,t))}};if(s(e),n){var i=new MutationObserver(function(e){for(var t,n=0; n<e.length&&(t=e[n]);n++)if(t.addedNodes)for(var r=0;r<t.addedNodes.length;r++)s (t.addedNodes[r])});return i.observe(e,{childList:!0,subtree:!0}),i}}}})}(),Poly mer.StyleProperties=function(){"use strict";function e(e,t){var n=parseInt(e/32) ,r=1<<e%32;t[n]=(t[n]||0)|r}var t=Polymer.DomApi.matchesSelector,n=Polymer.Style Util,r=Polymer.StyleTransformer,s=navigator.userAgent.match("Trident"),i=Polymer .Settings;return{decorateStyles:function(e,t){var s=this,i={},o=[],a=0,l=r._calc HostScope(t.is,t.extends);n.forRulesInStyles(e,function(e,r){s.decorateRule(e),e .index=a++,s.whenHostOrRootRule(t,e,r,function(r){if(e.parent.type===n.ruleTypes .MEDIA_RULE&&(t.__notStyleScopeCacheable=!0),r.isHost){var s=r.selector.split(" ").some(function(e){return 0===e.indexOf(l)&&e.length!==l.length});t.__notStyleS copeCacheable=t.__notStyleScopeCacheable||s}}),s.collectPropertiesInCssText(e.pr opertyInfo.cssText,i)},function(e){o.push(e)}),e._keyframes=o;var c=[];for(var h in i)c.push(h);return c},decorateRule:function(e){if(e.propertyInfo)return e.pr opertyInfo;var t={},n={},r=this.collectProperties(e,n);return r&&(t.properties=n ,e.rules=null),t.cssText=this.collectCssText(e),e.propertyInfo=t,t},collectPrope rties:function(e,t){var n=e.propertyInfo;if(!n){for(var r,s,i,o=this.rx.VAR_ASSI GN,a=e.parsedCssText;r=o.exec(a);)s=(r[2]||r[3]).trim(),"inherit"!==s&&(t[r[1].t rim()]=s),i=!0;return i}if(n.properties)return Polymer.Base.mixin(t,n.properties ),!0},collectCssText:function(e){return this.collectConsumingCssText(e.parsedCss Text)},collectConsumingCssText:function(e){return e.replace(this.rx.BRACKETED,"" ).replace(this.rx.VAR_ASSIGN,"")},collectPropertiesInCssText:function(e,t){for(v ar n;n=this.rx.VAR_CONSUMED.exec(e);){var r=n[1];":"!==n[2]&&(t[r]=!0)}},reify:f unction(e){for(var t,n=Object.getOwnPropertyNames(e),r=0;r<n.length;r++)t=n[r],e [t]=this.valueForProperty(e[t],e)},valueForProperty:function(e,t){if(e)if(e.inde xOf(";")>=0)e=this.valueForProperties(e,t);else{var r=this,s=function(e,n,s,i){v ar o=r.valueForProperty(t[n],t);return o&&"initial"!==o?"apply-shim-inherit"===o &&(o="inherit"):o=r.valueForProperty(t[s]||s,t)||s,e+(o||"")+i};e=n.processVaria bleAndFallback(e,s)}return e&&e.trim()||""},valueForProperties:function(e,t){for (var n,r,s=e.split(";"),i=0;i<s.length;i++)if(n=s[i]){if(this.rx.MIXIN_MATCH.las tIndex=0,r=this.rx.MIXIN_MATCH.exec(n))n=this.valueForProperty(t[r[1]],t);else{v ar o=n.indexOf(":");if(o!==-1){var a=n.substring(o);a=a.trim(),a=this.valueForPr operty(a,t)||a,n=n.substring(0,o)+a}}s[i]=n&&n.lastIndexOf(";")===n.length-1?n.s lice(0,-1):n||""}return s.join(";")},applyProperties:function(e,t){var n="";e.pr opertyInfo||this.decorateRule(e),e.propertyInfo.cssText&&(n=this.valueForPropert ies(e.propertyInfo.cssText,t)),e.cssText=n},applyKeyframeTransforms:function(e,t ){var n=e.cssText,r=e.cssText;if(null==e.hasAnimations&&(e.hasAnimations=this.rx .ANIMATION_MATCH.test(n)),e.hasAnimations){var s;if(null==e.keyframeNamesToTrans form){e.keyframeNamesToTransform=[];for(var i in t)s=t[i],r=s(n),n!==r&&(n=r,e.k eyframeNamesToTransform.push(i))}else{for(var o=0;o<e.keyframeNamesToTransform.l ength;++o)s=t[e.keyframeNamesToTransform[o]],n=s(n);r=n}}e.cssText=r},propertyDa taFromStyles:function(r,s){var i={},o=this,a=[];return n.forActiveRulesInStyles( r,function(n){n.propertyInfo||o.decorateRule(n);var r=n.transformedSelector||n.p arsedSelector;s&&n.propertyInfo.properties&&r&&t.call(s,r)&&(o.collectProperties (n,i),e(n.index,a))}),{properties:i,key:a}},_rootSelector:/:root|:host\s*>\s*\*/ ,_checkRoot:function(e,t){return Boolean(t.match(this._rootSelector))||"html"=== e&&t.indexOf("html")>-1},whenHostOrRootRule:function(e,t,n,s){if(t.propertyInfo| |self.decorateRule(t),t.propertyInfo.properties){var o=e.is?r._calcHostScope(e.i s,e.extends):"html",a=t.parsedSelector,l=this._checkRoot(o,a),c=!l&&0===a.indexO f(":host"),h=e.__cssBuild||n.__cssBuild;if("shady"===h&&(l=a===o+" > *."+o||a.in dexOf("html")>-1,c=!l&&0===a.indexOf(o)),l||c){var u=o;c&&(i.useNativeShadow&&!t .transformedSelector&&(t.transformedSelector=r._transformRuleCss(t,r._transformC omplexSelector,e.is,o)),u=t.transformedSelector||t.parsedSelector),l&&"html"===o &&(u=t.transformedSelector||t.parsedSelector),s({selector:u,isHost:c,isRoot:l})} }},hostAndRootPropertiesForScope:function(e){var r={},s={},i=this;return n.forAc tiveRulesInStyles(e._styles,function(n,o){i.whenHostOrRootRule(e,n,o,function(o) {var a=e._element||e;t.call(a,o.selector)&&(o.isHost?i.collectProperties(n,r):i. collectProperties(n,s))})}),{rootProps:s,hostProps:r}},transformStyles:function( e,t,n){var s=this,o=r._calcHostScope(e.is,e.extends),a=e.extends?"\\"+o.slice(0, -1)+"\\]":o,l=new RegExp(this.rx.HOST_PREFIX+a+this.rx.HOST_SUFFIX),c=this._elem entKeyframeTransforms(e,n);return r.elementStyles(e,function(r){s.applyPropertie s(r,t),i.useNativeShadow||Polymer.StyleUtil.isKeyframesSelector(r)||!r.cssText|| (s.applyKeyframeTransforms(r,c),s._scopeSelector(r,l,o,e._scopeCssViaAttr,n))})} ,_elementKeyframeTransforms:function(e,t){var n=e._styles._keyframes,r={};if(!i. useNativeShadow&&n)for(var s=0,o=n[s];s<n.length;o=n[++s])this._scopeKeyframes(o ,t),r[o.keyframesName]=this._keyframesRuleTransformer(o);return r},_keyframesRul eTransformer:function(e){return function(t){return t.replace(e.keyframesNameRx,e .transformedKeyframesName)}},_scopeKeyframes:function(e,t){e.keyframesNameRx=new RegExp(e.keyframesName,"g"),e.transformedKeyframesName=e.keyframesName+"-"+t,e. transformedSelector=e.transformedSelector||e.selector,e.selector=e.transformedSe lector.replace(e.keyframesName,e.transformedKeyframesName)},_scopeSelector:funct ion(e,t,n,s,i){e.transformedSelector=e.transformedSelector||e.selector;for(var o ,a=e.transformedSelector,l=s?"["+r.SCOPE_NAME+"~="+i+"]":"."+i,c=a.split(","),h= 0,u=c.length;h<u&&(o=c[h]);h++)c[h]=o.match(t)?o.replace(n,l):l+" "+o;e.selector =c.join(",")},applyElementScopeSelector:function(e,t,n,s){var i=s?e.getAttribute (r.SCOPE_NAME):e.getAttribute("class")||"",o=n?i.replace(n,t):(i?i+" ":"")+this. XSCOPE_NAME+" "+t;i!==o&&(s?e.setAttribute(r.SCOPE_NAME,o):e.setAttribute("class ",o))},applyElementStyle:function(e,t,r,o){var a=o?o.textContent||"":this.transf ormStyles(e,t,r),l=e._customStyle;return l&&!i.useNativeShadow&&l!==o&&(l._useCo unt--,l._useCount<=0&&l.parentNode&&l.parentNode.removeChild(l)),i.useNativeShad ow?e._customStyle?(e._customStyle.textContent=a,o=e._customStyle):a&&(o=n.applyC ss(a,r,e.root,e._scopeStyle)):o?o.parentNode||(s&&a.indexOf("@media")>-1&&(o.tex tContent=a),n.applyStyle(o,null,e._scopeStyle)):a&&(o=n.applyCss(a,r,null,e._sco peStyle)),o&&(o._useCount=o._useCount||0,e._customStyle!=o&&o._useCount++,e._cus tomStyle=o),o},mixinCustomStyle:function(e,t){var n;for(var r in t)n=t[r],(n||0= ==n)&&(e[r]=n)},updateNativeStyleProperties:function(e,t){var n=e.__customStyleP roperties;if(n)for(var r=0;r<n.length;r++)e.style.removeProperty(n[r]);var s=[]; for(var i in t)null!==t[i]&&(e.style.setProperty(i,t[i]),s.push(i));e.__customSt yleProperties=s},rx:n.rx,XSCOPE_NAME:"x-scope"}}(),function(){Polymer.StyleCache =function(){this.cache={}},Polymer.StyleCache.prototype={MAX:100,store:function( e,t,n,r){t.keyValues=n,t.styles=r;var s=this.cache[e]=this.cache[e]||[];s.push(t ),s.length>this.MAX&&s.shift()},retrieve:function(e,t,n){var r=this.cache[e];if( r)for(var s,i=r.length-1;i>=0;i--)if(s=r[i],n===s.styles&&this._objectsEqual(t,s .keyValues))return s},clear:function(){this.cache={}},_objectsEqual:function(e,t ){var n,r;for(var s in e)if(n=e[s],r=t[s],!("object"==typeof n&&n?this._objectsS trictlyEqual(n,r):n===r))return!1;return!Array.isArray(e)||e.length===t.length}, _objectsStrictlyEqual:function(e,t){return this._objectsEqual(e,t)&&this._object sEqual(t,e)}}}(),Polymer.StyleDefaults=function(){var e=Polymer.StyleProperties, t=Polymer.StyleCache,n=Polymer.Settings.useNativeCSSProperties,r={_styles:[],_pr operties:null,customStyle:{},_styleCache:new t,_element:Polymer.DomApi.wrap(docu ment.documentElement),addStyle:function(e){this._styles.push(e),this._properties =null},get _styleProperties(){return this._properties||(e.decorateStyles(this._s tyles,this),this._styles._scopeStyleProperties=null,this._properties=e.hostAndRo otPropertiesForScope(this).rootProps,e.mixinCustomStyle(this._properties,this.cu stomStyle),e.reify(this._properties)),this._properties},hasStyleProperties:funct ion(){return Boolean(this._properties)},_needsStyleProperties:function(){},_comp uteStyleProperties:function(){return this._styleProperties},updateStyles:functio n(t){this._properties=null,t&&Polymer.Base.mixin(this.customStyle,t),this._style Cache.clear();for(var r,s=0;s<this._styles.length;s++)r=this._styles[s],r=r.__im portElement||r,r._apply();n&&e.updateNativeStyleProperties(document.documentElem ent,this.customStyle)}};return r}(),function(){"use strict";var e=Polymer.Base.s erializeValueToAttribute,t=Polymer.StyleProperties,n=Polymer.StyleTransformer,r= Polymer.StyleDefaults,s=Polymer.Settings.useNativeShadow,i=Polymer.Settings.useN ativeCSSProperties;Polymer.Base._addFeature({_prepStyleProperties:function(){i|| (this._ownStylePropertyNames=this._styles&&this._styles.length?t.decorateStyles( this._styles,this):null); 3 delete this[t])},_configureProperties:function(e,t){for(var n in e){var r=e[n];i f(void 0!==r.value){var s=r.value;"function"==typeof s&&(s=s.call(this,this._con fig)),t[n]=s}}},_distributeConfig:function(e){var t=this._propertyEffects;if(t)f or(var n in e){var r=t[n];if(r)for(var s,i=0,o=r.length;i<o&&(s=r[i]);i++)if("an notation"===s.kind){var a=this._nodes[s.effect.index],l=s.effect.propertyName,c= "attribute"==s.effect.kind,h=a._propertyEffects&&a._propertyEffects[l];if(a._con figValue&&(h||!c)){var u=n===s.effect.value?e[n]:this._get(s.effect.value,e);u=t his._computeFinalAnnotationValue(a,l,u,s.effect),c&&(u=a.deserialize(this.serial ize(u),a._propertyInfo[l].type)),a._configValue(l,u)}}}},_afterClientsReady:func tion(){this._executeStaticEffects(),this._applyConfig(this._config,this._aboveCo nfig),this._flushHandlers()},_applyConfig:function(e,t){for(var n in e)void 0=== this[n]&&this.__setProperty(n,e[n],n in t)},_notifyListener:function(e,t){if(!Po lymer.Bind._isEventBogus(t,t.target)){var n,r;if(t.detail&&(n=t.detail.value,r=t .detail.path),this._clientsReadied)return e.call(this,t.target,n,r);this._queueH andler([e,t.target,n,r])}},_queueHandler:function(e){this._handlers.push(e)},_fl ushHandlers:function(){for(var e,t=this._handlers,n=0,r=t.length;n<r&&(e=t[n]);n ++)e[0].call(this,e[1],e[2],e[3]);this._handlers=[]}})}(),function(){"use strict ";var e=Polymer.Path;Polymer.Base._addFeature({notifyPath:function(e,t,n){var r= {},s=this._get(e,this,r);1===arguments.length&&(t=s),r.path&&this._notifyPath(r. path,t,n)},_notifyPath:function(e,t,n){var r=this._propertySetter(e,t);if(r!==t& &(r===r||t===t))return this._pathEffector(e,t),n||this._notifyPathUp(e,t),!0},_g etPathParts:function(e){if(Array.isArray(e)){for(var t=[],n=0;n<e.length;n++)for (var r=e[n].toString().split("."),s=0;s<r.length;s++)t.push(r[s]);return t}retur n e.toString().split(".")},set:function(e,t,n){var r,s=n||this,i=this._getPathPa rts(e),o=i[i.length-1];if(i.length>1){for(var a=0;a<i.length-1;a++){var l=i[a];i f(r&&"#"==l[0]?s=Polymer.Collection.get(r).getItem(l):(s=s[l],r&&parseInt(l,10)= =l&&(i[a]=Polymer.Collection.get(r).getKey(s))),!s)return;r=Array.isArray(s)?s:n ull}if(r){var c,h,u=Polymer.Collection.get(r);"#"==o[0]?(h=o,c=u.getItem(h),o=r. indexOf(c),u.setItem(h,t)):parseInt(o,10)==o&&(c=s[o],h=u.getKey(c),i[a]=h,u.set Item(h,t))}s[o]=t,n||this._notifyPath(i.join("."),t)}else s[e]=t},get:function(e ,t){return this._get(e,t)},_get:function(e,t,n){for(var r,s=t||this,i=this._getP athParts(e),o=0;o<i.length;o++){if(!s)return;var a=i[o];r&&"#"==a[0]?s=Polymer.C ollection.get(r).getItem(a):(s=s[a],n&&r&&parseInt(a,10)==a&&(i[o]=Polymer.Colle ction.get(r).getKey(s))),r=Array.isArray(s)?s:null}return n&&(n.path=i.join(".") ),s},_pathEffector:function(t,n){var r=e.root(t),s=this._propertyEffects&&this._ propertyEffects[r];if(s)for(var i,o=0;o<s.length&&(i=s[o]);o++){var a=i.pathFn;a &&a.call(this,t,n,i.effect)}this._boundPaths&&this._notifyBoundPaths(t,n)},_anno tationPathEffect:function(t,n,r){if(e.matches(r.value,!1,t))Polymer.Bind._annota tionEffect.call(this,t,n,r);else if(!r.negate&&e.isDescendant(r.value,t)){var s= this._nodes[r.index];if(s&&s._notifyPath){var i=e.translate(r.value,r.name,t);s. _notifyPath(i,n,!0)}}},_complexObserverPathEffect:function(t,n,r){e.matches(r.tr igger.name,r.trigger.wildcard,t)&&Polymer.Bind._complexObserverEffect.call(this, t,n,r)},_computePathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wi ldcard,t)&&Polymer.Bind._computeEffect.call(this,t,n,r)},_annotatedComputationPa thEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer .Bind._annotatedComputationEffect.call(this,t,n,r)},linkPaths:function(e,t){this ._boundPaths=this._boundPaths||{},t?this._boundPaths[e]=t:this.unlinkPaths(e)},u nlinkPaths:function(e){this._boundPaths&&delete this._boundPaths[e]},_notifyBoun dPaths:function(t,n){for(var r in this._boundPaths){var s=this._boundPaths[r];e. isDescendant(r,t)?this._notifyPath(e.translate(r,s,t),n):e.isDescendant(s,t)&&th is._notifyPath(e.translate(s,r,t),n)}},_notifyPathUp:function(t,n){var r=e.root( t),s=Polymer.CaseMap.camelToDashCase(r),i=s+this._EVENT_CHANGED;this.fire(i,{pat h:t,value:n},{bubbles:!1,_useCache:!0})},_EVENT_CHANGED:"-changed",notifySplices :function(e,t){var n={},r=this._get(e,this,n);this._notifySplices(r,n.path,t)},_ notifySplices:function(e,t,n){var r={keySplices:Polymer.Collection.applySplices( e,n),indexSplices:n},s=t+".splices";this._notifyPath(s,r),this._notifyPath(t+".l ength",e.length),this.__data__[s]={keySplices:null,indexSplices:null}},_notifySp lice:function(e,t,n,r,s){this._notifySplices(e,t,[{index:n,addedCount:r,removed: s,object:e,type:"splice"}])},push:function(e){var t={},n=this._get(e,this,t),r=A rray.prototype.slice.call(arguments,1),s=n.length,i=n.push.apply(n,r);return r.l ength&&this._notifySplice(n,t.path,s,r.length,[]),i},pop:function(e){var t={},n= this._get(e,this,t),r=Boolean(n.length),s=Array.prototype.slice.call(arguments,1 ),i=n.pop.apply(n,s);return r&&this._notifySplice(n,t.path,n.length,0,[i]),i},sp lice:function(e,t){var n={},r=this._get(e,this,n);t=t<0?r.length-Math.floor(-t): Math.floor(t),t||(t=0);var s=Array.prototype.slice.call(arguments,1),i=r.splice. apply(r,s),o=Math.max(s.length-2,0);return(o||i.length)&&this._notifySplice(r,n. path,t,o,i),i},shift:function(e){var t={},n=this._get(e,this,t),r=Boolean(n.leng th),s=Array.prototype.slice.call(arguments,1),i=n.shift.apply(n,s);return r&&thi s._notifySplice(n,t.path,0,0,[i]),i},unshift:function(e){var t={},n=this._get(e, this,t),r=Array.prototype.slice.call(arguments,1),s=n.unshift.apply(n,r);return r.length&&this._notifySplice(n,t.path,0,r.length,[]),s},prepareModelNotifyPath:f unction(e){this.mixin(e,{fire:Polymer.Base.fire,_getEvent:Polymer.Base._getEvent ,__eventCache:Polymer.Base.__eventCache,notifyPath:Polymer.Base.notifyPath,_get: Polymer.Base._get,_EVENT_CHANGED:Polymer.Base._EVENT_CHANGED,_notifyPath:Polymer .Base._notifyPath,_notifyPathUp:Polymer.Base._notifyPathUp,_pathEffector:Polymer .Base._pathEffector,_annotationPathEffect:Polymer.Base._annotationPathEffect,_co mplexObserverPathEffect:Polymer.Base._complexObserverPathEffect,_annotatedComput ationPathEffect:Polymer.Base._annotatedComputationPathEffect,_computePathEffect: Polymer.Base._computePathEffect,_notifyBoundPaths:Polymer.Base._notifyBoundPaths ,_getPathParts:Polymer.Base._getPathParts})}})}(),Polymer.Base._addFeature({reso lveUrl:function(e){var t=Polymer.DomModule.import(this.is),n="";if(t){var r=t.ge tAttribute("assetpath")||"";n=Polymer.ResolveUrl.resolveUrl(r,t.ownerDocument.ba seURI)}return Polymer.ResolveUrl.resolveUrl(e,n)}}),Polymer.CssParse=function(){ return{parse:function(e){return e=this._clean(e),this._parseCss(this._lex(e),e)} ,_clean:function(e){return e.replace(this._rx.comments,"").replace(this._rx.port ,"")},_lex:function(e){for(var t={start:0,end:e.length},n=t,r=0,s=e.length;r<s;r ++)switch(e[r]){case this.OPEN_BRACE:n.rules||(n.rules=[]);var i=n,o=i.rules[i.r ules.length-1];n={start:r+1,parent:i,previous:o},i.rules.push(n);break;case this .CLOSE_BRACE:n.end=r+1,n=n.parent||t}return t},_parseCss:function(e,t){var n=t.s ubstring(e.start,e.end-1);if(e.parsedCssText=e.cssText=n.trim(),e.parent){var r= e.previous?e.previous.end:e.parent.start;n=t.substring(r,e.start-1),n=this._expa ndUnicodeEscapes(n),n=n.replace(this._rx.multipleSpaces," "),n=n.substring(n.las tIndexOf(";")+1);var s=e.parsedSelector=e.selector=n.trim();e.atRule=0===s.index Of(this.AT_START),e.atRule?0===s.indexOf(this.MEDIA_START)?e.type=this.types.MED IA_RULE:s.match(this._rx.keyframesRule)&&(e.type=this.types.KEYFRAMES_RULE,e.key framesName=e.selector.split(this._rx.multipleSpaces).pop()):0===s.indexOf(this.V AR_START)?e.type=this.types.MIXIN_RULE:e.type=this.types.STYLE_RULE}var i=e.rule s;if(i)for(var o,a=0,l=i.length;a<l&&(o=i[a]);a++)this._parseCss(o,t);return e}, _expandUnicodeEscapes:function(e){return e.replace(/\\([0-9a-f]{1,6})\s/gi,funct ion(){for(var e=arguments[1],t=6-e.length;t--;)e="0"+e;return"\\"+e})},stringify :function(e,t,n){n=n||"";var r="";if(e.cssText||e.rules){var s=e.rules;if(s&&!th is._hasMixinRules(s))for(var i,o=0,a=s.length;o<a&&(i=s[o]);o++)r=this.stringify (i,t,r);else r=t?e.cssText:this.removeCustomProps(e.cssText),r=r.trim(),r&&(r=" "+r+"\n")}return r&&(e.selector&&(n+=e.selector+" "+this.OPEN_BRACE+"\n"),n+=r, e.selector&&(n+=this.CLOSE_BRACE+"\n\n")),n},_hasMixinRules:function(e){return 0 ===e[0].selector.indexOf(this.VAR_START)},removeCustomProps:function(e){return e =this.removeCustomPropAssignment(e),this.removeCustomPropApply(e)},removeCustomP ropAssignment:function(e){return e.replace(this._rx.customProp,"").replace(this. _rx.mixinProp,"")},removeCustomPropApply:function(e){return e.replace(this._rx.m ixinApply,"").replace(this._rx.varApply,"")},types:{STYLE_RULE:1,KEYFRAMES_RULE: 7,MEDIA_RULE:4,MIXIN_RULE:1e3},OPEN_BRACE:"{",CLOSE_BRACE:"}",_rx:{comments:/\/\ *[^*]*\*+([^\/*][^*]*\*+)*\//gim,port:/@import[^;]*;/gim,customProp:/(?:^[^;\-\s }]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,mixinProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^ {};]*?{[^}]*?}(?:[;\n]|$)?/gim,mixinApply:/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/ gim,varApply:/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,keyframesRule:/^@[^\s]* keyframes/,multipleSpaces:/\s+/g},VAR_START:"--",MEDIA_START:"@media",AT_START:" @"}}(),Polymer.StyleUtil=function(){var e=Polymer.Settings;return{NATIVE_VARIABL ES:Polymer.Settings.useNativeCSSProperties,MODULE_STYLES_SELECTOR:"style, link[r el=import][type~=css], template",INCLUDE_ATTR:"include",toCssText:function(e,t){ return"string"==typeof e&&(e=this.parser.parse(e)),t&&this.forEachRule(e,t),this .parser.stringify(e,this.NATIVE_VARIABLES)},forRulesInStyles:function(e,t,n){if( e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);s++)this.forEachRuleInStyle(r,t,n)},for ActiveRulesInStyles:function(e,t,n){if(e)for(var r,s=0,i=e.length;s<i&&(r=e[s]); s++)this.forEachRuleInStyle(r,t,n,!0)},rulesForStyle:function(e){return!e.__cssR ules&&e.textContent&&(e.__cssRules=this.parser.parse(e.textContent)),e.__cssRule s},isKeyframesSelector:function(e){return e.parent&&e.parent.type===this.ruleTyp es.KEYFRAMES_RULE},forEachRuleInStyle:function(e,t,n,r){var s,i,o=this.rulesForS tyle(e);t&&(s=function(n){t(n,e)}),n&&(i=function(t){n(t,e)}),this.forEachRule(o ,s,i,r)},forEachRule:function(e,t,n,r){if(e){var s=!1;if(r&&e.type===this.ruleTy pes.MEDIA_RULE){var i=e.selector.match(this.rx.MEDIA_MATCH);i&&(window.matchMedi a(i[1]).matches||(s=!0))}e.type===this.ruleTypes.STYLE_RULE?t(e):n&&e.type===thi s.ruleTypes.KEYFRAMES_RULE?n(e):e.type===this.ruleTypes.MIXIN_RULE&&(s=!0);var o =e.rules;if(o&&!s)for(var a,l=0,c=o.length;l<c&&(a=o[l]);l++)this.forEachRule(a, t,n,r)}},applyCss:function(e,t,n,r){var s=this.createScopeStyle(e,t);return this .applyStyle(s,n,r)},applyStyle:function(e,t,n){t=t||document.head;var r=n&&n.nex tSibling||t.firstChild;return this.__lastHeadApplyNode=e,t.insertBefore(e,r)},cr eateScopeStyle:function(e,t){var n=document.createElement("style");return t&&n.s etAttribute("scope",t),n.textContent=e,n},__lastHeadApplyNode:null,applyStylePla ceHolder:function(e){var t=document.createComment(" Shady DOM styles for "+e+" " ),n=this.__lastHeadApplyNode?this.__lastHeadApplyNode.nextSibling:null,r=documen t.head;return r.insertBefore(t,n||r.firstChild),this.__lastHeadApplyNode=t,t},cs sFromModules:function(e,t){for(var n=e.trim().split(" "),r="",s=0;s<n.length;s++ )r+=this.cssFromModule(n[s],t);return r},cssFromModule:function(e,t){var n=Polym er.DomModule.import(e);return n&&!n._cssText&&(n._cssText=this.cssFromElement(n) ),!n&&t&&console.warn("Could not find style data in module named",e),n&&n._cssTe xt||""},cssFromElement:function(e){for(var t,n="",r=e.content||e,s=Polymer.TreeA pi.arrayCopy(r.querySelectorAll(this.MODULE_STYLES_SELECTOR)),i=0;i<s.length;i++ )if(t=s[i],"template"===t.localName)t.hasAttribute("preserve-content")||(n+=this .cssFromElement(t));else if("style"===t.localName){var o=t.getAttribute(this.INC LUDE_ATTR);o&&(n+=this.cssFromModules(o,!0)),t=t.__appliedElement||t,t.parentNod e.removeChild(t),n+=this.resolveCss(t.textContent,e.ownerDocument)}else t.import &&t.import.body&&(n+=this.resolveCss(t.import.body.textContent,t.import));return n},isTargetedBuild:function(t){return e.useNativeShadow?"shadow"===t:"shady"=== t},cssBuildTypeForModule:function(e){var t=Polymer.DomModule.import(e);if(t)retu rn this.getCssBuildType(t)},getCssBuildType:function(e){return e.getAttribute("c ss-build")},_findMatchingParen:function(e,t){for(var n=0,r=t,s=e.length;r<s;r++) switch(e[r]){case"(":n++;break;case")":if(0===--n)return r}return-1},processVari ableAndFallback:function(e,t){var n=e.indexOf("var(");if(n===-1)return t(e,"","" ,"");var r=this._findMatchingParen(e,n+3),s=e.substring(n+4,r),i=e.substring(0,n ),o=this.processVariableAndFallback(e.substring(r+1),t),a=s.indexOf(",");if(a=== -1)return t(i,s.trim(),"",o);var l=s.substring(0,a).trim(),c=s.substring(a+1).tr im();return t(i,l,c,o)},rx:{VAR_ASSIGN:/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:([^; {]*)|{([^}]*)})(?:(?=[;\s}])|$)/gi,MIXIN_MATCH:/(?:^|\W+)@apply\s*\(?([^);\n]*)\ )?/gi,VAR_CONSUMED:/(--[\w-]+)\s*([:,;)]|$)/gi,ANIMATION_MATCH:/(animation\s*:)| (animation-name\s*:)/,MEDIA_MATCH:/@media[^(]*(\([^)]*\))/,IS_VAR:/^--/,BRACKETE D:/\{[^}]*\}/g,HOST_PREFIX:"(?:^|[^.#[:])",HOST_SUFFIX:"($|[.:[\\s>+~])"},resolv eCss:Polymer.ResolveUrl.resolveCss,parser:Polymer.CssParse,ruleTypes:Polymer.Css Parse.types}}(),Polymer.StyleTransformer=function(){var e=Polymer.StyleUtil,t=Po lymer.Settings,n={dom:function(e,t,n,r){this._transformDom(e,t||"",n,r)},_transf ormDom:function(e,t,n,r){e.setAttribute&&this.element(e,t,n,r);for(var s=Polymer .dom(e).childNodes,i=0;i<s.length;i++)this._transformDom(s[i],t,n,r)},element:fu nction(e,t,n,s){if(n)s?e.removeAttribute(r):e.setAttribute(r,t);else if(t)if(e.c lassList)s?(e.classList.remove(r),e.classList.remove(t)):(e.classList.add(r),e.c lassList.add(t));else if(e.getAttribute){var i=e.getAttribute(g);s?i&&e.setAttri bute(g,i.replace(r,"").replace(t,"")):e.setAttribute(g,(i?i+" ":"")+r+" "+t)}},e lementStyles:function(n,r){var s,i=n._styles,o="",a=n.__cssBuild,l=t.useNativeSh adow||"shady"===a;if(l){var h=this;s=function(e){e.selector=h._slottedToContent( e.selector),e.selector=e.selector.replace(c,":host > *"),r&&r(e)}}for(var u,f=0, p=i.length;f<p&&(u=i[f]);f++){var _=e.rulesForStyle(u);o+=l?e.toCssText(_,s):thi s.css(_,n.is,n.extends,r,n._scopeCssViaAttr)+"\n\n"}return o.trim()},css:functio n(t,n,r,s,i){var o=this._calcHostScope(n,r);n=this._calcElementScope(n,i);var a= this;return e.toCssText(t,function(e){e.isScoped||(a.rule(e,n,o),e.isScoped=!0), s&&s(e,n,o)})},_calcElementScope:function(e,t){return e?t?m+e+y:d+e:""},_calcHos tScope:function(e,t){return t?"[is="+e+"]":e},rule:function(e,t,n){this._transfo rmRule(e,this._transformComplexSelector,t,n)},_transformRule:function(e,t,n,r){e .selector=e.transformedSelector=this._transformRuleCss(e,t,n,r)},_transformRuleC ss:function(t,n,r,s){var o=t.selector.split(i);if(!e.isKeyframesSelector(t))for( var a,l=0,c=o.length;l<c&&(a=o[l]);l++)o[l]=n.call(this,a,r,s);return o.join(i)} ,_transformComplexSelector:function(e,t,n){var r=!1,s=!1,a=this;return e=e.trim( ),e=this._slottedToContent(e),e=e.replace(c,":host > *"),e=e.replace(P,l+" $1"), e=e.replace(o,function(e,i,o){if(r)o=o.replace(_," ");else{var l=a._transformCom poundSelector(o,i,t,n);r=r||l.stop,s=s||l.hostContext,i=l.combinator,o=l.value}r eturn i+o}),s&&(e=e.replace(f,function(e,t,r,s){return t+r+" "+n+s+i+" "+t+n+r+s })),e},_transformCompoundSelector:function(e,t,n,r){var s=e.search(_),i=!1;e.ind exOf(u)>=0?i=!0:e.indexOf(l)>=0?e=this._transformHostSelector(e,r):0!==s&&(e=n?t his._transformSimpleSelector(e,n):e),e.indexOf(p)>=0&&(t="");var o;return s>=0&& (e=e.replace(_," "),o=!0),{value:e,combinator:t,stop:o,hostContext:i}},_transfor mSimpleSelector:function(e,t){var n=e.split(v);return n[0]+=t,n.join(v)},_transf ormHostSelector:function(e,t){var n=e.match(h),r=n&&n[2].trim()||"";if(r){if(r[0 ].match(a))return e.replace(h,function(e,n,r){return t+r});var s=r.split(a)[0];r eturn s===t?r:S}return e.replace(l,t)},documentRule:function(e){e.selector=e.par sedSelector,this.normalizeRootSelector(e),t.useNativeShadow||this._transformRule (e,this._transformDocumentSelector)},normalizeRootSelector:function(e){e.selecto r=e.selector.replace(c,"html")},_transformDocumentSelector:function(e){return e. match(_)?this._transformComplexSelector(e,s):this._transformSimpleSelector(e.tri m(),s)},_slottedToContent:function(e){return e.replace(C,p+"> $1")},SCOPE_NAME:" style-scope"},r=n.SCOPE_NAME,s=":not(["+r+"]):not(."+r+")",i=",",o=/(^|[\s>+~]+) ((?:\[.+?\]|[^\s>+~=\[])+)/g,a=/[[.:#*]/,l=":host",c=":root",h=/(:host)(?:\(((?: \([^)(]*\)|[^)(]*)+?)\))/,u=":host-context",f=/(.*)(?::host-context)(?:\(((?:\([ ^)(]*\)|[^)(]*)+?)\))(.*)/,p="::content",_=/::content|::shadow|\/deep\//,d=".",m ="["+r+"~=",y="]",v=":",g="class",P=new RegExp("^("+p+")"),S="should_not_match", C=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/g;return n}(),Polymer.StyleExt ends=function(){var e=Polymer.StyleUtil;return{hasExtends:function(e){return Boo lean(e.match(this.rx.EXTEND))},transform:function(t){var n=e.rulesForStyle(t),r= this;return e.forEachRule(n,function(e){if(r._mapRuleOntoParent(e),e.parent)for( var t;t=r.rx.EXTEND.exec(e.cssText);){var n=t[1],s=r._findExtendor(n,e);s&&r._ex tendRule(e,s)}e.cssText=e.cssText.replace(r.rx.EXTEND,"")}),e.toCssText(n,functi on(e){e.selector.match(r.rx.STRIP)&&(e.cssText="")},!0)},_mapRuleOntoParent:func tion(e){if(e.parent){for(var t,n=e.parent.map||(e.parent.map={}),r=e.selector.sp lit(","),s=0;s<r.length;s++)t=r[s],n[t.trim()]=e;return n}},_findExtendor:functi on(e,t){return t.parent&&t.parent.map&&t.parent.map[e]||this._findExtendor(e,t.p arent)},_extendRule:function(e,t){e.parent!==t.parent&&this._cloneAndAddRuleToPa rent(t,e.parent),e.extends=e.extends||[],e.extends.push(t),t.selector=t.selector .replace(this.rx.STRIP,""),t.selector=(t.selector&&t.selector+",\n")+e.selector, t.extends&&t.extends.forEach(function(t){this._extendRule(e,t)},this)},_cloneAnd AddRuleToParent:function(e,t){e=Object.create(e),e.parent=t,e.extends&&(e.extend s=e.extends.slice()),t.rules.push(e)},rx:{EXTEND:/@extends\(([^)]*)\)\s*?;/gim,S TRIP:/%[^,]*$/}}}(),Polymer.ApplyShim=function(){"use strict";function e(e,t){e= e.trim(),m[e]={properties:t,dependants:{}}}function t(e){return e=e.trim(),m[e]} function n(e,t){var n=_.exec(t);return n&&(t=n[1]?y._getInitialValueForProperty( e):"apply-shim-inherit"),t}function r(e){for(var t,r,s,i,o=e.split(";"),a={},l=0 ;l<o.length;l++)s=o[l],s&&(i=s.split(":"),i.length>1&&(t=i[0].trim(),r=n(t,i.sli ce(1).join(":")),a[t]=r));return a}function s(e){var t=y.__currentElementProto,n =t&&t.is;for(var r in e.dependants)r!==n&&(e.dependants[r].__applyShimInvalid=!0 )}function i(n,i,o,a){if(o&&c.processVariableAndFallback(o,function(e,n){n&&t(n) &&(a="@apply "+n+";")}),!a)return n;var h=l(a),u=n.slice(0,n.indexOf("--")),f=r( h),p=f,_=t(i),m=_&&_.properties;m?(p=Object.create(m),p=Polymer.Base.mixin(p,f)) :e(i,p);var y,v,g=[],P=!1;for(y in p)v=f[y],void 0===v&&(v="initial"),!m||y in m ||(P=!0),g.push(i+d+y+": "+v);return P&&s(_),_&&(_.properties=p),o&&(u=n+";"+u), u+g.join("; ")+";"}function o(e,t,n){return"var("+t+",var("+n+"))"}function a(n, r){n=n.replace(p,"");var s=[],i=t(n);if(i||(e(n,{}),i=t(n)),i){var o=y.__current ElementProto;o&&(i.dependants[o.is]=o);var a,l,c;for(a in i.properties)c=r&&r[a] ,l=[a,": var(",n,d,a],c&&l.push(",",c),l.push(")"),s.push(l.join(""))}return s.j oin("; ")}function l(e){for(var t;t=h.exec(e);){var n=t[0],s=t[1],i=t.index,o=i+ n.indexOf("@apply"),l=i+n.length,c=e.slice(0,o),u=e.slice(l),f=r(c),p=a(s,f);e=[ c,p,u].join(""),h.lastIndex=i+p.length}return e}var c=Polymer.StyleUtil,h=c.rx.M IXIN_MATCH,u=c.rx.VAR_ASSIGN,f=/var\(\s*(--[^,]*),\s*(--[^)]*)\)/g,p=/;\s*/m,_=/ ^\s*(initial)|(inherit)\s*$/,d="_-_",m={},y={_measureElement:null,_map:m,_separa tor:d,transform:function(e,t){this.__currentElementProto=t,c.forRulesInStyles(e, this._boundFindDefinitions),c.forRulesInStyles(e,this._boundFindApplications),t& &(t.__applyShimInvalid=!1),this.__currentElementProto=null},_findDefinitions:fun ction(e){var t=e.parsedCssText;t=t.replace(f,o),t=t.replace(u,i),e.cssText=t,":r oot"===e.selector&&(e.selector=":host > *")},_findApplications:function(e){e.css Text=l(e.cssText)},transformRule:function(e){this._findDefinitions(e),this._find Applications(e)},_getInitialValueForProperty:function(e){return this._measureEle ment||(this._measureElement=document.createElement("meta"),this._measureElement. style.all="initial",document.head.appendChild(this._measureElement)),window.getC omputedStyle(this._measureElement).getPropertyValue(e)}};return y._boundTransfor mRule=y.transformRule.bind(y),y._boundFindDefinitions=y._findDefinitions.bind(y) ,y._boundFindApplications=y._findApplications.bind(y),y}(),function(){var e=Poly mer.Base._prepElement,t=Polymer.Settings.useNativeShadow,n=Polymer.StyleUtil,r=P olymer.StyleTransformer,s=Polymer.StyleExtends,i=Polymer.ApplyShim,o=Polymer.Set tings;Polymer.Base._addFeature({_prepElement:function(t){this._encapsulateStyle& &"shady"!==this.__cssBuild&&r.element(t,this.is,this._scopeCssViaAttr),e.call(th is,t)},_prepStyles:function(){void 0===this._encapsulateStyle&&(this._encapsulat eStyle=!t),t||(this._scopeStyle=n.applyStylePlaceHolder(this.is)),this.__cssBuil d=n.cssBuildTypeForModule(this.is)},_prepShimStyles:function(){if(this._template ){var e=n.isTargetedBuild(this.__cssBuild);if(o.useNativeCSSProperties&&"shadow" ===this.__cssBuild&&e)return;this._styles=this._styles||this._collectStyles(),o. useNativeCSSProperties&&!this.__cssBuild&&i.transform(this._styles,this);var s=o .useNativeCSSProperties&&e?this._styles.length&&this._styles[0].textContent.trim ():r.elementStyles(this);this._prepStyleProperties(),!this._needsStyleProperties ()&&s&&n.applyCss(s,this.is,t?this._template.content:null,this._scopeStyle)}else this._styles=[]},_collectStyles:function(){var e=[],t="",r=this.styleModules;if (r)for(var i,o=0,a=r.length;o<a&&(i=r[o]);o++)t+=n.cssFromModule(i);t+=n.cssFrom Module(this.is);var l=this._template&&this._template.parentNode;if(!this._templa te||l&&l.id.toLowerCase()===this.is||(t+=n.cssFromElement(this._template)),t){va r c=document.createElement("style");c.textContent=t,s.hasExtends(c.textContent)& &(t=s.transform(c)),e.push(c)}return e},_elementAdd:function(e){this._encapsulat eStyle&&(e.__styleScoped?e.__styleScoped=!1:r.dom(e,this.is,this._scopeCssViaAtt r))},_elementRemove:function(e){this._encapsulateStyle&&r.dom(e,this.is,this._sc opeCssViaAttr,!0)},scopeSubtree:function(e,n){if(!t){var r=this,s=function(e){if (e.nodeType===Node.ELEMENT_NODE){var t=e.getAttribute("class");e.setAttribute("c lass",r._scopeElementClass(e,t));for(var n,s=e.querySelectorAll("*"),i=0;i<s.len gth&&(n=s[i]);i++)t=n.getAttribute("class"),n.setAttribute("class",r._scopeEleme ntClass(n,t))}};if(s(e),n){var i=new MutationObserver(function(e){for(var t,n=0; n<e.length&&(t=e[n]);n++)if(t.addedNodes)for(var r=0;r<t.addedNodes.length;r++)s (t.addedNodes[r])});return i.observe(e,{childList:!0,subtree:!0}),i}}}})}(),Poly mer.StyleProperties=function(){"use strict";function e(e,t){var n=parseInt(e/32) ,r=1<<e%32;t[n]=(t[n]||0)|r}var t=Polymer.DomApi.matchesSelector,n=Polymer.Style Util,r=Polymer.StyleTransformer,s=navigator.userAgent.match("Trident"),i=Polymer .Settings;return{decorateStyles:function(e,t){var s=this,i={},o=[],a=0,l=r._calc HostScope(t.is,t.extends);n.forRulesInStyles(e,function(e,r){s.decorateRule(e),e .index=a++,s.whenHostOrRootRule(t,e,r,function(r){if(e.parent.type===n.ruleTypes .MEDIA_RULE&&(t.__notStyleScopeCacheable=!0),r.isHost){var s=r.selector.split(" ").some(function(e){return 0===e.indexOf(l)&&e.length!==l.length});t.__notStyleS copeCacheable=t.__notStyleScopeCacheable||s}}),s.collectPropertiesInCssText(e.pr opertyInfo.cssText,i)},function(e){o.push(e)}),e._keyframes=o;var c=[];for(var h in i)c.push(h);return c},decorateRule:function(e){if(e.propertyInfo)return e.pr opertyInfo;var t={},n={},r=this.collectProperties(e,n);return r&&(t.properties=n ,e.rules=null),t.cssText=this.collectCssText(e),e.propertyInfo=t,t},collectPrope rties:function(e,t){var n=e.propertyInfo;if(!n){for(var r,s,i,o=this.rx.VAR_ASSI GN,a=e.parsedCssText;r=o.exec(a);)s=(r[2]||r[3]).trim(),"inherit"!==s&&(t[r[1].t rim()]=s),i=!0;return i}if(n.properties)return Polymer.Base.mixin(t,n.properties ),!0},collectCssText:function(e){return this.collectConsumingCssText(e.parsedCss Text)},collectConsumingCssText:function(e){return e.replace(this.rx.BRACKETED,"" ).replace(this.rx.VAR_ASSIGN,"")},collectPropertiesInCssText:function(e,t){for(v ar n;n=this.rx.VAR_CONSUMED.exec(e);){var r=n[1];":"!==n[2]&&(t[r]=!0)}},reify:f unction(e){for(var t,n=Object.getOwnPropertyNames(e),r=0;r<n.length;r++)t=n[r],e [t]=this.valueForProperty(e[t],e)},valueForProperty:function(e,t){if(e)if(e.inde xOf(";")>=0)e=this.valueForProperties(e,t);else{var r=this,s=function(e,n,s,i){v ar o=r.valueForProperty(t[n],t);return o&&"initial"!==o?"apply-shim-inherit"===o &&(o="inherit"):o=r.valueForProperty(t[s]||s,t)||s,e+(o||"")+i};e=n.processVaria bleAndFallback(e,s)}return e&&e.trim()||""},valueForProperties:function(e,t){for (var n,r,s=e.split(";"),i=0;i<s.length;i++)if(n=s[i]){if(this.rx.MIXIN_MATCH.las tIndex=0,r=this.rx.MIXIN_MATCH.exec(n))n=this.valueForProperty(t[r[1]],t);else{v ar o=n.indexOf(":");if(o!==-1){var a=n.substring(o);a=a.trim(),a=this.valueForPr operty(a,t)||a,n=n.substring(0,o)+a}}s[i]=n&&n.lastIndexOf(";")===n.length-1?n.s lice(0,-1):n||""}return s.join(";")},applyProperties:function(e,t){var n="";e.pr opertyInfo||this.decorateRule(e),e.propertyInfo.cssText&&(n=this.valueForPropert ies(e.propertyInfo.cssText,t)),e.cssText=n},applyKeyframeTransforms:function(e,t ){var n=e.cssText,r=e.cssText;if(null==e.hasAnimations&&(e.hasAnimations=this.rx .ANIMATION_MATCH.test(n)),e.hasAnimations){var s;if(null==e.keyframeNamesToTrans form){e.keyframeNamesToTransform=[];for(var i in t)s=t[i],r=s(n),n!==r&&(n=r,e.k eyframeNamesToTransform.push(i))}else{for(var o=0;o<e.keyframeNamesToTransform.l ength;++o)s=t[e.keyframeNamesToTransform[o]],n=s(n);r=n}}e.cssText=r},propertyDa taFromStyles:function(r,s){var i={},o=this,a=[];return n.forActiveRulesInStyles( r,function(n){n.propertyInfo||o.decorateRule(n);var r=n.transformedSelector||n.p arsedSelector;s&&n.propertyInfo.properties&&r&&t.call(s,r)&&(o.collectProperties (n,i),e(n.index,a))}),{properties:i,key:a}},_rootSelector:/:root|:host\s*>\s*\*/ ,_checkRoot:function(e,t){return Boolean(t.match(this._rootSelector))||"html"=== e&&t.indexOf("html")>-1},whenHostOrRootRule:function(e,t,n,s){if(t.propertyInfo| |self.decorateRule(t),t.propertyInfo.properties){var o=e.is?r._calcHostScope(e.i s,e.extends):"html",a=t.parsedSelector,l=this._checkRoot(o,a),c=!l&&0===a.indexO f(":host"),h=e.__cssBuild||n.__cssBuild;if("shady"===h&&(l=a===o+" > *."+o||a.in dexOf("html")>-1,c=!l&&0===a.indexOf(o)),l||c){var u=o;c&&(i.useNativeShadow&&!t .transformedSelector&&(t.transformedSelector=r._transformRuleCss(t,r._transformC omplexSelector,e.is,o)),u=t.transformedSelector||t.parsedSelector),l&&"html"===o &&(u=t.transformedSelector||t.parsedSelector),s({selector:u,isHost:c,isRoot:l})} }},hostAndRootPropertiesForScope:function(e){var r={},s={},i=this;return n.forAc tiveRulesInStyles(e._styles,function(n,o){i.whenHostOrRootRule(e,n,o,function(o) {var a=e._element||e;t.call(a,o.selector)&&(o.isHost?i.collectProperties(n,r):i. collectProperties(n,s))})}),{rootProps:s,hostProps:r}},transformStyles:function( e,t,n){var s=this,o=r._calcHostScope(e.is,e.extends),a=e.extends?"\\"+o.slice(0, -1)+"\\]":o,l=new RegExp(this.rx.HOST_PREFIX+a+this.rx.HOST_SUFFIX),c=this._elem entKeyframeTransforms(e,n);return r.elementStyles(e,function(r){s.applyPropertie s(r,t),i.useNativeShadow||Polymer.StyleUtil.isKeyframesSelector(r)||!r.cssText|| (s.applyKeyframeTransforms(r,c),s._scopeSelector(r,l,o,e._scopeCssViaAttr,n))})} ,_elementKeyframeTransforms:function(e,t){var n=e._styles._keyframes,r={};if(!i. useNativeShadow&&n)for(var s=0,o=n[s];s<n.length;o=n[++s])this._scopeKeyframes(o ,t),r[o.keyframesName]=this._keyframesRuleTransformer(o);return r},_keyframesRul eTransformer:function(e){return function(t){return t.replace(e.keyframesNameRx,e .transformedKeyframesName)}},_scopeKeyframes:function(e,t){e.keyframesNameRx=new RegExp(e.keyframesName,"g"),e.transformedKeyframesName=e.keyframesName+"-"+t,e. transformedSelector=e.transformedSelector||e.selector,e.selector=e.transformedSe lector.replace(e.keyframesName,e.transformedKeyframesName)},_scopeSelector:funct ion(e,t,n,s,i){e.transformedSelector=e.transformedSelector||e.selector;for(var o ,a=e.transformedSelector,l=s?"["+r.SCOPE_NAME+"~="+i+"]":"."+i,c=a.split(","),h= 0,u=c.length;h<u&&(o=c[h]);h++)c[h]=o.match(t)?o.replace(n,l):l+" "+o;e.selector =c.join(",")},applyElementScopeSelector:function(e,t,n,s){var i=s?e.getAttribute (r.SCOPE_NAME):e.getAttribute("class")||"",o=n?i.replace(n,t):(i?i+" ":"")+this. XSCOPE_NAME+" "+t;i!==o&&(s?e.setAttribute(r.SCOPE_NAME,o):e.setAttribute("class ",o))},applyElementStyle:function(e,t,r,o){var a=o?o.textContent||"":this.transf ormStyles(e,t,r),l=e._customStyle;return l&&!i.useNativeShadow&&l!==o&&(l._useCo unt--,l._useCount<=0&&l.parentNode&&l.parentNode.removeChild(l)),i.useNativeShad ow?e._customStyle?(e._customStyle.textContent=a,o=e._customStyle):a&&(o=n.applyC ss(a,r,e.root,e._scopeStyle)):o?o.parentNode||(s&&a.indexOf("@media")>-1&&(o.tex tContent=a),n.applyStyle(o,null,e._scopeStyle)):a&&(o=n.applyCss(a,r,null,e._sco peStyle)),o&&(o._useCount=o._useCount||0,e._customStyle!=o&&o._useCount++,e._cus tomStyle=o),o},mixinCustomStyle:function(e,t){var n;for(var r in t)n=t[r],(n||0= ==n)&&(e[r]=n)},updateNativeStyleProperties:function(e,t){var n=e.__customStyleP roperties;if(n)for(var r=0;r<n.length;r++)e.style.removeProperty(n[r]);var s=[]; for(var i in t)null!==t[i]&&(e.style.setProperty(i,t[i]),s.push(i));e.__customSt yleProperties=s},rx:n.rx,XSCOPE_NAME:"x-scope"}}(),function(){Polymer.StyleCache =function(){this.cache={}},Polymer.StyleCache.prototype={MAX:100,store:function( e,t,n,r){t.keyValues=n,t.styles=r;var s=this.cache[e]=this.cache[e]||[];s.push(t ),s.length>this.MAX&&s.shift()},retrieve:function(e,t,n){var r=this.cache[e];if( r)for(var s,i=r.length-1;i>=0;i--)if(s=r[i],n===s.styles&&this._objectsEqual(t,s .keyValues))return s},clear:function(){this.cache={}},_objectsEqual:function(e,t ){var n,r;for(var s in e)if(n=e[s],r=t[s],!("object"==typeof n&&n?this._objectsS trictlyEqual(n,r):n===r))return!1;return!Array.isArray(e)||e.length===t.length}, _objectsStrictlyEqual:function(e,t){return this._objectsEqual(e,t)&&this._object sEqual(t,e)}}}(),Polymer.StyleDefaults=function(){var e=Polymer.StyleProperties, t=Polymer.StyleCache,n=Polymer.Settings.useNativeCSSProperties,r={_styles:[],_pr operties:null,customStyle:{},_styleCache:new t,_element:Polymer.DomApi.wrap(docu ment.documentElement),addStyle:function(e){this._styles.push(e),this._properties =null},get _styleProperties(){return this._properties||(e.decorateStyles(this._s tyles,this),this._styles._scopeStyleProperties=null,this._properties=e.hostAndRo otPropertiesForScope(this).rootProps,e.mixinCustomStyle(this._properties,this.cu stomStyle),e.reify(this._properties)),this._properties},hasStyleProperties:funct ion(){return Boolean(this._properties)},_needsStyleProperties:function(){},_comp uteStyleProperties:function(){return this._styleProperties},updateStyles:functio n(t){this._properties=null,t&&Polymer.Base.mixin(this.customStyle,t),this._style Cache.clear();for(var r,s=0;s<this._styles.length;s++)r=this._styles[s],r=r.__im portElement||r,r._apply();n&&e.updateNativeStyleProperties(document.documentElem ent,this.customStyle)}};return r}(),function(){"use strict";var e=Polymer.Base.s erializeValueToAttribute,t=Polymer.StyleProperties,n=Polymer.StyleTransformer,r= Polymer.StyleDefaults,s=Polymer.Settings.useNativeShadow,i=Polymer.Settings.useN ativeCSSProperties;Polymer.Base._addFeature({_prepStyleProperties:function(){i|| (this._ownStylePropertyNames=this._styles&&this._styles.length?t.decorateStyles( this._styles,this):null);
4 },customStyle:null,getComputedStyleValue:function(e){return!i&&this._styleProper ties&&this._styleProperties[e]||getComputedStyle(this).getPropertyValue(e)},_set upStyleProperties:function(){this.customStyle={},this._styleCache=null,this._sty leProperties=null,this._scopeSelector=null,this._ownStyleProperties=null,this._c ustomStyle=null},_needsStyleProperties:function(){return Boolean(!i&&this._ownSt ylePropertyNames&&this._ownStylePropertyNames.length)},_validateApplyShim:functi on(){if(this.__applyShimInvalid){Polymer.ApplyShim.transform(this._styles,this._ _proto__);var e=n.elementStyles(this);if(s){var t=this._template.content.querySe lector("style");t&&(t.textContent=e)}else{var r=this._scopeStyle&&this._scopeSty le.nextSibling;r&&(r.textContent=e)}}},_beforeAttached:function(){this._scopeSel ector&&!this.__stylePropertiesInvalid||!this._needsStyleProperties()||(this.__st ylePropertiesInvalid=!1,this._updateStyleProperties())},_findStyleHost:function( ){for(var e,t=this;e=Polymer.dom(t).getOwnerRoot();){if(Polymer.isInstance(e.hos t))return e.host;t=e.host}return r},_updateStyleProperties:function(){var e,n=th is._findStyleHost();n._styleProperties||n._computeStyleProperties(),n._styleCach e||(n._styleCache=new Polymer.StyleCache);var r=t.propertyDataFromStyles(n._styl es,this),i=!this.__notStyleScopeCacheable;i&&(r.key.customStyle=this.customStyle ,e=n._styleCache.retrieve(this.is,r.key,this._styles));var a=Boolean(e);a?this._ styleProperties=e._styleProperties:this._computeStyleProperties(r.properties),th is._computeOwnStyleProperties(),a||(e=o.retrieve(this.is,this._ownStylePropertie s,this._styles));var l=Boolean(e)&&!a,c=this._applyStyleProperties(e);a||(c=c&&s ?c.cloneNode(!0):c,e={style:c,_scopeSelector:this._scopeSelector,_stylePropertie s:this._styleProperties},i&&(r.key.customStyle={},this.mixin(r.key.customStyle,t his.customStyle),n._styleCache.store(this.is,e,r.key,this._styles)),l||o.store(t his.is,Object.create(e),this._ownStyleProperties,this._styles))},_computeStylePr operties:function(e){var n=this._findStyleHost();n._styleProperties||n._computeS tyleProperties();var r=Object.create(n._styleProperties),s=t.hostAndRootProperti esForScope(this);this.mixin(r,s.hostProps),e=e||t.propertyDataFromStyles(n._styl es,this).properties,this.mixin(r,e),this.mixin(r,s.rootProps),t.mixinCustomStyle (r,this.customStyle),t.reify(r),this._styleProperties=r},_computeOwnStylePropert ies:function(){for(var e,t={},n=0;n<this._ownStylePropertyNames.length;n++)e=thi s._ownStylePropertyNames[n],t[e]=this._styleProperties[e];this._ownStyleProperti es=t},_scopeCount:0,_applyStyleProperties:function(e){var n=this._scopeSelector; this._scopeSelector=e?e._scopeSelector:this.is+"-"+this.__proto__._scopeCount++; var r=t.applyElementStyle(this,this._styleProperties,this._scopeSelector,e&&e.st yle);return s||t.applyElementScopeSelector(this,this._scopeSelector,n,this._scop eCssViaAttr),r},serializeValueToAttribute:function(t,n,r){if(r=r||this,"class"== =n&&!s){var i=r===this?this.domHost||this.dataHost:this;i&&(t=i._scopeElementCla ss(r,t))}r=this.shadyRoot&&this.shadyRoot._hasDistributed?Polymer.dom(r):r,e.cal l(this,t,n,r)},_scopeElementClass:function(e,t){return s||this._scopeCssViaAttr| |(t=(t?t+" ":"")+a+" "+this.is+(e._scopeSelector?" "+l+" "+e._scopeSelector:"")) ,t},updateStyles:function(e){e&&this.mixin(this.customStyle,e),i?t.updateNativeS tyleProperties(this,this.customStyle):(this.isAttached?this._needsStylePropertie s()?this._updateStyleProperties():this._styleProperties=null:this.__stylePropert iesInvalid=!0,this._styleCache&&this._styleCache.clear(),this._updateRootStyles( ))},_updateRootStyles:function(e){e=e||this.root;for(var t,n=Polymer.dom(e)._que ry(function(e){return e.shadyRoot||e.shadowRoot}),r=0,s=n.length;r<s&&(t=n[r]);r ++)t.updateStyles&&t.updateStyles()}}),Polymer.updateStyles=function(e){r.update Styles(e),Polymer.Base._updateRootStyles(document)};var o=new Polymer.StyleCache ;Polymer.customStyleCache=o;var a=n.SCOPE_NAME,l=t.XSCOPE_NAME}(),Polymer.Base._ addFeature({_registerFeatures:function(){this._prepIs(),this._prepConstructor(), this._prepStyles()},_finishRegisterFeatures:function(){this._prepTemplate(),this ._prepShimStyles(),this._prepAnnotations(),this._prepEffects(),this._prepBehavio rs(),this._prepPropertyInfo(),this._prepBindings(),this._prepShady()},_prepBehav ior:function(e){this._addPropertyEffects(e.properties),this._addComplexObserverE ffects(e.observers),this._addHostAttributes(e.hostAttributes)},_initFeatures:fun ction(){this._setupGestures(),this._setupConfigure(),this._setupStyleProperties( ),this._setupDebouncers(),this._setupShady(),this._registerHost(),this._template &&(this._validateApplyShim(),this._poolContent(),this._beginHosting(),this._stam pTemplate(),this._endHosting(),this._marshalAnnotationReferences()),this._marsha lInstanceEffects(),this._marshalBehaviors(),this._marshalHostAttributes(),this._ marshalAttributes(),this._tryReady()},_marshalBehavior:function(e){e.listeners&& this._listenListeners(e.listeners)}}),function(){var e,t=Polymer.StyleProperties ,n=Polymer.StyleUtil,r=Polymer.CssParse,s=Polymer.StyleDefaults,i=Polymer.StyleT ransformer,o=Polymer.ApplyShim,a=Polymer.Debounce,l=Polymer.Settings;Polymer({is :"custom-style",extends:"style",_template:null,properties:{include:String},ready :function(){this.__appliedElement=this.__appliedElement||this,this.__cssBuild=n. getCssBuildType(this),this.__appliedElement!==this&&(this.__appliedElement.__css Build=this.__cssBuild),this._tryApply()},attached:function(){this._tryApply()},_ tryApply:function(){if(!this._appliesToDocument&&this.parentNode&&"dom-module"!= =this.parentNode.localName){this._appliesToDocument=!0;var e=this.__appliedEleme nt;if(l.useNativeCSSProperties||(this.__needsUpdateStyles=s.hasStyleProperties() ,s.addStyle(e)),e.textContent||this.include)this._apply(!0);else{var t=this,n=ne w MutationObserver(function(){n.disconnect(),t._apply(!0)});n.observe(e,{childLi st:!0})}}},_updateStyles:function(){Polymer.updateStyles()},_apply:function(e){v ar t=this.__appliedElement;if(this.include&&(t.textContent=n.cssFromModules(this .include,!0)+t.textContent),t.textContent){var r=this.__cssBuild,s=n.isTargetedB uild(r);if(!l.useNativeCSSProperties||!s){var a=n.rulesForStyle(t);if(s||(n.forE achRule(a,function(e){i.documentRule(e)}),l.useNativeCSSProperties&&!r&&o.transf orm([t])),l.useNativeCSSProperties)t.textContent=n.toCssText(a);else{var c=this, h=function(){c._flushCustomProperties()};e?Polymer.RenderStatus.whenReady(h):h() }}}},_flushCustomProperties:function(){this.__needsUpdateStyles?(this.__needsUpd ateStyles=!1,e=a(e,this._updateStyles)):this._applyCustomProperties()},_applyCus tomProperties:function(){var e=this.__appliedElement;this._computeStylePropertie s();var s=this._styleProperties,i=n.rulesForStyle(e);i&&(e.textContent=n.toCssTe xt(i,function(e){var n=e.cssText=e.parsedCssText;e.propertyInfo&&e.propertyInfo. cssText&&(n=r.removeCustomPropAssignment(n),e.cssText=t.valueForProperties(n,s)) }))}})}(),Polymer.Templatizer={properties:{__hideTemplateChildren__:{observer:"_ showHideChildren"}},_instanceProps:Polymer.nob,_parentPropPrefix:"_parent_",temp latize:function(e){if(this._templatized=e,e._content||(e._content=e.content),e._ content._ctor)return this.ctor=e._content._ctor,void this._prepParentProperties( this.ctor.prototype,e);var t=Object.create(Polymer.Base);this._customPrepAnnotat ions(t,e),this._prepParentProperties(t,e),t._prepEffects(),this._customPrepEffec ts(t),t._prepBehaviors(),t._prepPropertyInfo(),t._prepBindings(),t._notifyPathUp =this._notifyPathUpImpl,t._scopeElementClass=this._scopeElementClassImpl,t.liste n=this._listenImpl,t._showHideChildren=this._showHideChildrenImpl,t.__setPropert yOrig=this.__setProperty,t.__setProperty=this.__setPropertyImpl;var n=this._cons tructorImpl,r=function(e,t){n.call(this,e,t)};r.prototype=t,t.constructor=r,e._c ontent._ctor=r,this.ctor=r},_getRootDataHost:function(){return this.dataHost&&th is.dataHost._rootDataHost||this.dataHost},_showHideChildrenImpl:function(e){for( var t=this._children,n=0;n<t.length;n++){var r=t[n];Boolean(e)!=Boolean(r.__hide TemplateChildren__)&&(r.nodeType===Node.TEXT_NODE?e?(r.__polymerTextContent__=r. textContent,r.textContent=""):r.textContent=r.__polymerTextContent__:r.style&&(e ?(r.__polymerDisplay__=r.style.display,r.style.display="none"):r.style.display=r .__polymerDisplay__)),r.__hideTemplateChildren__=e}},__setPropertyImpl:function( e,t,n,r){r&&r.__hideTemplateChildren__&&"textContent"==e&&(e="__polymerTextConte nt__"),this.__setPropertyOrig(e,t,n,r)},_debounceTemplate:function(e){Polymer.do m.addDebouncer(this.debounce("_debounceTemplate",e))},_flushTemplates:function() {Polymer.dom.flush()},_customPrepEffects:function(e){var t=e._parentProps;for(va r n in t)e._addPropertyEffect(n,"function",this._createHostPropEffector(n));for( n in this._instanceProps)e._addPropertyEffect(n,"function",this._createInstanceP ropEffector(n))},_customPrepAnnotations:function(e,t){e._template=t;var n=t._con tent;if(!n._notes){var r=e._rootDataHost;r&&(Polymer.Annotations.prepElement=fun ction(){r._prepElement()}),n._notes=Polymer.Annotations.parseAnnotations(t),Poly mer.Annotations.prepElement=null,this._processAnnotations(n._notes)}e._notes=n._ notes,e._parentProps=n._parentProps},_prepParentProperties:function(e,t){var n=t his._parentProps=e._parentProps;if(this._forwardParentProp&&n){var r,s=e._parent PropProto;if(!s){for(r in this._instanceProps)delete n[r];s=e._parentPropProto=O bject.create(null),t!=this&&(Polymer.Bind.prepareModel(s),Polymer.Base.prepareMo delNotifyPath(s));for(r in n){var i=this._parentPropPrefix+r,o=[{kind:"function" ,effect:this._createForwardPropEffector(r),fn:Polymer.Bind._functionEffect},{kin d:"notify",fn:Polymer.Bind._notifyEffect,effect:{event:Polymer.CaseMap.camelToDa shCase(i)+"-changed"}}];Polymer.Bind._createAccessors(s,i,o)}}var a=this;t!=this &&(Polymer.Bind.prepareInstance(t),t._forwardParentProp=function(e,t){a._forward ParentProp(e,t)}),this._extendTemplate(t,s),t._pathEffector=function(e,t,n){retu rn a._pathEffectorImpl(e,t,n)}}},_createForwardPropEffector:function(e){return f unction(t,n){this._forwardParentProp(e,n)}},_createHostPropEffector:function(e){ var t=this._parentPropPrefix;return function(n,r){this.dataHost._templatized[t+e ]=r}},_createInstancePropEffector:function(e){return function(t,n,r,s){s||this.d ataHost._forwardInstanceProp(this,e,n)}},_extendTemplate:function(e,t){var n=Obj ect.getOwnPropertyNames(t);t._propertySetter&&(e._propertySetter=t._propertySett er);for(var r,s=0;s<n.length&&(r=n[s]);s++){var i=e[r],o=Object.getOwnPropertyDe scriptor(t,r);Object.defineProperty(e,r,o),void 0!==i&&e._propertySetter(r,i)}}, _showHideChildren:function(e){},_forwardInstancePath:function(e,t,n){},_forwardI nstanceProp:function(e,t,n){},_notifyPathUpImpl:function(e,t){var n=this.dataHos t,r=Polymer.Path.root(e);n._forwardInstancePath.call(n,this,e,t),r in n._parentP rops&&n._templatized._notifyPath(n._parentPropPrefix+e,t)},_pathEffectorImpl:fun ction(e,t,n){if(this._forwardParentPath&&0===e.indexOf(this._parentPropPrefix)){ var r=e.substring(this._parentPropPrefix.length),s=Polymer.Path.root(r);s in thi s._parentProps&&this._forwardParentPath(r,t)}Polymer.Base._pathEffector.call(thi s._templatized,e,t,n)},_constructorImpl:function(e,t){this._rootDataHost=t._getR ootDataHost(),this._setupConfigure(e),this._registerHost(t),this._beginHosting() ,this.root=this.instanceTemplate(this._template),this.root.__noContent=!this._no tes._hasContent,this.root.__styleScoped=!0,this._endHosting(),this._marshalAnnot atedNodes(),this._marshalInstanceEffects(),this._marshalAnnotatedListeners();for (var n=[],r=this.root.firstChild;r;r=r.nextSibling)n.push(r),r._templateInstance =this;this._children=n,t.__hideTemplateChildren__&&this._showHideChildren(!0),th is._tryReady()},_listenImpl:function(e,t,n){var r=this,s=this._rootDataHost,i=s. _createEventHandler(e,t,n),o=function(e){e.model=r,i(e)};s._listen(e,t,o)},_scop eElementClassImpl:function(e,t){var n=this._rootDataHost;return n?n._scopeElemen tClass(e,t):t},stamp:function(e){if(e=e||{},this._parentProps){var t=this._templ atized;for(var n in this._parentProps)void 0===e[n]&&(e[n]=t[this._parentPropPre fix+n])}return new this.ctor(e,this)},modelForElement:function(e){for(var t;e;)i f(t=e._templateInstance){if(t.dataHost==this)return t;e=t.dataHost}else e=e.pare ntNode}},Polymer({is:"dom-template",extends:"template",_template:null,behaviors: [Polymer.Templatizer],ready:function(){this.templatize(this)}}),Polymer._collect ions=new WeakMap,Polymer.Collection=function(e){Polymer._collections.set(e,this) ,this.userArray=e,this.store=e.slice(),this.initMap()},Polymer.Collection.protot ype={constructor:Polymer.Collection,initMap:function(){for(var e=this.omap=new W eakMap,t=this.pmap={},n=this.store,r=0;r<n.length;r++){var s=n[r];s&&"object"==t ypeof s?e.set(s,r):t[s]=r}},add:function(e){var t=this.store.push(e)-1;return e& &"object"==typeof e?this.omap.set(e,t):this.pmap[e]=t,"#"+t},removeKey:function( e){(e=this._parseKey(e))&&(this._removeFromMap(this.store[e]),delete this.store[ e])},_removeFromMap:function(e){e&&"object"==typeof e?this.omap.delete(e):delete this.pmap[e]},remove:function(e){var t=this.getKey(e);return this.removeKey(t), t},getKey:function(e){var t;if(t=e&&"object"==typeof e?this.omap.get(e):this.pma p[e],void 0!=t)return"#"+t},getKeys:function(){return Object.keys(this.store).ma p(function(e){return"#"+e})},_parseKey:function(e){if(e&&"#"==e[0])return e.slic e(1)},setItem:function(e,t){if(e=this._parseKey(e)){var n=this.store[e];n&&this. _removeFromMap(n),t&&"object"==typeof t?this.omap.set(t,e):this.pmap[t]=e,this.s tore[e]=t}},getItem:function(e){if(e=this._parseKey(e))return this.store[e]},get Items:function(){var e=[],t=this.store;for(var n in t)e.push(t[n]);return e},_ap plySplices:function(e){for(var t,n,r={},s=0;s<e.length&&(n=e[s]);s++){n.addedKey s=[];for(var i=0;i<n.removed.length;i++)t=this.getKey(n.removed[i]),r[t]=r[t]?nu ll:-1;for(i=0;i<n.addedCount;i++){var o=this.userArray[n.index+i];t=this.getKey( o),t=void 0===t?this.add(o):t,r[t]=r[t]?null:1,n.addedKeys.push(t)}}var a=[],l=[ ];for(t in r)r[t]<0&&(this.removeKey(t),a.push(t)),r[t]>0&&l.push(t);return[{rem oved:a,added:l}]}},Polymer.Collection.get=function(e){return Polymer._collection s.get(e)||new Polymer.Collection(e)},Polymer.Collection.applySplices=function(e, t){var n=Polymer._collections.get(e);return n?n._applySplices(t):null},Polymer({ is:"dom-repeat",extends:"template",_template:null,properties:{items:{type:Array} ,as:{type:String,value:"item"},indexAs:{type:String,value:"index"},sort:{type:Fu nction,observer:"_sortChanged"},filter:{type:Function,observer:"_filterChanged"} ,observe:{type:String,observer:"_observeChanged"},delay:Number,renderedItemCount :{type:Number,notify:!0,readOnly:!0},initialCount:{type:Number,observer:"_initia lizeChunking"},targetFramerate:{type:Number,value:20},_targetFrameTime:{type:Num ber,computed:"_computeFrameTime(targetFramerate)"}},behaviors:[Polymer.Templatiz er],observers:["_itemsChanged(items.*)"],created:function(){this._instances=[],t his._pool=[],this._limit=1/0;var e=this;this._boundRenderChunk=function(){e._ren derChunk()}},detached:function(){this.__isDetached=!0;for(var e=0;e<this._instan ces.length;e++)this._detachInstance(e)},attached:function(){if(this.__isDetached ){this.__isDetached=!1;for(var e=Polymer.dom(Polymer.dom(this).parentNode),t=0;t <this._instances.length;t++)this._attachInstance(t,e)}},ready:function(){this._i nstanceProps={__key__:!0},this._instanceProps[this.as]=!0,this._instanceProps[th is.indexAs]=!0,this.ctor||this.templatize(this)},_sortChanged:function(e){var t= this._getRootDataHost();this._sortFn=e&&("function"==typeof e?e:function(){retur n t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceT emplate(this._render)},_filterChanged:function(e){var t=this._getRootDataHost(); this._filterFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,argumen ts)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)} ,_computeFrameTime:function(e){return Math.ceil(1e3/e)},_initializeChunking:func tion(){this.initialCount&&(this._limit=this.initialCount,this._chunkCount=this.i nitialCount,this._lastChunkTime=performance.now())},_tryRenderChunk:function(){t his.items&&this._limit<this.items.length&&this.debounce("renderChunk",this._requ estRenderChunk)},_requestRenderChunk:function(){requestAnimationFrame(this._boun dRenderChunk)},_renderChunk:function(){var e=performance.now(),t=this._targetFra meTime/(e-this._lastChunkTime);this._chunkCount=Math.round(this._chunkCount*t)|| 1,this._limit+=this._chunkCount,this._lastChunkTime=e,this._debounceTemplate(thi s._render)},_observeChanged:function(){this._observePaths=this.observe&&this.obs erve.replace(".*",".").split(" ")},_itemsChanged:function(e){if("items"==e.path) Array.isArray(this.items)?this.collection=Polymer.Collection.get(this.items):thi s.items?this._error(this._logf("dom-repeat","expected array for `items`, found", this.items)):this.collection=null,this._keySplices=[],this._indexSplices=[],this ._needFullRefresh=!0,this._initializeChunking(),this._debounceTemplate(this._ren der);else if("items.splices"==e.path)this._keySplices=this._keySplices.concat(e. value.keySplices),this._indexSplices=this._indexSplices.concat(e.value.indexSpli ces),this._debounceTemplate(this._render);else{var t=e.path.slice(6);this._forwa rdItemPath(t,e.value),this._checkObservedPaths(t)}},_checkObservedPaths:function (e){if(this._observePaths){e=e.substring(e.indexOf(".")+1);for(var t=this._obser vePaths,n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return this._needFullRefresh=! 0,void(this.delay?this.debounce("render",this._render,this.delay):this._debounce Template(this._render))}},render:function(){this._needFullRefresh=!0,this._debou nceTemplate(this._render),this._flushTemplates()},_render:function(){this._needF ullRefresh?(this._applyFullRefresh(),this._needFullRefresh=!1):this._keySplices. length&&(this._sortFn?this._applySplicesUserSort(this._keySplices):this._filterF n?this._applyFullRefresh():this._applySplicesArrayOrder(this._indexSplices)),thi s._keySplices=[],this._indexSplices=[];for(var e=this._keyToInstIdx={},t=this._i nstances.length-1;t>=0;t--){var n=this._instances[t];n.isPlaceholder&&t<this._li mit?n=this._insertInstance(t,n.__key__):!n.isPlaceholder&&t>=this._limit&&(n=thi s._downgradeInstance(t,n.__key__)),e[n.__key__]=t,n.isPlaceholder||n.__setProper ty(this.indexAs,t,!0)}this._pool.length=0,this._setRenderedItemCount(this._insta nces.length),this.fire("dom-change"),this._tryRenderChunk()},_applyFullRefresh:f unction(){var e,t=this.collection;if(this._sortFn)e=t?t.getKeys():[];else{e=[];v ar n=this.items;if(n)for(var r=0;r<n.length;r++)e.push(t.getKey(n[r]))}var s=thi s;for(this._filterFn&&(e=e.filter(function(e){return s._filterFn(t.getItem(e))}) ),this._sortFn&&e.sort(function(e,n){return s._sortFn(t.getItem(e),t.getItem(n)) }),r=0;r<e.length;r++){var i=e[r],o=this._instances[r];o?(o.__key__=i,!o.isPlace holder&&r<this._limit&&o.__setProperty(this.as,t.getItem(i),!0)):r<this._limit?t his._insertInstance(r,i):this._insertPlaceholder(r,i)}for(var a=this._instances. length-1;a>=r;a--)this._detachAndRemoveInstance(a)},_numericSort:function(e,t){r eturn e-t},_applySplicesUserSort:function(e){for(var t,n,r=this.collection,s={}, i=0;i<e.length&&(n=e[i]);i++){for(var o=0;o<n.removed.length;o++)t=n.removed[o], s[t]=s[t]?null:-1;for(o=0;o<n.added.length;o++)t=n.added[o],s[t]=s[t]?null:1}var a=[],l=[];for(t in s)s[t]===-1&&a.push(this._keyToInstIdx[t]),1===s[t]&&l.push( t);if(a.length)for(a.sort(this._numericSort),i=a.length-1;i>=0;i--){var c=a[i];v oid 0!==c&&this._detachAndRemoveInstance(c)}var h=this;if(l.length){this._filter Fn&&(l=l.filter(function(e){return h._filterFn(r.getItem(e))})),l.sort(function( e,t){return h._sortFn(r.getItem(e),r.getItem(t))});var u=0;for(i=0;i<l.length;i+ +)u=this._insertRowUserSort(u,l[i])}},_insertRowUserSort:function(e,t){for(var n =this.collection,r=n.getItem(t),s=this._instances.length-1,i=-1;e<=s;){var o=e+s >>1,a=this._instances[o].__key__,l=this._sortFn(n.getItem(a),r);if(l<0)e=o+1;els e{if(!(l>0)){i=o;break}s=o-1}}return i<0&&(i=s+1),this._insertPlaceholder(i,t),i },_applySplicesArrayOrder:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++){fo r(var r=0;r<t.removed.length;r++)this._detachAndRemoveInstance(t.index);for(r=0; r<t.addedKeys.length;r++)this._insertPlaceholder(t.index+r,t.addedKeys[r])}},_de tachInstance:function(e){var t=this._instances[e];if(!t.isPlaceholder){for(var n =0;n<t._children.length;n++){var r=t._children[n];Polymer.dom(t.root).appendChil d(r)}return t}},_attachInstance:function(e,t){var n=this._instances[e];n.isPlace holder||t.insertBefore(n.root,this)},_detachAndRemoveInstance:function(e){var t= this._detachInstance(e);t&&this._pool.push(t),this._instances.splice(e,1)},_inse rtPlaceholder:function(e,t){this._instances.splice(e,0,{isPlaceholder:!0,__key__ :t})},_stampInstance:function(e,t){var n={__key__:t};return n[this.as]=this.coll ection.getItem(t),n[this.indexAs]=e,this.stamp(n)},_insertInstance:function(e,t) {var n=this._pool.pop();n?(n.__setProperty(this.as,this.collection.getItem(t),!0 ),n.__setProperty("__key__",t,!0)):n=this._stampInstance(e,t);var r=this._instan ces[e+1],s=r&&!r.isPlaceholder?r._children[0]:this,i=Polymer.dom(this).parentNod e;return Polymer.dom(i).insertBefore(n.root,s),this._instances[e]=n,n},_downgrad eInstance:function(e,t){var n=this._detachInstance(e);return n&&this._pool.push( n),n={isPlaceholder:!0,__key__:t},this._instances[e]=n,n},_showHideChildren:func tion(e){for(var t=0;t<this._instances.length;t++)this._instances[t]._showHideChi ldren(e)},_forwardInstanceProp:function(e,t,n){if(t==this.as){var r;r=this._sort Fn||this._filterFn?this.items.indexOf(this.collection.getItem(e.__key__)):e[this .indexAs],this.set("items."+r,n)}},_forwardInstancePath:function(e,t,n){0===t.in dexOf(this.as+".")&&this._notifyPath("items."+e.__key__+"."+t.slice(this.as.leng th+1),n)},_forwardParentProp:function(e,t){for(var n,r=this._instances,s=0;s<r.l ength&&(n=r[s]);s++)n.isPlaceholder||n.__setProperty(e,t,!0)},_forwardParentPath :function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlac eholder||n._notifyPath(e,t,!0)},_forwardItemPath:function(e,t){if(this._keyToIns tIdx){var n=e.indexOf("."),r=e.substring(0,n<0?e.length:n),s=this._keyToInstIdx[ r],i=this._instances[s];i&&!i.isPlaceholder&&(n>=0?(e=this.as+"."+e.substring(n+ 1),i._notifyPath(e,t,!0)):i.__setProperty(this.as,t,!0))}},itemForElement:functi on(e){var t=this.modelForElement(e);return t&&t[this.as]},keyForElement:function (e){var t=this.modelForElement(e);return t&&t.__key__},indexForElement:function( e){var t=this.modelForElement(e);return t&&t[this.indexAs]}}),Polymer({is:"array -selector",_template:null,properties:{items:{type:Array,observer:"clearSelection "},multi:{type:Boolean,value:!1,observer:"clearSelection"},selected:{type:Object ,notify:!0},selectedItem:{type:Object,notify:!0},toggle:{type:Boolean,value:!1}} ,clearSelection:function(){if(Array.isArray(this.selected))for(var e=0;e<this.se lected.length;e++)this.unlinkPaths("selected."+e);else this.unlinkPaths("selecte d"),this.unlinkPaths("selectedItem");this.multi?this.selected&&!this.selected.le ngth||(this.selected=[],this._selectedColl=Polymer.Collection.get(this.selected) ):(this.selected=null,this._selectedColl=null),this.selectedItem=null},isSelecte d:function(e){return this.multi?void 0!==this._selectedColl.getKey(e):this.selec ted==e},deselect:function(e){if(this.multi){if(this.isSelected(e)){var t=this._s electedColl.getKey(e);this.arrayDelete("selected",e),this.unlinkPaths("selected. "+t)}}else this.selected=null,this.selectedItem=null,this.unlinkPaths("selected" ),this.unlinkPaths("selectedItem")},select:function(e){var t=Polymer.Collection. get(this.items),n=t.getKey(e);if(this.multi)if(this.isSelected(e))this.toggle&&t his.deselect(e);else{this.push("selected",e);var r=this._selectedColl.getKey(e); this.linkPaths("selected."+r,"items."+n)}else this.toggle&&e==this.selected?this .deselect():(this.selected=e,this.selectedItem=e,this.linkPaths("selected","item s."+n),this.linkPaths("selectedItem","items."+n))}}),Polymer({is:"dom-if",extend s:"template",_template:null,properties:{if:{type:Boolean,value:!1,observer:"_que ueRender"},restamp:{type:Boolean,value:!1,observer:"_queueRender"}},behaviors:[P olymer.Templatizer],_queueRender:function(){this._debounceTemplate(this._render) },detached:function(){this.parentNode&&(this.parentNode.nodeType!=Node.DOCUMENT_ FRAGMENT_NODE||Polymer.Settings.hasShadow&&this.parentNode instanceof ShadowRoot )||this._teardownInstance()},attached:function(){this.if&&this.ctor&&this.async( this._ensureInstance)},render:function(){this._flushTemplates()},_render:functio n(){this.if?(this.ctor||this.templatize(this),this._ensureInstance(),this._showH ideChildren()):this.restamp&&this._teardownInstance(),!this.restamp&&this._insta nce&&this._showHideChildren(),this.if!=this._lastIf&&(this.fire("dom-change"),th is._lastIf=this.if)},_ensureInstance:function(){var e=Polymer.dom(this).parentNo de;if(e){var t=Polymer.dom(e);if(this._instance){var n=this._instance._children; if(n&&n.length){var r=Polymer.dom(this).previousSibling;if(r!==n[n.length-1])for (var s,i=0;i<n.length&&(s=n[i]);i++)t.insertBefore(s,this)}}else{this._instance= this.stamp();var o=this._instance.root;t.insertBefore(o,this)}}},_teardownInstan ce:function(){if(this._instance){var e=this._instance._children;if(e&&e.length)f or(var t,n=Polymer.dom(Polymer.dom(e[0]).parentNode),r=0;r<e.length&&(t=e[r]);r+ +)n.removeChild(t);this._instance=null}},_showHideChildren:function(){var e=this .__hideTemplateChildren__||!this.if;this._instance&&this._instance._showHideChil dren(e)},_forwardParentProp:function(e,t){this._instance&&this._instance.__setPr operty(e,t,!0)},_forwardParentPath:function(e,t){this._instance&&this._instance. _notifyPath(e,t,!0)}}),Polymer({is:"dom-bind",extends:"template",_template:null, created:function(){var e=this;Polymer.RenderStatus.whenReady(function(){"loading "==document.readyState?document.addEventListener("DOMContentLoaded",function(){e ._markImportsReady()}):e._markImportsReady()})},_ensureReady:function(){this._re adied||this._readySelf()},_markImportsReady:function(){this._importsReady=!0,thi s._ensureReady()},_registerFeatures:function(){this._prepConstructor()},_insertC hildren:function(){var e=Polymer.dom(Polymer.dom(this).parentNode);e.insertBefor e(this.root,this)},_removeChildren:function(){if(this._children)for(var e=0;e<th is._children.length;e++)this.root.appendChild(this._children[e])},_initFeatures: function(){},_scopeElementClass:function(e,t){return this.dataHost?this.dataHost ._scopeElementClass(e,t):t},_configureInstanceProperties:function(){},_prepConfi gure:function(){var e={};for(var t in this._propertyEffects)e[t]=this[t];var n=t his._setupConfigure;this._setupConfigure=function(){n.call(this,e)}},attached:fu nction(){this._importsReady&&this.render()},detached:function(){this._removeChil dren()},render:function(){this._ensureReady(),this._children||(this._template=th is,this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepC onfigure(),this._prepBindings(),this._prepPropertyInfo(),Polymer.Base._initFeatu res.call(this),this._children=Polymer.TreeApi.arrayCopyChildNodes(this.root)),th is._insertChildren(),this.fire("dom-change")}})</script> <script> window.Swarmin gBehaviors = window.SwarmingBehaviors || {}; 4 },customStyle:null,getComputedStyleValue:function(e){return!i&&this._styleProper ties&&this._styleProperties[e]||getComputedStyle(this).getPropertyValue(e)},_set upStyleProperties:function(){this.customStyle={},this._styleCache=null,this._sty leProperties=null,this._scopeSelector=null,this._ownStyleProperties=null,this._c ustomStyle=null},_needsStyleProperties:function(){return Boolean(!i&&this._ownSt ylePropertyNames&&this._ownStylePropertyNames.length)},_validateApplyShim:functi on(){if(this.__applyShimInvalid){Polymer.ApplyShim.transform(this._styles,this._ _proto__);var e=n.elementStyles(this);if(s){var t=this._template.content.querySe lector("style");t&&(t.textContent=e)}else{var r=this._scopeStyle&&this._scopeSty le.nextSibling;r&&(r.textContent=e)}}},_beforeAttached:function(){this._scopeSel ector&&!this.__stylePropertiesInvalid||!this._needsStyleProperties()||(this.__st ylePropertiesInvalid=!1,this._updateStyleProperties())},_findStyleHost:function( ){for(var e,t=this;e=Polymer.dom(t).getOwnerRoot();){if(Polymer.isInstance(e.hos t))return e.host;t=e.host}return r},_updateStyleProperties:function(){var e,n=th is._findStyleHost();n._styleProperties||n._computeStyleProperties(),n._styleCach e||(n._styleCache=new Polymer.StyleCache);var r=t.propertyDataFromStyles(n._styl es,this),i=!this.__notStyleScopeCacheable;i&&(r.key.customStyle=this.customStyle ,e=n._styleCache.retrieve(this.is,r.key,this._styles));var a=Boolean(e);a?this._ styleProperties=e._styleProperties:this._computeStyleProperties(r.properties),th is._computeOwnStyleProperties(),a||(e=o.retrieve(this.is,this._ownStylePropertie s,this._styles));var l=Boolean(e)&&!a,c=this._applyStyleProperties(e);a||(c=c&&s ?c.cloneNode(!0):c,e={style:c,_scopeSelector:this._scopeSelector,_stylePropertie s:this._styleProperties},i&&(r.key.customStyle={},this.mixin(r.key.customStyle,t his.customStyle),n._styleCache.store(this.is,e,r.key,this._styles)),l||o.store(t his.is,Object.create(e),this._ownStyleProperties,this._styles))},_computeStylePr operties:function(e){var n=this._findStyleHost();n._styleProperties||n._computeS tyleProperties();var r=Object.create(n._styleProperties),s=t.hostAndRootProperti esForScope(this);this.mixin(r,s.hostProps),e=e||t.propertyDataFromStyles(n._styl es,this).properties,this.mixin(r,e),this.mixin(r,s.rootProps),t.mixinCustomStyle (r,this.customStyle),t.reify(r),this._styleProperties=r},_computeOwnStylePropert ies:function(){for(var e,t={},n=0;n<this._ownStylePropertyNames.length;n++)e=thi s._ownStylePropertyNames[n],t[e]=this._styleProperties[e];this._ownStyleProperti es=t},_scopeCount:0,_applyStyleProperties:function(e){var n=this._scopeSelector; this._scopeSelector=e?e._scopeSelector:this.is+"-"+this.__proto__._scopeCount++; var r=t.applyElementStyle(this,this._styleProperties,this._scopeSelector,e&&e.st yle);return s||t.applyElementScopeSelector(this,this._scopeSelector,n,this._scop eCssViaAttr),r},serializeValueToAttribute:function(t,n,r){if(r=r||this,"class"== =n&&!s){var i=r===this?this.domHost||this.dataHost:this;i&&(t=i._scopeElementCla ss(r,t))}r=this.shadyRoot&&this.shadyRoot._hasDistributed?Polymer.dom(r):r,e.cal l(this,t,n,r)},_scopeElementClass:function(e,t){return s||this._scopeCssViaAttr| |(t=(t?t+" ":"")+a+" "+this.is+(e._scopeSelector?" "+l+" "+e._scopeSelector:"")) ,t},updateStyles:function(e){e&&this.mixin(this.customStyle,e),i?t.updateNativeS tyleProperties(this,this.customStyle):(this.isAttached?this._needsStylePropertie s()?this._updateStyleProperties():this._styleProperties=null:this.__stylePropert iesInvalid=!0,this._styleCache&&this._styleCache.clear(),this._updateRootStyles( ))},_updateRootStyles:function(e){e=e||this.root;for(var t,n=Polymer.dom(e)._que ry(function(e){return e.shadyRoot||e.shadowRoot}),r=0,s=n.length;r<s&&(t=n[r]);r ++)t.updateStyles&&t.updateStyles()}}),Polymer.updateStyles=function(e){r.update Styles(e),Polymer.Base._updateRootStyles(document)};var o=new Polymer.StyleCache ;Polymer.customStyleCache=o;var a=n.SCOPE_NAME,l=t.XSCOPE_NAME}(),Polymer.Base._ addFeature({_registerFeatures:function(){this._prepIs(),this._prepConstructor(), this._prepStyles()},_finishRegisterFeatures:function(){this._prepTemplate(),this ._prepShimStyles(),this._prepAnnotations(),this._prepEffects(),this._prepBehavio rs(),this._prepPropertyInfo(),this._prepBindings(),this._prepShady()},_prepBehav ior:function(e){this._addPropertyEffects(e.properties),this._addComplexObserverE ffects(e.observers),this._addHostAttributes(e.hostAttributes)},_initFeatures:fun ction(){this._setupGestures(),this._setupConfigure(),this._setupStyleProperties( ),this._setupDebouncers(),this._setupShady(),this._registerHost(),this._template &&(this._validateApplyShim(),this._poolContent(),this._beginHosting(),this._stam pTemplate(),this._endHosting(),this._marshalAnnotationReferences()),this._marsha lInstanceEffects(),this._marshalBehaviors(),this._marshalHostAttributes(),this._ marshalAttributes(),this._tryReady()},_marshalBehavior:function(e){e.listeners&& this._listenListeners(e.listeners)}}),function(){var e,t=Polymer.StyleProperties ,n=Polymer.StyleUtil,r=Polymer.CssParse,s=Polymer.StyleDefaults,i=Polymer.StyleT ransformer,o=Polymer.ApplyShim,a=Polymer.Debounce,l=Polymer.Settings;Polymer({is :"custom-style",extends:"style",_template:null,properties:{include:String},ready :function(){this.__appliedElement=this.__appliedElement||this,this.__cssBuild=n. getCssBuildType(this),this.__appliedElement!==this&&(this.__appliedElement.__css Build=this.__cssBuild),this._tryApply()},attached:function(){this._tryApply()},_ tryApply:function(){if(!this._appliesToDocument&&this.parentNode&&"dom-module"!= =this.parentNode.localName){this._appliesToDocument=!0;var e=this.__appliedEleme nt;if(l.useNativeCSSProperties||(this.__needsUpdateStyles=s.hasStyleProperties() ,s.addStyle(e)),e.textContent||this.include)this._apply(!0);else{var t=this,n=ne w MutationObserver(function(){n.disconnect(),t._apply(!0)});n.observe(e,{childLi st:!0})}}},_updateStyles:function(){Polymer.updateStyles()},_apply:function(e){v ar t=this.__appliedElement;if(this.include&&(t.textContent=n.cssFromModules(this .include,!0)+t.textContent),t.textContent){var r=this.__cssBuild,s=n.isTargetedB uild(r);if(!l.useNativeCSSProperties||!s){var a=n.rulesForStyle(t);if(s||(n.forE achRule(a,function(e){i.documentRule(e)}),l.useNativeCSSProperties&&!r&&o.transf orm([t])),l.useNativeCSSProperties)t.textContent=n.toCssText(a);else{var c=this, h=function(){c._flushCustomProperties()};e?Polymer.RenderStatus.whenReady(h):h() }}}},_flushCustomProperties:function(){this.__needsUpdateStyles?(this.__needsUpd ateStyles=!1,e=a(e,this._updateStyles)):this._applyCustomProperties()},_applyCus tomProperties:function(){var e=this.__appliedElement;this._computeStylePropertie s();var s=this._styleProperties,i=n.rulesForStyle(e);i&&(e.textContent=n.toCssTe xt(i,function(e){var n=e.cssText=e.parsedCssText;e.propertyInfo&&e.propertyInfo. cssText&&(n=r.removeCustomPropAssignment(n),e.cssText=t.valueForProperties(n,s)) }))}})}(),Polymer.Templatizer={properties:{__hideTemplateChildren__:{observer:"_ showHideChildren"}},_instanceProps:Polymer.nob,_parentPropPrefix:"_parent_",temp latize:function(e){if(this._templatized=e,e._content||(e._content=e.content),e._ content._ctor)return this.ctor=e._content._ctor,void this._prepParentProperties( this.ctor.prototype,e);var t=Object.create(Polymer.Base);this._customPrepAnnotat ions(t,e),this._prepParentProperties(t,e),t._prepEffects(),this._customPrepEffec ts(t),t._prepBehaviors(),t._prepPropertyInfo(),t._prepBindings(),t._notifyPathUp =this._notifyPathUpImpl,t._scopeElementClass=this._scopeElementClassImpl,t.liste n=this._listenImpl,t._showHideChildren=this._showHideChildrenImpl,t.__setPropert yOrig=this.__setProperty,t.__setProperty=this.__setPropertyImpl;var n=this._cons tructorImpl,r=function(e,t){n.call(this,e,t)};r.prototype=t,t.constructor=r,e._c ontent._ctor=r,this.ctor=r},_getRootDataHost:function(){return this.dataHost&&th is.dataHost._rootDataHost||this.dataHost},_showHideChildrenImpl:function(e){for( var t=this._children,n=0;n<t.length;n++){var r=t[n];Boolean(e)!=Boolean(r.__hide TemplateChildren__)&&(r.nodeType===Node.TEXT_NODE?e?(r.__polymerTextContent__=r. textContent,r.textContent=""):r.textContent=r.__polymerTextContent__:r.style&&(e ?(r.__polymerDisplay__=r.style.display,r.style.display="none"):r.style.display=r .__polymerDisplay__)),r.__hideTemplateChildren__=e}},__setPropertyImpl:function( e,t,n,r){r&&r.__hideTemplateChildren__&&"textContent"==e&&(e="__polymerTextConte nt__"),this.__setPropertyOrig(e,t,n,r)},_debounceTemplate:function(e){Polymer.do m.addDebouncer(this.debounce("_debounceTemplate",e))},_flushTemplates:function() {Polymer.dom.flush()},_customPrepEffects:function(e){var t=e._parentProps;for(va r n in t)e._addPropertyEffect(n,"function",this._createHostPropEffector(n));for( n in this._instanceProps)e._addPropertyEffect(n,"function",this._createInstanceP ropEffector(n))},_customPrepAnnotations:function(e,t){e._template=t;var n=t._con tent;if(!n._notes){var r=e._rootDataHost;r&&(Polymer.Annotations.prepElement=fun ction(){r._prepElement()}),n._notes=Polymer.Annotations.parseAnnotations(t),Poly mer.Annotations.prepElement=null,this._processAnnotations(n._notes)}e._notes=n._ notes,e._parentProps=n._parentProps},_prepParentProperties:function(e,t){var n=t his._parentProps=e._parentProps;if(this._forwardParentProp&&n){var r,s=e._parent PropProto;if(!s){for(r in this._instanceProps)delete n[r];s=e._parentPropProto=O bject.create(null),t!=this&&(Polymer.Bind.prepareModel(s),Polymer.Base.prepareMo delNotifyPath(s));for(r in n){var i=this._parentPropPrefix+r,o=[{kind:"function" ,effect:this._createForwardPropEffector(r),fn:Polymer.Bind._functionEffect},{kin d:"notify",fn:Polymer.Bind._notifyEffect,effect:{event:Polymer.CaseMap.camelToDa shCase(i)+"-changed"}}];Polymer.Bind._createAccessors(s,i,o)}}var a=this;t!=this &&(Polymer.Bind.prepareInstance(t),t._forwardParentProp=function(e,t){a._forward ParentProp(e,t)}),this._extendTemplate(t,s),t._pathEffector=function(e,t,n){retu rn a._pathEffectorImpl(e,t,n)}}},_createForwardPropEffector:function(e){return f unction(t,n){this._forwardParentProp(e,n)}},_createHostPropEffector:function(e){ var t=this._parentPropPrefix;return function(n,r){this.dataHost._templatized[t+e ]=r}},_createInstancePropEffector:function(e){return function(t,n,r,s){s||this.d ataHost._forwardInstanceProp(this,e,n)}},_extendTemplate:function(e,t){var n=Obj ect.getOwnPropertyNames(t);t._propertySetter&&(e._propertySetter=t._propertySett er);for(var r,s=0;s<n.length&&(r=n[s]);s++){var i=e[r],o=Object.getOwnPropertyDe scriptor(t,r);Object.defineProperty(e,r,o),void 0!==i&&e._propertySetter(r,i)}}, _showHideChildren:function(e){},_forwardInstancePath:function(e,t,n){},_forwardI nstanceProp:function(e,t,n){},_notifyPathUpImpl:function(e,t){var n=this.dataHos t,r=Polymer.Path.root(e);n._forwardInstancePath.call(n,this,e,t),r in n._parentP rops&&n._templatized._notifyPath(n._parentPropPrefix+e,t)},_pathEffectorImpl:fun ction(e,t,n){if(this._forwardParentPath&&0===e.indexOf(this._parentPropPrefix)){ var r=e.substring(this._parentPropPrefix.length),s=Polymer.Path.root(r);s in thi s._parentProps&&this._forwardParentPath(r,t)}Polymer.Base._pathEffector.call(thi s._templatized,e,t,n)},_constructorImpl:function(e,t){this._rootDataHost=t._getR ootDataHost(),this._setupConfigure(e),this._registerHost(t),this._beginHosting() ,this.root=this.instanceTemplate(this._template),this.root.__noContent=!this._no tes._hasContent,this.root.__styleScoped=!0,this._endHosting(),this._marshalAnnot atedNodes(),this._marshalInstanceEffects(),this._marshalAnnotatedListeners();for (var n=[],r=this.root.firstChild;r;r=r.nextSibling)n.push(r),r._templateInstance =this;this._children=n,t.__hideTemplateChildren__&&this._showHideChildren(!0),th is._tryReady()},_listenImpl:function(e,t,n){var r=this,s=this._rootDataHost,i=s. _createEventHandler(e,t,n),o=function(e){e.model=r,i(e)};s._listen(e,t,o)},_scop eElementClassImpl:function(e,t){var n=this._rootDataHost;return n?n._scopeElemen tClass(e,t):t},stamp:function(e){if(e=e||{},this._parentProps){var t=this._templ atized;for(var n in this._parentProps)void 0===e[n]&&(e[n]=t[this._parentPropPre fix+n])}return new this.ctor(e,this)},modelForElement:function(e){for(var t;e;)i f(t=e._templateInstance){if(t.dataHost==this)return t;e=t.dataHost}else e=e.pare ntNode}},Polymer({is:"dom-template",extends:"template",_template:null,behaviors: [Polymer.Templatizer],ready:function(){this.templatize(this)}}),Polymer._collect ions=new WeakMap,Polymer.Collection=function(e){Polymer._collections.set(e,this) ,this.userArray=e,this.store=e.slice(),this.initMap()},Polymer.Collection.protot ype={constructor:Polymer.Collection,initMap:function(){for(var e=this.omap=new W eakMap,t=this.pmap={},n=this.store,r=0;r<n.length;r++){var s=n[r];s&&"object"==t ypeof s?e.set(s,r):t[s]=r}},add:function(e){var t=this.store.push(e)-1;return e& &"object"==typeof e?this.omap.set(e,t):this.pmap[e]=t,"#"+t},removeKey:function( e){(e=this._parseKey(e))&&(this._removeFromMap(this.store[e]),delete this.store[ e])},_removeFromMap:function(e){e&&"object"==typeof e?this.omap.delete(e):delete this.pmap[e]},remove:function(e){var t=this.getKey(e);return this.removeKey(t), t},getKey:function(e){var t;if(t=e&&"object"==typeof e?this.omap.get(e):this.pma p[e],void 0!=t)return"#"+t},getKeys:function(){return Object.keys(this.store).ma p(function(e){return"#"+e})},_parseKey:function(e){if(e&&"#"==e[0])return e.slic e(1)},setItem:function(e,t){if(e=this._parseKey(e)){var n=this.store[e];n&&this. _removeFromMap(n),t&&"object"==typeof t?this.omap.set(t,e):this.pmap[t]=e,this.s tore[e]=t}},getItem:function(e){if(e=this._parseKey(e))return this.store[e]},get Items:function(){var e=[],t=this.store;for(var n in t)e.push(t[n]);return e},_ap plySplices:function(e){for(var t,n,r={},s=0;s<e.length&&(n=e[s]);s++){n.addedKey s=[];for(var i=0;i<n.removed.length;i++)t=this.getKey(n.removed[i]),r[t]=r[t]?nu ll:-1;for(i=0;i<n.addedCount;i++){var o=this.userArray[n.index+i];t=this.getKey( o),t=void 0===t?this.add(o):t,r[t]=r[t]?null:1,n.addedKeys.push(t)}}var a=[],l=[ ];for(t in r)r[t]<0&&(this.removeKey(t),a.push(t)),r[t]>0&&l.push(t);return[{rem oved:a,added:l}]}},Polymer.Collection.get=function(e){return Polymer._collection s.get(e)||new Polymer.Collection(e)},Polymer.Collection.applySplices=function(e, t){var n=Polymer._collections.get(e);return n?n._applySplices(t):null},Polymer({ is:"dom-repeat",extends:"template",_template:null,properties:{items:{type:Array} ,as:{type:String,value:"item"},indexAs:{type:String,value:"index"},sort:{type:Fu nction,observer:"_sortChanged"},filter:{type:Function,observer:"_filterChanged"} ,observe:{type:String,observer:"_observeChanged"},delay:Number,renderedItemCount :{type:Number,notify:!0,readOnly:!0},initialCount:{type:Number,observer:"_initia lizeChunking"},targetFramerate:{type:Number,value:20},_targetFrameTime:{type:Num ber,computed:"_computeFrameTime(targetFramerate)"}},behaviors:[Polymer.Templatiz er],observers:["_itemsChanged(items.*)"],created:function(){this._instances=[],t his._pool=[],this._limit=1/0;var e=this;this._boundRenderChunk=function(){e._ren derChunk()}},detached:function(){this.__isDetached=!0;for(var e=0;e<this._instan ces.length;e++)this._detachInstance(e)},attached:function(){if(this.__isDetached ){this.__isDetached=!1;for(var e=Polymer.dom(Polymer.dom(this).parentNode),t=0;t <this._instances.length;t++)this._attachInstance(t,e)}},ready:function(){this._i nstanceProps={__key__:!0},this._instanceProps[this.as]=!0,this._instanceProps[th is.indexAs]=!0,this.ctor||this.templatize(this)},_sortChanged:function(e){var t= this._getRootDataHost();this._sortFn=e&&("function"==typeof e?e:function(){retur n t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceT emplate(this._render)},_filterChanged:function(e){var t=this._getRootDataHost(); this._filterFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,argumen ts)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)} ,_computeFrameTime:function(e){return Math.ceil(1e3/e)},_initializeChunking:func tion(){this.initialCount&&(this._limit=this.initialCount,this._chunkCount=this.i nitialCount,this._lastChunkTime=performance.now())},_tryRenderChunk:function(){t his.items&&this._limit<this.items.length&&this.debounce("renderChunk",this._requ estRenderChunk)},_requestRenderChunk:function(){requestAnimationFrame(this._boun dRenderChunk)},_renderChunk:function(){var e=performance.now(),t=this._targetFra meTime/(e-this._lastChunkTime);this._chunkCount=Math.round(this._chunkCount*t)|| 1,this._limit+=this._chunkCount,this._lastChunkTime=e,this._debounceTemplate(thi s._render)},_observeChanged:function(){this._observePaths=this.observe&&this.obs erve.replace(".*",".").split(" ")},_itemsChanged:function(e){if("items"==e.path) Array.isArray(this.items)?this.collection=Polymer.Collection.get(this.items):thi s.items?this._error(this._logf("dom-repeat","expected array for `items`, found", this.items)):this.collection=null,this._keySplices=[],this._indexSplices=[],this ._needFullRefresh=!0,this._initializeChunking(),this._debounceTemplate(this._ren der);else if("items.splices"==e.path)this._keySplices=this._keySplices.concat(e. value.keySplices),this._indexSplices=this._indexSplices.concat(e.value.indexSpli ces),this._debounceTemplate(this._render);else{var t=e.path.slice(6);this._forwa rdItemPath(t,e.value),this._checkObservedPaths(t)}},_checkObservedPaths:function (e){if(this._observePaths){e=e.substring(e.indexOf(".")+1);for(var t=this._obser vePaths,n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return this._needFullRefresh=! 0,void(this.delay?this.debounce("render",this._render,this.delay):this._debounce Template(this._render))}},render:function(){this._needFullRefresh=!0,this._debou nceTemplate(this._render),this._flushTemplates()},_render:function(){this._needF ullRefresh?(this._applyFullRefresh(),this._needFullRefresh=!1):this._keySplices. length&&(this._sortFn?this._applySplicesUserSort(this._keySplices):this._filterF n?this._applyFullRefresh():this._applySplicesArrayOrder(this._indexSplices)),thi s._keySplices=[],this._indexSplices=[];for(var e=this._keyToInstIdx={},t=this._i nstances.length-1;t>=0;t--){var n=this._instances[t];n.isPlaceholder&&t<this._li mit?n=this._insertInstance(t,n.__key__):!n.isPlaceholder&&t>=this._limit&&(n=thi s._downgradeInstance(t,n.__key__)),e[n.__key__]=t,n.isPlaceholder||n.__setProper ty(this.indexAs,t,!0)}this._pool.length=0,this._setRenderedItemCount(this._insta nces.length),this.fire("dom-change"),this._tryRenderChunk()},_applyFullRefresh:f unction(){var e,t=this.collection;if(this._sortFn)e=t?t.getKeys():[];else{e=[];v ar n=this.items;if(n)for(var r=0;r<n.length;r++)e.push(t.getKey(n[r]))}var s=thi s;for(this._filterFn&&(e=e.filter(function(e){return s._filterFn(t.getItem(e))}) ),this._sortFn&&e.sort(function(e,n){return s._sortFn(t.getItem(e),t.getItem(n)) }),r=0;r<e.length;r++){var i=e[r],o=this._instances[r];o?(o.__key__=i,!o.isPlace holder&&r<this._limit&&o.__setProperty(this.as,t.getItem(i),!0)):r<this._limit?t his._insertInstance(r,i):this._insertPlaceholder(r,i)}for(var a=this._instances. length-1;a>=r;a--)this._detachAndRemoveInstance(a)},_numericSort:function(e,t){r eturn e-t},_applySplicesUserSort:function(e){for(var t,n,r=this.collection,s={}, i=0;i<e.length&&(n=e[i]);i++){for(var o=0;o<n.removed.length;o++)t=n.removed[o], s[t]=s[t]?null:-1;for(o=0;o<n.added.length;o++)t=n.added[o],s[t]=s[t]?null:1}var a=[],l=[];for(t in s)s[t]===-1&&a.push(this._keyToInstIdx[t]),1===s[t]&&l.push( t);if(a.length)for(a.sort(this._numericSort),i=a.length-1;i>=0;i--){var c=a[i];v oid 0!==c&&this._detachAndRemoveInstance(c)}var h=this;if(l.length){this._filter Fn&&(l=l.filter(function(e){return h._filterFn(r.getItem(e))})),l.sort(function( e,t){return h._sortFn(r.getItem(e),r.getItem(t))});var u=0;for(i=0;i<l.length;i+ +)u=this._insertRowUserSort(u,l[i])}},_insertRowUserSort:function(e,t){for(var n =this.collection,r=n.getItem(t),s=this._instances.length-1,i=-1;e<=s;){var o=e+s >>1,a=this._instances[o].__key__,l=this._sortFn(n.getItem(a),r);if(l<0)e=o+1;els e{if(!(l>0)){i=o;break}s=o-1}}return i<0&&(i=s+1),this._insertPlaceholder(i,t),i },_applySplicesArrayOrder:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++){fo r(var r=0;r<t.removed.length;r++)this._detachAndRemoveInstance(t.index);for(r=0; r<t.addedKeys.length;r++)this._insertPlaceholder(t.index+r,t.addedKeys[r])}},_de tachInstance:function(e){var t=this._instances[e];if(!t.isPlaceholder){for(var n =0;n<t._children.length;n++){var r=t._children[n];Polymer.dom(t.root).appendChil d(r)}return t}},_attachInstance:function(e,t){var n=this._instances[e];n.isPlace holder||t.insertBefore(n.root,this)},_detachAndRemoveInstance:function(e){var t= this._detachInstance(e);t&&this._pool.push(t),this._instances.splice(e,1)},_inse rtPlaceholder:function(e,t){this._instances.splice(e,0,{isPlaceholder:!0,__key__ :t})},_stampInstance:function(e,t){var n={__key__:t};return n[this.as]=this.coll ection.getItem(t),n[this.indexAs]=e,this.stamp(n)},_insertInstance:function(e,t) {var n=this._pool.pop();n?(n.__setProperty(this.as,this.collection.getItem(t),!0 ),n.__setProperty("__key__",t,!0)):n=this._stampInstance(e,t);var r=this._instan ces[e+1],s=r&&!r.isPlaceholder?r._children[0]:this,i=Polymer.dom(this).parentNod e;return Polymer.dom(i).insertBefore(n.root,s),this._instances[e]=n,n},_downgrad eInstance:function(e,t){var n=this._detachInstance(e);return n&&this._pool.push( n),n={isPlaceholder:!0,__key__:t},this._instances[e]=n,n},_showHideChildren:func tion(e){for(var t=0;t<this._instances.length;t++)this._instances[t]._showHideChi ldren(e)},_forwardInstanceProp:function(e,t,n){if(t==this.as){var r;r=this._sort Fn||this._filterFn?this.items.indexOf(this.collection.getItem(e.__key__)):e[this .indexAs],this.set("items."+r,n)}},_forwardInstancePath:function(e,t,n){0===t.in dexOf(this.as+".")&&this._notifyPath("items."+e.__key__+"."+t.slice(this.as.leng th+1),n)},_forwardParentProp:function(e,t){for(var n,r=this._instances,s=0;s<r.l ength&&(n=r[s]);s++)n.isPlaceholder||n.__setProperty(e,t,!0)},_forwardParentPath :function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlac eholder||n._notifyPath(e,t,!0)},_forwardItemPath:function(e,t){if(this._keyToIns tIdx){var n=e.indexOf("."),r=e.substring(0,n<0?e.length:n),s=this._keyToInstIdx[ r],i=this._instances[s];i&&!i.isPlaceholder&&(n>=0?(e=this.as+"."+e.substring(n+ 1),i._notifyPath(e,t,!0)):i.__setProperty(this.as,t,!0))}},itemForElement:functi on(e){var t=this.modelForElement(e);return t&&t[this.as]},keyForElement:function (e){var t=this.modelForElement(e);return t&&t.__key__},indexForElement:function( e){var t=this.modelForElement(e);return t&&t[this.indexAs]}}),Polymer({is:"array -selector",_template:null,properties:{items:{type:Array,observer:"clearSelection "},multi:{type:Boolean,value:!1,observer:"clearSelection"},selected:{type:Object ,notify:!0},selectedItem:{type:Object,notify:!0},toggle:{type:Boolean,value:!1}} ,clearSelection:function(){if(Array.isArray(this.selected))for(var e=0;e<this.se lected.length;e++)this.unlinkPaths("selected."+e);else this.unlinkPaths("selecte d"),this.unlinkPaths("selectedItem");this.multi?this.selected&&!this.selected.le ngth||(this.selected=[],this._selectedColl=Polymer.Collection.get(this.selected) ):(this.selected=null,this._selectedColl=null),this.selectedItem=null},isSelecte d:function(e){return this.multi?void 0!==this._selectedColl.getKey(e):this.selec ted==e},deselect:function(e){if(this.multi){if(this.isSelected(e)){var t=this._s electedColl.getKey(e);this.arrayDelete("selected",e),this.unlinkPaths("selected. "+t)}}else this.selected=null,this.selectedItem=null,this.unlinkPaths("selected" ),this.unlinkPaths("selectedItem")},select:function(e){var t=Polymer.Collection. get(this.items),n=t.getKey(e);if(this.multi)if(this.isSelected(e))this.toggle&&t his.deselect(e);else{this.push("selected",e);var r=this._selectedColl.getKey(e); this.linkPaths("selected."+r,"items."+n)}else this.toggle&&e==this.selected?this .deselect():(this.selected=e,this.selectedItem=e,this.linkPaths("selected","item s."+n),this.linkPaths("selectedItem","items."+n))}}),Polymer({is:"dom-if",extend s:"template",_template:null,properties:{if:{type:Boolean,value:!1,observer:"_que ueRender"},restamp:{type:Boolean,value:!1,observer:"_queueRender"}},behaviors:[P olymer.Templatizer],_queueRender:function(){this._debounceTemplate(this._render) },detached:function(){this.parentNode&&(this.parentNode.nodeType!=Node.DOCUMENT_ FRAGMENT_NODE||Polymer.Settings.hasShadow&&this.parentNode instanceof ShadowRoot )||this._teardownInstance()},attached:function(){this.if&&this.ctor&&this.async( this._ensureInstance)},render:function(){this._flushTemplates()},_render:functio n(){this.if?(this.ctor||this.templatize(this),this._ensureInstance(),this._showH ideChildren()):this.restamp&&this._teardownInstance(),!this.restamp&&this._insta nce&&this._showHideChildren(),this.if!=this._lastIf&&(this.fire("dom-change"),th is._lastIf=this.if)},_ensureInstance:function(){var e=Polymer.dom(this).parentNo de;if(e){var t=Polymer.dom(e);if(this._instance){var n=this._instance._children; if(n&&n.length){var r=Polymer.dom(this).previousSibling;if(r!==n[n.length-1])for (var s,i=0;i<n.length&&(s=n[i]);i++)t.insertBefore(s,this)}}else{this._instance= this.stamp();var o=this._instance.root;t.insertBefore(o,this)}}},_teardownInstan ce:function(){if(this._instance){var e=this._instance._children;if(e&&e.length)f or(var t,n=Polymer.dom(Polymer.dom(e[0]).parentNode),r=0;r<e.length&&(t=e[r]);r+ +)n.removeChild(t);this._instance=null}},_showHideChildren:function(){var e=this .__hideTemplateChildren__||!this.if;this._instance&&this._instance._showHideChil dren(e)},_forwardParentProp:function(e,t){this._instance&&this._instance.__setPr operty(e,t,!0)},_forwardParentPath:function(e,t){this._instance&&this._instance. _notifyPath(e,t,!0)}}),Polymer({is:"dom-bind",extends:"template",_template:null, created:function(){var e=this;Polymer.RenderStatus.whenReady(function(){"loading "==document.readyState?document.addEventListener("DOMContentLoaded",function(){e ._markImportsReady()}):e._markImportsReady()})},_ensureReady:function(){this._re adied||this._readySelf()},_markImportsReady:function(){this._importsReady=!0,thi s._ensureReady()},_registerFeatures:function(){this._prepConstructor()},_insertC hildren:function(){var e=Polymer.dom(Polymer.dom(this).parentNode);e.insertBefor e(this.root,this)},_removeChildren:function(){if(this._children)for(var e=0;e<th is._children.length;e++)this.root.appendChild(this._children[e])},_initFeatures: function(){},_scopeElementClass:function(e,t){return this.dataHost?this.dataHost ._scopeElementClass(e,t):t},_configureInstanceProperties:function(){},_prepConfi gure:function(){var e={};for(var t in this._propertyEffects)e[t]=this[t];var n=t his._setupConfigure;this._setupConfigure=function(){n.call(this,e)}},attached:fu nction(){this._importsReady&&this.render()},detached:function(){this._removeChil dren()},render:function(){this._ensureReady(),this._children||(this._template=th is,this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepC onfigure(),this._prepBindings(),this._prepPropertyInfo(),Polymer.Base._initFeatu res.call(this),this._children=Polymer.TreeApi.arrayCopyChildNodes(this.root)),th is._insertChildren(),this.fire("dom-change")}})</script> <script> window.Swarmin gBehaviors = window.SwarmingBehaviors || {};
5 (function(){ 5 (function(){
6 // This behavior wraps up all the shared swarming functionality. 6 // This behavior wraps up all the shared swarming functionality.
7 SwarmingBehaviors.CommonBehavior = { 7 SwarmingBehaviors.CommonBehavior = {
8 8
9 _botLink: function(bot_id) { 9 _botLink: function(bot_id) {
10 if (!bot_id) { 10 if (!bot_id) {
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 } 187 }
188 return this._humanDuration((second.getTime() - first.getTime())/1000); 188 return this._humanDuration((second.getTime() - first.getTime())/1000);
189 }, 189 },
190 190
191 _truthy: function(a){ 191 _truthy: function(a){
192 return !!a; 192 return !!a;
193 } 193 }
194 }; 194 };
195 })(); </script> <script>Polymer.AppLayout=Polymer.AppLayout||{},Polymer.AppLay out._scrollEffects=Polymer.AppLayout._scrollEffects||{},Polymer.AppLayout.scroll TimingFunction=function(o,l,e,r){return o/=r,-e*o*(o-2)+l},Polymer.AppLayout.reg isterEffect=function(o,l){if(null!=Polymer.AppLayout._scrollEffects[o])throw new Error("effect `"+o+"` is already registered.");Polymer.AppLayout._scrollEffects [o]=l},Polymer.AppLayout.scroll=function(o){o=o||{};var l=document.documentEleme nt,e=o.target||l,r="scrollBehavior"in e.style&&e.scroll,t="app-layout-silent-scr oll",s=o.top||0,c=o.left||0,i=e===l?window.scrollTo:function(o,l){e.scrollLeft=o ,e.scrollTop=l};if("smooth"===o.behavior)if(r)e.scroll(o);else{var n=Polymer.App Layout.scrollTimingFunction,a=Date.now(),p=e===l?window.pageYOffset:e.scrollTop, u=e===l?window.pageXOffset:e.scrollLeft,y=s-p,f=c-u,m=300,L=function o(){var l=D ate.now(),e=l-a;e<m?(i(n(e,u,f,m),n(e,p,y,m)),requestAnimationFrame(o)):i(c,s)}. bind(this);L()}else"silent"===o.behavior?(l.classList.add(t),clearInterval(Polym er.AppLayout._scrollTimer),Polymer.AppLayout._scrollTimer=setTimeout(function(){ l.classList.remove(t),Polymer.AppLayout._scrollTimer=null},100),i(c,s)):i(c,s)}< /script> <style>[hidden]{display:none!important}</style> <style is="custom-style ">:root{--layout:{display:-ms-flexbox;display:-webkit-flex;display:flex};--layou t-inline:{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline- flex};--layout-horizontal:{@apply(--layout);-ms-flex-direction:row;-webkit-flex- direction:row;flex-direction:row};--layout-horizontal-reverse:{@apply(--layout); -ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction :row-reverse};--layout-vertical:{@apply(--layout);-ms-flex-direction:column;-web kit-flex-direction:column;flex-direction:column};--layout-vertical-reverse:{@app ly(--layout);-ms-flex-direction:column-reverse;-webkit-flex-direction:column-rev erse;flex-direction:column-reverse};--layout-wrap:{-ms-flex-wrap:wrap;-webkit-fl ex-wrap:wrap;flex-wrap:wrap};--layout-wrap-reverse:{-ms-flex-wrap:wrap-reverse;- webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse};--layout-flex-auto:{-ms-fl ex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto};--layout-flex-none:{-ms-flex:no ne;-webkit-flex:none;flex:none};--layout-flex:{-ms-flex:1 1 0px;-webkit-flex:1;f lex:1;-webkit-flex-basis:0px;flex-basis:0px};--layout-flex-2:{-ms-flex:2;-webkit -flex:2;flex:2};--layout-flex-3:{-ms-flex:3;-webkit-flex:3;flex:3};--layout-flex -4:{-ms-flex:4;-webkit-flex:4;flex:4};--layout-flex-5:{-ms-flex:5;-webkit-flex:5 ;flex:5};--layout-flex-6:{-ms-flex:6;-webkit-flex:6;flex:6};--layout-flex-7:{-ms -flex:7;-webkit-flex:7;flex:7};--layout-flex-8:{-ms-flex:8;-webkit-flex:8;flex:8 };--layout-flex-9:{-ms-flex:9;-webkit-flex:9;flex:9};--layout-flex-10:{-ms-flex: 10;-webkit-flex:10;flex:10};--layout-flex-11:{-ms-flex:11;-webkit-flex:11;flex:1 1};--layout-flex-12:{-ms-flex:12;-webkit-flex:12;flex:12};--layout-start:{-ms-fl ex-align:start;-webkit-align-items:flex-start;align-items:flex-start};--layout-c enter:{-ms-flex-align:center;-webkit-align-items:center;align-items:center};--la yout-end:{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end}; --layout-baseline:{-ms-flex-align:baseline;-webkit-align-items:baseline;align-it ems:baseline};--layout-start-justified:{-ms-flex-pack:start;-webkit-justify-cont ent:flex-start;justify-content:flex-start};--layout-center-justified:{-ms-flex-p ack:center;-webkit-justify-content:center;justify-content:center};--layout-end-j ustified:{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:fle x-end};--layout-around-justified:{-ms-flex-pack:distribute;-webkit-justify-conte nt:space-around;justify-content:space-around};--layout-justified:{-ms-flex-pack: justify;-webkit-justify-content:space-between;justify-content:space-between};--l ayout-center-center:{@apply(--layout-center);@apply(--layout-center-justified)}; --layout-self-start:{-ms-align-self:flex-start;-webkit-align-self:flex-start;ali gn-self:flex-start};--layout-self-center:{-ms-align-self:center;-webkit-align-se lf:center;align-self:center};--layout-self-end:{-ms-align-self:flex-end;-webkit- align-self:flex-end;align-self:flex-end};--layout-self-stretch:{-ms-align-self:s tretch;-webkit-align-self:stretch;align-self:stretch};--layout-self-baseline:{-m s-align-self:baseline;-webkit-align-self:baseline;align-self:baseline};--layout- start-aligned:{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-ali gn-content:flex-start;align-content:flex-start};--layout-end-aligned:{-ms-flex-l ine-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-con tent:flex-end};--layout-center-aligned:{-ms-flex-line-pack:center;-ms-align-cont ent:center;-webkit-align-content:center;align-content:center};--layout-between-a ligned:{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align -content:space-between;align-content:space-between};--layout-around-aligned:{-ms -flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content: space-around;align-content:space-around};--layout-block:{display:block};--layout -invisible:{visibility:hidden!important};--layout-relative:{position:relative};- -layout-fit:{position:absolute;top:0;right:0;bottom:0;left:0};--layout-scroll:{- webkit-overflow-scrolling:touch;overflow:auto};--layout-fullbleed:{margin:0;heig ht:100vh};--layout-fixed-top:{position:fixed;top:0;left:0;right:0};--layout-fixe d-right:{position:fixed;top:0;right:0;bottom:0};--layout-fixed-bottom:{position: fixed;right:0;bottom:0;left:0};--layout-fixed-left:{position:fixed;top:0;bottom: 0;left:0};}</style> <dom-module id="app-drawer" assetpath="/res/imp/bower_compon ents/app-layout/app-drawer/"> <template> <style>:host{position:fixed;top:-120px; right:0;bottom:-120px;left:0;visibility:hidden;transition-property:visibility}:h ost([opened]){visibility:visible}:host([persistent]){width:var(--app-drawer-widt h,256px)}:host([persistent][position=left]){right:auto}:host([persistent][positi on=right]){left:auto}#contentContainer{position:absolute;top:0;bottom:0;left:0;w idth:var(--app-drawer-width,256px);padding:120px 0;transition-property:-webkit-t ransform;transition-property:transform;-webkit-transform:translate3d(-100%,0,0); transform:translate3d(-100%,0,0);background-color:#FFF;@apply(--app-drawer-conte nt-container)}:host([position=right])>#contentContainer{right:0;left:auto;-webki t-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}:host([swipe-o pen])>#contentContainer::after{position:fixed;top:0;bottom:0;left:100%;visibilit y:visible;width:20px;content:''}:host([swipe-open][position=right])>#contentCont ainer::after{right:100%;left:auto}:host([opened])>#contentContainer{-webkit-tran sform:translate3d(0,0,0);transform:translate3d(0,0,0)}#scrim{position:absolute;t op:0;right:0;bottom:0;left:0;transition-property:opacity;-webkit-transform:trans lateZ(0);transform:translateZ(0);opacity:0;background:var(--app-drawer-scrim-bac kground,rgba(0,0,0,.5))}:host([opened])>#scrim{opacity:1}:host([opened][persiste nt])>#scrim{visibility:hidden;opacity:0}</style> <div id="scrim" on-tap="close"> </div> <div id="contentContainer"> <content></content> </div> </template> <scrip t>Polymer({is:"app-drawer",properties:{opened:{type:Boolean,value:!1,notify:!0,r eflectToAttribute:!0},persistent:{type:Boolean,value:!1,reflectToAttribute:!0},t ransitionDuration:{type:Number,value:200},align:{type:String,value:"left"},posit ion:{type:String,readOnly:!0,reflectToAttribute:!0},swipeOpen:{type:Boolean,valu e:!1,reflectToAttribute:!0},noFocusTrap:{type:Boolean,value:!1}},observers:["res etLayout(position, isAttached)","_resetPosition(align, isAttached)","_styleTrans itionDuration(transitionDuration)","_openedPersistentChanged(opened, persistent) "],_translateOffset:0,_trackDetails:null,_drawerState:0,_boundEscKeydownHandler: null,_firstTabStop:null,_lastTabStop:null,attached:function(){this._styleTransit ionDuration(0),Polymer.RenderStatus.afterNextRender(this,function(){this._styleT ransitionDuration(this.transitionDuration),this._boundEscKeydownHandler=this._es cKeydownHandler.bind(this),this._resetDrawerState(),this.$.scrim.addEventListene r("transitionend",this._transitionend.bind(this)),this.$.contentContainer.addEve ntListener("transitionend",this._transitionend.bind(this)),this.addEventListener ("keydown",this._tabKeydownHandler.bind(this)),this.listen(this,"track","_track" ),this.setScrollDirection("y")}),this.fire("app-drawer-attached")},detached:func tion(){document.removeEventListener("keydown",this._boundEscKeydownHandler)},ope n:function(){this.opened=!0},close:function(){this.opened=!1},toggle:function(){ this.opened=!this.opened},getWidth:function(){return this.$.contentContainer.off setWidth},resetLayout:function(){this.fire("app-drawer-reset-layout")},_isRTL:fu nction(){return"rtl"===window.getComputedStyle(this).direction},_resetPosition:f unction(){switch(this.align){case"start":return void this._setPosition(this._isR TL()?"right":"left");case"end":return void this._setPosition(this._isRTL()?"left ":"right")}this._setPosition(this.align)},_escKeydownHandler:function(t){var i=2 7;t.keyCode===i&&(t.preventDefault(),this.close())},_track:function(t){if(!this. persistent)switch(t.preventDefault(),t.detail.state){case"start":this._trackStar t(t);break;case"track":this._trackMove(t);break;case"end":this._trackEnd(t)}},_t rackStart:function(t){this._drawerState=this._DRAWER_STATE.TRACKING,this._styleT ransitionDuration(0),this.style.visibility="visible";var i=this.$.contentContain er.getBoundingClientRect();"left"===this.position?this._translateOffset=i.left:t his._translateOffset=i.right-window.innerWidth,this._trackDetails=[]},_trackMove :function(t){this._translateDrawer(t.detail.dx+this._translateOffset),this._trac kDetails.push({dx:t.detail.dx,timeStamp:Date.now()})},_trackEnd:function(t){var i=t.detail.dx+this._translateOffset,e=this.getWidth(),n="left"===this.position,s =n?i>=0||i<=-e:i<=0||i>=e;if(!s){var a=this._trackDetails;if(this._trackDetails= null,this._flingDrawer(t,a),this._drawerState===this._DRAWER_STATE.FLINGING)retu rn}var r=e/2;t.detail.dx<-r?this.opened="right"===this.position:t.detail.dx>r&&( this.opened="left"===this.position),s&&this._resetDrawerState(),this._styleTrans itionDuration(this.transitionDuration),this._resetDrawerTranslate(),this.style.v isibility=""},_calculateVelocity:function(t,i){for(var e,n=Date.now(),s=n-100,a= 0,r=i.length-1;a<=r;){var o=a+r>>1,h=i[o];h.timeStamp>=s?(e=h,r=o-1):a=o+1}if(e) {var l=t.detail.dx-e.dx,d=n-e.timeStamp||1;return l/d}return 0},_flingDrawer:fun ction(t,i){var e=this._calculateVelocity(t,i);if(!(Math.abs(e)<this._MIN_FLING_T HRESHOLD)){this._drawerState=this._DRAWER_STATE.FLINGING;var n,s=t.detail.dx+thi s._translateOffset,a=this.getWidth(),r="left"===this.position,o=e>0,h=!o&&r,l=o& &!r;n=h?-(s+a):l?a-s:-s,o?(e=Math.max(e,this._MIN_TRANSITION_VELOCITY),this.open ed="left"===this.position):(e=Math.min(e,-this._MIN_TRANSITION_VELOCITY),this.op ened="right"===this.position),this._styleTransitionDuration(this._FLING_INITIAL_ SLOPE*n/e),this._styleTransitionTimingFunction(this._FLING_TIMING_FUNCTION),this ._resetDrawerTranslate()}},_transitionend:function(){this._drawerState===this._D RAWER_STATE.FLINGING&&(this._styleTransitionDuration(this.transitionDuration),th is._styleTransitionTimingFunction(""),this.style.visibility=""),this._resetDrawe rState()},_styleTransitionDuration:function(t){this.style.transitionDuration=t+" ms",this.$.contentContainer.style.transitionDuration=t+"ms",this.$.scrim.style.t ransitionDuration=t+"ms"},_styleTransitionTimingFunction:function(t){this.$.cont entContainer.style.transitionTimingFunction=t,this.$.scrim.style.transitionTimin gFunction=t},_translateDrawer:function(t){var i=this.getWidth();"left"===this.po sition?(t=Math.max(-i,Math.min(t,0)),this.$.scrim.style.opacity=1+t/i):(t=Math.m ax(0,Math.min(t,i)),this.$.scrim.style.opacity=1-t/i),this.translate3d(t+"px","0 ","0",this.$.contentContainer)},_resetDrawerTranslate:function(){this.$.scrim.st yle.opacity="",this.transform("",this.$.contentContainer)},_resetDrawerState:fun ction(){var t=this._drawerState;this.opened?this._drawerState=this.persistent?th is._DRAWER_STATE.OPENED_PERSISTENT:this._DRAWER_STATE.OPENED:this._drawerState=t his._DRAWER_STATE.CLOSED,t!==this._drawerState&&(this._drawerState===this._DRAWE R_STATE.OPENED?(this._setKeyboardFocusTrap(),document.addEventListener("keydown" ,this._boundEscKeydownHandler),document.body.style.overflow="hidden"):(document. removeEventListener("keydown",this._boundEscKeydownHandler),document.body.style. overflow=""),t!==this._DRAWER_STATE.INIT&&this.fire("app-drawer-transitioned"))} ,_setKeyboardFocusTrap:function(){if(!this.noFocusTrap){var t=['a[href]:not([tab index="-1"])','area[href]:not([tabindex="-1"])','input:not([disabled]):not([tabi ndex="-1"])','select:not([disabled]):not([tabindex="-1"])','textarea:not([disabl ed]):not([tabindex="-1"])','button:not([disabled]):not([tabindex="-1"])','iframe :not([tabindex="-1"])','[tabindex]:not([tabindex="-1"])','[contentEditable=true] :not([tabindex="-1"])'].join(","),i=Polymer.dom(this).querySelectorAll(t);i.leng th>0?(this._firstTabStop=i[0],this._lastTabStop=i[i.length-1]):(this._firstTabSt op=null,this._lastTabStop=null);var e=this.getAttribute("tabindex");e&&parseInt( e,10)>-1?this.focus():this._firstTabStop&&this._firstTabStop.focus()}},_tabKeydo wnHandler:function(t){if(!this.noFocusTrap){var i=9;this._drawerState===this._DR AWER_STATE.OPENED&&t.keyCode===i&&(t.shiftKey?this._firstTabStop&&Polymer.dom(t) .localTarget===this._firstTabStop&&(t.preventDefault(),this._lastTabStop.focus() ):this._lastTabStop&&Polymer.dom(t).localTarget===this._lastTabStop&&(t.preventD efault(),this._firstTabStop.focus()))}},_openedPersistentChanged:function(){0=== this.transitionDuration&&this._resetDrawerState()},_MIN_FLING_THRESHOLD:.2,_MIN_ TRANSITION_VELOCITY:1.2,_FLING_TIMING_FUNCTION:"cubic-bezier(0.667, 1, 0.667, 1) ",_FLING_INITIAL_SLOPE:1.5,_DRAWER_STATE:{INIT:0,OPENED:1,OPENED_PERSISTENT:2,CL OSED:3,TRACKING:4,FLINGING:5}})</script> </dom-module> <script>Polymer({is:"iron -media-query",properties:{queryMatches:{type:Boolean,value:!1,readOnly:!0,notify :!0},query:{type:String,observer:"queryChanged"},full:{type:Boolean,value:!1},_b oundMQHandler:{value:function(){return this.queryHandler.bind(this)}},_mq:{value :null}},attached:function(){this.style.display="none",this.queryChanged()},detac hed:function(){this._remove()},_add:function(){this._mq&&this._mq.addListener(th is._boundMQHandler)},_remove:function(){this._mq&&this._mq.removeListener(this._ boundMQHandler),this._mq=null},queryChanged:function(){this._remove();var e=this .query;e&&(this.full||"("===e[0]||(e="("+e+")"),this._mq=window.matchMedia(e),th is._add(),this.queryHandler(this._mq))},queryHandler:function(e){this._setQueryM atches(e.matches)}})</script> <script>Polymer.IronResizableBehavior={properties: {_parentResizable:{type:Object,observer:"_parentResizableChanged"},_notifyingDes cendant:{type:Boolean,value:!1}},listeners:{"iron-request-resize-notifications": "_onIronRequestResizeNotifications"},created:function(){this._interestedResizabl es=[],this._boundNotifyResize=this.notifyResize.bind(this)},attached:function(){ this.fire("iron-request-resize-notifications",null,{node:this,bubbles:!0,cancela ble:!0}),this._parentResizable||(window.addEventListener("resize",this._boundNot ifyResize),this.notifyResize())},detached:function(){this._parentResizable?this. _parentResizable.stopResizeNotificationsFor(this):window.removeEventListener("re size",this._boundNotifyResize),this._parentResizable=null},notifyResize:function (){this.isAttached&&(this._interestedResizables.forEach(function(e){this.resizer ShouldNotify(e)&&this._notifyDescendant(e)},this),this._fireResize())},assignPar entResizable:function(e){this._parentResizable=e},stopResizeNotificationsFor:fun ction(e){var i=this._interestedResizables.indexOf(e);i>-1&&(this._interestedResi zables.splice(i,1),this.unlisten(e,"iron-resize","_onDescendantIronResize"))},re sizerShouldNotify:function(e){return!0},_onDescendantIronResize:function(e){retu rn this._notifyingDescendant?void e.stopPropagation():void(Polymer.Settings.useS hadow||this._fireResize())},_fireResize:function(){this.fire("iron-resize",null, {node:this,bubbles:!1})},_onIronRequestResizeNotifications:function(e){var i=e.p ath?e.path[0]:e.target;i!==this&&(this._interestedResizables.indexOf(i)===-1&&(t his._interestedResizables.push(i),this.listen(i,"iron-resize","_onDescendantIron Resize")),i.assignParentResizable(this),this._notifyDescendant(i),e.stopPropagat ion())},_parentResizableChanged:function(e){e&&window.removeEventListener("resiz e",this._boundNotifyResize)},_notifyDescendant:function(e){this.isAttached&&(thi s._notifyingDescendant=!0,e.notifyResize(),this._notifyingDescendant=!1)}}</scri pt> <dom-module id="app-drawer-layout" assetpath="/res/imp/bower_components/app- layout/app-drawer-layout/"> <template> <style>:host{display:block}:host([fullble ed]){@apply(--layout-fit)}#contentContainer{position:relative;height:100%;transi tion:var(--app-drawer-layout-content-transition,none)}#contentContainer:not(.nar row)>::content [drawer-toggle]{display:none}</style> <div id="contentContainer"> <content select=":not(app-drawer)"></content> </div> <content id="drawerContent " select="app-drawer"></content> <iron-media-query query="[[_computeMediaQuery(f orceNarrow, responsiveWidth)]]" on-query-matches-changed="_onQueryMatchesChanged "></iron-media-query> </template> <script>Polymer({is:"app-drawer-layout",behavi ors:[Polymer.IronResizableBehavior],properties:{forceNarrow:{type:Boolean,value: !1},responsiveWidth:{type:String,value:"640px"},narrow:{type:Boolean,readOnly:!0 ,notify:!0},openedWhenNarrow:{type:Boolean,value:!1}},listeners:{tap:"_tapHandle r","app-drawer-attached":"_resetDrawerState","app-drawer-reset-layout":"resetLay out","iron-resize":"resetLayout"},observers:["resetLayout(narrow, isAttached)"," _narrowChanged(narrow, isAttached)"],get drawer(){return Polymer.dom(this.$.draw erContent).getDistributedNodes()[0]},_tapHandler:function(e){var t=Polymer.dom(e ).localTarget;if(t&&t.hasAttribute("drawer-toggle")){var r=this.drawer;r&&!r.per sistent&&r.toggle()}},resetLayout:function(){this.debounce("_resetLayout",functi on(){var e=this.drawer,t=this.$.contentContainer;if(this.narrow||!e)t.style.marg inLeft="",t.style.marginRight="";else{var r=e.getWidth();"right"==e.position?(t. style.marginLeft="",t.style.marginRight=r+"px"):(t.style.marginLeft=r+"px",t.sty le.marginRight="")}})},_resetDrawerState:function(){this.debounce("_resetDrawerS tate",function(){var e=this.drawer;e&&(this.narrow?(e.opened=this.openedWhenNarr ow,e.persistent=!1):e.opened=e.persistent=!0)})},_narrowChanged:function(e){this .toggleClass("narrow",e,this.$.contentContainer),this._resetDrawerState(),this.n otifyResize()},_onQueryMatchesChanged:function(e){this._setNarrow(e.detail.value )},_computeMediaQuery:function(e,t){return e?"(min-width: 0px)":"(max-width: "+t +")"}})</script> </dom-module> <dom-module id="app-grid-style" assetpath="/res/i mp/bower_components/app-layout/app-grid/"> <template> <style>:host{--app-grid-ex pandible-item:{-webkit-flex-basis:calc((100% - .1px)/ var(--app-grid-columns,1) * var(--app-grid-expandible-item-columns,1) - var(--app-grid-gutter,0px))!import ant;flex-basis:calc((100% - .1px)/ var(--app-grid-columns,1) * var(--app-grid-ex pandible-item-columns,1) - var(--app-grid-gutter,0px))!important;max-width:calc( (100% - .1px)/ var(--app-grid-columns,1) * var(--app-grid-expandible-item-column s,1) - var(--app-grid-gutter,0px))!important};}.app-grid{display:-ms-flexbox;dis play:-webkit-flex;display:flex;-ms-flex-direction:row;-webkit-flex-direction:row ;flex-direction:row;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap;pad ding-top:var(--app-grid-gutter,0);padding-left:var(--app-grid-gutter,0);box-sizi ng:border-box}.app-grid>*{-ms-flex:1 1 100%;-webkit-flex:1;flex:1;-webkit-flex-b asis:calc((100% - .1px - (var(--app-grid-gutter,0px) * var(--app-grid-columns,1) ))/ var(--app-grid-columns,1));flex-basis:calc((100% - .1px - (var(--app-grid-gu tter,0px) * var(--app-grid-columns,1)))/ var(--app-grid-columns,1));max-width:ca lc((100% - .1px - (var(--app-grid-gutter,0px) * var(--app-grid-columns,1)))/ var (--app-grid-columns,1));margin-bottom:var(--app-grid-gutter,0);margin-right:var( --app-grid-gutter,0);height:var(--app-grid-item-height);box-sizing:border-box}.a pp-grid[has-aspect-ratio]>*{position:relative}.app-grid[has-aspect-ratio]>::befo re{display:block;content:"";padding-top:var(--app-grid-item-height,100%)}.app-gr id[has-aspect-ratio]>*>*{position:absolute;top:0;right:0;bottom:0;left:0}</style > </template> </dom-module> <script>Polymer.IronScrollTargetBehavior={properties :{scrollTarget:{type:HTMLElement,value:function(){return this._defaultScrollTarg et}}},observers:["_scrollTargetChanged(scrollTarget, isAttached)"],_shouldHaveLi stener:!0,_scrollTargetChanged:function(t,l){this._oldScrollTarget&&(this._toggl eScrollListener(!1,this._oldScrollTarget),this._oldScrollTarget=null),l&&("docum ent"===t?this.scrollTarget=this._doc:"string"==typeof t?this.scrollTarget=this.d omHost?this.domHost.$[t]:Polymer.dom(this.ownerDocument).querySelector("#"+t):th is._isValidScrollTarget()&&(this._boundScrollHandler=this._boundScrollHandler||t his._scrollHandler.bind(this),this._oldScrollTarget=t,this._toggleScrollListener (this._shouldHaveListener,t)))},_scrollHandler:function(){},get _defaultScrollTa rget(){return this._doc},get _doc(){return this.ownerDocument.documentElement},g et _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.sc rollTarget.scrollLeft:0},set _scrollTop(t){this.scrollTarget===this._doc?window. scrollTo(window.pageXOffset,t):this._isValidScrollTarget()&&(this.scrollTarget.s crollTop=t)},set _scrollLeft(t){this.scrollTarget===this._doc?window.scrollTo(t, window.pageYOffset):this._isValidScrollTarget()&&(this.scrollTarget.scrollLeft=t )},scroll:function(t,l){this.scrollTarget===this._doc?window.scrollTo(t,l):this. _isValidScrollTarget()&&(this.scrollTarget.scrollLeft=t,this.scrollTarget.scroll Top=l)},get _scrollTargetWidth(){return this._isValidScrollTarget()?this.scrollT arget===this._doc?window.innerWidth:this.scrollTarget.offsetWidth:0},get _scroll TargetHeight(){return this._isValidScrollTarget()?this.scrollTarget===this._doc? window.innerHeight:this.scrollTarget.offsetHeight:0},_isValidScrollTarget:functi on(){return this.scrollTarget instanceof HTMLElement},_toggleScrollListener:func tion(t,l){if(this._boundScrollHandler){var e=l===this._doc?window:l;t?e.addEvent Listener("scroll",this._boundScrollHandler):e.removeEventListener("scroll",this. _boundScrollHandler)}},toggleScrollListener:function(t){this._shouldHaveListener =t,this._toggleScrollListener(t,this.scrollTarget)}}</script> <script>Polymer.Ap pScrollEffectsBehavior=[Polymer.IronScrollTargetBehavior,{properties:{effects:{t ype:String},effectsConfig:{type:Object,value:function(){return{}}},disabled:{typ e:Boolean,reflectToAttribute:!0,value:!1},threshold:{type:Number,value:0},thresh oldTriggered:{type:Boolean,notify:!0,readOnly:!0,reflectToAttribute:!0}},observe rs:["_effectsChanged(effects, effectsConfig, isAttached)"],_updateScrollState:fu nction(){},isOnScreen:function(){return!1},isContentBelow:function(){return!1},_ effectsRunFn:null,_effects:null,get _clampedScrollTop(){return Math.max(0,this._ scrollTop)},detached:function(){this._tearDownEffects()},createEffect:function(t ,e){var f=Polymer.AppLayout._scrollEffects[t];if(!f)throw new ReferenceError(thi s._getUndefinedMsg(t));var n=this._boundEffect(f,e||{});return n.setUp(),n},_eff ectsChanged:function(t,e,f){this._tearDownEffects(),""!==t&&f&&(t.split(" ").for Each(function(t){var f;""!==t&&((f=Polymer.AppLayout._scrollEffects[t])?this._ef fects.push(this._boundEffect(f,e[t])):this._warn(this._logf("_effectsChanged",th is._getUndefinedMsg(t))))},this),this._setUpEffect())},_layoutIfDirty:function() {return this.offsetWidth},_boundEffect:function(t,e){e=e||{};var f=parseFloat(e. startsAt||0),n=parseFloat(e.endsAt||1),s=n-f,i=function(){},r=0===f&&1===n?t.run :function(e,n){t.run.call(this,Math.max(0,(e-f)/s),n)};return{setUp:t.setUp?t.se tUp.bind(this,e):i,run:t.run?r.bind(this):i,tearDown:t.tearDown?t.tearDown.bind( this):i}},_setUpEffect:function(){this.isAttached&&this._effects&&(this._effects RunFn=[],this._effects.forEach(function(t){t.setUp()!==!1&&this._effectsRunFn.pu sh(t.run)},this))},_tearDownEffects:function(){this._effects&&this._effects.forE ach(function(t){t.tearDown()}),this._effectsRunFn=[],this._effects=[]},_runEffec ts:function(t,e){this._effectsRunFn&&this._effectsRunFn.forEach(function(f){f(t, e)})},_scrollHandler:function(){if(!this.disabled){var t=this._clampedScrollTop; this._updateScrollState(t),this.threshold>0&&this._setThresholdTriggered(t>=this .threshold)}},_getDOMRef:function(t){this._warn(this._logf("_getDOMRef","`"+t+"` is undefined"))},_getUndefinedMsg:function(t){return"Scroll effect `"+t+"` is u ndefined. Did you forget to import app-layout/app-scroll-effects/effects/"+t+".h tml ?"}}]</script> <dom-module id="app-header" assetpath="/res/imp/bower_compone nts/app-layout/app-header/"> <template> <style>:host{position:relative;display:b lock;transition-timing-function:linear;transition-property:-webkit-transform;tra nsition-property:transform}:host::after{position:absolute;right:0;bottom:-5px;le ft:0;width:100%;height:5px;content:"";transition:opacity .4s;pointer-events:none ;opacity:0;box-shadow:inset 0 5px 6px -3px rgba(0,0,0,.4);will-change:opacity;@a pply(--app-header-shadow)}:host([shadow])::after{opacity:1}::content [condensed- title],::content [main-title]{-webkit-transform-origin:left top;transform-origin :left top;white-space:nowrap}::content [condensed-title]{opacity:0}#background{@ apply(--layout-fit);overflow:hidden}#backgroundFrontLayer,#backgroundRearLayer{@ apply(--layout-fit);height:100%;pointer-events:none;background-size:cover}#backg roundFrontLayer{@apply(--app-header-background-front-layer)}#backgroundRearLayer {opacity:0;@apply(--app-header-background-rear-layer)}#contentContainer{position :relative;width:100%;height:100%}:host([disabled]),:host([disabled]) #background FrontLayer,:host([disabled]) #backgroundRearLayer,:host([disabled]) ::content>[s ticky],:host([disabled]) ::content>app-toolbar:first-of-type,:host([disabled]):: after,:host-context(.app-layout-silent-scroll),:host-context(.app-layout-silent- scroll) #backgroundFrontLayer,:host-context(.app-layout-silent-scroll) #backgrou ndRearLayer,:host-context(.app-layout-silent-scroll) ::content>[sticky],:host-co ntext(.app-layout-silent-scroll) ::content>app-toolbar:first-of-type,:host-conte xt(.app-layout-silent-scroll)::after{transition:none!important}</style> <div id= "contentContainer"> <content id="content"></content> </div> </template> <script> Polymer({is:"app-header",behaviors:[Polymer.AppScrollEffectsBehavior,Polymer.Iro nResizableBehavior],properties:{condenses:{type:Boolean,value:!1},fixed:{type:Bo olean,value:!1},reveals:{type:Boolean,value:!1},shadow:{type:Boolean,reflectToAt tribute:!0,value:!1}},observers:["resetLayout(isAttached, condenses, fixed)"],li steners:{"iron-resize":"_resizeHandler"},_height:0,_dHeight:0,_stickyElTop:0,_st ickyEl:null,_top:0,_progress:0,_wasScrollingDown:!1,_initScrollTop:0,_initTimest amp:0,_lastTimestamp:0,_lastScrollTop:0,get _maxHeaderTop(){return this.fixed?th is._dHeight:this._height+5},_getStickyEl:function(){for(var t,e=Polymer.dom(this .$.content).getDistributedNodes(),i=0;i<e.length;i++)if(e[i].nodeType===Node.ELE MENT_NODE){var s=e[i];if(s.hasAttribute("sticky")){t=s;break}t||(t=s)}return t}, resetLayout:function(){this.fire("app-header-reset-layout"),this.debounce("_rese tLayout",function(){if(0!==this.offsetWidth||0!==this.offsetHeight){var t=this._ clampedScrollTop,e=0===this._height||0===t,i=this.disabled;this._height=this.off setHeight,this._stickyEl=this._getStickyEl(),this.disabled=!0,e||this._updateScr ollState(0,!0),this._mayMove()?this._dHeight=this._stickyEl?this._height-this._s tickyEl.offsetHeight:0:this._dHeight=0,this._stickyElTop=this._stickyEl?this._st ickyEl.offsetTop:0,this._setUpEffect(),e?this._updateScrollState(t,!0):(this._up dateScrollState(this._lastScrollTop,!0),this._layoutIfDirty()),this.disabled=i}} )},_updateScrollState:function(t,e){if(0!==this._height){var i=0,s=0,o=this._top ,r=(this._lastScrollTop,this._maxHeaderTop),h=t-this._lastScrollTop,n=Math.abs(h ),a=t>this._lastScrollTop,l=Date.now();if(this._mayMove()&&(s=this._clamp(this.r eveals?o+h:t,0,r)),t>=this._dHeight&&(s=this.condenses&&!this.fixed?Math.max(thi s._dHeight,s):s,this.style.transitionDuration="0ms"),this.reveals&&!this.disable d&&n<100&&((l-this._initTimestamp>300||this._wasScrollingDown!==a)&&(this._initS crollTop=t,this._initTimestamp=l),t>=r))if(Math.abs(this._initScrollTop-t)>30||n >10){a&&t>=r?s=r:!a&&t>=this._dHeight&&(s=this.condenses&&!this.fixed?this._dHei ght:0);var _=h/(l-this._lastTimestamp);this.style.transitionDuration=this._clamp ((s-o)/_,0,300)+"ms"}else s=this._top;i=0===this._dHeight?t>0?1:0:s/this._dHeigh t,e||(this._lastScrollTop=t,this._top=s,this._wasScrollingDown=a,this._lastTimes tamp=l),(e||i!==this._progress||o!==s||0===t)&&(this._progress=i,this._runEffect s(i,s),this._transformHeader(s))}},_mayMove:function(){return this.condenses||!t his.fixed},willCondense:function(){return this._dHeight>0&&this.condenses},isOnS creen:function(){return 0!==this._height&&this._top<this._height},isContentBelow :function(){return 0===this._top?this._clampedScrollTop>0:this._clampedScrollTop -this._maxHeaderTop>=0},_transformHeader:function(t){this.translate3d(0,-t+"px", 0),this._stickyEl&&this.condenses&&t>=this._stickyElTop&&this.translate3d(0,Math .min(t,this._dHeight)-this._stickyElTop+"px",0,this._stickyEl)},_resizeHandler:f unction(){this.resetLayout()},_clamp:function(t,e,i){return Math.min(i,Math.max( e,t))},_ensureBgContainers:function(){this._bgContainer||(this._bgContainer=docu ment.createElement("div"),this._bgContainer.id="background",this._bgRear=documen t.createElement("div"),this._bgRear.id="backgroundRearLayer",this._bgContainer.a ppendChild(this._bgRear),this._bgFront=document.createElement("div"),this._bgFro nt.id="backgroundFrontLayer",this._bgContainer.appendChild(this._bgFront),Polyme r.dom(this.root).insertBefore(this._bgContainer,this.$.contentContainer))},_getD OMRef:function(t){switch(t){case"backgroundFrontLayer":return this._ensureBgCont ainers(),this._bgFront;case"backgroundRearLayer":return this._ensureBgContainers (),this._bgRear;case"background":return this._ensureBgContainers(),this._bgConta iner;case"mainTitle":return Polymer.dom(this).querySelector("[main-title]");case "condensedTitle":return Polymer.dom(this).querySelector("[condensed-title]")}ret urn null},getScrollState:function(){return{progress:this._progress,top:this._top }}})</script> </dom-module> <dom-module id="app-header-layout" assetpath="/res/i mp/bower_components/app-layout/app-header-layout/"> <template> <style>:host{disp lay:block;position:relative;z-index:0}:host>::content>app-header{@apply(--layout -fixed-top);z-index:1}:host([has-scrolling-region]){height:100%}:host([has-scrol ling-region])>::content>app-header{position:absolute}:host([has-scrolling-region ])>#contentContainer{@apply(--layout-fit);overflow-y:auto;-webkit-overflow-scrol ling:touch}:host([fullbleed]){@apply(--layout-vertical);@apply(--layout-fit)}:ho st([fullbleed])>#contentContainer{@apply(--layout-vertical);@apply(--layout-flex )}#contentContainer{position:relative;z-index:0}</style> <content id="header" se lect="app-header"></content> <div id="contentContainer"> <content></content> </d iv> </template> <script>Polymer({is:"app-header-layout",behaviors:[Polymer.IronR esizableBehavior],properties:{hasScrollingRegion:{type:Boolean,value:!1,reflectT oAttribute:!0}},listeners:{"iron-resize":"_resizeHandler","app-header-reset-layo ut":"resetLayout"},observers:["resetLayout(isAttached, hasScrollingRegion)"],get header(){return Polymer.dom(this.$.header).getDistributedNodes()[0]},resetLayou t:function(){this._updateScroller(),this.debounce("_resetLayout",this._updateCon tentPosition)},_updateContentPosition:function(){var e=this.header;if(this.isAtt ached&&e){var t=e.offsetHeight;if(this.hasScrollingRegion)e.style.left="",e.styl e.right="";else{var i=this.getBoundingClientRect(),o=document.documentElement.cl ientWidth-i.right;e.style.left=i.left+"px",e.style.right=o+"px"}var n=this.$.con tentContainer.style;e.fixed&&!e.willCondense()&&this.hasScrollingRegion?(n.margi nTop=t+"px",n.paddingTop=""):(n.paddingTop=t+"px",n.marginTop="")}},_updateScrol ler:function(){if(this.isAttached){var e=this.header;e&&(e.scrollTarget=this.has ScrollingRegion?this.$.contentContainer:this.ownerDocument.documentElement)}},_r esizeHandler:function(){this.resetLayout()}})</script> </dom-module> <dom-module id="app-scrollpos-control" assetpath="/res/imp/bower_components/app-layout/app- scrollpos-control/"> <script>Polymer({is:"app-scrollpos-control",behaviors:[Poly mer.IronScrollTargetBehavior],properties:{selected:{type:String,observer:"_selec tedChanged"},reset:{type:Boolean,value:!1}},observers:["_updateScrollPos(selecte d, reset)"],created:function(){this._scrollposMap={}},_selectedChanged:function( e,s){null!=s&&(this._scrollposMap[s]={x:this._scrollLeft,y:this._scrollTop})},_u pdateScrollPos:function(e,s){this.debounce("_updateScrollPos",function(){var e=t his._scrollposMap[this.selected];null==e||this.reset?this.scroll(0,0):this.scrol l(e.x,e.y)})}})</script> </dom-module> <dom-module id="app-toolbar" assetpath="/ res/imp/bower_components/app-layout/app-toolbar/"> <template> <style>:host{@appl y(--layout-horizontal);@apply(--layout-center);position:relative;height:64px;pad ding:0 16px;pointer-events:none;font-size:var(--app-toolbar-font-size,20px)}::co ntent>*{pointer-events:auto}::content>paper-icon-button{font-size:0}::content>[c ondensed-title],::content>[main-title]{pointer-events:none;@apply(--layout-flex) }::content>[bottom-item]{position:absolute;right:0;bottom:0;left:0}::content>[to p-item]{position:absolute;top:0;right:0;left:0}::content>[spacer]{margin-left:64 px}</style> <content></content> </template> <script>Polymer({is:"app-toolbar"})< /script> </dom-module> <dom-module id="app-box" assetpath="/res/imp/bower_compon ents/app-layout/app-box/"> <template> <style>:host{position:relative;display:blo ck}#background{@apply(--layout-fit);overflow:hidden;height:100%}#backgroundFront Layer{min-height:100%;pointer-events:none;background-size:cover;@apply(--app-box -background-front-layer)}#contentContainer{position:relative;width:100%;height:1 00%}:host([disabled]),:host([disabled]) #backgroundFrontLayer{transition:none!im portant}</style> <div id="background"> <div id="backgroundFrontLayer"> <content select="[background]"></content> </div> </div> <div id="contentContainer"> <cont ent id="content"></content> </div> </template> <script>Polymer({is:"app-box",beh aviors:[Polymer.AppScrollEffectsBehavior,Polymer.IronResizableBehavior],listener s:{"iron-resize":"_resizeHandler"},_progress:0,attached:function(){this.resetLay out()},resetLayout:function(){this.debounce("_resetLayout",function(){if(0!==thi s.offsetWidth||0!==this.offsetHeight){var e=this._clampedScrollTop,t=this.disabl ed;this.disabled=!0,this._elementTop=this._getElementTop(),this._elementHeight=t his.offsetHeight,this._cachedScrollTargetHeight=this._scrollTargetHeight,this._s etUpEffect(),this._updateScrollState(e),this.disabled=t}},1)},_getElementTop:fun ction(){for(var e=this,t=0;e&&e!==this.scrollTarget;)t+=e.offsetTop,e=e.offsetPa rent;return t},_updateScrollState:function(e){if(this.isOnScreen()){var t=this._ elementTop-e;this._progress=1-(t+this._elementHeight)/this._cachedScrollTargetHe ight,this._runEffects(this._progress,e)}},isOnScreen:function(){return this._ele mentTop<this._scrollTop+this._cachedScrollTargetHeight&&this._elementTop+this._e lementHeight>this._scrollTop},_resizeHandler:function(){this.resetLayout()},_get DOMRef:function(e){return"background"===e?this.$.background:"backgroundFrontLaye r"===e?this.$.backgroundFrontLayer:void 0},getScrollState:function(){return{prog ress:this._progress}}})</script> </dom-module> <dom-module id="iron-flex" assetp ath="/res/imp/bower_components/iron-flex-layout/"> <template> <style>.layout.hor izontal,.layout.vertical{display:-ms-flexbox;display:-webkit-flex;display:flex}. layout.inline{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inl ine-flex}.layout.horizontal{-ms-flex-direction:row;-webkit-flex-direction:row;fl ex-direction:row}.layout.vertical{-ms-flex-direction:column;-webkit-flex-directi on:column;flex-direction:column}.layout.wrap{-ms-flex-wrap:wrap;-webkit-flex-wra p:wrap;flex-wrap:wrap}.layout.center,.layout.center-center{-ms-flex-align:center ;-webkit-align-items:center;align-items:center}.layout.center-center,.layout.cen ter-justified{-ms-flex-pack:center;-webkit-justify-content:center;justify-conten t:center}.flex{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;fle x-basis:0px}.flex-auto{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto}.fl ex-none{-ms-flex:none;-webkit-flex:none;flex:none}</style> </template> </dom-mod ule> <dom-module id="iron-flex-reverse" assetpath="/res/imp/bower_components/iro n-flex-layout/"> <template> <style>.layout.horizontal-reverse,.layout.vertical-r everse{display:-ms-flexbox;display:-webkit-flex;display:flex}.layout.horizontal- reverse{-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-d irection:row-reverse}.layout.vertical-reverse{-ms-flex-direction:column-reverse; -webkit-flex-direction:column-reverse;flex-direction:column-reverse}.layout.wrap -reverse{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wra p-reverse}</style> </template> </dom-module> <dom-module id="iron-flex-alignment " assetpath="/res/imp/bower_components/iron-flex-layout/"> <template> <style>.la yout.start{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex- start}.layout.center,.layout.center-center{-ms-flex-align:center;-webkit-align-i tems:center;align-items:center}.layout.end{-ms-flex-align:end;-webkit-align-item s:flex-end;align-items:flex-end}.layout.baseline{-ms-flex-align:baseline;-webkit -align-items:baseline;align-items:baseline}.layout.start-justified{-ms-flex-pack :start;-webkit-justify-content:flex-start;justify-content:flex-start}.layout.cen ter-center,.layout.center-justified{-ms-flex-pack:center;-webkit-justify-content :center;justify-content:center}.layout.end-justified{-ms-flex-pack:end;-webkit-j ustify-content:flex-end;justify-content:flex-end}.layout.around-justified{-ms-fl ex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-ar ound}.layout.justified{-ms-flex-pack:justify;-webkit-justify-content:space-betwe en;justify-content:space-between}.self-start{-ms-align-self:flex-start;-webkit-a lign-self:flex-start;align-self:flex-start}.self-center{-ms-align-self:center;-w ebkit-align-self:center;align-self:center}.self-end{-ms-align-self:flex-end;-web kit-align-self:flex-end;align-self:flex-end}.self-stretch{-ms-align-self:stretch ;-webkit-align-self:stretch;align-self:stretch}.self-baseline{-ms-align-self:bas eline;-webkit-align-self:baseline;align-self:baseline}; .layout.start-aligned{-m s-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-s tart;align-content:flex-start}.layout.end-aligned{-ms-flex-line-pack:end;-ms-ali gn-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end}.layou t.center-aligned{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-alig n-content:center;align-content:center}.layout.between-aligned{-ms-flex-line-pack :justify;-ms-align-content:space-between;-webkit-align-content:space-between;ali gn-content:space-between}.layout.around-aligned{-ms-flex-line-pack:distribute;-m s-align-content:space-around;-webkit-align-content:space-around;align-content:sp ace-around}</style> </template> </dom-module> <dom-module id="iron-flex-factors" assetpath="/res/imp/bower_components/iron-flex-layout/"> <template> <style>.fle x,.flex-1{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-bas is:0px}.flex-2{-ms-flex:2;-webkit-flex:2;flex:2}.flex-3{-ms-flex:3;-webkit-flex: 3;flex:3}.flex-4{-ms-flex:4;-webkit-flex:4;flex:4}.flex-5{-ms-flex:5;-webkit-fle x:5;flex:5}.flex-6{-ms-flex:6;-webkit-flex:6;flex:6}.flex-7{-ms-flex:7;-webkit-f lex:7;flex:7}.flex-8{-ms-flex:8;-webkit-flex:8;flex:8}.flex-9{-ms-flex:9;-webkit -flex:9;flex:9}.flex-10{-ms-flex:10;-webkit-flex:10;flex:10}.flex-11{-ms-flex:11 ;-webkit-flex:11;flex:11}.flex-12{-ms-flex:12;-webkit-flex:12;flex:12}</style> < /template> </dom-module> <dom-module id="iron-positioning" assetpath="/res/imp/b ower_components/iron-flex-layout/"> <template> <style>.block{display:block}[hidd en]{display:none!important}.invisible{visibility:hidden!important}.relative{posi tion:relative}.fit{position:absolute;top:0;right:0;bottom:0;left:0}body.fullblee d{margin:0;height:100vh}.scroll{-webkit-overflow-scrolling:touch;overflow:auto}. fixed-bottom,.fixed-left,.fixed-right,.fixed-top{position:fixed}.fixed-top{top:0 ;left:0;right:0}.fixed-right{top:0;right:0;bottom:0}.fixed-bottom{right:0;bottom :0;left:0}.fixed-left{top:0;bottom:0;left:0}</style> </template> </dom-module> < script>!function(){var e={},t={},i=null;Polymer.IronMeta=Polymer({is:"iron-meta" ,properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{typ e:String,observer:"_keyChanged"},value:{type:Object,notify:!0,observer:"_valueCh anged"},self:{type:Boolean,observer:"_selfChanged"},list:{type:Array,notify:!0}} ,hostAttributes:{hidden:!0},factoryImpl:function(e){if(e)for(var t in e)switch(t ){case"type":case"key":case"value":this[t]=e[t]}},created:function(){this._metaD atas=e,this._metaArrays=t},_keyChanged:function(e,t){this._resetRegistration(t)} ,_valueChanged:function(e){this._resetRegistration(this.key)},_selfChanged:funct ion(e){e&&(this.value=this)},_typeChanged:function(i){this._unregisterKey(this.k ey),e[i]||(e[i]={}),this._metaData=e[i],t[i]||(t[i]=[]),this.list=t[i],this._reg isterKeyValue(this.key,this.value)},byKey:function(e){return this._metaData&&thi s._metaData[e]},_resetRegistration:function(e){this._unregisterKey(e),this._regi sterKeyValue(this.key,this.value)},_unregisterKey:function(e){this._unregister(e ,this._metaData,this.list)},_registerKeyValue:function(e,t){this._register(e,t,t his._metaData,this.list)},_register:function(e,t,i,a){e&&i&&void 0!==t&&(i[e]=t, a.push(t))},_unregister:function(e,t,i){if(e&&t&&e in t){var a=t[e];delete t[e], this.arrayDelete(i,a)}}}),Polymer.IronMeta.getIronMeta=function(){return null=== i&&(i=new Polymer.IronMeta),i},Polymer.IronMetaQuery=Polymer({is:"iron-meta-quer y",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{t ype:String,observer:"_keyChanged"},value:{type:Object,notify:!0,readOnly:!0},lis t:{type:Array,notify:!0}},factoryImpl:function(e){if(e)for(var t in e)switch(t){ case"type":case"key":this[t]=e[t]}},created:function(){this._metaDatas=e,this._m etaArrays=t},_keyChanged:function(e){this._setValue(this._metaData&&this._metaDa ta[e])},_typeChanged:function(i){this._metaData=e[i],this.list=t[i],this.key&&th is._keyChanged(this.key)},byKey:function(e){return this._metaData&&this._metaDat a[e]}})}()</script> <dom-module id="iron-icon" assetpath="/res/imp/bower_compone nts/iron-icon/"> <template> <style>:host{@apply(--layout-inline);@apply(--layout -center-center);position:relative;vertical-align:middle;fill:var(--iron-icon-fil l-color,currentcolor);stroke:var(--iron-icon-stroke-color,none);width:var(--iron -icon-width,24px);height:var(--iron-icon-height,24px);@apply(--iron-icon)}</styl e> </template> <script>Polymer({is:"iron-icon",properties:{icon:{type:String},th eme:{type:String},src:{type:String},_meta:{value:Polymer.Base.create("iron-meta" ,{type:"iconset"})}},observers:["_updateIcon(_meta, isAttached)","_updateIcon(th eme, isAttached)","_srcChanged(src, isAttached)","_iconChanged(icon, isAttached) "],_DEFAULT_ICONSET:"icons",_iconChanged:function(t){var i=(t||"").split(":");th is._iconName=i.pop(),this._iconsetName=i.pop()||this._DEFAULT_ICONSET,this._upda teIcon()},_srcChanged:function(t){this._updateIcon()},_usesIconset:function(){re turn this.icon||!this.src},_updateIcon:function(){this._usesIconset()?(this._img &&this._img.parentNode&&Polymer.dom(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._i conset.applyIcon(this,this._iconName,this.theme),this.unlisten(window,"iron-icon set-added","_updateIcon")):this.listen(window,"iron-iconset-added","_updateIcon" ))):(this._iconset&&this._iconset.removeIcon(this),this._img||(this._img=documen t.createElement("img"),this._img.style.width="100%",this._img.style.height="100% ",this._img.draggable=!1),this._img.src=this.src,Polymer.dom(this.root).appendCh ild(this._img))}})</script> </dom-module> <script>Polymer({is:"iron-iconset-svg" ,properties:{name:{type:String,observer:"_nameChanged"},size:{type:Number,value: 24},rtlMirroring:{type:Boolean,value:!1}},_targetIsRTL:function(e){return e&&e.n odeType!==Node.ELEMENT_NODE&&(e=e.host),e&&"rtl"===window.getComputedStyle(e).di rection},attached:function(){this.style.display="none"},getIconNames:function(){ return this._icons=this._createIconMap(),Object.keys(this._icons).map(function(e ){return this.name+":"+e},this)},applyIcon:function(e,t){e=e.root||e,this.remove Icon(e);var n=this._cloneIcon(t,this.rtlMirroring&&this._targetIsRTL(e));if(n){v ar o=Polymer.dom(e);return o.insertBefore(n,o.childNodes[0]),e._svgIcon=n}return null},removeIcon:function(e){e=e.root||e,e._svgIcon&&(Polymer.dom(e).removeChil d(e._svgIcon),e._svgIcon=null)},_nameChanged:function(){new Polymer.IronMeta({ty pe:"iconset",key:this.name,value:this}),this.async(function(){this.fire("iron-ic onset-added",this,{node:window})})},_createIconMap:function(){var e=Object.creat e(null);return Polymer.dom(this).querySelectorAll("[id]").forEach(function(t){e[ t.id]=t}),e},_cloneIcon:function(e,t){return this._icons=this._icons||this._crea teIconMap(),this._prepareSvgClone(this._icons[e],this.size,t)},_prepareSvgClone: function(e,t,n){if(e){var o=e.cloneNode(!0),r=document.createElementNS("http://w ww.w3.org/2000/svg","svg"),i=o.getAttribute("viewBox")||"0 0 "+t+" "+t,s="pointe r-events: none; display: block; width: 100%; height: 100%;";return n&&o.hasAttri bute("mirror-in-rtl")&&(s+="-webkit-transform:scale(-1,1);transform:scale(-1,1); "),r.setAttribute("viewBox",i),r.setAttribute("preserveAspectRatio","xMidYMid me et"),r.style.cssText=s,r.appendChild(o).removeAttribute("id"),r}return null}})</ script> <iron-iconset-svg name="icons" size="24"> <svg><defs> <g id="3d-rotation "><path d="M7.52 21.48C4.25 19.94 1.91 16.76 1.55 13H.05C.56 19.16 5.71 24 12 24 l.66-.03-3.81-3.81-1.33 1.32zm.89-6.52c-.19 0-.37-.03-.52-.08-.16-.06-.29-.13-.4 -.24-.11-.1-.2-.22-.26-.37-.06-.14-.09-.3-.09-.47h-1.3c0 .36.07.68.21.95.14.27.3 3.5.56.69.24.18.51.32.82.41.3.1.62.15.96.15.37 0 .72-.05 1.03-.15.32-.1.6-.25.83 -.44s.42-.43.55-.72c.13-.29.2-.61.2-.97 0-.19-.02-.38-.07-.56-.05-.18-.12-.35-.2 3-.51-.1-.16-.24-.3-.4-.43-.17-.13-.37-.23-.61-.31.2-.09.37-.2.52-.33.15-.13.27- .27.37-.42.1-.15.17-.3.22-.46.05-.16.07-.32.07-.48 0-.36-.06-.68-.18-.96-.12-.28 -.29-.51-.51-.69-.2-.19-.47-.33-.77-.43C9.1 8.05 8.76 8 8.39 8c-.36 0-.69.05-1 . 16-.3.11-.57.26-.79.45-.21.19-.38.41-.51.67-.12.26-.18.54-.18.85h1.3c0-.17.03-.3 2.09-.45s.14-.25.25-.34c.11-.09.23-.17.38-.22.15-.05.3-.08.48-.08.4 0 .7.1.89.31 .19.2.29.49.29.86 0 .18-.03.34-.08.49-.05.15-.14.27-.25.37-.11.1-.25.18-.41.24-. 16.06-.36.09-.58.09H7.5v1.03h.77c.22 0 .42.02.6.07s.33.13.45.23c.12.11.22.24.29. 4.07.16.1.35.1.57 0 .41-.12.72-.35.93-.23.23-.55.33-.95.33zm8.55-5.92c-.32-.33-. 7-.59-1.14-.77-.43-.18-.92-.27-1.46-.27H12v8h2.3c.55 0 1.06-.09 1.51-.27.45-.18. 84-.43 1.16-.76.32-.33.57-.73.74-1.19.17-.47.26-.99.26-1.57v-.4c0-.58-.09-1.1-.2 6-1.57-.18-.47-.43-.87-.75-1.2zm-.39 3.16c0 .42-.05.79-.14 1.13-.1.33-.24.62-.43 .85-.19.23-.43.41-.71.53-.29.12-.62.18-.99.18h-.91V9.12h.97c.72 0 1.27.23 1.64.6 9.38.46.57 1.12.57 1.99v.4zM12 0l-.66.03 3.81 3.81 1.33-1.33c3.27 1.55 5.61 4.72 5.96 8.48h1.5C23.44 4.84 18.29 0 12 0z"></path></g> <g id="accessibility"><path d="M12 2c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm9 7h-6v13h-2v-6h-2v6H9V9H3 V7h18v2z"></path></g> <g id="accessible"><circle cx="12" cy="4" r="2"></circle>< path d="M19 13v-2c-1.54.02-3.09-.75-4.07-1.83l-1.29-1.43c-.17-.19-.38-.34-.61-.4 5-.01 0-.01-.01-.02-.01H13c-.35-.2-.75-.3-1.19-.26C10.76 7.11 10 8.04 10 9.09V15 c0 1.1.9 2 2 2h5v5h2v-5.5c0-1.1-.9-2-2-2h-3v-3.45c1.29 1.07 3.25 1.94 5 1.95zm-6 .17 5c-.41 1.16-1.52 2-2.83 2-1.66 0-3-1.34-3-3 0-1.31.84-2.41 2-2.83V12.1c-2.28 .46-4 2.48-4 4.9 0 2.76 2.24 5 5 5 2.42 0 4.44-1.72 4.9-4h-2.07z"></path></g> <g id="account-balance"><path d="M4 10v7h3v-7H4zm6 0v7h3v-7h-3zM2 22h19v-3H2v3zm14 -12v7h3v-7h-3zm-4.5-9L2 6v2h19V6l-9.5-5z"></path></g> <g id="account-balance-wal let"><path d="M21 18v1c0 1.1-.9 2-2 2H5c-1.11 0-2-.9-2-2V5c0-1.1.89-2 2-2h14c1.1 0 2 .9 2 2v1h-9c-1.11 0-2 .9-2 2v8c0 1.1.89 2 2 2h9zm-9-2h10V8H12v8zm4-2.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"></path></g> <g id="account-box"><path d="M3 5v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9 -2-2-2H5c-1.11 0-2 .9-2 2zm12 4c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3zm-9 8c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1H6v-1z"></path></g> <g id="account-circle "><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6 -3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z"> </path></g> <g id="add"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path></g > <g id="add-alert"><path d="M10.01 21.01c0 1.1.89 1.99 1.99 1.99s1.99-.89 1.99- 1.99h-3.98zm8.87-4.19V11c0-3.25-2.25-5.97-5.29-6.69v-.72C13.59 2.71 12.88 2 12 2 s-1.59.71-1.59 1.59v.72C7.37 5.03 5.12 7.75 5.12 11v5.82L3 18.94V20h18v-1.06l-2. 12-2.12zM16 13.01h-3v3h-2v-3H8V11h3V8h2v3h3v2.01z"></path></g> <g id="add-box">< path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9- 2-2-2zm-2 10h-4v4h-2v-4H7v-2h4V7h2v4h4v2z"></path></g> <g id="add-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11h-4v4h -2v-4H7v-2h4V7h2v4h4v2z"></path></g> <g id="add-circle-outline"><path d="M13 7h- 2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S 17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"></path> </g> <g id="add-shopping-cart"><path d="M11 9h2V6h3V4h-3V1h-2v3H8v2h3v3zm-4 9c-1 .1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zm10 0c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2zm-9.83-3.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1 .03l3.86-7.01L19.42 4h-.01l-1.1 2-2.76 5H8.53l-.13-.27L6.16 6l-.95-2-.94-2H1v2h2 l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.13 0-.25-.1 1-.25-.25z"></path></g> <g id="alarm"><path d="M22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2. 85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03- 9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"></path></g> <g id="alarm-add"><path d="M7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM22 5.72 l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7zm1-11h-2v3H8v2h3v3h2v-3h3v-2h-3V9z"></path></g> <g id="alarm-off"><path d="M12 6c3.87 0 7 3.13 7 7 0 .84-.16 1.65-.43 2.4l1.52 1.52c.58-1.19.91-2.51.91-3.92 0 -4.97-4.03-9-9-9-1.41 0-2.73.33-3.92.91L9.6 6.43C10.35 6.16 11.16 6 12 6zm10-.28 l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM2.92 2.29L1.65 3.57 2.98 4.9l-1.11.93 1.4 2 1.42 1.11-.94.8.8C3.83 8.69 3 10.75 3 13c0 4.97 4.02 9 9 9 2.25 0 4.31-.83 5.8 9-2.2l2.2 2.2 1.27-1.27L3.89 3.27l-.97-.98zm13.55 16.1C15.26 19.39 13.7 20 12 20 c-3.87 0-7-3.13-7-7 0-1.7.61-3.26 1.61-4.47l9.86 9.86zM8.02 3.28L6.6 1.86l-.86.7 1 1.42 1.42.86-.71z"></path></g> <g id="alarm-on"><path d="M22 5.72l-4.6-3.86-1. 29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12 4c-4 .97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7 -7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7zm-1.46-5.47L8.41 12.4l-1.06 1.06 3.18 3.18 6 -6-1.06-1.06-4.93 4.95z"></path></g> <g id="all-out"><path d="M16.21 4.16l4 4v-4 zm4 12l-4 4h4zm-12 4l-4-4v4zm-4-12l4-4h-4zm12.95-.95c-2.73-2.73-7.17-2.73-9.9 0s -2.73 7.17 0 9.9 7.17 2.73 9.9 0 2.73-7.16 0-9.9zm-1.1 8.8c-2.13 2.13-5.57 2.13- 7.7 0s-2.13-5.57 0-7.7 5.57-2.13 7.7 0 2.13 5.57 0 7.7z"></path></g> <g id="andr oid"><path d="M6 18c0 .55.45 1 1 1h1v3.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5V19 h2v3.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5V19h1c.55 0 1-.45 1-1V8H6v10zM3.5 8C2 .67 8 2 8.67 2 9.5v7c0 .83.67 1.5 1.5 1.5S5 17.33 5 16.5v-7C5 8.67 4.33 8 3.5 8z m17 0c-.83 0-1.5.67-1.5 1.5v7c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5v-7c0-.83-.67- 1.5-1.5-1.5zm-4.97-5.84l1.3-1.3c.2-.2.2-.51 0-.71-.2-.2-.51-.2-.71 0l-1.48 1.48C 13.85 1.23 12.95 1 12 1c-.96 0-1.86.23-2.66.63L7.85.15c-.2-.2-.51-.2-.71 0-.2.2- .2.51 0 .71l1.31 1.31C6.97 3.26 6 5.01 6 7h12c0-1.99-.97-3.75-2.47-4.84zM10 5H9V 4h1v1zm5 0h-1V4h1v1z"></path></g> <g id="announcement"><path d="M20 2H4c-1.1 0-1 .99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 9h-2V5h2v6zm0 4h-2v -2h2v2z"></path></g> <g id="apps"><path d="M4 8h4V4H4v4zm6 12h4v-4h-4v4zm-6 0h4v -4H4v4zm0-6h4v-4H4v4zm6 0h4v-4h-4v4zm6-10v4h4V4h-4zm-6 4h4V4h-4v4zm6 6h4v-4h-4v4 zm0 6h4v-4h-4v4z"></path></g> <g id="archive"><path d="M20.54 5.23l-1.39-1.68C18 .88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1.16.55L3.46 5.23C3.17 5.57 3 6.02 3 6.5V1 9c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.48-.17-.93-.46-1.27zM12 17.5L6.5 12H10v -2h4v2h3.5L12 17.5zM5.12 5l.81-1h12l.94 1H5.12z"></path></g> <g id="arrow-back"> <path d="M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z"></path></ g> <g id="arrow-downward"><path d="M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5 .59L4 12l8 8 8-8z"></path></g> <g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"> </path></g> <g id="arrow-drop-down-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.4 8 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 12l-4-4h8l-4 4z"></path></g> <g id="arr ow-drop-up"><path d="M7 14l5-5 5 5z"></path></g> <g id="arrow-forward"><path d=" M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"></path></g> <g id="ar row-upward"><path d="M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z "></path></g> <g id="aspect-ratio"><path d="M19 12h-2v3h-3v2h5v-5zM7 9h3V7H5v5h2 V9zm14-6H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm 0 16.01H3V4.99h18v14.02z"></path></g> <g id="assessment"><path d="M19 3H5c-1.1 0 -2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z"></path></g> <g id="assignment"><path d="M19 3h-4.18 C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h1 4c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45 -1 1-1zm2 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z"></path></g> <g id="assignme nt-ind"><path d="M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0 -2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 4c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm6 12H6v-1.4c0-2 4-3.1 6-3.1s6 1.1 6 3.1V19z"></path></g> <g id="ass ignment-late"><path d="M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c -1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-6 15h-2v-2 h2v2zm0-4h-2V8h2v6zm-1-9c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"></path ></g> <g id="assignment-return"><path d="M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9- 2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm4 12h-4v3l-5-5 5-5v3 h4v4z"></path></g> <g id="assignment-returned"><path d="M19 3h-4.18C14.4 1.84 13 .3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 15l -5-5h3V9h4v4h3l-5 5z"></path></g> <g id="assignment-turned-in"><path d="M19 3h-4 .18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm-2 14l-4-4 1.41-1.41L10 14.17l6.59-6.59L18 9l-8 8z"></path></g> <g id ="attachment"><path d="M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4- 4 4H9.5C8.12 15 7 13.88 7 12.5S8.12 10 9.5 10H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z"></path></g> <g id="autorenew"><path d="M12 6v3l4-4-4-4v3c-4.42 0 -8 3.58-8 8 0 1.57.46 3.03 1.24 4.26L6.7 14.8c-.45-.83-.7-1.79-.7-2.8 0-3.31 2.6 9-6 6-6zm6.76 1.74L17.3 9.2c.44.84.7 1.79.7 2.8 0 3.31-2.69 6-6 6v-3l-4 4 4 4v-3 c4.42 0 8-3.58 8-8 0-1.57-.46-3.03-1.24-4.26z"></path></g> <g id="backspace"><pa th d="M22 3H7c-.69 0-1.23.35-1.59.88L0 12l5.41 8.11c.36.53.9.89 1.59.89h15c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-3 12.59L17.59 17 14 13.41 10.41 17 9 15.59 12.59 12 9 8.41 10.41 7 14 10.59 17.59 7 19 8.41 15.41 12 19 15.59z"></path></g> <g id=" backup"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4 .65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z"></path></g> <g id="block"><path d="M12 2C 6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55- .63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z"></path></g> <g id="book"><path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2- 2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"></path></g> <g id="bookmark"><path d="M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2z"></path></g> <g id="bookmark-border"><path d="M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1- .9-2-2-2zm0 15l-5-2.18L7 18V5h10v13z"></path></g> <g id="bug-report"><path d="M2 0 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12. 49 5 12 5c-.49 0-.96.06-1.41.17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2 .97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.3 4-.04-.67-.09-1H20V8zm-6 8h-4v-2h4v2zm0-4h-4v-2h4v2z"></path></g> <g id="build"> <path d="M22.7 19l-9.1-9.1c.9-2.3.4-5-1.5-6.9-2-2-5-2.4-7.4-1.3L9 6 6 9 1.6 4.7C .4 7.1.9 10.1 2.9 12.1c1.9 1.9 4.6 2.4 6.9 1.5l9.1 9.1c.4.4 1 .4 1.4 0l2.3-2.3c. 5-.4.5-1.1.1-1.4z"></path></g> <g id="cached"><path d="M19 8l-4 4h3c0 3.31-2.69 6-6 6-1.01 0-1.97-.25-2.8-.7l-1.46 1.46C8.97 19.54 10.43 20 12 20c4.42 0 8-3.58 8-8h3l-4-4zM6 12c0-3.31 2.69-6 6-6 1.01 0 1.97.25 2.8.7l1.46-1.46C15.03 4.46 13. 57 4 12 4c-4.42 0-8 3.58-8 8H1l4 4 4-4H6z"></path></g> <g id="camera-enhance"><p ath d="M9 3L7.17 5H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1- .9-2-2-2h-3.17L15 3H9zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z m0-1l1.25-2.75L16 13l-2.75-1.25L12 9l-1.25 2.75L8 13l2.75 1.25z"></path></g> <g id="cancel"><path d="M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.5 9 15.59 7 17 8.41 13.41 12 17 15.59z"></path></g> <g id="card-giftcard"><path d= "M20 6h-2.18c.11-.31.18-.65.18-1 0-1.66-1.34-3-3-3-1.05 0-1.96.54-2.5 1.35l-.5.6 7-.5-.68C10.96 2.54 10.05 2 9 2 7.34 2 6 3.34 6 5c0 .35.07.69.18 1H4c-1.11 0-1.9 9.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-5-2c.5 5 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM9 4c.55 0 1 .45 1 1s-.45 1-1 1-1-. 45-1-1 .45-1 1-1zm11 15H4v-2h16v2zm0-5H4V8h5.08L7 10.83 8.62 12 11 8.76l1-1.36 1 1.36L15.38 12 17 10.83 14.92 8H20v6z"></path></g> <g id="card-membership"><path d="M20 2H4c-1.11 0-2 .89-2 2v11c0 1.11.89 2 2 2h4v5l4-2 4 2v-5h4c1.11 0 2-.89 2 -2V4c0-1.11-.89-2-2-2zm0 13H4v-2h16v2zm0-5H4V4h16v6z"></path></g> <g id="card-tr avel"><path d="M20 6h-3V4c0-1.11-.89-2-2-2H9c-1.11 0-2 .89-2 2v2H4c-1.11 0-2 .89 -2 2v11c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zM9 4h6v2H9V4zm11 15H4v-2h16v2zm0-5H4V8h3v2h2V8h6v2h2V8h3v6z"></path></g> <g id="change-history">< path d="M12 7.77L18.39 18H5.61L12 7.77M12 4L2 20h20L12 4z"></path></g> <g id="ch eck"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"></path></g> <g id="check-box"><path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-. 9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"></p ath></g> <g id="check-box-outline-blank"><path d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"></path></g> <g id= "check-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17. 52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"></path></g> <g id ="chevron-left"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"></path>< /g> <g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6 z"></path></g> <g id="chrome-reader-mode"><path d="M13 12h7v1.5h-7zm0-2.5h7V11h- 7zm0 5h7V16h-7zM21 4H3c-1.1 0-2 .9-2 2v13c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V6c0-1. 1-.9-2-2-2zm0 15h-9V6h9v13z"></path></g> <g id="class"><path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"></path></g> <g id="clear"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.4 1 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></g> <g id="close"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.4 1 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></g> <g id="cloud"><path d="M1 9.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96z"></path>< /g> <g id="cloud-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm4.5 14H8c-1.66 0-3-1.34-3-3s1.34-3 3-3l.14.01C8.58 8.28 10. 13 7 12 7c2.21 0 4 1.79 4 4h.5c1.38 0 2.5 1.12 2.5 2.5S17.88 16 16.5 16z"></path ></g> <g id="cloud-done"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6. 6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0 -2.64-2.05-4.78-4.65-4.96zM10 17l-3.5-3.5 1.41-1.41L10 14.17 15.18 9l1.41 1.41L1 0 17z"></path></g> <g id="cloud-download"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2. 76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM17 13l-5 5-5-5h3V9h4v4h3z"></path></ g> <g id="cloud-off"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4c-1.48 0-2.85. 43-4.01 1.17l1.46 1.46C10.21 6.23 11.08 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.6 6 0 3 1.34 3 3 0 1.13-.64 2.11-1.56 2.62l1.45 1.45C23.16 18.16 24 16.68 24 15c0- 2.64-2.05-4.78-4.65-4.96zM3 5.27l2.75 2.74C2.56 8.15 0 10.77 0 14c0 3.31 2.69 6 6 6h11.73l2 2L21 20.73 4.27 4 3 5.27zM7.73 10l8 8H6c-2.21 0-4-1.79-4-4s1.79-4 4- 4h1.73z"></path></g> <g id="cloud-queue"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.7 6 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM19 18H6c-2.21 0-4-1.79-4-4s1.79-4 4-4 h.71C7.37 7.69 9.48 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3s-1.34 3-3 3z"></path></g> <g id="cloud-upload"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2. 76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z"></path> </g> <g id="code"><path d="M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"></path></g> <g id="compare-arrows"><path d="M9.01 14H2v2h7.01v3L13 15l-3.99-4v3zm5.98-1v-3H22V8h-7.01V5L11 9l3.99 4z"></p ath></g> <g id="content-copy"><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H 8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h 11v14z"></path></g> <g id="content-cut"><path d="M9.64 7.64c.23-.5.36-1.05.36-1. 64 0-2.21-1.79-4-4-4S2 3.79 2 6s1.79 4 4 4c.59 0 1.14-.13 1.64-.36L10 12l-2.36 2 .36C7.14 14.13 6.59 14 6 14c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4c0-.59-.13-1 .14-.36-1.64L12 14l7 7h3v-1L9.64 7.64zM6 8c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-. 9 2-2 2zm0 12c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm6-7.5c-.28 0-.5-.22- .5-.5s.22-.5.5-.5.5.22.5.5-.22.5-.5.5zM19 3l-6 6 2 2 7-7V3z"></path></g> <g id=" content-paste"><path d="M19 2h-4.18C14.4.84 13.3 0 12 0c-1.3 0-2.4.84-2.82 2H5c- 1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm7 18H5V4h2v3h10V4h2v16z"></path></g> <g id="copyright"><path d="M10.08 10.86c.05-.33.16-.62.3-.87s.34-.46.59-.62c.24-.1 5.54-.22.91-.23.23.01.44.05.63.13.2.09.38.21.52.36s.25.33.34.53.13.42.14.64h1.79 c-.02-.47-.11-.9-.28-1.29s-.4-.73-.7-1.01-.66-.5-1.08-.66-.88-.23-1.39-.23c-.65 0-1.22.11-1.7.34s-.88.53-1.2.92-.56.84-.71 1.36S8 11.29 8 11.87v.27c0 .58.08 1.1 2.23 1.64s.39.97.71 1.35.72.69 1.2.91 1.05.34 1.7.34c.47 0 .91-.08 1.32-.23s.77- .36 1.08-.63.56-.58.74-.94.29-.74.3-1.15h-1.79c-.01.21-.06.4-.15.58s-.21.33-.36. 46-.32.23-.52.3c-.19.07-.39.09-.6.1-.36-.01-.66-.08-.89-.23-.25-.16-.45-.37-.59- .62s-.25-.55-.3-.88-.08-.67-.08-1v-.27c0-.35.03-.68.08-1.01zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8- 8 8 3.59 8 8-3.59 8-8 8z"></path></g> <g id="create"><path d="M3 17.25V21h3.75L1 7.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39- .39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"></path></g> <g id="create-n ew-folder"><path d="M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h 16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-1 8h-3v3h-2v-3h-3v-2h3V9h2v3h3v2z"></pa th></g> <g id="credit-card"><path d="M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11. 89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z" ></path></g> <g id="dashboard"><path d="M3 13h8V3H3v10zm0 8h8v-6H3v6zm10 0h8V11h -8v10zm0-18v6h8V3h-8z"></path></g> <g id="date-range"><path d="M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c 0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z"></path></g> <g id="delete"><path d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l- 1-1h-5l-1 1H5v2h14V4z"></path></g> <g id="description"><path d="M14 2H6c-1.1 0-1 .99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4 H8v-2h8v2zm-3-5V3.5L18.5 9H13z"></path></g> <g id="dns"><path d="M20 13H4c-.55 0 -1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1zM7 19c-1.1 0-2 -.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM20 3H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c .55 0 1-.45 1-1V4c0-.55-.45-1-1-1zM7 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"></path></g> <g id="done"><path d="M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4 L9 16.2z"></path></g> <g id="done-all"><path d="M18 7l-1.41-1.41-6.34 6.34 1.41 1.41L18 7zm4.24-1.41L11.66 16.17 7.48 12l-1.41 1.41L11.66 19l12-12-1.42-1.41zM.4 1 13.41L6 19l1.41-1.41L1.83 12 .41 13.41z"></path></g> <g id="donut-large"><path d="M11 5.08V2c-5 .5-9 4.81-9 10s4 9.5 9 10v-3.08c-3-.48-6-3.4-6-6.92s3-6.44 6-6 .92zM18.97 11H22c-.47-5-4-8.53-9-9v3.08C16 5.51 18.54 8 18.97 11zM13 18.92V22c5- .47 8.53-4 9-9h-3.03c-.43 3-2.97 5.49-5.97 5.92z"></path></g> <g id="donut-small "><path d="M11 9.16V2c-5 .5-9 4.79-9 10s4 9.5 9 10v-7.16c-1-.41-2-1.52-2-2.84s1- 2.43 2-2.84zM14.86 11H22c-.48-4.75-4-8.53-9-9v7.16c1 .3 1.52.98 1.86 1.84zM13 14 .84V22c5-.47 8.52-4.25 9-9h-7.14c-.34.86-.86 1.54-1.86 1.84z"></path></g> <g id= "drafts"><path d="M21.99 8c0-.72-.37-1.35-.94-1.7L12 1 2.95 6.3C2.38 6.65 2 7.28 2 8v10c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2l-.01-10zM12 13L3.74 7.84 12 3l8.26 4.84L 12 13z"></path></g> <g id="eject"><path d="M5 17h14v2H5zm7-12L5.33 15h13.34z"></ path></g> <g id="error"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"></path></g> <g id="error-outl ine"><path d="M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 1 0C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"></path></g> <g id="event"><path d="M17 12h-5v5h5v-5zM16 1 v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1 -.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z"></path></g> <g id="event-seat"><path d="M4 1 8v3h3v-3h10v3h3v-6H4zm15-8h3v3h-3zM2 10h3v3H2zm15 3H7V5c0-1.1.9-2 2-2h6c1.1 0 2 .9 2 2v8z"></path></g> <g id="exit-to-app"><path d="M10.09 15.59L11.5 17l5-5-5-5 -1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v- 4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"></path></g> <g id="exp and-less"><path d="M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"></path></g> < g id="expand-more"><path d="M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"></path ></g> <g id="explore"><path d="M12 10.9c-.61 0-1.1.49-1.1 1.1s.49 1.1 1.1 1.1c.6 1 0 1.1-.49 1.1-1.1s-.49-1.1-1.1-1.1zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4 .48 10-10S17.52 2 12 2zm2.19 12.19L6 18l3.81-8.19L18 6l-3.81 8.19z"></path></g> <g id="extension"><path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 1 0.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.2 1 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.2 1 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z" ></path></g> <g id="face"><path d="M9 11.75c-.69 0-1.25.56-1.25 1.25s.56 1.25 1. 25 1.25 1.25-.56 1.25-1.25-.56-1.25-1.25-1.25zm6 0c-.69 0-1.25.56-1.25 1.25s.56 1.25 1.25 1.25 1.25-.56 1.25-1.25-.56-1.25-1.25-1.25zM12 2C6.48 2 2 6.48 2 12s4. 48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8 0-.29.02-.58.05- .86 2.36-1.05 4.23-2.98 5.21-5.37C11.07 8.33 14.05 10 17.42 10c.78 0 1.53-.09 2. 25-.26.21.71.33 1.47.33 2.26 0 4.41-3.59 8-8 8z"></path></g> <g id="favorite"><p ath d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3 .41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86 -8.55 11.54L12 21.35z"></path></g> <g id="favorite-border"><path d="M16.5 3c-1.7 4 0-3.41.81-4.5 2.09C10.91 3.81 9.24 3 7.5 3 4.42 3 2 5.42 2 8.5c0 3.78 3.4 6.86 8.55 11.54L12 21.35l1.45-1.32C18.6 15.36 22 12.28 22 8.5 22 5.42 19.58 3 16.5 3 zm-4.4 15.55l-.1.1-.1-.1C7.14 14.24 4 11.39 4 8.5 4 6.5 5.5 5 7.5 5c1.54 0 3.04. 99 3.57 2.36h1.87C13.46 5.99 14.96 5 16.5 5c2 0 3.5 1.5 3.5 3.5 0 2.89-3.14 5.74 -7.9 10.05z"></path></g> <g id="feedback"><path d="M20 2H4c-1.1 0-1.99.9-1.99 2L 2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 12h-2v-2h2v2zm0-4h-2V6h2v4z"></p ath></g> <g id="file-download"><path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5 z"></path></g> <g id="file-upload"><path d="M9 16h6v-6h4l-7-7-7 7h4zm-4 2h14v2H5 z"></path></g> <g id="filter-list"><path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h 12v-2H6v2z"></path></g> <g id="find-in-page"><path d="M20 19.59V8l-6-6H6c-1.1 0- 1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c.45 0 .85-.15 1.19-.4l-4.43-4.43c-.8.52- 1.74.83-2.76.83-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5c0 1.02-.31 1.96-.83 2.75 L20 19.59zM9 13c0 1.66 1.34 3 3 3s3-1.34 3-3-1.34-3-3-3-3 1.34-3 3z"></path></g> <g id="find-replace"><path d="M11 6c1.38 0 2.63.56 3.54 1.46L12 10h6V4l-2.05 2. 05C14.68 4.78 12.93 4 11 4c-3.53 0-6.43 2.61-6.92 6H6.1c.46-2.28 2.48-4 4.9-4zm5 .64 9.14c.66-.9 1.12-1.97 1.28-3.14H15.9c-.46 2.28-2.48 4-4.9 4-1.38 0-2.63-.56- 3.54-1.46L10 12H4v6l2.05-2.05C7.32 17.22 9.07 18 11 18c1.55 0 2.98-.51 4.14-1.36 L20 21.49 21.49 20l-4.85-4.86z"></path></g> <g id="fingerprint"><path d="M17.81 4.47c-.08 0-.16-.02-.23-.06C15.66 3.42 14 3 12.01 3c-1.98 0-3.86.47-5.57 1.41-.2 4.13-.54.04-.68-.2-.13-.24-.04-.55.2-.68C7.82 2.52 9.86 2 12.01 2c2.13 0 3.99.47 6.03 1.52.25.13.34.43.21.67-.09.18-.26.28-.44.28zM3.5 9.72c-.1 0-.2-.03-.29-.09 -.23-.16-.28-.47-.12-.7.99-1.4 2.25-2.5 3.75-3.27C9.98 4.04 14 4.03 17.15 5.65c1 .5.77 2.76 1.86 3.75 3.25.16.22.11.54-.12.7-.23.16-.54.11-.7-.12-.9-1.26-2.04-2. 25-3.39-2.94-2.87-1.47-6.54-1.47-9.4.01-1.36.7-2.5 1.7-3.4 2.96-.08.14-.23.21-.3 9.21zm6.25 12.07c-.13 0-.26-.05-.35-.15-.87-.87-1.34-1.43-2.01-2.64-.69-1.23-1.0 5-2.73-1.05-4.34 0-2.97 2.54-5.39 5.66-5.39s5.66 2.42 5.66 5.39c0 .28-.22.5-.5.5 s-.5-.22-.5-.5c0-2.42-2.09-4.39-4.66-4.39-2.57 0-4.66 1.97-4.66 4.39 0 1.44.32 2 .77.93 3.85.64 1.15 1.08 1.64 1.85 2.42.19.2.19.51 0 .71-.11.1-.24.15-.37.15zm7. 17-1.85c-1.19 0-2.24-.3-3.1-.89-1.49-1.01-2.38-2.65-2.38-4.39 0-.28.22-.5.5-.5s. 5.22.5.5c0 1.41.72 2.74 1.94 3.56.71.48 1.54.71 2.54.71.24 0 .64-.03 1.04-.1.27- .05.53.13.58.41.05.27-.13.53-.41.58-.57.11-1.07.12-1.21.12zM14.91 22c-.04 0-.09- .01-.13-.02-1.59-.44-2.63-1.03-3.72-2.1-1.4-1.39-2.17-3.24-2.17-5.22 0-1.62 1.38 -2.94 3.08-2.94 1.7 0 3.08 1.32 3.08 2.94 0 1.07.93 1.94 2.08 1.94s2.08-.87 2.08 -1.94c0-3.77-3.25-6.83-7.25-6.83-2.84 0-5.44 1.58-6.61 4.03-.39.81-.59 1.76-.59 2.8 0 .78.07 2.01.67 3.61.1.26-.03.55-.29.64-.26.1-.55-.04-.64-.29-.49-1.31-.73- 2.61-.73-3.96 0-1.2.23-2.29.68-3.24 1.33-2.79 4.28-4.6 7.51-4.6 4.55 0 8.25 3.51 8.25 7.83 0 1.62-1.38 2.94-3.08 2.94s-3.08-1.32-3.08-2.94c0-1.07-.93-1.94-2.08- 1.94s-2.08.87-2.08 1.94c0 1.71.66 3.31 1.87 4.51.95.94 1.86 1.46 3.27 1.85.27.07 .42.35.35.61-.05.23-.26.38-.47.38z"></path></g> <g id="flag"><path d="M14.4 6L14 4H5v17h2v-7h5.6l.4 2h7V6z"></path></g> <g id="flight-land"><path d="M2.5 19h19v 2h-19zm7.18-5.73l4.35 1.16 5.31 1.42c.8.21 1.62-.26 1.84-1.06.21-.8-.26-1.62-1.0 6-1.84l-5.31-1.42-2.76-9.02L10.12 2v8.28L5.15 8.95l-.93-2.32-1.45-.39v5.17l1.6.4 3 5.31 1.43z"></path></g> <g id="flight-takeoff"><path d="M2.5 19h19v2h-19zm19.5 7-9.36c-.21-.8-1.04-1.28-1.84-1.06L14.92 10l-6.9-6.43-1.93.51 4.14 7.17-4.97 1.3 3-1.97-1.54-1.45.39 1.82 3.16.77 1.33 1.6-.43 5.31-1.42 4.35-1.16L21 11.49c.81-. 23 1.28-1.05 1.07-1.85z"></path></g> <g id="flip-to-back"><path d="M9 7H7v2h2V7z m0 4H7v2h2v-2zm0-8c-1.11 0-2 .9-2 2h2V3zm4 12h-2v2h2v-2zm6-12v2h2c0-1.1-.9-2-2-2 zm-6 0h-2v2h2V3zM9 17v-2H7c0 1.1.89 2 2 2zm10-4h2v-2h-2v2zm0-4h2V7h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zM5 7H3v12c0 1.1.89 2 2 2h12v-2H5V7zm10-2h2V3h-2v2zm0 12h2v-2h-2 v2z"></path></g> <g id="flip-to-front"><path d="M3 13h2v-2H3v2zm0 4h2v-2H3v2zm2 4v-2H3c0 1.1.89 2 2 2zM3 9h2V7H3v2zm12 12h2v-2h-2v2zm4-18H9c-1.11 0-2 .9-2 2v10c 0 1.1.89 2 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12H9V5h10v10zm-8 6h2v-2h-2v 2zm-4 0h2v-2H7v2z"></path></g> <g id="folder"><path d="M10 4H4c-1.1 0-1.99.9-1.9 9 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z"></path></g> <g id="folder-open"><path d="M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z"></path></g> <g id="fol der-shared"><path d="M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c 1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-5 3c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2 zm4 8h-8v-1c0-1.33 2.67-2 4-2s4 .67 4 2v1z"></path></g> <g id="font-download"><p ath d="M9.93 13.5h4.14L12 7.98zM20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-4.05 16.5l-1.14-3H9.17l-1.12 3H5.96l5.11-13h1.86l5. 11 13h-2.09z"></path></g> <g id="forward"><path d="M12 8V4l8 8-8 8v-4H4V8z"></pa th></g> <g id="fullscreen"><path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h -3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"></path></g> <g id="fullscreen-exit"><path d= "M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"> </path></g> <g id="gavel"><path d="M1 21h12v2H1zM5.245 8.07l2.83-2.827 14.14 14. 142-2.828 2.828zM12.317 1l5.657 5.656-2.83 2.83-5.654-5.66zM3.825 9.485l5.657 5. 657-2.828 2.828-5.657-5.657z"></path></g> <g id="gesture"><path d="M4.59 6.89c.7 -.71 1.4-1.35 1.71-1.22.5.2 0 1.03-.3 1.52-.25.42-2.86 3.89-2.86 6.31 0 1.28.48 2.34 1.34 2.98.75.56 1.74.73 2.64.46 1.07-.31 1.95-1.4 3.06-2.77 1.21-1.49 2.83- 3.44 4.08-3.44 1.63 0 1.65 1.01 1.76 1.79-3.78.64-5.38 3.67-5.38 5.37 0 1.7 1.44 3.09 3.21 3.09 1.63 0 4.29-1.33 4.69-6.1H21v-2.5h-2.47c-.15-1.65-1.09-4.2-4.03- 4.2-2.25 0-4.18 1.91-4.94 2.84-.58.73-2.06 2.48-2.29 2.72-.25.3-.68.84-1.11.84-. 45 0-.72-.83-.36-1.92.35-1.09 1.4-2.86 1.85-3.52.78-1.14 1.3-1.92 1.3-3.28C8.95 3.69 7.31 3 6.44 3 5.12 3 3.97 4 3.72 4.25c-.36.36-.66.66-.88.93l1.75 1.71zm9.29 11.66c-.31 0-.74-.26-.74-.72 0-.6.73-2.2 2.87-2.76-.3 2.69-1.43 3.48-2.13 3.48z "></path></g> <g id="get-app"><path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z "></path></g> <g id="gif"><path d="M11.5 9H13v6h-1.5zM9 9H6c-.6 0-1 .5-1 1v4c0 . 5.4 1 1 1h3c.6 0 1-.5 1-1v-2H8.5v1.5h-2v-3H10V10c0-.5-.4-1-1-1zm10 1.5V9h-4.5v6H 16v-2h2v-1.5h-2v-1z"></path></g> <g id="grade"><path d="M12 17.27L18.18 21l-1.64 -7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"></path></g> <g id="group-work"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S1 7.52 2 12 2zM8 17.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1 .12 2.5-2.5 2.5zM9.5 8c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5 S9.5 9.38 9.5 8zm6.5 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"></path></g> <g id="help"><path d="M12 2C6.48 2 2 6.48 2 1 2s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13. 45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59- 1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z"></path></g> <g id="help-outline"><path d="M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.5 9-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c 0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z"></path></g> <g id="highlig ht-off"><path d="M14.59 8L12 10.59 9.41 8 8 9.41 10.59 12 8 14.59 9.41 16 12 13. 41 14.59 16 16 14.59 13.41 12 16 9.41 14.59 8zM12 2C6.47 2 2 6.47 2 12s4.47 10 1 0 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3 .59 8-8 8z"></path></g> <g id="history"><path d="M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94 -2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5 l4.28 2.54.72-1.21-3.5-2.08V8H12z"></path></g> <g id="home"><path d="M10 20v-6h4 v6h5v-8h3L12 3 2 12h3v8z"></path></g> <g id="hourglass-empty"><path d="M6 2v6h.0 1L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zm 10 14.5V20H8v-3.5l4-4 4 4zm-4-5l-4-4V4h8v3.5l-4 4z"></path></g> <g id="hourglass -full"><path d="M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4- 4 4-3.99-.01-.01H18V2H6z"></path></g> <g id="http"><path d="M4.5 11h-2V9H1v6h1.5 v-2.5h2V15H6V9H4.5v2zm2.5-.5h1.5V15H10v-4.5h1.5V9H7v1.5zm5.5 0H14V15h1.5v-4.5H17 V9h-4.5v1.5zm9-1.5H18v6h1.5v-2h2c.8 0 1.5-.7 1.5-1.5v-1c0-.8-.7-1.5-1.5-1.5zm0 2 .5h-2v-1h2v1z"></path></g> <g id="https"><path d="M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2 -2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z"></path></g> <g id="important-devices"><path d="M23 11.01L18 11c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-9c0-.55 -.45-.99-1-.99zM23 20h-5v-7h5v7zM20 2H2C.89 2 0 2.89 0 4v12c0 1.1.89 2 2 2h7v2H7 v2h8v-2h-2v-2h2v-2H2V4h18v5h2V4c0-1.11-.9-2-2-2zm-8.03 7L11 6l-.97 3H7l2.47 1.76 -.94 2.91 2.47-1.8 2.47 1.8-.94-2.91L15 9h-3.03z"></path></g> <g id="inbox"><pat h d="M19 3H4.99c-1.11 0-1.98.89-1.98 2L3 19c0 1.1.88 2 1.99 2H19c1.1 0 2-.9 2-2V 5c0-1.11-.9-2-2-2zm0 12h-4c0 1.66-1.35 3-3 3s-3-1.34-3-3H4.99V5H19v10z"></path>< /g> <g id="indeterminate-check-box"><path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"></path></g> <g id="i nfo"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2z m1 15h-2v-6h2v6zm0-8h-2V7h2v2z"></path></g> <g id="info-outline"><path d="M11 17 h2v-6h-2v6zm1-15C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zM11 9h2V7h-2v2z"></path>< /g> <g id="input"><path d="M21 3.01H3c-1.1 0-2 .9-2 2V9h2V4.99h18v14.03H3V15H1v4 .01c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98v-14c0-1.11-.9-2-2-2zM11 16l4-4-4-4 v3H1v2h10v3z"></path></g> <g id="invert-colors"><path d="M17.66 7.93L12 2.27 6.3 4 7.93c-3.12 3.12-3.12 8.19 0 11.31C7.9 20.8 9.95 21.58 12 21.58c2.05 0 4.1-.78 5.66-2.34 3.12-3.12 3.12-8.19 0-11.31zM12 19.59c-1.6 0-3.11-.62-4.24-1.76C6.62 1 6.69 6 15.19 6 13.59s.62-3.11 1.76-4.24L12 5.1v14.49z"></path></g> <g id="label" ><path d="M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1 .9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16z"></path></g> <g i d="label-outline"><path d="M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16zM 16 17H5V7h11l3.55 5L16 17z"></path></g> <g id="language"><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm6.93 6h-2 .95c-.32-1.25-.78-2.45-1.38-3.56 1.84.63 3.37 1.91 4.33 3.56zM12 4.04c.83 1.2 1. 48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96zM4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2 0 .68.06 1.34.14 2H4.26zm.82 2h2.9 5c.32 1.25.78 2.45 1.38 3.56-1.84-.63-3.37-1.9-4.33-3.56zm2.95-8H5.08c.96-1.66 2 .49-2.93 4.33-3.56C8.81 5.55 8.35 6.75 8.03 8zM12 19.96c-.83-1.2-1.48-2.53-1.91- 3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96zM14.34 14H9.66c-.09-.66-.16-1.32-.16-2 0 -.68.07-1.35.16-2h4.68c.09.65.16 1.32.16 2 0 .68-.07 1.34-.16 2zm.25 5.56c.6-1.1 1 1.06-2.31 1.38-3.56h2.95c-.96 1.65-2.49 2.93-4.33 3.56zM16.36 14c.08-.66.14-1. 32.14-2 0-.68-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2h-3.38z"></p ath></g> <g id="launch"><path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h -7z"></path></g> <g id="lightbulb-outline"><path d="M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7zm2.85 11.1 l-.85.6V16h-4v-2.3l-.85-.6C7.8 12.16 7 10.63 7 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.63-.8 3.16-2.15 4.1z"></path></g> <g id="line-style"><path d="M3 16h5v-2H3v2zm 6.5 0h5v-2h-5v2zm6.5 0h5v-2h-5v2zM3 20h2v-2H3v2zm4 0h2v-2H7v2zm4 0h2v-2h-2v2zm4 0h2v-2h-2v2zm4 0h2v-2h-2v2zM3 12h8v-2H3v2zm10 0h8v-2h-8v2zM3 4v4h18V4H3z"></path ></g> <g id="line-weight"><path d="M3 17h18v-2H3v2zm0 3h18v-1H3v1zm0-7h18v-3H3v3 zm0-9v4h18V4H3z"></path></g> <g id="link"><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3 .1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8 v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5 -2.24 5-5s-2.24-5-5-5z"></path></g> <g id="list"><path d="M3 13h2v-2H3v2zm0 4h2v -2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z"></path></g> <g id="lock"><path d="M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v 10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3 .1v2z"></path></g> <g id="lock-open"><path d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3 .1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2- 2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z"></path></g> <g id="lock-outline"><path d= "M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2 -2zM8.9 6c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1v2H8.9V6zM18 20H6V10h12v10z">< /path></g> <g id="loyalty"><path d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c -1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1 .41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7zm11.77 8.27L13 19.54l-4.27-4.27C8.2 8 14.81 8 14.19 8 13.5c0-1.38 1.12-2.5 2.5-2.5.69 0 1.32.28 1.77.74l.73.72.73-.7 3c.45-.45 1.08-.73 1.77-.73 1.38 0 2.5 1.12 2.5 2.5 0 .69-.28 1.32-.73 1.77z"></ path></g> <g id="mail"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h 16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"></path></g> <g id ="markunread"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"></path></g> <g id="markunr ead-mailbox"><path d="M20 6H10v6H8V4h6V0H6v6H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h 16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2z"></path></g> <g id="menu"><path d="M3 18h18v -2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"></path></g> <g id="more-horiz"><path d="M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2- .9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"></path></g> < g id="more-vert"><path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c -1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2- 2-.9-2-2-2z"></path></g> <g id="motorcycle"><path d="M19.44 9.03L15.41 5H11v2h3. 59l2 2H5c-2.8 0-5 2.2-5 5s2.2 5 5 5c2.46 0 4.45-1.69 4.9-4h1.65l2.77-2.77c-.21.5 4-.32 1.14-.32 1.77 0 2.8 2.2 5 5 5s5-2.2 5-5c0-2.65-1.97-4.77-4.56-4.97zM7.82 1 5C7.4 16.15 6.28 17 5 17c-1.63 0-3-1.37-3-3s1.37-3 3-3c1.28 0 2.4.85 2.82 2H5v2h 2.82zM19 17c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z"></path></g> <g id="move-to-inbox"><path d="M19 3H4.99c-1.11 0-1.98.9-1.98 2L3 19c0 1.1.88 2 1. 99 2H19c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12h-4c0 1.66-1.35 3-3 3s-3-1.34-3-3H4 .99V5H19v10zm-3-5h-2V7h-4v3H8l4 4 4-4z"></path></g> <g id="next-week"><path d="M 20 7h-4V5c0-.55-.22-1.05-.59-1.41C15.05 3.22 14.55 3 14 3h-4c-1.1 0-2 .9-2 2v2H4 c-1.1 0-2 .9-2 2v11c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2zM10 5h4v2h- 4V5zm1 13.5l-1-1 3-3-3-3 1-1 4 4-4 4z"></path></g> <g id="note-add"><path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 14h -3v3h-2v-3H8v-2h3v-3h2v3h3v2zm-3-7V3.5L18.5 9H13z"></path></g> <g id="offline-pi n"><path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm5 16H7 v-2h10v2zm-6.7-4L7 10.7l1.4-1.4 1.9 1.9 5.3-5.3L17 7.3 10.3 14z"></path></g> <g id="opacity"><path d="M17.66 8L12 2.35 6.34 8C4.78 9.56 4 11.64 4 13.64s.78 4.11 2.34 5.67 3.61 2.35 5.66 2.35 4.1-.79 5.66-2.35S20 15.64 20 13.64 19.22 9.56 17 .66 8zM6 14c.01-2 .62-3.27 1.76-4.4L12 5.27l4.24 4.38C17.38 10.77 17.99 12 18 14 H6z"></path></g> <g id="open-in-browser"><path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h4v-2H5V8h14v10h-4v2h4c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2zm-7 6l-4 4h3 v6h2v-6h3l-4-4z"></path></g> <g id="open-in-new"><path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"></path></g> <g id="open-with"><path d="M10 9h4V6h3 l-5-5-5 5h3v3zm-1 1H6V7l-5 5 5 5v-3h3v-4zm14 2l-5-5v3h-3v4h3v3l5-5zm-9 3h-4v3H7l 5 5 5-5h-3v-3z"></path></g> <g id="pageview"><path d="M11.5 9C10.12 9 9 10.12 9 11.5s1.12 2.5 2.5 2.5 2.5-1.12 2.5-2.5S12.88 9 11.5 9zM20 4H4c-1.1 0-2 .9-2 2v12 c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-3.21 14.21l-2.91-2.91c-.69.4 4-1.51.7-2.39.7C9.01 16 7 13.99 7 11.5S9.01 7 11.5 7 16 9.01 16 11.5c0 .88-.26 1 .69-.7 2.39l2.91 2.9-1.42 1.42z"></path></g> <g id="pan-tool"><path d="M23 5.5V2 0c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19L1 14.83s1.26-1.23 1.3-1.25c.22- .19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46V4c0-.83.67-1.5 1.5- 1.5S11 3.17 11 4v7h1V1.5c0-.83.67-1.5 1.5-1.5S15 .67 15 1.5V11h1V2.5c0-.83.67-1. 5 1.5-1.5s1.5.67 1.5 1.5V11h1V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z"></path>< /g> <g id="payment"><path d="M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2 h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z"></path> </g> <g id="perm-camera-mic"><path d="M20 5h-3.17L15 3H9L7.17 5H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h7v-2.09c-2.83-.48-5-2.94-5-5.91h2c0 2.21 1.79 4 4 4s4-1.79 4- 4h2c0 2.97-2.17 5.43-5 5.91V21h7c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-6 8c0 1.1-.9 2-2 2s-2-.9-2-2V9c0-1.1.9-2 2-2s2 .9 2 2v4z"></path></g> <g id="perm-contact-cal endar"><path d="M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c 1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1 .34-3 3-3zm6 12H6v-1c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1z"></path></g> <g id="perm-dat a-setting"><path d="M18.99 11.5c.34 0 .67.03 1 .07L20 0 0 20h11.56c-.04-.33-.07- .66-.07-1 0-4.14 3.36-7.5 7.5-7.5zm3.71 7.99c.02-.16.04-.32.04-.49 0-.17-.01-.33 -.04-.49l1.06-.83c.09-.08.12-.21.06-.32l-1-1.73c-.06-.11-.19-.15-.31-.11l-1.24.5 c-.26-.2-.54-.37-.85-.49l-.19-1.32c-.01-.12-.12-.21-.24-.21h-2c-.12 0-.23.09-.25 .21l-.19 1.32c-.3.13-.59.29-.85.49l-1.24-.5c-.11-.04-.24 0-.31.11l-1 1.73c-.06.1 1-.04.24.06.32l1.06.83c-.02.16-.03.32-.03.49 0 .17.01.33.03.49l-1.06.83c-.09.08- .12.21-.06.32l1 1.73c.06.11.19.15.31.11l1.24-.5c.26.2.54.37.85.49l.19 1.32c.02.1 2.12.21.25.21h2c.12 0 .23-.09.25-.21l.19-1.32c.3-.13.59-.29.84-.49l1.25.5c.11.04 .24 0 .31-.11l1-1.73c.06-.11.03-.24-.06-.32l-1.07-.83zm-3.71 1.01c-.83 0-1.5-.67 -1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"></path></g> <g id="per m-device-information"><path d="M13 7h-2v2h2V7zm0 4h-2v6h2v-6zm4-9.99L7 1c-1.1 0- 2 .9-2 2v18c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99zM17 19H7V5h10 v14z"></path></g> <g id="perm-identity"><path d="M12 5.9c1.16 0 2.1.94 2.1 2.1s- .94 2.1-2.1 2.1S9.9 9.16 9.9 8s.94-2.1 2.1-2.1m0 9c2.97 0 6.1 1.46 6.1 2.1v1.1H5 .9V17c0-.64 3.13-2.1 6.1-2.1M12 4C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4 -4-4zm0 9c-2.67 0-8 1.34-8 4v3h16v-3c0-2.66-5.33-4-8-4z"></path></g> <g id="perm -media"><path d="M2 6H0v5h.01L0 20c0 1.1.9 2 2 2h18v-2H2V6zm20-2h-8l-2-2H6c-1.1 0-1.99.9-1.99 2L4 16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM7 15l4.5- 6 3.5 4.51 2.5-3.01L21 15H7z"></path></g> <g id="perm-phone-msg"><path d="M20 15 .5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.02.24l-2.2 2.2c-2.83-1.44-5.15-3.7 5-6.59-6.58l2.2-2.21c.28-.27.36-.66.25-1.01C8.7 6.45 8.5 5.25 8.5 4c0-.55-.45-1- 1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1 zM12 3v10l3-3h6V3h-9z"></path></g> <g id="perm-scan-wifi"><path d="M12 3C6.95 3 3.15 4.85 0 7.23L12 22 24 7.25C20.85 4.87 17.05 3 12 3zm1 13h-2v-6h2v6zm-2-8V6h2 v2h-2z"></path></g> <g id="pets"><circle cx="4.5" cy="9.5" r="2.5"></circle><cir cle cx="9" cy="5.5" r="2.5"></circle><circle cx="15" cy="5.5" r="2.5"></circle>< circle cx="19.5" cy="9.5" r="2.5"></circle><path d="M17.34 14.86c-.87-1.02-1.6-1 .89-2.48-2.91-.46-.54-1.05-1.08-1.75-1.32-.11-.04-.22-.07-.33-.09-.25-.04-.52-.0 4-.78-.04s-.53 0-.79.05c-.11.02-.22.05-.33.09-.7.24-1.28.78-1.75 1.32-.87 1.02-1 .6 1.89-2.48 2.91-1.31 1.31-2.92 2.76-2.62 4.79.29 1.02 1.02 2.03 2.33 2.32.73.1 5 3.06-.44 5.54-.44h.18c2.48 0 4.81.58 5.54.44 1.31-.29 2.04-1.31 2.33-2.32.31-2 .04-1.3-3.49-2.61-4.8z"></path></g> <g id="picture-in-picture"><path d="M19 7h-8 v6h8V7zm2-4H3c-1.1 0-2 .9-2 2v14c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98V5c0-1 .1-.9-2-2-2zm0 16.01H3V4.98h18v14.03z"></path></g> <g id="picture-in-picture-alt "><path d="M19 11h-8v6h8v-6zm4 8V4.98C23 3.88 22.1 3 21 3H3c-1.1 0-2 .88-2 1.98V 19c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2zm-2 .02H3V4.97h18v14.05z"></path></g> <g id=" play-for-work"><path d="M11 5v5.59H7.5l4.5 4.5 4.5-4.5H13V5h-2zm-5 9c0 3.31 2.69 6 6 6s6-2.69 6-6h-2c0 2.21-1.79 4-4 4s-4-1.79-4-4H6z"></path></g> <g id="polyme r"><path d="M19 4h-4L7.11 16.63 4.5 12 9 4H5L.5 12 5 20h4l7.89-12.63L19.5 12 15 20h4l4.5-8z"></path></g> <g id="power-settings-new"><path d="M13 3h-2v10h2V3zm4. 83 2.17l-1.42 1.42C17.99 7.86 19 9.81 19 12c0 3.87-3.13 7-7 7s-7-3.13-7-7c0-2.19 1.01-4.14 2.58-5.42L6.17 5.17C4.23 6.82 3 9.26 3 12c0 4.97 4.03 9 9 9s9-4.03 9- 9c0-2.74-1.23-5.18-3.17-6.83z"></path></g> <g id="pregnant-woman"><path d="M9 4c 0-1.11.89-2 2-2s2 .89 2 2-.89 2-2 2-2-.89-2-2zm7 9c-.01-1.34-.83-2.51-2-3 0-1.66 -1.34-3-3-3s-3 1.34-3 3v7h2v5h3v-5h3v-4z"></path></g> <g id="print"><path d="M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c -.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z"></path></g> <g i d="query-builder"><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3 .58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z"></path></g> <g id="question-a nswer"><path d="M21 6h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1zm-4 6V3c0 -.55-.45-1-1-1H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1z"></path></g> <g id= "radio-button-checked"><path d="M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2 .24-5-5-5zm0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18 c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"></path></g> <g id="radio- button-unchecked"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S 17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"></path> </g> <g id="receipt"><path d="M18 17H6v-2h12v2zm0-4H6v-2h12v2zm0-4H6V7h12v2zM3 2 2l1.5-1.5L6 22l1.5-1.5L9 22l1.5-1.5L12 22l1.5-1.5L15 22l1.5-1.5L18 22l1.5-1.5L21 22V2l-1.5 1.5L18 2l-1.5 1.5L15 2l-1.5 1.5L12 2l-1.5 1.5L9 2 7.5 3.5 6 2 4.5 3.5 3 2v20z"></path></g> <g id="record-voice-over"><circle cx="9" cy="9" r="4"></ci rcle><path d="M9 15c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4zm7.76-9.64l-1.6 8 1.69c.84 1.18.84 2.71 0 3.89l1.68 1.69c2.02-2.02 2.02-5.07 0-7.27zM20.07 2l-1. 63 1.63c2.77 3.02 2.77 7.56 0 10.74L20.07 16c3.9-3.89 3.91-9.95 0-14z"></path></ g> <g id="redeem"><path d="M20 6h-2.18c.11-.31.18-.65.18-1 0-1.66-1.34-3-3-3-1.0 5 0-1.96.54-2.5 1.35l-.5.67-.5-.68C10.96 2.54 10.05 2 9 2 7.34 2 6 3.34 6 5c0 .3 5.07.69.18 1H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8 c0-1.11-.89-2-2-2zm-5-2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM9 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm11 15H4v-2h16v2zm0-5H4V8h5.08L7 10.8 3 8.62 12 11 8.76l1-1.36 1 1.36L15.38 12 17 10.83 14.92 8H20v6z"></path></g> <g id="redo"><path d="M18.4 10.6C16.55 8.99 14.15 8 11.5 8c-4.65 0-8.58 3.03-9.96 7 .22L3.9 16c1.05-3.19 4.05-5.5 7.6-5.5 1.95 0 3.73.72 5.12 1.88L13 16h9V7l-3.6 3. 6z"></path></g> <g id="refresh"><path d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4 -5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2. 35z"></path></g> <g id="remove"><path d="M19 13H5v-2h14v2z"></path></g> <g id="r emove-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.5 2 2 12 2zm5 11H7v-2h10v2z"></path></g> <g id="remove-circle-outline"><path d="M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm 0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"></path></g> <g id="re order"><path d="M3 15h18v-2H3v2zm0 4h18v-2H3v2zm0-8h18V9H3v2zm0-6v2h18V5H3z"></p ath></g> <g id="reply"><path d="M10 9V5l-7 7 7 7v-4.1c5 0 8.5 1.6 11 5.1-1-5-4-1 0-11-11z"></path></g> <g id="reply-all"><path d="M7 8V5l-7 7 7 7v-3l-4-4 4-4zm6 1V5l-7 7 7 7v-4.1c5 0 8.5 1.6 11 5.1-1-5-4-10-11-11z"></path></g> <g id="report" ><path d="M15.73 3H8.27L3 8.27v7.46L8.27 21h7.46L21 15.73V8.27L15.73 3zM12 17.3c -.72 0-1.3-.58-1.3-1.3 0-.72.58-1.3 1.3-1.3.72 0 1.3.58 1.3 1.3 0 .72-.58 1.3-1. 3 1.3zm1-4.3h-2V7h2v6z"></path></g> <g id="report-problem"><path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"></path></g> <g id="restore"><path d="M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9- 4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"></path></g> <g id ="room"><path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.1 3-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2 .5-2.5 2.5z"></path></g> <g id="rounded-corner"><path d="M19 19h2v2h-2v-2zm0-2h2 v-2h-2v2zM3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm0-4h2V3H3v2zm4 0h2V3H7v2zm8 16h2v-2h-2v2zm-4 0h2v-2h-2v2zm4 0h2v-2h-2v2zm-8 0h2v-2H7v2zm-4 0h2v-2H3v2zM21 8c 0-2.76-2.24-5-5-5h-5v2h5c1.65 0 3 1.35 3 3v5h2V8z"></path></g> <g id="rowing"><p ath d="M8.5 14.5L4 19l1.5 1.5L9 17h2l-2.5-2.5zM15 1c-1.1 0-2 .9-2 2s.9 2 2 2 2-. 9 2-2-.9-2-2-2zm6 20.01L18 24l-2.99-3.01V19.5l-7.1-7.09c-.31.05-.61.07-.91.07v-2 .16c1.66.03 3.61-.87 4.67-2.04l1.4-1.55c.19-.21.43-.38.69-.5.29-.14.62-.23.96-.2 3h.03C15.99 6.01 17 7.02 17 8.26v5.75c0 .84-.35 1.61-.92 2.16l-3.58-3.58v-2.27c- .63.52-1.43 1.02-2.29 1.39L16.5 18H18l3 3.01z"></path></g> <g id="save"><path d= "M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.6 6 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z"></path></g> <g id="schedule"><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 1 7.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z"></path></g> <g id="search"><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5. 91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4. 99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z">< /path></g> <g id="select-all"><path d="M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1 .9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2 -.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h 10V7H7v10zm2-8h6v6H9V9z"></path></g> <g id="send"><path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"></path></g> <g id="settings"><path d="M19.43 12.98c.04-.32.07- .64.07-.98s-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39 -.3-.61-.22l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h -4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.23-.09-.49 0 -.61.22l-2 3.46c-.13.22-.07.49.12.64l2.11 1.65c-.04.32-.07.65-.07.98s.03.66.07.9 8l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.1 7-.59 1.69-.98l2.49 1c.23.09.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1. 65zM12 15.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5- 3.5 3.5z"></path></g> <g id="settings-applications"><path d="M12 10c-1.1 0-2 .9- 2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm7-7H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-1.75 9c0 .23-.02.46-.05.68l1.48 1.16c.13.11.17.3 .08.45l-1.4 2.42c-.09.15-.27.21-.43.15l-1.74-.7c-.36.28-.76.51-1.18.69l-.26 1.85 c-.03.17-.18.3-.35.3h-2.8c-.17 0-.32-.13-.35-.29l-.26-1.85c-.43-.18-.82-.41-1.18 -.69l-1.74.7c-.16.06-.34 0-.43-.15l-1.4-2.42c-.09-.15-.05-.34.08-.45l1.48-1.16c- .03-.23-.05-.46-.05-.69 0-.23.02-.46.05-.68l-1.48-1.16c-.13-.11-.17-.3-.08-.45l1 .4-2.42c.09-.15.27-.21.43-.15l1.74.7c.36-.28.76-.51 1.18-.69l.26-1.85c.03-.17.18 -.3.35-.3h2.8c.17 0 .32.13.35.29l.26 1.85c.43.18.82.41 1.18.69l1.74-.7c.16-.06.3 4 0 .43.15l1.4 2.42c.09.15.05.34-.08.45l-1.48 1.16c.03.23.05.46.05.69z"></path>< /g> <g id="settings-backup-restore"><path d="M14 12c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2zm-2-9c-4.97 0-9 4.03-9 9H0l4 4 4-4H5c0-3.87 3.13-7 7-7s7 3.13 7 7 -3.13 7-7 7c-1.51 0-2.91-.49-4.06-1.3l-1.42 1.44C8.04 20.3 9.94 21 12 21c4.97 0 9-4.03 9-9s-4.03-9-9-9z"></path></g> <g id="settings-bluetooth"><path d="M11 24h 2v-2h-2v2zm-4 0h2v-2H7v2zm8 0h2v-2h-2v2zm2.71-18.29L12 0h-1v7.59L6.41 3 5 4.41 1 0.59 10 5 15.59 6.41 17 11 12.41V20h1l5.71-5.71-4.3-4.29 4.3-4.29zM13 3.83l1.88 1.88L13 7.59V3.83zm1.88 10.46L13 16.17v-3.76l1.88 1.88z"></path></g> <g id="sett ings-brightness"><path d="M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16.01H3V4.99h18v14.02zM8 16h2.5l1.5 1.5 1.5-1.5H16v-2.5 l1.5-1.5-1.5-1.5V8h-2.5L12 6.5 10.5 8H8v2.5L6.5 12 8 13.5V16zm4-7c1.66 0 3 1.34 3 3s-1.34 3-3 3V9z"></path></g> <g id="settings-cell"><path d="M7 24h2v-2H7v2zm4 0h2v-2h-2v2zm4 0h2v-2h-2v2zM16 .01L8 0C6.9 0 6 .9 6 2v16c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V2c0-1.1-.9-1.99-2-1.99zM16 16H8V4h8v12z"></path></g> <g id="settings-et hernet"><path d="M7.77 6.76L6.23 5.48.82 12l5.41 6.52 1.54-1.28L3.42 12l4.35-5.2 4zM7 13h2v-2H7v2zm10-2h-2v2h2v-2zm-6 2h2v-2h-2v2zm6.77-7.52l-1.54 1.28L20.58 12l -4.35 5.24 1.54 1.28L23.18 12l-5.41-6.52z"></path></g> <g id="settings-input-ant enna"><path d="M12 5c-3.87 0-7 3.13-7 7h2c0-2.76 2.24-5 5-5s5 2.24 5 5h2c0-3.87- 3.13-7-7-7zm1 9.29c.88-.39 1.5-1.26 1.5-2.29 0-1.38-1.12-2.5-2.5-2.5S9.5 10.62 9 .5 12c0 1.02.62 1.9 1.5 2.29v3.3L7.59 21 9 22.41l3-3 3 3L16.41 21 13 17.59v-3.3z M12 1C5.93 1 1 5.93 1 12h2c0-4.97 4.03-9 9-9s9 4.03 9 9h2c0-6.07-4.93-11-11-11z" ></path></g> <g id="settings-input-component"><path d="M5 2c0-.55-.45-1-1-1s-1 . 45-1 1v4H1v6h6V6H5V2zm4 14c0 1.3.84 2.4 2 2.82V23h2v-4.18c1.16-.41 2-1.51 2-2.82 v-2H9v2zm-8 0c0 1.3.84 2.4 2 2.82V23h2v-4.18C6.16 18.4 7 17.3 7 16v-2H1v2zM21 6V 2c0-.55-.45-1-1-1s-1 .45-1 1v4h-2v6h6V6h-2zm-8-4c0-.55-.45-1-1-1s-1 .45-1 1v4H9v 6h6V6h-2V2zm4 14c0 1.3.84 2.4 2 2.82V23h2v-4.18c1.16-.41 2-1.51 2-2.82v-2h-6v2z" ></path></g> <g id="settings-input-composite"><path d="M5 2c0-.55-.45-1-1-1s-1 . 45-1 1v4H1v6h6V6H5V2zm4 14c0 1.3.84 2.4 2 2.82V23h2v-4.18c1.16-.41 2-1.51 2-2.82 v-2H9v2zm-8 0c0 1.3.84 2.4 2 2.82V23h2v-4.18C6.16 18.4 7 17.3 7 16v-2H1v2zM21 6V 2c0-.55-.45-1-1-1s-1 .45-1 1v4h-2v6h6V6h-2zm-8-4c0-.55-.45-1-1-1s-1 .45-1 1v4H9v 6h6V6h-2V2zm4 14c0 1.3.84 2.4 2 2.82V23h2v-4.18c1.16-.41 2-1.51 2-2.82v-2h-6v2z" ></path></g> <g id="settings-input-hdmi"><path d="M18 7V4c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v3H5v6l3 6v3h8v-3l3-6V7h-1zM8 4h8v3h-2V5h-1v2h-2V5h-1v2H8V4z"></path>< /g> <g id="settings-input-svideo"><path d="M8 11.5c0-.83-.67-1.5-1.5-1.5S5 10.67 5 11.5 5.67 13 6.5 13 8 12.33 8 11.5zm7-5c0-.83-.67-1.5-1.5-1.5h-3C9.67 5 9 5.6 7 9 6.5S9.67 8 10.5 8h3c.83 0 1.5-.67 1.5-1.5zM8.5 15c-.83 0-1.5.67-1.5 1.5S7.67 18 8.5 18s1.5-.67 1.5-1.5S9.33 15 8.5 15zM12 1C5.93 1 1 5.93 1 12s4.93 11 11 11 11-4.93 11-11S18.07 1 12 1zm0 20c-4.96 0-9-4.04-9-9s4.04-9 9-9 9 4.04 9 9-4.04 9-9 9zm5.5-11c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5- 1.5zm-2 5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z "></path></g> <g id="settings-overscan"><path d="M12.01 5.5L10 8h4l-1.99-2.5zM18 10v4l2.5-1.99L18 10zM6 10l-2.5 2.01L6 14v-4zm8 6h-4l2.01 2.5L14 16zm7-13H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16.01H3V4.99h 18v14.02z"></path></g> <g id="settings-phone"><path d="M13 9h-2v2h2V9zm4 0h-2v2h 2V9zm3 6.5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.02.24l-2.2 2.2c-2.83-1.44- 5.15-3.75-6.59-6.58l2.2-2.21c.28-.27.36-.66.25-1.01C8.7 6.45 8.5 5.25 8.5 4c0-.5 5-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-. 45-1-1-1zM19 9v2h2V9h-2z"></path></g> <g id="settings-power"><path d="M7 24h2v-2 H7v2zm4 0h2v-2h-2v2zm2-22h-2v10h2V2zm3.56 2.44l-1.45 1.45C16.84 6.94 18 8.83 18 11c0 3.31-2.69 6-6 6s-6-2.69-6-6c0-2.17 1.16-4.06 2.88-5.12L7.44 4.44C5.36 5.88 4 8.28 4 11c0 4.42 3.58 8 8 8s8-3.58 8-8c0-2.72-1.36-5.12-3.44-6.56zM15 24h2v-2h -2v2z"></path></g> <g id="settings-remote"><path d="M15 9H9c-.55 0-1 .45-1 1v12c 0 .55.45 1 1 1h6c.55 0 1-.45 1-1V10c0-.55-.45-1-1-1zm-3 6c-1.1 0-2-.9-2-2s.9-2 2 -2 2 .9 2 2-.9 2-2 2zM7.05 6.05l1.41 1.41C9.37 6.56 10.62 6 12 6s2.63.56 3.54 1. 46l1.41-1.41C15.68 4.78 13.93 4 12 4s-3.68.78-4.95 2.05zM12 0C8.96 0 6.21 1.23 4 .22 3.22l1.41 1.41C7.26 3.01 9.51 2 12 2s4.74 1.01 6.36 2.64l1.41-1.41C17.79 1.2 3 15.04 0 12 0z"></path></g> <g id="settings-voice"><path d="M7 24h2v-2H7v2zm5-1 1c1.66 0 2.99-1.34 2.99-3L15 4c0-1.66-1.34-3-3-3S9 2.34 9 4v6c0 1.66 1.34 3 3 3z m-1 11h2v-2h-2v2zm4 0h2v-2h-2v2zm4-14h-1.7c0 3-2.54 5.1-5.3 5.1S6.7 13 6.7 10H5c 0 3.41 2.72 6.23 6 6.72V20h2v-3.28c3.28-.49 6-3.31 6-6.72z"></path></g> <g id="s hop"><path d="M16 6V4c0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H2v13c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6h-6zm-6-2h4v2h-4V4zM9 18V9l7.5 4L9 18z"></path></g> <g i d="shop-two"><path d="M3 9H1v11c0 1.11.89 2 2 2h14c1.11 0 2-.89 2-2H3V9zm15-4V3c 0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H5v11c0 1.11.89 2 2 2h14c1.11 0 2-.89 2-2 V5h-5zm-6-2h4v2h-4V3zm0 12V8l5.5 3-5.5 4z"></path></g> <g id="shopping-basket">< path d="M17.21 9l-4.38-6.56c-.19-.28-.51-.42-.83-.42-.32 0-.64.14-.83.43L6.79 9H 2c-.55 0-1 .45-1 1 0 .09.01.18.04.27l2.54 9.27c.23.84 1 1.46 1.92 1.46h13c.92 0 1.69-.62 1.93-1.46l2.54-9.27L23 10c0-.55-.45-1-1-1h-4.79zM9 9l3-4.4L15 9H9zm3 8c -1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"></path></g> <g id="shopping-cart">< path d="M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7. 59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-. 25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2- .9-2-2-2z"></path></g> <g id="sort"><path d="M3 18h6v-2H3v2zM3 6v2h18V6H3zm0 7h1 2v-2H3v2z"></path></g> <g id="speaker-notes"><path d="M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM8 14H6v-2h2v2zm0-3H6V9h2v2zm0-3H 6V6h2v2zm7 6h-5v-2h5v2zm3-3h-8V9h8v2zm0-3h-8V6h8v2z"></path></g> <g id="spellche ck"><path d="M12.45 16h2.09L9.43 3H7.57L2.46 16h2.09l1.12-3h5.64l1.14 3zm-6.02-5 L8.5 5.48 10.57 11H6.43zm15.16.59l-8.09 8.09L9.83 16l-1.41 1.41 5.09 5.09L23 13l -1.41-1.41z"></path></g> <g id="star"><path d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"></path></g> <g id="star -border"><path d="M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L 12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z"></path></g> <g id="star-half "><path d="M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 1 8.18 21l-1.63-7.03L22 9.24zM12 15.4V6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15 .4z"></path></g> <g id="stars"><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm4.24 16L12 15.45 7.77 18l1.12-4.81- 3.73-3.23 4.92-.42L12 5l1.92 4.53 4.92.42-3.73 3.23L16.23 18z"></path></g> <g id ="store"><path d="M20 4H4v2h16V4zm1 10v-2l-1-5H4l-1 5v2h1v6h10v-6h4v6h2v-6h1zm-9 4H6v-4h6v4z"></path></g> <g id="subdirectory-arrow-left"><path d="M11 9l1.42 1. 42L8.83 14H18V4h2v12H8.83l3.59 3.58L11 21l-6-6 6-6z"></path></g> <g id="subdirec tory-arrow-right"><path d="M19 15l-6 6-1.42-1.42L15.17 16H4V4h2v10h9.17l-3.59-3. 58L13 9l6 6z"></path></g> <g id="subject"><path d="M14 17H4v2h10v-2zm6-8H4v2h16V 9zM4 15h16v-2H4v2zM4 5v2h16V5H4z"></path></g> <g id="supervisor-account"><path d ="M16.5 12c1.38 0 2.49-1.12 2.49-2.5S17.88 7 16.5 7C15.12 7 14 8.12 14 9.5s1.12 2.5 2.5 2.5zM9 11c1.66 0 2.99-1.34 2.99-3S10.66 5 9 5C7.34 5 6 6.34 6 8s1.34 3 3 3zm7.5 3c-1.83 0-5.5.92-5.5 2.75V19h11v-2.25c0-1.83-3.67-2.75-5.5-2.75zM9 13c-2 .33 0-7 1.17-7 3.5V19h7v-2.25c0-.85.33-2.34 2.37-3.47C10.5 13.1 9.66 13 9 13z">< /path></g> <g id="swap-horiz"><path d="M6.99 11L3 15l3.99 4v-3H14v-2H6.99v-3zM21 9l-3.99-4v3H10v2h7.01v3L21 9z"></path></g> <g id="swap-vert"><path d="M16 17.01 V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3z"></path></g> <g id ="swap-vertical-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM6.5 9L10 5.5 13.5 9H11v4H9V9H6.5zm11 6L14 18.5 10.5 15H13v-4 h2v4h2.5z"></path></g> <g id="system-update-alt"><path d="M12 16.5l4-4h-3v-9h-2v 9H8l4 4zm9-13h-6v1.99h6v14.03H3V5.49h6V3.5H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18 c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2z"></path></g> <g id="tab"><path d="M21 3H3c-1 .1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3V5h10v4 h8v10z"></path></g> <g id="tab-unselected"><path d="M1 9h2V7H1v2zm0 4h2v-2H1v2zm 0-8h2V3c-1.1 0-2 .9-2 2zm8 16h2v-2H9v2zm-8-4h2v-2H1v2zm2 4v-2H1c0 1.1.9 2 2 2zM2 1 3h-8v6h10V5c0-1.1-.9-2-2-2zm0 14h2v-2h-2v2zM9 5h2V3H9v2zM5 21h2v-2H5v2zM5 5h2V 3H5v2zm16 16c1.1 0 2-.9 2-2h-2v2zm0-8h2v-2h-2v2zm-8 8h2v-2h-2v2zm4 0h2v-2h-2v2z" ></path></g> <g id="text-format"><path d="M5 17v2h14v-2H5zm4.5-4.2h5l.9 2.2h2.1L 12.75 4h-1.5L6.5 15h2.1l.9-2.2zM12 5.98L13.87 11h-3.74L12 5.98z"></path></g> <g id="theaters"><path d="M18 3v2h-2V3H8v2H6V3H4v18h2v-2h2v2h8v-2h2v2h2V3h-2zM8 17H 6v-2h2v2zm0-4H6v-2h2v2zm0-4H6V7h2v2zm10 8h-2v-2h2v2zm0-4h-2v-2h2v2zm0-4h-2V7h2v2 z"></path></g> <g id="thumb-down"><path d="M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v1.91l.01.01L1 14c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32 c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm 4 0v12h4V3h-4z"></path></g> <g id="thumb-up"><path d="M1 21h4V9H1v12zm22-11c0-1. 1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7 .95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-. 47.14-.73v-1.91l-.01-.01L23 10z"></path></g> <g id="thumbs-up-down"><path d="M12 6c0-.55-.45-1-1-1H5.82l.66-3.18.02-.23c0-.31-.13-.59-.33-.8L5.38 0 .44 4.94C.17 5.21 0 5.59 0 6v6.5c0 .83.67 1.5 1.5 1.5h6.75c.62 0 1.15-.38 1.38-.91l2.26-5.29 c.07-.17.11-.36.11-.55V6zm10.5 4h-6.75c-.62 0-1.15.38-1.38.91l-2.26 5.29c-.07.17 -.11.36-.11.55V18c0 .55.45 1 1 1h5.18l-.66 3.18-.02.24c0 .31.13.59.33.8l.79.78 4 .94-4.94c.27-.27.44-.65.44-1.06v-6.5c0-.83-.67-1.5-1.5-1.5z"></path></g> <g id=" timeline"><path d="M23 8c0 1.1-.9 2-2 2-.18 0-.35-.02-.51-.07l-3.56 3.55c.05.16. 07.34.07.52 0 1.1-.9 2-2 2s-2-.9-2-2c0-.18.02-.36.07-.52l-2.55-2.55c-.16.05-.34. 07-.52.07s-.36-.02-.52-.07l-4.55 4.56c.05.16.07.33.07.51 0 1.1-.9 2-2 2s-2-.9-2- 2 .9-2 2-2c.18 0 .35.02.51.07l4.56-4.55C8.02 9.36 8 9.18 8 9c0-1.1.9-2 2-2s2 .9 2 2c0 .18-.02.36-.07.52l2.55 2.55c.16-.05.34-.07.52-.07s.36.02.52.07l3.55-3.56C1 9.02 8.35 19 8.18 19 8c0-1.1.9-2 2-2s2 .9 2 2z"></path></g> <g id="toc"><path d= "M3 9h14V7H3v2zm0 4h14v-2H3v2zm0 4h14v-2H3v2zm16 0h2v-2h-2v2zm0-10v2h2V7h-2zm0 6 h2v-2h-2v2z"></path></g> <g id="today"><path d="M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8 h14v11zM7 10h5v5H7z"></path></g> <g id="toll"><path d="M15 4c-4.42 0-8 3.58-8 8s 3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6- 2.69 6-6 6zM3 12c0-2.61 1.67-4.83 4-5.65V4.26C3.55 5.15 1 8.27 1 12s2.55 6.85 6 7.74v-2.09c-2.33-.82-4-3.04-4-5.65z"></path></g> <g id="touch-app"><path d="M9 1 1.24V7.5C9 6.12 10.12 5 11.5 5S14 6.12 14 7.5v3.74c1.21-.81 2-2.18 2-3.74C16 5.0 1 13.99 3 11.5 3S7 5.01 7 7.5c0 1.56.79 2.93 2 3.74zm9.84 4.63l-4.54-2.26c-.17-. 07-.35-.11-.54-.11H13v-6c0-.83-.67-1.5-1.5-1.5S10 6.67 10 7.5v10.74l-3.43-.72c-. 08-.01-.15-.03-.24-.03-.31 0-.59.13-.79.33l-.79.8 4.94 4.94c.27.27.65.44 1.06.44 h6.79c.75 0 1.33-.55 1.44-1.28l.75-5.27c.01-.07.02-.14.02-.2 0-.62-.38-1.16-.91- 1.38z"></path></g> <g id="track-changes"><path d="M19.07 4.93l-1.41 1.41C19.1 7. 79 20 9.79 20 12c0 4.42-3.58 8-8 8s-8-3.58-8-8c0-4.08 3.05-7.44 7-7.93v2.02C8.16 6.57 6 9.03 6 12c0 3.31 2.69 6 6 6s6-2.69 6-6c0-1.66-.67-3.16-1.76-4.24l-1.41 1 .41C15.55 9.9 16 10.9 16 12c0 2.21-1.79 4-4 4s-4-1.79-4-4c0-1.86 1.28-3.41 3-3.8 6v2.14c-.6.35-1 .98-1 1.72 0 1.1.9 2 2 2s2-.9 2-2c0-.74-.4-1.38-1-1.72V2h-1C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10c0-2.76-1.12-5.26-2.93-7.07z"></path>< /g> <g id="translate"><path d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.1 7 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7 .3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76- 2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17 h-3.24z"></path></g> <g id="trending-down"><path d="M16 18l2.29-2.29-4.88-4.88-4 4L2 7.41 3.41 6l6 6 4-4 6.3 6.29L22 12v6z"></path></g> <g id="trending-flat"><p ath d="M22 12l-4-4v3H3v2h15v3z"></path></g> <g id="trending-up"><path d="M16 6l2 .29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6z"></path></g> <g id="turned-in"><path d="M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2- 2-2z"></path></g> <g id="turned-in-not"><path d="M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2zm0 15l-5-2.18L7 18V5h10v13z"></path></g> <g id="unar chive"><path d="M20.55 5.22l-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1 .15.55L3.46 5.22C3.17 5.57 3 6.01 3 6.5V19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6.5c 0-.49-.17-.93-.45-1.28zM12 9.5l5.5 5.5H14v2h-4v-2H6.5L12 9.5zM5.12 5l.82-1h12l.9 3 1H5.12z"></path></g> <g id="undo"><path d="M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7 v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C 21.08 11.03 17.15 8 12.5 8z"></path></g> <g id="unfold-less"><path d="M7.41 18.5 9L8.83 20 12 16.83 15.17 20l1.41-1.41L12 14l-4.59 4.59zm9.18-13.18L15.17 4 12 7. 17 8.83 4 7.41 5.41 12 10l4.59-4.59z"></path></g> <g id="unfold-more"><path d="M 12 5.83L15.17 9l1.41-1.41L12 3 7.41 7.59 8.83 9 12 5.83zm0 12.34L8.83 15l-1.41 1 .41L12 21l4.59-4.59L15.17 15 12 18.17z"></path></g> <g id="update"><path d="M21 10.12h-6.78l2.74-2.82c-2.73-2.7-7.15-2.8-9.88-.1-2.73 2.71-2.73 7.08 0 9.79 2.73 2.71 7.15 2.71 9.88 0C18.32 15.65 19 14.08 19 12.1h2c0 1.98-.88 4.55-2.64 6.29- 3.51 3.48-9.21 3.48-12.72 0-3.5-3.47-3.53-9.11-.02-12.58 3.51-3.47 9.14-3.47 12. 65 0L21 3v7.12zM12.5 8v4.25l3.5 2.08-.72 1.21L11 13V8h1.5z"></path></g> <g id="v erified-user"><path d="M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V 5l-9-4zm-2 16l-4-4 1.41-1.41L10 14.17l6.59-6.59L18 9l-8 8z"></path></g> <g id="v iew-agenda"><path d="M20 13H3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h17c.55 0 1-.45 1 -1v-6c0-.55-.45-1-1-1zm0-10H3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h17c.55 0 1-.45 1 -1V4c0-.55-.45-1-1-1z"></path></g> <g id="view-array"><path d="M4 18h3V5H4v13zM1 8 5v13h3V5h-3zM8 18h9V5H8v13z"></path></g> <g id="view-carousel"><path d="M7 19h 10V4H7v15zm-5-2h4V6H2v11zM18 6v11h4V6h-4z"></path></g> <g id="view-column"><path d="M10 18h5V5h-5v13zm-6 0h5V5H4v13zM16 5v13h5V5h-5z"></path></g> <g id="view-da y"><path d="M2 21h19v-3H2v3zM20 8H3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h17c.55 0 1 -.45 1-1V9c0-.55-.45-1-1-1zM2 3v3h19V3H2z"></path></g> <g id="view-headline"><pa th d="M4 15h16v-2H4v2zm0 4h16v-2H4v2zm0-8h16V9H4v2zm0-6v2h16V5H4z"></path></g> < g id="view-list"><path d="M4 14h4v-4H4v4zm0 5h4v-4H4v4zM4 9h4V5H4v4zm5 5h12v-4H9 v4zm0 5h12v-4H9v4zM9 5v4h12V5H9z"></path></g> <g id="view-module"><path d="M4 11 h5V5H4v6zm0 7h5v-6H4v6zm6 0h5v-6h-5v6zm6 0h5v-6h-5v6zm-6-7h5V5h-5v6zm6-6v6h5V5h- 5z"></path></g> <g id="view-quilt"><path d="M10 18h5v-6h-5v6zm-6 0h5V5H4v13zm12 0h5v-6h-5v6zM10 5v6h11V5H10z"></path></g> <g id="view-stream"><path d="M4 18h17v -6H4v6zM4 5v6h17V5H4z"></path></g> <g id="view-week"><path d="M6 5H3c-.55 0-1 .4 5-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm14 0h-3c-.55 0-1 .4 5-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-7 0h-3c-.55 0-1 .4 5-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z"></path></g> <g id= "visibility"><path d="M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3 .11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"></path> </g> <g id="visibility-off"><path d="M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25 -3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20. 73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.5 3.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"></path></g> <g i d="warning"><path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"></path> </g> <g id="watch-later"><path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10- 10S17.5 2 12 2zm4.2 14.2L11 13V7h1.5v5.2l4.5 2.7-.8 1.3z"></path></g> <g id="wee kend"><path d="M21 10c-1.1 0-2 .9-2 2v3H5v-3c0-1.1-.9-2-2-2s-2 .9-2 2v5c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-5c0-1.1-.9-2-2-2zm-3-5H6c-1.1 0-2 .9-2 2v2.15c1.16.41 2 1.51 2 2.82V14h12v-2.03c0-1.3.84-2.4 2-2.82V7c0-1.1-.9-2-2-2z"></path></g> <g i d="work"><path d="M20 6h-4V4c0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H4c-1.11 0-1 .99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-6 0h -4V4h4v2z"></path></g> <g id="youtube-searched-for"><path d="M17.01 14h-.8l-.27- .27c.98-1.14 1.57-2.61 1.57-4.23 0-3.59-2.91-6.5-6.5-6.5s-6.5 3-6.5 6.5H2l3.84 4 4.16-4H6.51C6.51 7 8.53 5 11.01 5s4.5 2.01 4.5 4.5c0 2.48-2.02 4.5-4.5 4.5-.65 0-1.26-.14-1.82-.38L7.71 15.1c.97.57 2.09.9 3.3.9 1.61 0 3.08-.59 4.22-1.57l.27. 27v.79l5.01 4.99L22 19l-4.99-5z"></path></g> <g id="zoom-in"><path d="M15.5 14h- .79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7. 01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zm2.5-4h-2v2H9v-2 H7V9h2V7h1v2h2v1z"></path></g> <g id="zoom-out"><path d="M15.5 14h-.79l-.28-.27C 15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1. 61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7z"></path></g> </de fs></svg> </iron-iconset-svg> <script>!function(){"use strict";function e(e,t){v ar n="";if(e){var i=e.toLowerCase();" "===i||v.test(i)?n="space":f.test(i)?n="es c":1==i.length?t&&!u.test(i)||(n=i):n=c.test(i)?i.replace("arrow",""):"multiply" ==i?"*":i}return n}function t(e){var t="";return e&&(e in o?t=o[e]:h.test(e)?(e= parseInt(e.replace("U+","0x"),16),t=String.fromCharCode(e).toLowerCase()):t=e.to LowerCase()),t}function n(e){var t="";return Number(e)&&(t=e>=65&&e<=90?String.f romCharCode(32+e):e>=112&&e<=123?"f"+(e-112):e>=48&&e<=57?String(e-48):e>=96&&e< =105?String(e-96):d[e]),t}function i(i,r){return i.key?e(i.key,r):i.detail&&i.de tail.key?e(i.detail.key,r):t(i.keyIdentifier)||n(i.keyCode)||""}function r(e,t){ var n=i(t,e.hasModifiers);return n===e.key&&(!e.hasModifiers||!!t.shiftKey==!!e. shiftKey&&!!t.ctrlKey==!!e.ctrlKey&&!!t.altKey==!!e.altKey&&!!t.metaKey==!!e.met aKey)}function s(e){return 1===e.length?{combo:e,key:e,event:"keydown"}:e.split( "+").reduce(function(e,t){var n=t.split(":"),i=n[0],r=n[1];return i in y?(e[y[i] ]=!0,e.hasModifiers=!0):(e.key=i,e.event=r||"keydown"),e},{combo:e.split(":").sh ift()})}function a(e){return e.trim().split(" ").map(function(e){return s(e)})}v ar o={"U+0008":"backspace","U+0009":"tab","U+001B":"esc","U+0020":"space","U+007 F":"del"},d={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",1 06:"*"},y={shift:"shiftKey",ctrl:"ctrlKey",alt:"altKey",meta:"metaKey"},u=/[a-z0 -9*]/,h=/U\+/,c=/^arrow/,v=/^space(bar)?/,f=/^escape$/;Polymer.IronA11yKeysBehav ior={properties:{keyEventTarget:{type:Object,value:function(){return this}},stop KeyboardEventPropagation:{type:Boolean,value:!1},_boundKeyHandlers:{type:Array,v alue:function(){return[]}},_imperativeKeyBindings:{type:Object,value:function(){ return{}}}},observers:["_resetKeyEventListeners(keyEventTarget, _boundKeyHandler s)"],keyBindings:{},registered:function(){this._prepKeyBindings()},attached:func tion(){this._listenKeyEventListeners()},detached:function(){this._unlistenKeyEve ntListeners()},addOwnKeyBinding:function(e,t){this._imperativeKeyBindings[e]=t,t his._prepKeyBindings(),this._resetKeyEventListeners()},removeOwnKeyBindings:func tion(){this._imperativeKeyBindings={},this._prepKeyBindings(),this._resetKeyEven tListeners()},keyboardEventMatchesKeys:function(e,t){for(var n=a(t),i=0;i<n.leng th;++i)if(r(n[i],e))return!0;return!1},_collectKeyBindings:function(){var e=this .behaviors.map(function(e){return e.keyBindings});return e.indexOf(this.keyBindi ngs)===-1&&e.push(this.keyBindings),e},_prepKeyBindings:function(){this._keyBind ings={},this._collectKeyBindings().forEach(function(e){for(var t in e)this._addK eyBinding(t,e[t])},this);for(var e in this._imperativeKeyBindings)this._addKeyBi nding(e,this._imperativeKeyBindings[e]);for(var t in this._keyBindings)this._key Bindings[t].sort(function(e,t){var n=e[0].hasModifiers,i=t[0].hasModifiers;retur n n===i?0:n?-1:1})},_addKeyBinding:function(e,t){a(e).forEach(function(e){this._ keyBindings[e.event]=this._keyBindings[e.event]||[],this._keyBindings[e.event].p ush([e,t])},this)},_resetKeyEventListeners:function(){this._unlistenKeyEventList eners(),this.isAttached&&this._listenKeyEventListeners()},_listenKeyEventListene rs:function(){this.keyEventTarget&&Object.keys(this._keyBindings).forEach(functi on(e){var t=this._keyBindings[e],n=this._onKeyBindingEvent.bind(this,t);this._bo undKeyHandlers.push([this.keyEventTarget,e,n]),this.keyEventTarget.addEventListe ner(e,n)},this)},_unlistenKeyEventListeners:function(){for(var e,t,n,i;this._bou ndKeyHandlers.length;)e=this._boundKeyHandlers.pop(),t=e[0],n=e[1],i=e[2],t.remo veEventListener(n,i)},_onKeyBindingEvent:function(e,t){if(this.stopKeyboardEvent Propagation&&t.stopPropagation(),!t.defaultPrevented)for(var n=0;n<e.length;n++) {var i=e[n][0],s=e[n][1];if(r(i,t)&&(this._triggerKeyHandler(i,s,t),t.defaultPre vented))return}},_triggerKeyHandler:function(e,t,n){var i=Object.create(e);i.key boardEvent=n;var r=new CustomEvent(e.event,{detail:i,cancelable:!0});this[t].cal l(this,r),r.defaultPrevented&&n.preventDefault()}}}()</script> <script>Polymer.I ronControlState={properties:{focused:{type:Boolean,value:!1,notify:!0,readOnly:! 0,reflectToAttribute:!0},disabled:{type:Boolean,value:!1,notify:!0,observer:"_di sabledChanged",reflectToAttribute:!0},_oldTabIndex:{type:Number},_boundFocusBlur Handler:{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){if(e.target ===this)this._setFocused("focus"===e.type);else if(!this.shadowRoot){var t=Polym er.dom(e).localTarget;this.isLightDescendant(t)||this.fire(e.type,{sourceEvent:e },{node:this,bubbles:e.bubbles,cancelable:e.cancelable})}},_disabledChanged:func tion(e,t){this.setAttribute("aria-disabled",e?"true":"false"),this.style.pointer Events=e?"none":"",e?(this._oldTabIndex=this.tabIndex,this._setFocused(!1),this. tabIndex=-1,this.blur()):void 0!==this._oldTabIndex&&(this.tabIndex=this._oldTab Index)},_changedControlState:function(){this._controlStateChanged&&this._control StateChanged()}}</script> <script>Polymer.IronButtonStateImpl={properties:{press ed:{type:Boolean,readOnly:!0,value:!1,reflectToAttribute:!0,observer:"_pressedCh anged"},toggles:{type:Boolean,value:!1,reflectToAttribute:!0},active:{type:Boole an,value:!1,notify:!0,reflectToAttribute:!0},pointerDown:{type:Boolean,readOnly: !0,value:!1},receivedFocusFromKeyboard:{type:Boolean,readOnly:!0},ariaActiveAttr ibute:{type:String,value:"aria-pressed",observer:"_ariaActiveAttributeChanged"}} ,listeners:{down:"_downHandler",up:"_upHandler",tap:"_tapHandler"},observers:["_ detectKeyboardFocus(focused)","_activeChanged(active, ariaActiveAttribute)"],key Bindings:{"enter:keydown":"_asyncClick","space:keydown":"_spaceKeyDownHandler"," space:keyup":"_spaceKeyUpHandler"},_mouseEventRe:/^mouse/,_tapHandler:function() {this.toggles?this._userActivate(!this.active):this.active=!1},_detectKeyboardFo cus:function(e){this._setReceivedFocusFromKeyboard(!this.pointerDown&&e)},_userA ctivate:function(e){this.active!==e&&(this.active=e,this.fire("change"))},_downH andler:function(e){this._setPointerDown(!0),this._setPressed(!0),this._setReceiv edFocusFromKeyboard(!1)},_upHandler:function(){this._setPointerDown(!1),this._se tPressed(!1)},_spaceKeyDownHandler:function(e){var t=e.detail.keyboardEvent,i=Po lymer.dom(t).localTarget;this.isLightDescendant(i)||(t.preventDefault(),t.stopIm mediatePropagation(),this._setPressed(!0))},_spaceKeyUpHandler:function(e){var t =e.detail.keyboardEvent,i=Polymer.dom(t).localTarget;this.isLightDescendant(i)|| (this.pressed&&this._asyncClick(),this._setPressed(!1))},_asyncClick:function(){ this.async(function(){this.click()},1)},_pressedChanged:function(e){this._change dButtonState()},_ariaActiveAttributeChanged:function(e,t){t&&t!=e&&this.hasAttri bute(t)&&this.removeAttribute(t)},_activeChanged:function(e,t){this.toggles?this .setAttribute(this.ariaActiveAttribute,e?"true":"false"):this.removeAttribute(th is.ariaActiveAttribute),this._changedButtonState()},_controlStateChanged:functio n(){this.disabled?this._setPressed(!1):this._changedButtonState()},_changedButto nState:function(){this._buttonStateChanged&&this._buttonStateChanged()}},Polymer .IronButtonState=[Polymer.IronA11yKeysBehavior,Polymer.IronButtonStateImpl]</scr ipt> <dom-module id="paper-ripple" assetpath="/res/imp/bower_components/paper-ri pple/"> <template> <style>:host{display:block;position:absolute;border-radius:in herit;overflow:hidden;top:0;left:0;right:0;bottom:0;pointer-events:none}:host([a nimating]){-webkit-transform:translate(0,0);transform:translate3d(0,0,0)}#backgr ound,#waves,.wave,.wave-container{pointer-events:none;position:absolute;top:0;le ft:0;width:100%;height:100%}#background,.wave{opacity:0}#waves,.wave{overflow:hi dden}.wave,.wave-container{border-radius:50%}:host(.circle) #background,:host(.c ircle) #waves{border-radius:50%}:host(.circle) .wave-container{overflow:hidden}< /style> <div id="background"></div> <div id="waves"></div> </template> </dom-mod ule> <script>!function(){function t(t){this.element=t,this.width=this.boundingRe ct.width,this.height=this.boundingRect.height,this.size=Math.max(this.width,this .height)}function i(t){this.element=t,this.color=window.getComputedStyle(t).colo r,this.wave=document.createElement("div"),this.waveContainer=document.createElem ent("div"),this.wave.style.backgroundColor=this.color,this.wave.classList.add("w ave"),this.waveContainer.classList.add("wave-container"),Polymer.dom(this.waveCo ntainer).appendChild(this.wave),this.resetInteractionState()}var e={distance:fun ction(t,i,e,n){var s=t-e,o=i-n;return Math.sqrt(s*s+o*o)},now:window.performance &&window.performance.now?window.performance.now.bind(window.performance):Date.no w};t.prototype={get boundingRect(){return this.element.getBoundingClientRect()}, furthestCornerDistanceFrom:function(t,i){var n=e.distance(t,i,0,0),s=e.distance( t,i,this.width,0),o=e.distance(t,i,0,this.height),a=e.distance(t,i,this.width,th is.height);return Math.max(n,s,o,a)}},i.MAX_RADIUS=300,i.prototype={get recenter s(){return this.element.recenters},get center(){return this.element.center},get mouseDownElapsed(){var t;return this.mouseDownStart?(t=e.now()-this.mouseDownSta rt,this.mouseUpStart&&(t-=this.mouseUpElapsed),t):0},get mouseUpElapsed(){return this.mouseUpStart?e.now()-this.mouseUpStart:0},get mouseDownElapsedSeconds(){re turn this.mouseDownElapsed/1e3},get mouseUpElapsedSeconds(){return this.mouseUpE lapsed/1e3},get mouseInteractionSeconds(){return this.mouseDownElapsedSeconds+th is.mouseUpElapsedSeconds},get initialOpacity(){return this.element.initialOpacit y},get opacityDecayVelocity(){return this.element.opacityDecayVelocity},get radi us(){var t=this.containerMetrics.width*this.containerMetrics.width,e=this.contai nerMetrics.height*this.containerMetrics.height,n=1.1*Math.min(Math.sqrt(t+e),i.M AX_RADIUS)+5,s=1.1-.2*(n/i.MAX_RADIUS),o=this.mouseInteractionSeconds/s,a=n*(1-M ath.pow(80,-o));return Math.abs(a)},get opacity(){return this.mouseUpStart?Math. max(0,this.initialOpacity-this.mouseUpElapsedSeconds*this.opacityDecayVelocity): this.initialOpacity},get outerOpacity(){var t=.3*this.mouseUpElapsedSeconds,i=th is.opacity;return Math.max(0,Math.min(t,i))},get isOpacityFullyDecayed(){return this.opacity<.01&&this.radius>=Math.min(this.maxRadius,i.MAX_RADIUS)},get isRest ingAtMaxRadius(){return this.opacity>=this.initialOpacity&&this.radius>=Math.min (this.maxRadius,i.MAX_RADIUS)},get isAnimationComplete(){return this.mouseUpStar t?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.xSt art):this.xStart},get yNow(){return this.yEnd?this.yStart+this.translationFracti on*(this.yEnd-this.yStart):this.yStart},get isMouseDown(){return this.mouseDownS tart&&!this.mouseUpStart},resetInteractionState:function(){this.maxRadius=0,this .mouseDownStart=0,this.mouseUpStart=0,this.xStart=0,this.yStart=0,this.xEnd=0,th is.yEnd=0,this.slideDistance=0,this.containerMetrics=new t(this.element)},draw:f unction(){var t,i,e;this.wave.style.opacity=this.opacity,t=this.radius/(this.con tainerMetrics.size/2),i=this.xNow-this.containerMetrics.width/2,e=this.yNow-this .containerMetrics.height/2,this.waveContainer.style.webkitTransform="translate(" +i+"px, "+e+"px)",this.waveContainer.style.transform="translate3d("+i+"px, "+e+" px, 0)",this.wave.style.webkitTransform="scale("+t+","+t+")",this.wave.style.tra nsform="scale3d("+t+","+t+",1)"},downAction:function(t){var i=this.containerMetr ics.width/2,n=this.containerMetrics.height/2;this.resetInteractionState(),this.m ouseDownStart=e.now(),this.center?(this.xStart=i,this.yStart=n,this.slideDistanc e=e.distance(this.xStart,this.yStart,this.xEnd,this.yEnd)):(this.xStart=t?t.deta il.x-this.containerMetrics.boundingRect.left:this.containerMetrics.width/2,this. yStart=t?t.detail.y-this.containerMetrics.boundingRect.top:this.containerMetrics .height/2),this.recenters&&(this.xEnd=i,this.yEnd=n,this.slideDistance=e.distanc e(this.xStart,this.yStart,this.xEnd,this.yEnd)),this.maxRadius=this.containerMet rics.furthestCornerDistanceFrom(this.xStart,this.yStart),this.waveContainer.styl e.top=(this.containerMetrics.height-this.containerMetrics.size)/2+"px",this.wave Container.style.left=(this.containerMetrics.width-this.containerMetrics.size)/2+ "px",this.waveContainer.style.width=this.containerMetrics.size+"px",this.waveCon tainer.style.height=this.containerMetrics.size+"px"},upAction:function(t){this.i sMouseDown&&(this.mouseUpStart=e.now())},remove:function(){Polymer.dom(this.wave Container.parentNode).removeChild(this.waveContainer)}},Polymer({is:"paper-rippl e",behaviors:[Polymer.IronA11yKeysBehavior],properties:{initialOpacity:{type:Num ber,value:.25},opacityDecayVelocity:{type:Number,value:.8},recenters:{type:Boole an,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},ke yBindings:{"enter:keydown":"_onEnterKeydown","space:keydown":"_onSpaceKeydown"," space:keyup":"_onSpaceKeyup"},attached:function(){11==this.parentNode.nodeType?t his.keyEventTarget=Polymer.dom(this).getOwnerRoot().host:this.keyEventTarget=thi s.parentNode;var t=this.keyEventTarget;this.listen(t,"up","uiUpAction"),this.lis ten(t,"down","uiDownAction")},detached:function(){this.unlisten(this.keyEventTar get,"up","uiUpAction"),this.unlisten(this.keyEventTarget,"down","uiDownAction"), this.keyEventTarget=null},get shouldKeepAnimating(){for(var t=0;t<this.ripples.l ength;++t)if(!this.ripples[t].isAnimationComplete)return!0;return!1},simulatedRi pple:function(){this.downAction(null),this.async(function(){this.upAction()},1)} ,uiDownAction:function(t){this.noink||this.downAction(t)},downAction:function(t) {if(!(this.holdDown&&this.ripples.length>0)){var i=this.addRipple();i.downAction (t),this._animating||(this._animating=!0,this.animate())}},uiUpAction:function(t ){this.noink||this.upAction(t)},upAction:function(t){this.holdDown||(this.ripple s.forEach(function(i){i.upAction(t)}),this._animating=!0,this.animate())},onAnim ationComplete:function(){this._animating=!1,this.$.background.style.backgroundCo lor=null,this.fire("transitionend")},addRipple:function(){var t=new i(this);retu rn Polymer.dom(this.$.waves).appendChild(t.waveContainer),this.$.background.styl e.backgroundColor=t.color,this.ripples.push(t),this._setAnimating(!0),t},removeR ipple:function(t){var i=this.ripples.indexOf(t);i<0||(this.ripples.splice(i,1),t .remove(),this.ripples.length||this._setAnimating(!1))},animate:function(){if(th is._animating){var t,i;for(t=0;t<this.ripples.length;++t)i=this.ripples[t],i.dra w(),this.$.background.style.opacity=i.outerOpacity,i.isOpacityFullyDecayed&&!i.i sRestingAtMaxRadius&&this.removeRipple(i);this.shouldKeepAnimating||0!==this.rip ples.length?window.requestAnimationFrame(this._boundAnimate):this.onAnimationCom plete()}},_onEnterKeydown:function(){this.uiDownAction(),this.async(this.uiUpAct ion,1)},_onSpaceKeydown:function(){this.uiDownAction()},_onSpaceKeyup:function() {this.uiUpAction()},_holdDownChanged:function(t,i){void 0!==i&&(t?this.downActio n():this.upAction())}})}()</script> <script>Polymer.PaperRippleBehavior={propert ies:{noink:{type:Boolean,observer:"_noinkChanged"},_rippleContainer:{type:Object }},_buttonStateChanged:function(){this.focused&&this.ensureRipple()},_downHandle r:function(e){Polymer.IronButtonStateImpl._downHandler.call(this,e),this.pressed &&this.ensureRipple(e)},ensureRipple:function(e){if(!this.hasRipple()){this._rip ple=this._createRipple(),this._ripple.noink=this.noink;var i=this._rippleContain er||this.root;if(i&&Polymer.dom(i).appendChild(this._ripple),e){var n=Polymer.do m(this._rippleContainer||this),t=Polymer.dom(e).rootTarget;n.deepContains(t)&&th is._ripple.uiDownAction(e)}}},getRipple:function(){return this.ensureRipple(),th is._ripple},hasRipple:function(){return Boolean(this._ripple)},_createRipple:fun ction(){return document.createElement("paper-ripple")},_noinkChanged:function(e) {this.hasRipple()&&(this._ripple.noink=e)}}</script> <script>Polymer.PaperButton BehaviorImpl={properties:{elevation:{type:Number,reflectToAttribute:!0,readOnly: !0}},observers:["_calculateElevation(focused, disabled, active, pressed, receive dFocusFromKeyboard)","_computeKeyboardClass(receivedFocusFromKeyboard)"],hostAtt ributes:{role:"button",tabindex:"0",animated:!0},_calculateElevation:function(){ var e=1;this.disabled?e=0:this.active||this.pressed?e=4:this.receivedFocusFromKe yboard&&(e=3),this._setElevation(e)},_computeKeyboardClass:function(e){this.togg leClass("keyboard-focus",e)},_spaceKeyDownHandler:function(e){Polymer.IronButton StateImpl._spaceKeyDownHandler.call(this,e),this.hasRipple()&&this.getRipple().r ipples.length<1&&this._ripple.uiDownAction()},_spaceKeyUpHandler:function(e){Pol ymer.IronButtonStateImpl._spaceKeyUpHandler.call(this,e),this.hasRipple()&&this. _ripple.uiUpAction()}},Polymer.PaperButtonBehavior=[Polymer.IronButtonState,Poly mer.IronControlState,Polymer.PaperRippleBehavior,Polymer.PaperButtonBehaviorImpl ]</script> <style is="custom-style">:root{--shadow-transition:{transition:box-sh adow .28s cubic-bezier(.4,0,.2,1)};--shadow-none:{box-shadow:none};--shadow-elev ation-2dp:{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)};--shadow-elevation-3dp:{box-shadow:0 3px 4px 0 rgba (0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12),0 3px 3px -2px rgba(0,0,0,.4)};--shadow- elevation-4dp:{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.1 2),0 2px 4px -1px rgba(0,0,0,.4)};--shadow-elevation-6dp:{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.4)};-- shadow-elevation-8dp:{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px r gba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4)};--shadow-elevation-12dp:{box-shado w:0 12px 16px 1px rgba(0,0,0,.14),0 4px 22px 3px rgba(0,0,0,.12),0 6px 7px -4px rgba(0,0,0,.4)};--shadow-elevation-16dp:{box-shadow:0 16px 24px 2px rgba(0,0,0,. 14),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.4)};--shadow-elev ation-24dp:{box-shadow:0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0 ,.12),0 11px 15px -7px rgba(0,0,0,.4)};}</style> <dom-module id="paper-material- shared-styles" assetpath="/res/imp/bower_components/paper-material/"> <template> <style>:host{display:block;position:relative}:host([elevation="1"]){@apply(--sh adow-elevation-2dp)}:host([elevation="2"]){@apply(--shadow-elevation-4dp)}:host( [elevation="3"]){@apply(--shadow-elevation-6dp)}:host([elevation="4"]){@apply(-- shadow-elevation-8dp)}:host([elevation="5"]){@apply(--shadow-elevation-16dp)}</s tyle> </template> </dom-module> <style is="custom-style">:root{--google-red-100: #f4c7c3;--google-red-300:#e67c73;--google-red-500:#db4437;--google-red-700:#c539 29;--google-blue-100:#c6dafc;--google-blue-300:#7baaf7;--google-blue-500:#4285f4 ;--google-blue-700:#3367d6;--google-green-100:#b7e1cd;--google-green-300:#57bb8a ;--google-green-500:#0f9d58;--google-green-700:#0b8043;--google-yellow-100:#fce8 b2;--google-yellow-300:#f7cb4d;--google-yellow-500:#f4b400;--google-yellow-700:# f09300;--google-grey-100:#f5f5f5;--google-grey-300:#e0e0e0;--google-grey-500:#9e 9e9e;--google-grey-700:#616161;--paper-red-50:#ffebee;--paper-red-100:#ffcdd2;-- paper-red-200:#ef9a9a;--paper-red-300:#e57373;--paper-red-400:#ef5350;--paper-re d-500:#f44336;--paper-red-600:#e53935;--paper-red-700:#d32f2f;--paper-red-800:#c 62828;--paper-red-900:#b71c1c;--paper-red-a100:#ff8a80;--paper-red-a200:#ff5252; --paper-red-a400:#ff1744;--paper-red-a700:#d50000;--paper-pink-50:#fce4ec;--pape r-pink-100:#f8bbd0;--paper-pink-200:#f48fb1;--paper-pink-300:#f06292;--paper-pin k-400:#ec407a;--paper-pink-500:#e91e63;--paper-pink-600:#d81b60;--paper-pink-700 :#c2185b;--paper-pink-800:#ad1457;--paper-pink-900:#880e4f;--paper-pink-a100:#ff 80ab;--paper-pink-a200:#ff4081;--paper-pink-a400:#f50057;--paper-pink-a700:#c511 62;--paper-purple-50:#f3e5f5;--paper-purple-100:#e1bee7;--paper-purple-200:#ce93 d8;--paper-purple-300:#ba68c8;--paper-purple-400:#ab47bc;--paper-purple-500:#9c2 7b0;--paper-purple-600:#8e24aa;--paper-purple-700:#7b1fa2;--paper-purple-800:#6a 1b9a;--paper-purple-900:#4a148c;--paper-purple-a100:#ea80fc;--paper-purple-a200: #e040fb;--paper-purple-a400:#d500f9;--paper-purple-a700:#aa00ff;--paper-deep-pur ple-50:#ede7f6;--paper-deep-purple-100:#d1c4e9;--paper-deep-purple-200:#b39ddb;- -paper-deep-purple-300:#9575cd;--paper-deep-purple-400:#7e57c2;--paper-deep-purp le-500:#673ab7;--paper-deep-purple-600:#5e35b1;--paper-deep-purple-700:#512da8;- -paper-deep-purple-800:#4527a0;--paper-deep-purple-900:#311b92;--paper-deep-purp le-a100:#b388ff;--paper-deep-purple-a200:#7c4dff;--paper-deep-purple-a400:#651ff f;--paper-deep-purple-a700:#6200ea;--paper-indigo-50:#e8eaf6;--paper-indigo-100: #c5cae9;--paper-indigo-200:#9fa8da;--paper-indigo-300:#7986cb;--paper-indigo-400 :#5c6bc0;--paper-indigo-500:#3f51b5;--paper-indigo-600:#3949ab;--paper-indigo-70 0:#303f9f;--paper-indigo-800:#283593;--paper-indigo-900:#1a237e;--paper-indigo-a 100:#8c9eff;--paper-indigo-a200:#536dfe;--paper-indigo-a400:#3d5afe;--paper-indi go-a700:#304ffe;--paper-blue-50:#e3f2fd;--paper-blue-100:#bbdefb;--paper-blue-20 0:#90caf9;--paper-blue-300:#64b5f6;--paper-blue-400:#42a5f5;--paper-blue-500:#21 96f3;--paper-blue-600:#1e88e5;--paper-blue-700:#1976d2;--paper-blue-800:#1565c0; --paper-blue-900:#0d47a1;--paper-blue-a100:#82b1ff;--paper-blue-a200:#448aff;--p aper-blue-a400:#2979ff;--paper-blue-a700:#2962ff;--paper-light-blue-50:#e1f5fe;- -paper-light-blue-100:#b3e5fc;--paper-light-blue-200:#81d4fa;--paper-light-blue- 300:#4fc3f7;--paper-light-blue-400:#29b6f6;--paper-light-blue-500:#03a9f4;--pape r-light-blue-600:#039be5;--paper-light-blue-700:#0288d1;--paper-light-blue-800:# 0277bd;--paper-light-blue-900:#01579b;--paper-light-blue-a100:#80d8ff;--paper-li ght-blue-a200:#40c4ff;--paper-light-blue-a400:#00b0ff;--paper-light-blue-a700:#0 091ea;--paper-cyan-50:#e0f7fa;--paper-cyan-100:#b2ebf2;--paper-cyan-200:#80deea; --paper-cyan-300:#4dd0e1;--paper-cyan-400:#26c6da;--paper-cyan-500:#00bcd4;--pap er-cyan-600:#00acc1;--paper-cyan-700:#0097a7;--paper-cyan-800:#00838f;--paper-cy an-900:#006064;--paper-cyan-a100:#84ffff;--paper-cyan-a200:#18ffff;--paper-cyan- a400:#00e5ff;--paper-cyan-a700:#00b8d4;--paper-teal-50:#e0f2f1;--paper-teal-100: #b2dfdb;--paper-teal-200:#80cbc4;--paper-teal-300:#4db6ac;--paper-teal-400:#26a6 9a;--paper-teal-500:#009688;--paper-teal-600:#00897b;--paper-teal-700:#00796b;-- paper-teal-800:#00695c;--paper-teal-900:#004d40;--paper-teal-a100:#a7ffeb;--pape r-teal-a200:#64ffda;--paper-teal-a400:#1de9b6;--paper-teal-a700:#00bfa5;--paper- green-50:#e8f5e9;--paper-green-100:#c8e6c9;--paper-green-200:#a5d6a7;--paper-gre en-300:#81c784;--paper-green-400:#66bb6a;--paper-green-500:#4caf50;--paper-green -600:#43a047;--paper-green-700:#388e3c;--paper-green-800:#2e7d32;--paper-green-9 00:#1b5e20;--paper-green-a100:#b9f6ca;--paper-green-a200:#69f0ae;--paper-green-a 400:#00e676;--paper-green-a700:#00c853;--paper-light-green-50:#f1f8e9;--paper-li ght-green-100:#dcedc8;--paper-light-green-200:#c5e1a5;--paper-light-green-300:#a ed581;--paper-light-green-400:#9ccc65;--paper-light-green-500:#8bc34a;--paper-li ght-green-600:#7cb342;--paper-light-green-700:#689f38;--paper-light-green-800:#5 58b2f;--paper-light-green-900:#33691e;--paper-light-green-a100:#ccff90;--paper-l ight-green-a200:#b2ff59;--paper-light-green-a400:#76ff03;--paper-light-green-a70 0:#64dd17;--paper-lime-50:#f9fbe7;--paper-lime-100:#f0f4c3;--paper-lime-200:#e6e e9c;--paper-lime-300:#dce775;--paper-lime-400:#d4e157;--paper-lime-500:#cddc39;- -paper-lime-600:#c0ca33;--paper-lime-700:#afb42b;--paper-lime-800:#9e9d24;--pape r-lime-900:#827717;--paper-lime-a100:#f4ff81;--paper-lime-a200:#eeff41;--paper-l ime-a400:#c6ff00;--paper-lime-a700:#aeea00;--paper-yellow-50:#fffde7;--paper-yel low-100:#fff9c4;--paper-yellow-200:#fff59d;--paper-yellow-300:#fff176;--paper-ye llow-400:#ffee58;--paper-yellow-500:#ffeb3b;--paper-yellow-600:#fdd835;--paper-y ellow-700:#fbc02d;--paper-yellow-800:#f9a825;--paper-yellow-900:#f57f17;--paper- yellow-a100:#ffff8d;--paper-yellow-a200:#ffff00;--paper-yellow-a400:#ffea00;--pa per-yellow-a700:#ffd600;--paper-amber-50:#fff8e1;--paper-amber-100:#ffecb3;--pap er-amber-200:#ffe082;--paper-amber-300:#ffd54f;--paper-amber-400:#ffca28;--paper -amber-500:#ffc107;--paper-amber-600:#ffb300;--paper-amber-700:#ffa000;--paper-a mber-800:#ff8f00;--paper-amber-900:#ff6f00;--paper-amber-a100:#ffe57f;--paper-am ber-a200:#ffd740;--paper-amber-a400:#ffc400;--paper-amber-a700:#ffab00;--paper-o range-50:#fff3e0;--paper-orange-100:#ffe0b2;--paper-orange-200:#ffcc80;--paper-o range-300:#ffb74d;--paper-orange-400:#ffa726;--paper-orange-500:#ff9800;--paper- orange-600:#fb8c00;--paper-orange-700:#f57c00;--paper-orange-800:#ef6c00;--paper -orange-900:#e65100;--paper-orange-a100:#ffd180;--paper-orange-a200:#ffab40;--pa per-orange-a400:#ff9100;--paper-orange-a700:#ff6500;--paper-deep-orange-50:#fbe9 e7;--paper-deep-orange-100:#ffccbc;--paper-deep-orange-200:#ffab91;--paper-deep- orange-300:#ff8a65;--paper-deep-orange-400:#ff7043;--paper-deep-orange-500:#ff57 22;--paper-deep-orange-600:#f4511e;--paper-deep-orange-700:#e64a19;--paper-deep- orange-800:#d84315;--paper-deep-orange-900:#bf360c;--paper-deep-orange-a100:#ff9 e80;--paper-deep-orange-a200:#ff6e40;--paper-deep-orange-a400:#ff3d00;--paper-de ep-orange-a700:#dd2c00;--paper-brown-50:#efebe9;--paper-brown-100:#d7ccc8;--pape r-brown-200:#bcaaa4;--paper-brown-300:#a1887f;--paper-brown-400:#8d6e63;--paper- brown-500:#795548;--paper-brown-600:#6d4c41;--paper-brown-700:#5d4037;--paper-br own-800:#4e342e;--paper-brown-900:#3e2723;--paper-grey-50:#fafafa;--paper-grey-1 00:#f5f5f5;--paper-grey-200:#eeeeee;--paper-grey-300:#e0e0e0;--paper-grey-400:#b dbdbd;--paper-grey-500:#9e9e9e;--paper-grey-600:#757575;--paper-grey-700:#616161 ;--paper-grey-800:#424242;--paper-grey-900:#212121;--paper-blue-grey-50:#eceff1; --paper-blue-grey-100:#cfd8dc;--paper-blue-grey-200:#b0bec5;--paper-blue-grey-30 0:#90a4ae;--paper-blue-grey-400:#78909c;--paper-blue-grey-500:#607d8b;--paper-bl ue-grey-600:#546e7a;--paper-blue-grey-700:#455a64;--paper-blue-grey-800:#37474f; --paper-blue-grey-900:#263238;--dark-divider-opacity:0.12;--dark-disabled-opacit y:0.38;--dark-secondary-opacity:0.54;--dark-primary-opacity:0.87;--light-divider -opacity:0.12;--light-disabled-opacity:0.3;--light-secondary-opacity:0.7;--light -primary-opacity:1.0}</style> <style is="custom-style">:root{--primary-text-colo r:var(--light-theme-text-color);--primary-background-color:var(--light-theme-bac kground-color);--secondary-text-color:var(--light-theme-secondary-color);--disab led-text-color:var(--light-theme-disabled-color);--divider-color:var(--light-the me-divider-color);--error-color:var(--paper-deep-orange-a700);--primary-color:va r(--paper-indigo-500);--light-primary-color:var(--paper-indigo-100);--dark-prima ry-color:var(--paper-indigo-700);--accent-color:var(--paper-pink-a200);--light-a ccent-color:var(--paper-pink-a100);--dark-accent-color:var(--paper-pink-a400);-- light-theme-background-color:#ffffff;--light-theme-base-color:#000000;--light-th eme-text-color:var(--paper-grey-900);--light-theme-secondary-color:#737373;--lig ht-theme-disabled-color:#9b9b9b;--light-theme-divider-color:#dbdbdb;--dark-theme -background-color:var(--paper-grey-900);--dark-theme-base-color:#ffffff;--dark-t heme-text-color:#ffffff;--dark-theme-secondary-color:#bcbcbc;--dark-theme-disabl ed-color:#646464;--dark-theme-divider-color:#3c3c3c;--text-primary-color:var(--d ark-theme-text-color);--default-primary-color:var(--primary-color)}</style> <dom -module id="paper-fab" assetpath="/res/imp/bower_components/paper-fab/"> <templa te strip-whitespace=""> <style include="paper-material-shared-styles">:host{@app ly(--layout-vertical);@apply(--layout-center-center);background:var(--paper-fab- background,--accent-color);border-radius:50%;box-sizing:border-box;color:var(--t ext-primary-color);cursor:pointer;height:56px;min-width:0;outline:0;padding:16px ;position:relative;-moz-user-select:none;-ms-user-select:none;-webkit-user-selec t:none;user-select:none;width:56px;z-index:0;-webkit-tap-highlight-color:transpa rent;-webkit-tap-highlight-color:transparent;@apply(--paper-fab)}[hidden]{displa y:none!important}:host([mini]){width:40px;height:40px;padding:8px;@apply(--paper -fab-mini)}:host([disabled]){color:var(--paper-fab-disabled-text,--paper-grey-50 0);background:var(--paper-fab-disabled-background,--paper-grey-300);@apply(--pap er-fab-disabled)}iron-icon{@apply(--paper-fab-iron-icon)}span{width:100%;white-s pace:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;@apply(--pa per-fab-label)}:host(.keyboard-focus){background:var(--paper-fab-keyboard-focus- background,--paper-pink-900)}</style> <iron-icon id="icon" hidden$="{{!_computeI sIconFab(icon, src)}}" src="[[src]]" icon="[[icon]]"></iron-icon> <span hidden$= "{{_computeIsIconFab(icon, src)}}">{{label}}</span> </template> <script>Polymer( {is:"paper-fab",behaviors:[Polymer.PaperButtonBehavior],properties:{src:{type:St ring,value:""},icon:{type:String,value:""},mini:{type:Boolean,value:!1,reflectTo Attribute:!0},label:{type:String,observer:"_labelChanged"}},_labelChanged:functi on(){this.setAttribute("aria-label",this.label)},_computeIsIconFab:function(e,t) {return e.length>0||t.length>0}})</script> </dom-module> <script>Polymer.PaperIn kyFocusBehaviorImpl={observers:["_focusedChanged(receivedFocusFromKeyboard)"],_f ocusedChanged:function(e){e&&this.ensureRipple(),this.hasRipple()&&(this._ripple .holdDown=e)},_createRipple:function(){var e=Polymer.PaperRippleBehavior._create Ripple();return e.id="ink",e.setAttribute("center",""),e.classList.add("circle") ,e}},Polymer.PaperInkyFocusBehavior=[Polymer.IronButtonState,Polymer.IronControl State,Polymer.PaperRippleBehavior,Polymer.PaperInkyFocusBehaviorImpl]</script> < dom-module id="paper-icon-button" assetpath="/res/imp/bower_components/paper-ico n-button/"> <template strip-whitespace=""> <style>:host{display:inline-block;pos ition:relative;padding:8px;outline:0;-webkit-user-select:none;-moz-user-select:n one;-ms-user-select:none;user-select:none;cursor:pointer;z-index:0;line-height:1 ;width:40px;height:40px;-webkit-tap-highlight-color:transparent;-webkit-tap-high light-color:transparent;box-sizing:border-box!important;@apply(--paper-icon-butt on)}:host #ink{color:var(--paper-icon-button-ink-color,--primary-text-color);opa city:.6}:host([disabled]){color:var(--paper-icon-button-disabled-text,--disabled -text-color);pointer-events:none;cursor:auto;@apply(--paper-icon-button-disabled )}:host(:hover){@apply(--paper-icon-button-hover)}iron-icon{--iron-icon-width:10 0%;--iron-icon-height:100%}</style> <iron-icon id="icon" src="[[src]]" icon="[[i con]]" alt$="[[alt]]"></iron-icon> </template> <script>Polymer({is:"paper-icon-b utton",hostAttributes:{role:"button",tabindex:"0"},behaviors:[Polymer.PaperInkyF ocusBehavior],properties:{src:{type:String},icon:{type:String},alt:{type:String, observer:"_altChanged"}},_altChanged:function(t,e){var r=this.getAttribute("aria -label");r&&e!=r||this.setAttribute("aria-label",t)}})</script> </dom-module> <s cript>Polymer.PaperItemBehaviorImpl={hostAttributes:{role:"option",tabindex:"0"} },Polymer.PaperItemBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Po lymer.PaperItemBehaviorImpl]</script> <link rel="stylesheet" href="https://fonts .googleapis.com/css?family=Roboto:400,300,300italic,400italic,500,500italic,700, 700italic"> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family =Roboto+Mono:400,700"> <style is="custom-style">:root{--paper-font-common-base:{ font-family:Roboto,Noto,sans-serif;-webkit-font-smoothing:antialiased};--paper-f ont-common-code:{font-family:'Roboto Mono',Consolas,Menlo,monospace;-webkit-font -smoothing:antialiased};--paper-font-common-expensive-kerning:{text-rendering:op timizeLegibility};--paper-font-common-nowrap:{white-space:nowrap;overflow:hidden ;text-overflow:ellipsis};--paper-font-display4:{@apply(--paper-font-common-base) ;@apply(--paper-font-common-nowrap);font-size:112px;font-weight:300;letter-spaci ng:-.044em;line-height:120px};--paper-font-display3:{@apply(--paper-font-common- base);@apply(--paper-font-common-nowrap);font-size:56px;font-weight:400;letter-s pacing:-.026em;line-height:60px};--paper-font-display2:{@apply(--paper-font-comm on-base);font-size:45px;font-weight:400;letter-spacing:-.018em;line-height:48px} ;--paper-font-display1:{@apply(--paper-font-common-base);font-size:34px;font-wei ght:400;letter-spacing:-.01em;line-height:40px};--paper-font-headline:{@apply(-- paper-font-common-base);font-size:24px;font-weight:400;letter-spacing:-.012em;li ne-height:32px};--paper-font-title:{@apply(--paper-font-common-base);@apply(--pa per-font-common-nowrap);font-size:20px;font-weight:500;line-height:28px};--paper -font-subhead:{@apply(--paper-font-common-base);font-size:16px;font-weight:400;l ine-height:24px};--paper-font-body2:{@apply(--paper-font-common-base);font-size: 14px;font-weight:500;line-height:24px};--paper-font-body1:{@apply(--paper-font-c ommon-base);font-size:14px;font-weight:400;line-height:20px};--paper-font-captio n:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size :12px;font-weight:400;letter-spacing:0.011em;line-height:20px};--paper-font-menu :{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size: 13px;font-weight:500;line-height:24px};--paper-font-button:{@apply(--paper-font- common-base);@apply(--paper-font-common-nowrap);font-size:14px;font-weight:500;l etter-spacing:0.018em;line-height:24px;text-transform:uppercase};--paper-font-co de2:{@apply(--paper-font-common-code);font-size:14px;font-weight:700;line-height :20px};--paper-font-code1:{@apply(--paper-font-common-code);font-size:14px;font- weight:500;line-height:20px};}</style> <dom-module id="paper-item-shared-styles" assetpath="/res/imp/bower_components/paper-item/"> <template> <style>.paper-ite m,:host{display:block;position:relative;min-height:var(--paper-item-min-height,4 8px);padding:0 16px}.paper-item{@apply(--paper-font-subhead);border:none;outline :0;background:#fff;width:100%;text-align:left}.paper-item[hidden],:host([hidden] ){display:none!important}.paper-item.iron-selected,:host(.iron-selected){font-we ight:var(--paper-item-selected-weight,bold);@apply(--paper-item-selected)}.paper -item[disabled],:host([disabled]){color:var(--paper-item-disabled-color,--disabl ed-text-color);@apply(--paper-item-disabled)}.paper-item:focus,:host(:focus){pos ition:relative;outline:0;@apply(--paper-item-focused)}.paper-item:focus:before,: host(:focus):before{@apply(--layout-fit);background:currentColor;content:'';opac ity:var(--dark-divider-opacity);pointer-events:none;@apply(--paper-item-focused- before)}</style> </template> </dom-module> <dom-module id="paper-item" assetpath ="/res/imp/bower_components/paper-item/"> <template> <style include="paper-item- shared-styles"></style> <style>:host{@apply(--layout-horizontal);@apply(--layout -center);@apply(--paper-font-subhead);@apply(--paper-item)}</style> <content></c ontent> </template> <script>Polymer({is:"paper-item",behaviors:[Polymer.PaperIte mBehavior]})</script> </dom-module> <script>Polymer.IronSelection=function(e){th is.selection=[],this.selectCallback=e},Polymer.IronSelection.prototype={get:func tion(){return this.multi?this.selection.slice():this.selection[0]},clear:functio n(e){this.selection.slice().forEach(function(t){(!e||e.indexOf(t)<0)&&this.setIt emSelected(t,!1)},this)},isSelected:function(e){return this.selection.indexOf(e) >=0},setItemSelected:function(e,t){if(null!=e&&t!==this.isSelected(e)){if(t)this .selection.push(e);else{var i=this.selection.indexOf(e);i>=0&&this.selection.spl ice(i,1)}this.selectCallback&&this.selectCallback(e,t)}},select:function(e){this .multi?this.toggle(e):this.get()!==e&&(this.setItemSelected(this.get(),!1),this. setItemSelected(e,!0))},toggle:function(e){this.setItemSelected(e,!this.isSelect ed(e))}}</script> <script>Polymer.IronSelectableBehavior={properties:{attrForSel ected:{type:String,value:null},selected:{type:String,notify:!0},selectedItem:{ty pe:Object,readOnly:!0,notify:!0},activateEvent:{type:String,value:"tap",observer :"_activateEventChanged"},selectable:String,selectedClass:{type:String,value:"ir on-selected"},selectedAttribute:{type:String,value:null},fallbackSelection:{type :String,value:null},items:{type:Array,readOnly:!0,notify:!0,value:function(){ret urn[]}},_excludedLocalNames:{type:Object,value:function(){return{template:1}}}}, observers:["_updateAttrForSelected(attrForSelected)","_updateSelected(selected)" ,"_checkFallback(fallbackSelection)"],created:function(){this._bindFilterItem=th is._filterItem.bind(this),this._selection=new Polymer.IronSelection(this._applyS election.bind(this))},attached:function(){this._observer=this._observeItems(this ),this._updateItems(),this._shouldUpdateSelection||this._updateSelected(),this._ addListener(this.activateEvent)},detached:function(){this._observer&&Polymer.dom (this).unobserveNodes(this._observer),this._removeListener(this.activateEvent)}, indexOf:function(e){return this.items.indexOf(e)},select:function(e){this.select ed=e},selectPrevious:function(){var e=this.items.length,t=(Number(this._valueToI ndex(this.selected))-1+e)%e;this.selected=this._indexToValue(t)},selectNext:func tion(){var e=(Number(this._valueToIndex(this.selected))+1)%this.items.length;thi s.selected=this._indexToValue(e)},selectIndex:function(e){this.select(this._inde xToValue(e))},forceSynchronousItemUpdate:function(){this._updateItems()},get _sh ouldUpdateSelection(){return null!=this.selected},_checkFallback:function(){this ._shouldUpdateSelection&&this._updateSelected()},_addListener:function(e){this.l isten(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=Polymer.dom(this).queryD istributedElements(this.selectable||"*");e=Array.prototype.filter.call(e,this._b indFilterItem),this._setItems(e)},_updateAttrForSelected:function(){this._should UpdateSelection&&(this.selected=this._indexToValue(this.indexOf(this.selectedIte m)))},_updateSelected:function(){this._selectSelected(this.selected)},_selectSel ected:function(e){this._selection.select(this._valueToItem(this.selected)),this. fallbackSelection&&this.items.length&&void 0===this._selection.get()&&(this.sele cted=this.fallbackSelection)},_filterItem:function(e){return!this._excludedLocal Names[e.localName]},_valueToItem:function(e){return null==e?null:this.items[this ._valueToIndex(e)]},_valueToIndex:function(e){if(!this.attrForSelected)return Nu mber(e);for(var t,i=0;t=this.items[i];i++)if(this._valueForItem(t)==e)return i}, _indexToValue:function(e){if(!this.attrForSelected)return e;var t=this.items[e]; return t?this._valueForItem(t):void 0},_valueForItem:function(e){var t=e[Polymer .CaseMap.dashToCamelCase(this.attrForSelected)];return void 0!=t?t:e.getAttribut e(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?"selec t":"deselect"),{item:e})},_selectionChange:function(){this._setSelectedItem(this ._selection.get())},_observeItems:function(e){return Polymer.dom(e).observeNodes (function(e){this._updateItems(),this._shouldUpdateSelection&&this._updateSelect ed(),this.fire("iron-items-changed",e,{bubbles:!1,cancelable:!1})})},_activateHa ndler:function(e){for(var t=e.target,i=this.items;t&&t!=this;){var s=i.indexOf(t );if(s>=0){var n=this._indexToValue(s);return void this._itemActivate(n,t)}t=t.p arentNode}},_itemActivate:function(e,t){this.fire("iron-activate",{selected:e,it em:t},{cancelable:!0}).defaultPrevented||this.select(e)}}</script> <script>Polym er.IronMultiSelectableBehaviorImpl={properties:{multi:{type:Boolean,value:!1,obs erver:"multiChanged"},selectedValues:{type:Array,notify:!0},selectedItems:{type: Array,readOnly:!0,notify:!0}},observers:["_updateSelected(selectedValues.splices )"],select:function(e){this.multi?this.selectedValues?this._toggleSelected(e):th is.selectedValues=[e]:this.selected=e},multiChanged:function(e){this._selection. multi=e},get _shouldUpdateSelection(){return null!=this.selected||null!=this.sel ectedValues&&this.selectedValues.length},_updateAttrForSelected:function(){this. multi?this._shouldUpdateSelection&&(this.selectedValues=this.selectedItems.map(f unction(e){return this._indexToValue(this.indexOf(e))},this).filter(function(e){ return null!=e},this)):Polymer.IronSelectableBehavior._updateAttrForSelected.app ly(this)},_updateSelected:function(){this.multi?this._selectMulti(this.selectedV alues):this._selectSelected(this.selected)},_selectMulti:function(e){if(e){var t =this._valuesToItems(e);this._selection.clear(t);for(var l=0;l<t.length;l++)this ._selection.setItemSelected(t[l],!0);if(this.fallbackSelection&&this.items.lengt h&&!this._selection.get().length){var s=this._valueToItem(this.fallbackSelection );s&&(this.selectedValues=[this.fallbackSelection])}}else this._selection.clear( )},_selectionChange:function(){var e=this._selection.get();this.multi?this._setS electedItems(e):(this._setSelectedItems([e]),this._setSelectedItem(e))},_toggleS elected:function(e){var t=this.selectedValues.indexOf(e),l=t<0;l?this.push("sele ctedValues",e):this.splice("selectedValues",t,1)},_valuesToItems:function(e){ret urn null==e?null:e.map(function(e){return this._valueToItem(e)},this)}},Polymer. IronMultiSelectableBehavior=[Polymer.IronSelectableBehavior,Polymer.IronMultiSel ectableBehaviorImpl]</script> <script>Polymer.IronMenuBehaviorImpl={properties:{ focusedItem:{observer:"_focusedItemChanged",readOnly:!0,type:Object},attrForItem Title:{type:String}},_SEARCH_RESET_TIMEOUT_MS:1e3,hostAttributes:{role:"menu",ta bindex:"0"},observers:["_updateMultiselectable(multi)"],listeners:{focus:"_onFoc us",keydown:"_onKeydown","iron-items-changed":"_onIronItemsChanged"},keyBindings :{up:"_onUpKey",down:"_onDownKey",esc:"_onEscKey","shift+tab:keydown":"_onShiftT abDown"},attached:function(){this._resetTabindices()},select:function(e){this._d efaultFocusAsync&&(this.cancelAsync(this._defaultFocusAsync),this._defaultFocusA sync=null);var t=this._valueToItem(e);t&&t.hasAttribute("disabled")||(this._setF ocusedItem(t),Polymer.IronMultiSelectableBehaviorImpl.select.apply(this,argument s))},_resetTabindices:function(){var e=this.multi?this.selectedItems&&this.selec tedItems[0]:this.selectedItem;this.items.forEach(function(t){t.setAttribute("tab index",t===e?"0":"-1")},this)},_updateMultiselectable:function(e){e?this.setAttr ibute("aria-multiselectable","true"):this.removeAttribute("aria-multiselectable" )},_focusWithKeyboardEvent:function(e){this.cancelDebouncer("_clearSearchText"); var t=this._searchText||"",s=e.key&&1==e.key.length?e.key:String.fromCharCode(e. keyCode);t+=s.toLocaleLowerCase();for(var i,o=t.length,n=0;i=this.items[n];n++)i f(!i.hasAttribute("disabled")){var r=this.attrForItemTitle||"textContent",a=(i[r ]||i.getAttribute(r)||"").trim();if(!(a.length<o)&&a.slice(0,o).toLocaleLowerCas e()==t){this._setFocusedItem(i);break}}this._searchText=t,this.debounce("_clearS earchText",this._clearSearchText,this._SEARCH_RESET_TIMEOUT_MS)},_clearSearchTex t:function(){this._searchText=""},_focusPrevious:function(){for(var e=this.items .length,t=Number(this.indexOf(this.focusedItem)),s=1;s<e+1;s++){var i=this.items [(t-s+e)%e];if(!i.hasAttribute("disabled")){var o=Polymer.dom(i).getOwnerRoot()| |document;if(this._setFocusedItem(i),Polymer.dom(o).activeElement==i)return}}},_ focusNext:function(){for(var e=this.items.length,t=Number(this.indexOf(this.focu sedItem)),s=1;s<e+1;s++){var i=this.items[(t+s)%e];if(!i.hasAttribute("disabled" )){var o=Polymer.dom(i).getOwnerRoot()||document;if(this._setFocusedItem(i),Poly mer.dom(o).activeElement==i)return}}},_applySelection:function(e,t){t?e.setAttri bute("aria-selected","true"):e.removeAttribute("aria-selected"),Polymer.IronSele ctableBehavior._applySelection.apply(this,arguments)},_focusedItemChanged:functi on(e,t){t&&t.setAttribute("tabindex","-1"),e&&(e.setAttribute("tabindex","0"),e. focus())},_onIronItemsChanged:function(e){e.detail.addedNodes.length&&this._rese tTabindices()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");P olymer.IronMenuBehaviorImpl._shiftTabPressed=!0,this._setFocusedItem(null),this. setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex" ,t),Polymer.IronMenuBehaviorImpl._shiftTabPressed=!1},1)},_onFocus:function(e){i f(!Polymer.IronMenuBehaviorImpl._shiftTabPressed){var t=Polymer.dom(e).rootTarge t;(t===this||"undefined"==typeof t.tabIndex||this.isLightDescendant(t))&&(this._ defaultFocusAsync=this.async(function(){var e=this.multi?this.selectedItems&&thi s.selectedItems[0]:this.selectedItem;this._setFocusedItem(null),e?this._setFocus edItem(e):this.items[0]&&this._focusNext()}))}},_onUpKey:function(e){this._focus Previous(),e.detail.keyboardEvent.preventDefault()},_onDownKey:function(e){this. _focusNext(),e.detail.keyboardEvent.preventDefault()},_onEscKey:function(e){this .focusedItem.blur()},_onKeydown:function(e){this.keyboardEventMatchesKeys(e,"up down esc")||this._focusWithKeyboardEvent(e),e.stopPropagation()},_activateHandle r:function(e){Polymer.IronSelectableBehavior._activateHandler.call(this,e),e.sto pPropagation()}},Polymer.IronMenuBehaviorImpl._shiftTabPressed=!1,Polymer.IronMe nuBehavior=[Polymer.IronMultiSelectableBehavior,Polymer.IronA11yKeysBehavior,Pol ymer.IronMenuBehaviorImpl]</script> <dom-module id="paper-menu-shared-styles" as setpath="/res/imp/bower_components/paper-menu/"> <template> <style>.selectable-c ontent>::content>.iron-selected{font-weight:700;@apply(--paper-menu-selected-ite m)}.selectable-content>::content>[disabled]{color:var(--paper-menu-disabled-colo r,--disabled-text-color)}.selectable-content>::content>:focus{position:relative; outline:0;@apply(--paper-menu-focused-item)}.selectable-content>::content>:focus :after{@apply(--layout-fit);background:currentColor;opacity:var(--dark-divider-o pacity);content:'';pointer-events:none;@apply(--paper-menu-focused-item-after)}. selectable-content>::content>[colored]:focus:after{opacity:.26}</style> </templa te> </dom-module> <dom-module id="paper-menu" assetpath="/res/imp/bower_componen ts/paper-menu/"> <template> <style include="paper-menu-shared-styles"></style> < style>:host{display:block;padding:8px 0;background:var(--paper-menu-background-c olor,--primary-background-color);color:var(--paper-menu-color,--primary-text-col or);@apply(--paper-menu)}</style> <div class="selectable-content"> <content></co ntent> </div> </template> <script>!function(){Polymer({is:"paper-menu",behaviors :[Polymer.IronMenuBehavior]})}()</script> </dom-module> <script>Polymer.PaperSpi nnerBehavior={listeners:{animationend:"__reset",webkitAnimationEnd:"__reset"},pr operties:{active:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"__active Changed"},alt:{type:String,value:"loading",observer:"__altChanged"},__coolingDow n:{type:Boolean,value:!1}},__computeContainerClasses:function(e,t){return[e||t?" active":"",t?"cooldown":""].join(" ")},__activeChanged:function(e,t){this.__setA riaHidden(!e),this.__coolingDown=!e&&t},__altChanged:function(e){e===this.getPro pertyInfo("alt").value?this.alt=this.getAttribute("aria-label")||e:(this.__setAr iaHidden(""===e),this.setAttribute("aria-label",e))},__setAriaHidden:function(e) {var t="aria-hidden";e?this.setAttribute(t,"true"):this.removeAttribute(t)},__re set:function(){this.active=!1,this.__coolingDown=!1}}</script> <dom-module id="p aper-spinner-styles" assetpath="/res/imp/bower_components/paper-spinner/"> <temp late> <style>:host{display:inline-block;position:relative;width:28px;height:28px ;--paper-spinner-container-rotation-duration:1568ms;--paper-spinner-expand-contr act-duration:1333ms;--paper-spinner-full-cycle-duration:5332ms;--paper-spinner-c ooldown-duration:400ms}#spinnerContainer{width:100%;height:100%;direction:ltr}#s pinnerContainer.active{-webkit-animation:container-rotate var(--paper-spinner-co ntainer-rotation-duration) linear infinite;animation:container-rotate var(--pape r-spinner-container-rotation-duration) linear infinite}@-webkit-keyframes contai ner-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{t ransform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100% ;opacity:0;white-space:nowrap;border-color:var(--paper-spinner-color,--google-bl ue-500)}.layer-1{border-color:var(--paper-spinner-layer-1-color,--google-blue-50 0)}.layer-2{border-color:var(--paper-spinner-layer-2-color,--google-red-500)}.la yer-3{border-color:var(--paper-spinner-layer-3-color,--google-yellow-500)}.layer -4{border-color:var(--paper-spinner-layer-4-color,--google-green-500)}.active .s pinner-layer{-webkit-animation-name:fill-unfill-rotate;-webkit-animation-duratio n:var(--paper-spinner-full-cycle-duration);-webkit-animation-timing-function:cub ic-bezier(.4,0,.2,1);-webkit-animation-iteration-count:infinite;animation-name:f ill-unfill-rotate;animation-duration:var(--paper-spinner-full-cycle-duration);an imation-timing-function:cubic-bezier(.4,0,.2,1);animation-iteration-count:infini te;opacity:1}.active .spinner-layer.layer-1{-webkit-animation-name:fill-unfill-r otate,layer-1-fade-in-out;animation-name:fill-unfill-rotate,layer-1-fade-in-out} .active .spinner-layer.layer-2{-webkit-animation-name:fill-unfill-rotate,layer-2 -fade-in-out;animation-name:fill-unfill-rotate,layer-2-fade-in-out}.active .spin ner-layer.layer-3{-webkit-animation-name:fill-unfill-rotate,layer-3-fade-in-out; animation-name:fill-unfill-rotate,layer-3-fade-in-out}.active .spinner-layer.lay er-4{-webkit-animation-name:fill-unfill-rotate,layer-4-fade-in-out;animation-nam e:fill-unfill-rotate,layer-4-fade-in-out}@-webkit-keyframes fill-unfill-rotate{1 2.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5% {-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-we bkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit -transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill- unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{ transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675 deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:ro tate(1080deg)}}@-webkit-keyframes layer-1-fade-in-out{0%{opacity:1}25%{opacity:1 }26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@keyframes layer-1-fade -in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{ opacity:1}}@-webkit-keyframes layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25% {opacity:1}50%{opacity:1}51%{opacity:0}to{opacity:0}}@keyframes layer-2-fade-in- out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}to{opac ity:0}}@-webkit-keyframes layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opa city:1}75%{opacity:1}76%{opacity:0}to{opacity:0}}@keyframes layer-3-fade-in-out{ 0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}to{opacity: 0}}@-webkit-keyframes layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity :1}90%{opacity:1}to{opacity:0}}@keyframes layer-4-fade-in-out{0%{opacity:0}65%{o pacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}.circle-clipper{display:inlin e-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inh erit}.spinner-layer::after{left:45%;width:10%;border-top-style:solid}.circle-cli pper::after,.spinner-layer::after{content:'';box-sizing:border-box;position:abso lute;top:0;border-width:var(--paper-spinner-stroke-width,3px);border-color:inher it;border-radius:50%}.circle-clipper::after{bottom:0;width:200%;border-style:sol id;border-bottom-color:transparent!important}.circle-clipper.left::after{left:0; border-right-color:transparent!important;-webkit-transform:rotate(129deg);transf orm:rotate(129deg)}.circle-clipper.right::after{left:-100%;border-left-color:tra nsparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}. active .circle-clipper::after,.active .gap-patch::after{-webkit-animation-durati on:var(--paper-spinner-expand-contract-duration);-webkit-animation-timing-functi on:cubic-bezier(.4,0,.2,1);-webkit-animation-iteration-count:infinite;animation- duration:var(--paper-spinner-expand-contract-duration);animation-timing-function :cubic-bezier(.4,0,.2,1);animation-iteration-count:infinite}.active .circle-clip per.left::after{-webkit-animation-name:left-spin;animation-name:left-spin}.activ e .circle-clipper.right::after{-webkit-animation-name:right-spin;animation-name: right-spin}@-webkit-keyframes left-spin{0%{-webkit-transform:rotate(130deg)}50%{ -webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{0%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}to{transform:r otate(130deg)}}@-webkit-keyframes right-spin{0%{-webkit-transform:rotate(-130deg )}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyf rames right-spin{0%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}to{tran sform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-ro tate var(--paper-spinner-container-rotation-duration) linear infinite,fade-out v ar(--paper-spinner-cooldown-duration) cubic-bezier(.4,0,.2,1);animation:containe r-rotate var(--paper-spinner-container-rotation-duration) linear infinite,fade-o ut var(--paper-spinner-cooldown-duration) cubic-bezier(.4,0,.2,1)}@-webkit-keyfr ames fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-out{0%{opacity:1}to{opa city:0}}</style> </template> </dom-module> <dom-module id="paper-spinner-lite" a ssetpath="/res/imp/bower_components/paper-spinner/"> <template strip-whitespace= ""> <style include="paper-spinner-styles"></style> <div id="spinnerContainer" cl ass-name="[[__computeContainerClasses(active, __coolingDown)]]"> <div class="spi nner-layer"> <div class="circle-clipper left"></div> <div class="circle-clipper right"></div> </div> </div> </template> <script>Polymer({is:"paper-spinner-lite" ,behaviors:[Polymer.PaperSpinnerBehavior]})</script> </dom-module> <script>!func tion(){"use strict";Polymer.IronJsonpLibraryBehavior={properties:{libraryLoaded: {type:Boolean,value:!1,notify:!0,readOnly:!0},libraryErrorMessage:{type:String,v alue:null,notify:!0,readOnly:!0}},observers:["_libraryUrlChanged(libraryUrl)"],_ libraryUrlChanged:function(r){this._isReady&&this.libraryUrl&&this._loadLibrary( )},_libraryLoadCallback:function(r,i){r?(console.warn("Library load failed:",r.m essage),this._setLibraryErrorMessage(r.message)):(this._setLibraryErrorMessage(n ull),this._setLibraryLoaded(!0),this.notifyEvent&&this.fire(this.notifyEvent,i)) },_loadLibrary:function(){r.require(this.libraryUrl,this._libraryLoadCallback.bi nd(this),this.callbackName)},ready:function(){this._isReady=!0,this.libraryUrl&& this._loadLibrary()}};var r={apiMap:{},require:function(r,t,e){var a=this.nameFr omUrl(r);this.apiMap[a]||(this.apiMap[a]=new i(a,r,e)),this.apiMap[a].requestNot ify(t)},nameFromUrl:function(r){return r.replace(/[\:\/\%\?\&\.\=\-\,]/g,"_")+"_ api"}},i=function(r,i,t){if(this.notifiers=[],!t){if(!(i.indexOf(this.callbackMa cro)>=0))return void(this.error=new Error("IronJsonpLibraryBehavior a %%callback %% parameter is required in libraryUrl"));t=r+"_loaded",i=i.replace(this.callbac kMacro,t)}this.callbackName=t,window[this.callbackName]=this.success.bind(this), this.addScript(i)};i.prototype={callbackMacro:"%%callback%%",loaded:!1,addScript :function(r){var i=document.createElement("script");i.src=r,i.onerror=this.handl eError.bind(this);var t=document.querySelector("script")||document.body;t.parent Node.insertBefore(i,t),this.script=i},removeScript:function(){this.script.parent Node&&this.script.parentNode.removeChild(this.script),this.script=null},handleEr ror:function(r){this.error=new Error("Library failed to load"),this.notifyAll(), this.cleanup()},success:function(){this.loaded=!0,this.result=Array.prototype.sl ice.call(arguments),this.notifyAll(),this.cleanup()},cleanup:function(){delete w indow[this.callbackName]},notifyAll:function(){this.notifiers.forEach(function(r ){r(this.error,this.result)}.bind(this)),this.notifiers=[]},requestNotify:functi on(r){this.loaded||this.error?r(this.error,this.result):this.notifiers.push(r)}} }()</script> <script>Polymer({is:"iron-jsonp-library",behaviors:[Polymer.IronJso npLibraryBehavior],properties:{libraryUrl:String,callbackName:String,notifyEvent :String}})</script> <script>Polymer({is:"google-js-api",behaviors:[Polymer.IronJ sonpLibraryBehavior],properties:{libraryUrl:{type:String,value:"https://apis.goo gle.com/js/api.js?onload=%%callback%%"},notifyEvent:{type:String,value:"js-api-l oad"}},get api(){return gapi}})</script> <script>!function(){var e={appPackageNa me:"apppackagename",clientId:"clientid",cookiePolicy:"cookiepolicy",hostedDomain :"hostedDomain",openidPrompt:"prompt",requestVisibleActions:"requestvisibleactio ns"},t={_clientId:null,get clientId(){return this._clientId},set clientId(e){if( this._clientId&&e&&e!=this._clientId)throw new Error("clientId cannot change. Va lues do not match. New: "+e+" Old:"+this._clientId);e&&e!=this._clientId&&(this. _clientId=e,this.initAuth2())},_cookiePolicy:"single_host_origin",get cookiePoli cy(){return this._cookiePolicy},set cookiePolicy(e){e&&(this._cookiePolicy=e)},_ appPackageName:"",get appPackageName(){return this._appPackageName},set appPacka geName(e){if(this._appPackageName&&e&&e!=this._appPackageName)throw new Error("a ppPackageName cannot change. Values do not match. New: "+e+" Old: "+this._appPac kageName);e&&(this._appPackageName=e)},_requestVisibleActions:"",get requestVisi bleactions(){return this._requestVisibleActions},set requestVisibleactions(e){if (this._requestVisibleActions&&e&&e!=this._requestVisibleActions)throw new Error( "requestVisibleactions cannot change. Values do not match. New: "+e+" Old: "+thi s._requestVisibleActions);e&&(this._requestVisibleActions=e)},_hostedDomain:"",g et hostedDomain(){return this._hostedDomain},set hostedDomain(e){if(this._hosted Domain&&e&&e!=this._hostedDomain)throw new Error("hostedDomain cannot change. Va lues do not match. New: "+e+" Old: "+this._hostedDomain);e&&(this._hostedDomain= e)},_openidPrompt:"",get openidPrompt(){return this._openidPrompt},set openidPro mpt(e){if("string"!=typeof e)throw new Error("openidPrompt must be a string. Rec eived "+typeof e);if(e){var t=e.split(" ");t=t.map(function(e){return e.trim()}) ,t=t.filter(function(e){return e});var i={none:0,login:0,consent:0,select_accoun t:0};t.forEach(function(e){if("none"==e&&t.length>1)throw new Error("none cannot be combined with other openidPrompt values");if(!(e in i))throw new Error("inva lid openidPrompt value "+e+". Valid values: "+Object.keys(i).join(", "))})}this. _openidPrompt=e},_offline:!1,get offline(){return this._offline},set offline(e){ this._offline=e,this.updateAdditionalAuth()},_offlineAlwaysPrompt:!1,get offline AlwaysPrompt(){return this._offlineAlwaysPrompt},set offlineAlwaysPrompt(e){this ._offlineAlwaysPrompt=e,this.updateAdditionalAuth()},offlineGranted:!1,_apiLoade r:null,_requestedScopeArray:[],get requestedScopes(){return this._requestedScope Array.join(" ")},_signedIn:!1,_grantedScopeArray:[],_needAdditionalAuth:!0,_hasP lusScopes:!1,signinAwares:[],init:function(){this._apiLoader=document.createElem ent("google-js-api"),this._apiLoader.addEventListener("js-api-load",this.loadAut h2.bind(this))},loadAuth2:function(){gapi.load("auth2",this.initAuth2.bind(this) )},initAuth2:function(){if("gapi"in window&&"auth2"in window.gapi&&this.clientId ){var e=gapi.auth2.init({client_id:this.clientId,cookie_policy:this.cookiePolicy ,scope:this.requestedScopes,hosted_domain:this.hostedDomain});e.currentUser.list en(this.handleUserUpdate.bind(this)),e.then(function(){},function(e){console.err or(e)})}},handleUserUpdate:function(e){var t=e.isSignedIn();if(t!=this._signedIn ){this._signedIn=t;for(var i=0;i<this.signinAwares.length;i++)this.signinAwares[ i]._setSignedIn(t)}this._grantedScopeArray=this.strToScopeArray(e.getGrantedScop es()),this.updateAdditionalAuth();for(var n=e.getAuthResponse(),i=0;i<this.signi nAwares.length;i++)this.signinAwares[i]._updateScopeStatus(n)},setOfflineCode:fu nction(e){for(var t=0;t<this.signinAwares.length;t++)this.signinAwares[t]._updat eOfflineCode(e)},strToScopeArray:function(e){if(!e)return[];for(var t=e.replace( /\ +/g," ").trim().split(" "),i=0;i<t.length;i++)t[i]=t[i].toLowerCase(),"https: //www.googleapis.com/auth/userinfo.profile"===t[i]&&(t[i]="profile"),"https://ww w.googleapis.com/auth/userinfo.email"===t[i]&&(t[i]="email");return t.filter(fun ction(e,t,i){return i.indexOf(e)===t})},isPlusScope:function(e){return e.indexOf ("/auth/games")>-1||e.indexOf("auth/plus.")>-1&&e.indexOf("auth/plus.me")<0},has GrantedScopes:function(e){for(var t=this.strToScopeArray(e),i=0;i<t.length;i++)i f(this._grantedScopeArray.indexOf(t[i])===-1)return!1;return!0},requestScopes:fu nction(e){for(var t=this.strToScopeArray(e),i=!1,n=0;n<t.length;n++)this._reques tedScopeArray.indexOf(t[n])===-1&&(this._requestedScopeArray.push(t[n]),i=!0);i& &(this.updateAdditionalAuth(),this.updatePlusScopes())},updateAdditionalAuth:fun ction(){var e=!1;if(!this.offlineAlwaysPrompt&&!this.offline||this.offlineGrante d){for(var t=0;t<this._requestedScopeArray.length;t++)if(this._grantedScopeArray .indexOf(this._requestedScopeArray[t])===-1){e=!0;break}}else e=!0;if(this._need AdditionalAuth!=e){this._needAdditionalAuth=e;for(var t=0;t<this.signinAwares.le ngth;t++)this.signinAwares[t]._setNeedAdditionalAuth(e)}},updatePlusScopes:funct ion(){for(var e=!1,t=0;t<this._requestedScopeArray.length;t++)if(this.isPlusScop e(this._requestedScopeArray[t])){e=!0;break}if(this._hasPlusScopes!=e){this._has PlusScopes=e;for(var t=0;t<this.signinAwares.length;t++)this.signinAwares[t]._se tHasPlusScopes(e)}},attachSigninAware:function(e){this.signinAwares.indexOf(e)== -1?(this.signinAwares.push(e),e._setNeedAdditionalAuth(this._needAdditionalAuth) ,e._setSignedIn(this._signedIn),e._setHasPlusScopes(this._hasPlusScopes)):consol e.warn("signinAware attached more than once",e)},detachSigninAware:function(e){v ar t=this.signinAwares.indexOf(e);t!=-1?this.signinAwares.splice(t,1):console.wa rn("Trying to detach unattached signin-aware")},getMissingScopes:function(){retu rn this._requestedScopeArray.filter(function(e){return this._grantedScopeArray.i ndexOf(e)===-1}.bind(this)).join(" ")},assertAuthInitialized:function(){if(!this .clientId)throw new Error("AuthEngine not initialized. clientId has not been con figured.");if(!("gapi"in window))throw new Error("AuthEngine not initialized. ga pi has not loaded.");if(!("auth2"in window.gapi))throw new Error("AuthEngine not initialized. auth2 not loaded.")},signIn:function(){this.assertAuthInitialized( );var i={scope:this.getMissingScopes()};Object.keys(e).forEach(function(t){this[ t]&&""!==this[t]&&(i[e[t]]=this[t])},this);var n,o=gapi.auth2.getAuthInstance(). currentUser.get();this.offline||this.offlineAlwaysPrompt?(i.redirect_uri="postme ssage",this.offlineAlwaysPrompt&&(i.approval_prompt="force"),n=gapi.auth2.getAut hInstance().grantOfflineAccess(i)):n=o.getGrantedScopes()?o.grant(i):gapi.auth2. getAuthInstance().signIn(i),n.then(function(e){var i;e.code?(t.offlineGranted=!0 ,i=gapi.auth2.getAuthInstance().currentUser.get(),t.setOfflineCode(e.code)):i=e; i.getAuthResponse()},function(e){"Access denied."!==e.reason&&this.signinAwares. forEach(function(t){t.errorNotify(e)})}.bind(this))},signOut:function(){this.ass ertAuthInitialized(),gapi.auth2.getAuthInstance().signOut().then(function(){},fu nction(e){console.error(e)})}};t.init(),Polymer({is:"google-signin-aware",proper ties:{appPackageName:{type:String,observer:"_appPackageNameChanged"},clientId:{t ype:String,observer:"_clientIdChanged"},cookiePolicy:{type:String,observer:"_coo kiePolicyChanged"},requestVisibleActions:{type:String,observer:"_requestVisibleA ctionsChanged"},hostedDomain:{type:String,observer:"_hostedDomainChanged"},offli ne:{type:Boolean,value:!1,observer:"_offlineChanged"},offlineAlwaysPrompt:{type: Boolean,value:!1,observer:"_offlineAlwaysPromptChanged"},scopes:{type:String,val ue:"profile",observer:"_scopesChanged"},openidPrompt:{type:String,value:"",obser ver:"_openidPromptChanged"},signedIn:{type:Boolean,notify:!0,readOnly:!0},isAuth orized:{type:Boolean,notify:!0,readOnly:!0,value:!1},needAdditionalAuth:{type:Bo olean,notify:!0,readOnly:!0},hasPlusScopes:{type:Boolean,value:!1,notify:!0,read Only:!0}},attached:function(){t.attachSigninAware(this)},detached:function(){t.d etachSigninAware(this)},signIn:function(){t.signIn()},signOut:function(){t.signO ut()},errorNotify:function(e){this.fire("google-signin-aware-error",e)},_appPack ageNameChanged:function(e,i){t.appPackageName=e},_clientIdChanged:function(e,i){ t.clientId=e},_cookiePolicyChanged:function(e,i){t.cookiePolicy=e},_requestVisib leActionsChanged:function(e,i){t.requestVisibleActions=e},_hostedDomainChanged:f unction(e,i){t.hostedDomain=e},_offlineChanged:function(e,i){t.offline=e},_offli neAlwaysPromptChanged:function(e,i){t.offlineAlwaysPrompt=e},_scopesChanged:func tion(e,i){t.requestScopes(e),this._updateScopeStatus(void 0)},_openidPromptChang ed:function(e,i){t.openidPrompt=e},_updateScopeStatus:function(e){var i=this.sig nedIn&&t.hasGrantedScopes(this.scopes);i!==this.isAuthorized&&(this._setIsAuthor ized(i),i?this.fire("google-signin-aware-success",e):this.fire("google-signin-aw are-signed-out",e))},_updateOfflineCode:function(e){e&&this.fire("google-signin- offline-success",{code:e})}})}()</script> <dom-module id="auth-signin" assetpath ="/res/imp/common/"> <template> <style>#avatar{border-radius:5px}a{color:#fff}.c enter{vertical-align:middle}</style> <google-signin-aware id="aware" client-id=" [[client_id]]" offline="" scopes="email" on-google-signin-aware-success="_onSign in" on-google-signin-aware-signed-out="_onSignout"> </google-signin-aware> <temp late is="dom-if" if="[[!signed_in]]"> <div id="signinContainer"> <a on-tap="sign In" href="#">Sign in</a> </div> </template> <template is="dom-if" if="[[signed_i n]]"> <img class="center" id="avatar" src="[[profile.imageUrl]]" width="30" heig ht="30"> <span class="center">[[profile.email]]</span> <span class="center">|</s pan> <a class="center" on-tap="signOut" href="#">Sign out</a> </template> </temp late> <script>"use strict";Polymer({is:"auth-signin",properties:{auth_headers:{t ype:Object,computed:"_makeHeader(auth_response)",notify:!0},auth_response:{type: Object,notify:!0},client_id:{type:String},profile:{type:Object,readOnly:!0,notif y:!0},signed_in:{type:Boolean,readOnly:!0,value:!1,notify:!0}},ready:function(){ this.client_id&&window.setTimeout(function(){if(!this.signed_in&&!this._signingI n)if("gapi"in window&&"auth2"in window.gapi){var i=gapi.auth2.getAuthInstance(). currentUser.get();i&&i.getAuthResponse().access_token?this._onSignin():window.se tTimeout(this.ready.bind(this),50)}else window.setTimeout(this.ready.bind(this), 50)}.bind(this),50)},_onSignin:function(){this._signingIn=!0;var i=gapi.auth2.ge tAuthInstance().currentUser.get(),e=i.getBasicProfile();this._setProfile({email: e.getEmail(),imageUrl:e.getImageUrl()}),this.set("auth_response",i.getAuthRespon se()),this._setSigned_in(!0),this.fire("auth-signin"),this.async(function(){cons ole.log("reloading credentials"),i.reloadAuthResponse(),this._onSignin()},1e3*th is.auth_response.expires_in),this._signingIn=!1},_onSignout:function(i){this._se tSigned_in(!1),this._setProfile(null)},_makeHeader:function(i){return i?{authori zation:i.token_type+" "+i.access_token}:{}},signIn:function(){this.$.aware.signI n()},signOut:function(){this.$.aware.signOut()}})</script> </dom-module> <dom-mo dule id="iron-a11y-announcer" assetpath="/res/imp/bower_components/iron-a11y-ann ouncer/"> <template> <style>:host{display:inline-block;position:fixed;clip:rect( 0,0,0,0)}</style> <div aria-live$="[[mode]]">[[_text]]</div> </template> <script >!function(){"use strict";Polymer.IronA11yAnnouncer=Polymer({is:"iron-a11y-annou ncer",properties:{mode:{type:String,value:"polite"},_text:{type:String,value:""} },created:function(){Polymer.IronA11yAnnouncer.instance||(Polymer.IronA11yAnnoun cer.instance=this),document.body.addEventListener("iron-announce",this._onIronAn nounce.bind(this))},announce:function(n){this._text="",this.async(function(){thi s._text=n},100)},_onIronAnnounce:function(n){n.detail&&n.detail.text&&this.annou nce(n.detail.text)}}),Polymer.IronA11yAnnouncer.instance=null,Polymer.IronA11yAn nouncer.requestAvailability=function(){Polymer.IronA11yAnnouncer.instance||(Poly mer.IronA11yAnnouncer.instance=document.createElement("iron-a11y-announcer")),do cument.body.appendChild(Polymer.IronA11yAnnouncer.instance)}}()</script> </dom-m odule> <script>Polymer.IronFitBehavior={properties:{sizingTarget:{type:Object,va lue:function(){return this}},fitInto:{type:Object,value:window},noOverlap:{type: Boolean},positionTarget:{type:Element},horizontalAlign:{type:String},verticalAli gn:{type:String},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value :0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},autoFitOnAttach:{ty pe:Boolean,value:!1},_fitInfo:{type:Object}},get _fitWidth(){var t;return t=this .fitInto===window?this.fitInto.innerWidth:this.fitInto.getBoundingClientRect().w idth},get _fitHeight(){var t;return t=this.fitInto===window?this.fitInto.innerHe ight:this.fitInto.getBoundingClientRect().height},get _fitLeft(){var t;return t= this.fitInto===window?0:this.fitInto.getBoundingClientRect().left},get _fitTop() {var t;return t=this.fitInto===window?0:this.fitInto.getBoundingClientRect().top },get _defaultPositionTarget(){var t=Polymer.dom(this).parentNode;return t&&t.no deType===Node.DOCUMENT_FRAGMENT_NODE&&(t=t.host),t},get _localeHorizontalAlign() {if(this._isRTL){if("right"===this.horizontalAlign)return"left";if("left"===this .horizontalAlign)return"right"}return this.horizontalAlign},attached:function(){ this._isRTL="rtl"==window.getComputedStyle(this).direction,this.positionTarget=t his.positionTarget||this._defaultPositionTarget,this.autoFitOnAttach&&("none"=== window.getComputedStyle(this).display?setTimeout(function(){this.fit()}.bind(thi s)):this.fit())},fit:function(){this.position(),this.constrain(),this.center()}, _discoverInfo:function(){if(!this._fitInfo){var t=window.getComputedStyle(this), i=window.getComputedStyle(this.sizingTarget);this._fitInfo={inlineStyle:{top:thi s.style.top||"",left:this.style.left||"",position:this.style.position||""},sizer InlineStyle:{maxWidth:this.sizingTarget.style.maxWidth||"",maxHeight:this.sizing Target.style.maxHeight||"",boxSizing:this.sizingTarget.style.boxSizing||""},posi tionedBy:{vertically:"auto"!==t.top?"top":"auto"!==t.bottom?"bottom":null,horizo ntally:"auto"!==t.left?"left":"auto"!==t.right?"right":null},sizedBy:{height:"no ne"!==i.maxHeight,width:"none"!==i.maxWidth,minWidth:parseInt(i.minWidth,10)||0, minHeight:parseInt(i.minHeight,10)||0},margin:{top:parseInt(t.marginTop,10)||0,r ight:parseInt(t.marginRight,10)||0,bottom:parseInt(t.marginBottom,10)||0,left:pa rseInt(t.marginLeft,10)||0}},this.verticalOffset&&(this._fitInfo.margin.top=this ._fitInfo.margin.bottom=this.verticalOffset,this._fitInfo.inlineStyle.marginTop= this.style.marginTop||"",this._fitInfo.inlineStyle.marginBottom=this.style.margi nBottom||"",this.style.marginTop=this.style.marginBottom=this.verticalOffset+"px "),this.horizontalOffset&&(this._fitInfo.margin.left=this._fitInfo.margin.right= this.horizontalOffset,this._fitInfo.inlineStyle.marginLeft=this.style.marginLeft ||"",this._fitInfo.inlineStyle.marginRight=this.style.marginRight||"",this.style .marginLeft=this.style.marginRight=this.horizontalOffset+"px")}},resetFit:functi on(){var t=this._fitInfo||{};for(var i in t.sizerInlineStyle)this.sizingTarget.s tyle[i]=t.sizerInlineStyle[i];for(var i in t.inlineStyle)this.style[i]=t.inlineS tyle[i];this._fitInfo=null},refit:function(){var t=this.sizingTarget.scrollLeft, i=this.sizingTarget.scrollTop;this.resetFit(),this.fit(),this.sizingTarget.scrol lLeft=t,this.sizingTarget.scrollTop=i},position:function(){if(this.horizontalAli gn||this.verticalAlign){this._discoverInfo(),this.style.position="fixed",this.si zingTarget.style.boxSizing="border-box",this.style.left="0px",this.style.top="0p x";var t=this.getBoundingClientRect(),i=this.__getNormalizedRect(this.positionTa rget),e=this.__getNormalizedRect(this.fitInto),n=this._fitInfo.margin,o={width:t .width+n.left+n.right,height:t.height+n.top+n.bottom},h=this.__getPosition(this. _localeHorizontalAlign,this.verticalAlign,o,i,e),s=h.left+n.left,l=h.top+n.top,r =Math.min(e.right-n.right,s+t.width),a=Math.min(e.bottom-n.bottom,l+t.height),g= this._fitInfo.sizedBy.minWidth,f=this._fitInfo.sizedBy.minHeight;s<n.left&&(s=n. left,r-s<g&&(s=r-g)),l<n.top&&(l=n.top,a-l<f&&(l=a-f)),this.sizingTarget.style.m axWidth=r-s+"px",this.sizingTarget.style.maxHeight=a-l+"px",this.style.left=s-t. left+"px",this.style.top=l-t.top+"px"}},constrain:function(){if(!this.horizontal Align&&!this.verticalAlign){this._discoverInfo();var t=this._fitInfo;t.positione dBy.vertically||(this.style.position="fixed",this.style.top="0px"),t.positionedB y.horizontally||(this.style.position="fixed",this.style.left="0px"),this.sizingT arget.style.boxSizing="border-box";var i=this.getBoundingClientRect();t.sizedBy. height||this.__sizeDimension(i,t.positionedBy.vertically,"top","bottom","Height" ),t.sizedBy.width||this.__sizeDimension(i,t.positionedBy.horizontally,"left","ri ght","Width")}},_sizeDimension:function(t,i,e,n,o){this.__sizeDimension(t,i,e,n, o)},__sizeDimension:function(t,i,e,n,o){var h=this._fitInfo,s=this.__getNormaliz edRect(this.fitInto),l="Width"===o?s.width:s.height,r=i===n,a=r?l-t[n]:t[e],g=h. margin[r?e:n],f="offset"+o,p=this[f]-this.sizingTarget[f];this.sizingTarget.styl e["max"+o]=l-g-a-p+"px"},center:function(){if(!this.horizontalAlign&&!this.verti calAlign){this._discoverInfo();var t=this._fitInfo.positionedBy;if(!t.vertically ||!t.horizontally){this.style.position="fixed",t.vertically||(this.style.top="0p x"),t.horizontally||(this.style.left="0px");var i=this.getBoundingClientRect(),e =this.__getNormalizedRect(this.fitInto);if(!t.vertically){var n=e.top-i.top+(e.h eight-i.height)/2;this.style.top=n+"px"}if(!t.horizontally){var o=e.left-i.left+ (e.width-i.width)/2;this.style.left=o+"px"}}}},__getNormalizedRect:function(t){r eturn t===document.documentElement||t===window?{top:0,left:0,width:window.innerW idth,height:window.innerHeight,right:window.innerWidth,bottom:window.innerHeight }:t.getBoundingClientRect()},__getCroppedArea:function(t,i,e){var n=Math.min(0,t .top)+Math.min(0,e.bottom-(t.top+i.height)),o=Math.min(0,t.left)+Math.min(0,e.ri ght-(t.left+i.width));return Math.abs(n)*i.width+Math.abs(o)*i.height},__getPosi tion:function(t,i,e,n,o){var h=[{verticalAlign:"top",horizontalAlign:"left",top: n.top,left:n.left},{verticalAlign:"top",horizontalAlign:"right",top:n.top,left:n .right-e.width},{verticalAlign:"bottom",horizontalAlign:"left",top:n.bottom-e.he ight,left:n.left},{verticalAlign:"bottom",horizontalAlign:"right",top:n.bottom-e .height,left:n.right-e.width}];if(this.noOverlap){for(var s=0,l=h.length;s<l;s++ ){var r={};for(var a in h[s])r[a]=h[s][a];h.push(r)}h[0].top=h[1].top+=n.height, h[2].top=h[3].top-=n.height,h[4].left=h[6].left+=n.width,h[5].left=h[7].left-=n. width}i="auto"===i?null:i,t="auto"===t?null:t;for(var g,s=0;s<h.length;s++){var f=h[s];if(!this.dynamicAlign&&!this.noOverlap&&f.verticalAlign===i&&f.horizontal Align===t){g=f;break}var p=!(i&&f.verticalAlign!==i||t&&f.horizontalAlign!==t);i f(this.dynamicAlign||p){g=g||f,f.croppedArea=this.__getCroppedArea(f,e,o);var d= f.croppedArea-g.croppedArea;if((d<0||0===d&&p)&&(g=f),0===g.croppedArea&&p)break }}return g}}</script> <dom-module id="iron-overlay-backdrop" assetpath="/res/imp /bower_components/iron-overlay-behavior/"> <template> <style>:host{position:fixe d;top:0;left:0;width:100%;height:100%;background-color:var(--iron-overlay-backdr op-background-color,#000);opacity:0;transition:opacity .2s;pointer-events:none;@ apply(--iron-overlay-backdrop)}:host(.opened){opacity:var(--iron-overlay-backdro p-opacity,.6);pointer-events:auto;@apply(--iron-overlay-backdrop-opened)}</style > <content></content> </template> </dom-module> <script>!function(){"use strict" ;Polymer({is:"iron-overlay-backdrop",properties:{opened:{reflectToAttribute:!0,t ype:Boolean,value:!1,observer:"_openedChanged"}},listeners:{transitionend:"_onTr ansitionend"},created:function(){this.__openedRaf=null},attached:function(){this .opened&&this._openedChanged(this.opened)},prepare:function(){this.opened&&!this .parentNode&&Polymer.dom(document.body).appendChild(this)},open:function(){this. opened=!0},close:function(){this.opened=!1},complete:function(){this.opened||thi s.parentNode!==document.body||Polymer.dom(this.parentNode).removeChild(this)},_o nTransitionend:function(e){e&&e.target===this&&this.complete()},_openedChanged:f unction(e){if(e)this.prepare();else{var t=window.getComputedStyle(this);"0s"!==t .transitionDuration&&0!=t.opacity||this.complete()}this.isAttached&&(this.__open edRaf&&(window.cancelAnimationFrame(this.__openedRaf),this.__openedRaf=null),thi s.scrollTop=this.scrollTop,this.__openedRaf=window.requestAnimationFrame(functio n(){this.__openedRaf=null,this.toggleClass("opened",this.opened)}.bind(this)))}} )}()</script> <script>Polymer.IronOverlayManagerClass=function(){this._overlays= [],this._minimumZ=101,this._backdropElement=null,Polymer.Gestures.add(document," tap",this._onCaptureClick.bind(this)),document.addEventListener("focus",this._on CaptureFocus.bind(this),!0),document.addEventListener("keydown",this._onCaptureK eyDown.bind(this),!0)},Polymer.IronOverlayManagerClass.prototype={constructor:Po lymer.IronOverlayManagerClass,get backdropElement(){return this._backdropElement ||(this._backdropElement=document.createElement("iron-overlay-backdrop")),this._ backdropElement},get deepActiveElement(){for(var e=document.activeElement||docum ent.body;e.root&&Polymer.dom(e.root).activeElement;)e=Polymer.dom(e.root).active Element;return e},_bringOverlayAtIndexToFront:function(e){var t=this._overlays[e ];if(t){var r=this._overlays.length-1,a=this._overlays[r];if(a&&this._shouldBeBe hindOverlay(t,a)&&r--,!(e>=r)){var n=Math.max(this.currentOverlayZ(),this._minim umZ);for(this._getZ(t)<=n&&this._applyOverlayZ(t,n);e<r;)this._overlays[e]=this. _overlays[e+1],e++;this._overlays[r]=t}}},addOrRemoveOverlay:function(e){e.opene d?this.addOverlay(e):this.removeOverlay(e)},addOverlay:function(e){var t=this._o verlays.indexOf(e);if(t>=0)return this._bringOverlayAtIndexToFront(t),void this. trackBackdrop();var r=this._overlays.length,a=this._overlays[r-1],n=Math.max(thi s._getZ(a),this._minimumZ),o=this._getZ(e);if(a&&this._shouldBeBehindOverlay(e,a )){this._applyOverlayZ(a,n),r--;var i=this._overlays[r-1];n=Math.max(this._getZ( i),this._minimumZ)}o<=n&&this._applyOverlayZ(e,n),this._overlays.splice(r,0,e),t his.trackBackdrop()},removeOverlay:function(e){var t=this._overlays.indexOf(e);t !==-1&&(this._overlays.splice(t,1),this.trackBackdrop())},currentOverlay:functio n(){var e=this._overlays.length-1;return this._overlays[e]},currentOverlayZ:func tion(){return this._getZ(this.currentOverlay())},ensureMinimumZ:function(e){this ._minimumZ=Math.max(this._minimumZ,e)},focusOverlay:function(){var e=this.curren tOverlay();e&&e._applyFocus()},trackBackdrop:function(){var e=this._overlayWithB ackdrop();(e||this._backdropElement)&&(this.backdropElement.style.zIndex=this._g etZ(e)-1,this.backdropElement.opened=!!e)},getBackdrops:function(){for(var e=[], t=0;t<this._overlays.length;t++)this._overlays[t].withBackdrop&&e.push(this._ove rlays[t]);return e},backdropZ:function(){return this._getZ(this._overlayWithBack drop())-1},_overlayWithBackdrop:function(){for(var e=0;e<this._overlays.length;e ++)if(this._overlays[e].withBackdrop)return this._overlays[e]},_getZ:function(e) {var t=this._minimumZ;if(e){var r=Number(e.style.zIndex||window.getComputedStyle (e).zIndex);r===r&&(t=r)}return t},_setZ:function(e,t){e.style.zIndex=t},_applyO verlayZ:function(e,t){this._setZ(e,t+2)},_overlayInPath:function(e){e=e||[];for( var t=0;t<e.length;t++)if(e[t]._manager===this)return e[t]},_onCaptureClick:func tion(e){var t=this.currentOverlay();t&&this._overlayInPath(Polymer.dom(e).path)! ==t&&t._onCaptureClick(e)},_onCaptureFocus:function(e){var t=this.currentOverlay ();t&&t._onCaptureFocus(e)},_onCaptureKeyDown:function(e){var t=this.currentOver lay();t&&(Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,"esc")?t._onCa ptureEsc(e):Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,"tab")&&t._o nCaptureTab(e))},_shouldBeBehindOverlay:function(e,t){return!e.alwaysOnTop&&t.al waysOnTop}},Polymer.IronOverlayManager=new Polymer.IronOverlayManagerClass</scri pt> <script>!function(){"use strict";Polymer.IronOverlayBehaviorImpl={properties :{opened:{observer:"_openedChanged",type:Boolean,value:!1,notify:!0},canceled:{o bserver:"_canceledChanged",readOnly:!0,type:Boolean,value:!1},withBackdrop:{obse rver:"_withBackdropChanged",type:Boolean},noAutoFocus:{type:Boolean,value:!1},no CancelOnEscKey:{type:Boolean,value:!1},noCancelOnOutsideClick:{type:Boolean,valu e:!1},closingReason:{type:Object},restoreFocusOnClose:{type:Boolean,value:!1},al waysOnTop:{type:Boolean},_manager:{type:Object,value:Polymer.IronOverlayManager} ,_focusedChild:{type:Object}},listeners:{"iron-resize":"_onIronResize"},get back dropElement(){return this._manager.backdropElement},get _focusNode(){return this ._focusedChild||Polymer.dom(this).querySelector("[autofocus]")||this},get _focus ableNodes(){var e=["a[href]","area[href]","iframe","[tabindex]","[contentEditabl e=true]"],t=["input","select","textarea","button"],i=e.join(':not([tabindex="-1" ]),')+':not([tabindex="-1"]),'+t.join(':not([disabled]):not([tabindex="-1"]),')+ ':not([disabled]):not([tabindex="-1"])',s=Polymer.dom(this).querySelectorAll(i); return this.tabIndex>=0&&s.splice(0,0,this),s.sort(function(e,t){return e.tabInd ex===t.tabIndex?0:0===e.tabIndex||e.tabIndex>t.tabIndex?1:-1})},ready:function() {this.__isAnimating=!1,this.__shouldRemoveTabIndex=!1,this.__firstFocusableNode= this.__lastFocusableNode=null,this.__raf=null,this.__restoreFocusNode=null,this. _ensureSetup()},attached:function(){this.opened&&this._openedChanged(this.opened ),this._observer=Polymer.dom(this).observeNodes(this._onNodesChange)},detached:f unction(){Polymer.dom(this).unobserveNodes(this._observer),this._observer=null,t his.__raf&&(window.cancelAnimationFrame(this.__raf),this.__raf=null),this._manag er.removeOverlay(this)},toggle:function(){this._setCanceled(!1),this.opened=!thi s.opened},open:function(){this._setCanceled(!1),this.opened=!0},close:function() {this._setCanceled(!1),this.opened=!1},cancel:function(e){var t=this.fire("iron- overlay-canceled",e,{cancelable:!0});t.defaultPrevented||(this._setCanceled(!0), this.opened=!1)},invalidateTabbables:function(){this.__firstFocusableNode=this._ _lastFocusableNode=null},_ensureSetup:function(){this._overlaySetup||(this._over laySetup=!0,this.style.outline="none",this.style.display="none")},_openedChanged :function(e){e?this.removeAttribute("aria-hidden"):this.setAttribute("aria-hidde n","true"),this.isAttached&&(this.__isAnimating=!0,this.__onNextAnimationFrame(t his.__openedChanged))},_canceledChanged:function(){this.closingReason=this.closi ngReason||{},this.closingReason.canceled=this.canceled},_withBackdropChanged:fun ction(){this.withBackdrop&&!this.hasAttribute("tabindex")?(this.setAttribute("ta bindex","-1"),this.__shouldRemoveTabIndex=!0):this.__shouldRemoveTabIndex&&(this .removeAttribute("tabindex"),this.__shouldRemoveTabIndex=!1),this.opened&&this.i sAttached&&this._manager.trackBackdrop()},_prepareRenderOpened:function(){this._ _restoreFocusNode=this._manager.deepActiveElement,this._preparePositioning(),thi s.refit(),this._finishPositioning(),this.noAutoFocus&&document.activeElement===t his._focusNode&&(this._focusNode.blur(),this.__restoreFocusNode.focus())},_rende rOpened:function(){this._finishRenderOpened()},_renderClosed:function(){this._fi nishRenderClosed()},_finishRenderOpened:function(){this.notifyResize(),this.__is Animating=!1,this.fire("iron-overlay-opened")},_finishRenderClosed:function(){th is.style.display="none",this.style.zIndex="",this.notifyResize(),this.__isAnimat ing=!1,this.fire("iron-overlay-closed",this.closingReason)},_preparePositioning: function(){this.style.transition=this.style.webkitTransition="none",this.style.t ransform=this.style.webkitTransform="none",this.style.display=""},_finishPositio ning:function(){this.style.display="none",this.scrollTop=this.scrollTop,this.sty le.transition=this.style.webkitTransition="",this.style.transform=this.style.web kitTransform="",this.style.display="",this.scrollTop=this.scrollTop},_applyFocus :function(){if(this.opened)this.noAutoFocus||this._focusNode.focus();else{this._ focusNode.blur(),this._focusedChild=null,this.restoreFocusOnClose&&this.__restor eFocusNode&&this.__restoreFocusNode.focus(),this.__restoreFocusNode=null;var e=t his._manager.currentOverlay();e&&this!==e&&e._applyFocus()}},_onCaptureClick:fun ction(e){this.noCancelOnOutsideClick||this.cancel(e)},_onCaptureFocus:function(e ){if(this.withBackdrop){var t=Polymer.dom(e).path;t.indexOf(this)===-1?(e.stopPr opagation(),this._applyFocus()):this._focusedChild=t[0]}},_onCaptureEsc:function (e){this.noCancelOnEscKey||this.cancel(e)},_onCaptureTab:function(e){if(this.wit hBackdrop){this.__ensureFirstLastFocusables();var t=e.shiftKey,i=t?this.__firstF ocusableNode:this.__lastFocusableNode,s=t?this.__lastFocusableNode:this.__firstF ocusableNode,n=!1;if(i===s)n=!0;else{var o=this._manager.deepActiveElement;n=o== =i||o===this}n&&(e.preventDefault(),this._focusedChild=s,this._applyFocus())}},_ onIronResize:function(){this.opened&&!this.__isAnimating&&this.__onNextAnimation Frame(this.refit)},_onNodesChange:function(){this.opened&&!this.__isAnimating&&( this.invalidateTabbables(),this.notifyResize())},__ensureFirstLastFocusables:fun ction(){if(!this.__firstFocusableNode||!this.__lastFocusableNode){var e=this._fo cusableNodes;this.__firstFocusableNode=e[0],this.__lastFocusableNode=e[e.length- 1]}},__openedChanged:function(){this.opened?(this._prepareRenderOpened(),this._m anager.addOverlay(this),this._applyFocus(),this._renderOpened()):(this._manager. removeOverlay(this),this._applyFocus(),this._renderClosed())},__onNextAnimationF rame:function(e){this.__raf&&window.cancelAnimationFrame(this.__raf);var t=this; this.__raf=window.requestAnimationFrame(function(){t.__raf=null,e.call(t)})}},Po lymer.IronOverlayBehavior=[Polymer.IronFitBehavior,Polymer.IronResizableBehavior ,Polymer.IronOverlayBehaviorImpl]}()</script> <dom-module id="paper-toast" asset path="/res/imp/bower_components/paper-toast/"> <template> <style>:host{display:b lock;position:fixed;background-color:var(--paper-toast-background-color,#323232) ;color:var(--paper-toast-color,#f1f1f1);min-height:48px;min-width:288px;padding: 16px 24px;box-sizing:border-box;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-ra dius:2px;margin:12px;font-size:14px;cursor:default;-webkit-transition:-webkit-tr ansform .3s,opacity .3s;transition:transform .3s,opacity .3s;opacity:0;-webkit-t ransform:translateY(100px);transform:translateY(100px);@apply(--paper-font-commo n-base)}:host(.capsule){border-radius:24px}:host(.fit-bottom){width:100%;min-wid th:0;border-radius:0;margin:0}:host(.paper-toast-open){opacity:1;-webkit-transfo rm:translateY(0);transform:translateY(0)}</style> <span id="label">{{text}}</spa n> <content></content> </template> <script>!function(){var e=null;Polymer({is:"p aper-toast",behaviors:[Polymer.IronOverlayBehavior],properties:{fitInto:{type:Ob ject,value:window,observer:"_onFitIntoChanged"},horizontalAlign:{type:String,val ue:"left"},verticalAlign:{type:String,value:"bottom"},duration:{type:Number,valu e:3e3},text:{type:String,value:""},noCancelOnOutsideClick:{type:Boolean,value:!0 },noAutoFocus:{type:Boolean,value:!0}},listeners:{transitionend:"__onTransitionE nd"},get visible(){return Polymer.Base._warn("`visible` is deprecated, use `open ed` instead"),this.opened},get _canAutoClose(){return this.duration>0&&this.dura tion!==1/0},created:function(){this._autoClose=null,Polymer.IronA11yAnnouncer.re questAvailability()},show:function(e){"string"==typeof e&&(e={text:e});for(var t in e)0===t.indexOf("_")?Polymer.Base._warn('The property "'+t+'" is private and was not set.'):t in this?this[t]=e[t]:Polymer.Base._warn('The property "'+t+'" is not valid.');this.open()},hide:function(){this.close()},__onTransitionEnd:fun ction(e){e&&e.target===this&&"opacity"===e.propertyName&&(this.opened?this._fini shRenderOpened():this._finishRenderClosed())},_openedChanged:function(){null!==t his._autoClose&&(this.cancelAsync(this._autoClose),this._autoClose=null),this.op ened?(e&&e!==this&&e.close(),e=this,this.fire("iron-announce",{text:this.text}), this._canAutoClose&&(this._autoClose=this.async(this.close,this.duration))):e=== this&&(e=null),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,argumen ts)},_renderOpened:function(){this.classList.add("paper-toast-open")},_renderClo sed:function(){this.classList.remove("paper-toast-open")},_onFitIntoChanged:func tion(e){this.positionTarget=e}})}()</script> </dom-module> <dom-module id="error -toast" assetpath="/res/imp/common/"> <template> <paper-toast id="toast"></paper -toast> </template> </dom-module> <script>Polymer({is:"error-toast",ready:functi on(){document.addEventListener("error-sk",function(t){if(this.$.toast.close(),t. detail.message){this.$.toast.text=t.detail.message;var e=1e4;void 0!==t.detail.d uration&&(e=t.detail.duration),this.$.toast.duration=e,this.$.toast.show()}else console.log("Empty message?",t)}.bind(this))}})</script> <dom-module id="swarmin g-app" assetpath="/res/imp/common/"> <template> <style include="iron-flex">:host {position:absolute;top:0;bottom:0;left:0;right:0}app-toolbar{background-color:#1 F78B4;color:#fff}app-toolbar.error{background-color:#b41f1f;color:#fff}app-toolb ar a{color:#fff}.left{margin-right:15px}.right{margin-left:15px}.main-content{pa dding:3px}.main-content a{color:#1F78B4}.menu-button{min-width:40px}.small,auth- signin{font-size:.7em}#mobile_menu{z-index:10;--app-drawer-content-container:{ma rgin-top:64px};}a[href]{color:#1F78B4}.menu-item{padding:8px 3px;border-bottom:1 px solid #CCC}paper-fab{position:fixed;bottom:5px;right:5px;background-color:#1F 78B4}paper-spinner-lite{--paper-spinner-color:var(--google-yellow-500)}</style> <app-header-layout> <app-drawer id="mobile_menu"> <div class="menu-item"><a clas s="left" href="/">Home</a></div> <div class="menu-item"><a class="left" href="/b otlist">Bot List</a></div> <div class="menu-item"><a class="left" href="/tasklis t">Task List</a></div> <div class="menu-item"><a class="left" href="/oldui">Old UI</a></div> </app-drawer> <app-header fixed=""> <app-toolbar class$="[[_toolbar Class(client_id)]]"> <paper-icon-button class="menu-button" icon="icons:menu" on -tap="_toggleMobileMenu" hidden$="[[wide_layout]]"> </paper-icon-button> <div cl ass="title left">[[name]]</div> <paper-spinner-lite class="left" active="[[_or(b usy,_busy1,_busy2)]]"></paper-spinner-lite> <a class="left" href="/" hidden$="[[ !wide_layout]]">Home</a> <a class="left" href="/botlist" hidden$="[[!wide_layout ]]">Bot List</a> <a class="left" href="/tasklist" hidden$="[[!wide_layout]]">Tas k List</a> <div class="flex" hidden$="[[!wide_layout]]"></div> <template is="dom -if" if="[[client_id]]"> <div class="small right"> Server: <a href$="[[_versionL ink(server_details)]]"> [[server_details.server_version]] </a> </div> <auth-sign in class="right" client_id="[[client_id]]" auth_headers="{{auth_headers}}" profi le="{{profile}}" signed_in="{{signed_in}}"> </auth-signin> </template> <template is="dom-if" if="[[!client_id]]"> <div class="right">No OAauth client id found.< /div> </template> </app-toolbar> </app-header> <div class="main-content"> <conte nt></content> </div> <error-toast></error-toast> <a target="_blank" rel="noopene r" href="https://bugs.chromium.org/p/chromium/issues/entry?components=Infra%3EPl atform%3ESwarming&amp;owner=kjlubick@chromium.org&amp;status=Assigned"> <paper-f ab mini="" icon="icons:bug-report"></paper-fab> </a> </app-header-layout> <iron- media-query query="min-width: 600px" query-matches="{{wide_layout}}"></iron-medi a-query> </template> <script>Polymer({is:"swarming-app",behaviors:[SwarmingBehav iors.CommonBehavior],properties:{busy:{type:Boolean},client_id:{type:String},nam e:{type:String},auth_headers:{type:Object,notify:!0,observer:"_load"},permission s:{type:Object,value:function(){return{}},notify:!0},profile:{type:Object,notify :!0},server_details:{type:Object,notify:!0},signed_in:{type:Boolean,value:!1,not ify:!0},_busy1:{type:Boolean,value:!1},_busy2:{type:Boolean,value:!1}},_load:fun ction(){this._getJsonAsync("permissions","/api/swarming/v1/server/permissions"," _busy1",this.auth_headers),this._getJsonAsync("server_details","/api/swarming/v1 /server/details","_busy2",this.auth_headers).catch(function(e){sk.errorMessage(" Http response: "+(e.status||" ")+" "+e.response)})},_toggleMobileMenu:function() {this.$.mobile_menu.toggle()},_toolbarClass:function(e){return e?"":"error"},_ve rsionLink:function(e){if(e&&e.server_version){var s=e.server_version.split("-"); if(2===s.length)return"https://github.com/luci/luci-py/commit/"+s[1]}}})</script > </dom-module> <dom-module id="swarming-app-style" assetpath="/res/imp/common/" > <style>*{font-family:sans-serif}a[href]{color:#1F78B4}button{min-width:5.14em; background-color:#fff;color:#1f78b4;text-align:center;text-transform:uppercase;o utline:0;border-radius:3px;padding:.6em 1.2em;border:solid #d3d3d3 1px;margin:.6 em;cursor:pointer}button:hover{background:#eee}button:focus{background-color:#dd d;transition:background-color .1s cubic-bezier(.4,0,.2,1)}button.raised:active,b utton:active{background-color:#999;transition:background-color .1s cubic-bezier( .4,0,.2,1)}button:disabled{color:#999}button:disabled:hover{background:initial;c ursor:initial}button.action:active{background-color:#A6CEE3;transition:backgroun d-color .1s color .1s cubic-bezier(.4,0,.2,1)}button.action{color:#fff;backgroun d:#1f78b4;border:none}button.action:disabled{color:#fff;background:#999;border:n one}button.raised{transition:box-shadow .1s cubic-bezier(.4,0,.2,1);box-shadow:5 px 5px 18px 0 rgba(0,0,0,.3)}button.raised:active{box-shadow:2px 2px 5px 0 rgba( 0,0,0,.1)}option,select{padding:.4em 1.2em;background-color:#fff;border:none;lin e-height:20px;vertical-align:middle}select{overflow-y:auto}</style> </dom-module > <dom-module id="swarming-index" assetpath="/res/imp/index/"> <template> <style include="swarming-app-style">.command{font-family:monospace;margin-bottom:10px; margin-top:10px;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid # ccc;border-radius:4px}</style> <swarming-app client_id="[[client_id]]" auth_head ers="{{_auth_headers}}" permissions="{{_permissions}}" server_details="{{_server _details}}" name="Swarming Server" busy="[[_or(_busy1,busy2)]]"> <h2>Service Sta tus</h2> <div>Server Version: [[_server_details.server_version]]</div> <div>Bot Version: [[_server_details.bot_version]]</div> <ul> <li> <a href="/stats">Usage statistics</a> </li> <li> <a href="/restricted/mapreduce/status">Map Reduce Jobs </a> </li> <li> <a href$="[[_makeInstancesUrl(_server_details,_project_id)]]">Vi ew version's instances on Cloud Console</a> </li> <li> <a></a><a href$="[[_makeE rrorUrl(_project_id)]]">View server errors on Cloud Console</a> </li> <li> <a></ a><a href$="[[_makeLogUrl(_project_id)]]">View logs for HTTP 5xx on Cloud Consol e</a> </li> </ul> <h2>Configuration</h2> <ul> <li> <a href="/restricted/config"> View server config</a> </li> <li> <a href="/restricted/upload/bootstrap">View/up load bootstrap.py</a> </li> <li> <a href="/restricted/upload/bot_config">View/up load bot_config.py</a> </li> <li> <a href="/auth/groups">View/edit user groups</ a> </li> </ul> <div hidden$="[[_cannotBootstrap(_permissions)]]"> <h2>Bootstrapp ing a bot</h2> To bootstrap a bot, run one of these (all links are valid for 1 h our): <ol> <li> <strong> TL;DR; </strong> <pre class="command">python -c "import urllib; exec urllib.urlopen('[[_host_url]]/bootstrap?tok=[[_bootstrap_token]]') .read()"</pre> </li> <li> Escaped version to pass as a ssh argument: <pre class= "command">'python -c "import urllib; exec urllib.urlopen('"'[[_host_url]]/bootst rap?tok=[[_bootstrap_token]]'"').read()"'</pre> </li> <li> Manually: <pre class= "command" style="margin-bottom:0">mkdir bot; cd bot 195 })(); </script> <script>Polymer.AppLayout=Polymer.AppLayout||{},Polymer.AppLay out._scrollEffects=Polymer.AppLayout._scrollEffects||{},Polymer.AppLayout.scroll TimingFunction=function(o,l,e,r){return o/=r,-e*o*(o-2)+l},Polymer.AppLayout.reg isterEffect=function(o,l){if(null!=Polymer.AppLayout._scrollEffects[o])throw new Error("effect `"+o+"` is already registered.");Polymer.AppLayout._scrollEffects [o]=l},Polymer.AppLayout.scroll=function(o){o=o||{};var l=document.documentEleme nt,e=o.target||l,r="scrollBehavior"in e.style&&e.scroll,t="app-layout-silent-scr oll",s=o.top||0,c=o.left||0,i=e===l?window.scrollTo:function(o,l){e.scrollLeft=o ,e.scrollTop=l};if("smooth"===o.behavior)if(r)e.scroll(o);else{var n=Polymer.App Layout.scrollTimingFunction,a=Date.now(),p=e===l?window.pageYOffset:e.scrollTop, u=e===l?window.pageXOffset:e.scrollLeft,y=s-p,f=c-u,m=300,L=function o(){var l=D ate.now(),e=l-a;e<m?(i(n(e,u,f,m),n(e,p,y,m)),requestAnimationFrame(o)):i(c,s)}. bind(this);L()}else"silent"===o.behavior?(l.classList.add(t),clearInterval(Polym er.AppLayout._scrollTimer),Polymer.AppLayout._scrollTimer=setTimeout(function(){ l.classList.remove(t),Polymer.AppLayout._scrollTimer=null},100),i(c,s)):i(c,s)}< /script> <style>[hidden]{display:none!important}</style> <style is="custom-style ">:root{--layout:{display:-ms-flexbox;display:-webkit-flex;display:flex};--layou t-inline:{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline- flex};--layout-horizontal:{@apply(--layout);-ms-flex-direction:row;-webkit-flex- direction:row;flex-direction:row};--layout-horizontal-reverse:{@apply(--layout); -ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction :row-reverse};--layout-vertical:{@apply(--layout);-ms-flex-direction:column;-web kit-flex-direction:column;flex-direction:column};--layout-vertical-reverse:{@app ly(--layout);-ms-flex-direction:column-reverse;-webkit-flex-direction:column-rev erse;flex-direction:column-reverse};--layout-wrap:{-ms-flex-wrap:wrap;-webkit-fl ex-wrap:wrap;flex-wrap:wrap};--layout-wrap-reverse:{-ms-flex-wrap:wrap-reverse;- webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse};--layout-flex-auto:{-ms-fl ex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto};--layout-flex-none:{-ms-flex:no ne;-webkit-flex:none;flex:none};--layout-flex:{-ms-flex:1 1 0px;-webkit-flex:1;f lex:1;-webkit-flex-basis:0px;flex-basis:0px};--layout-flex-2:{-ms-flex:2;-webkit -flex:2;flex:2};--layout-flex-3:{-ms-flex:3;-webkit-flex:3;flex:3};--layout-flex -4:{-ms-flex:4;-webkit-flex:4;flex:4};--layout-flex-5:{-ms-flex:5;-webkit-flex:5 ;flex:5};--layout-flex-6:{-ms-flex:6;-webkit-flex:6;flex:6};--layout-flex-7:{-ms -flex:7;-webkit-flex:7;flex:7};--layout-flex-8:{-ms-flex:8;-webkit-flex:8;flex:8 };--layout-flex-9:{-ms-flex:9;-webkit-flex:9;flex:9};--layout-flex-10:{-ms-flex: 10;-webkit-flex:10;flex:10};--layout-flex-11:{-ms-flex:11;-webkit-flex:11;flex:1 1};--layout-flex-12:{-ms-flex:12;-webkit-flex:12;flex:12};--layout-start:{-ms-fl ex-align:start;-webkit-align-items:flex-start;align-items:flex-start};--layout-c enter:{-ms-flex-align:center;-webkit-align-items:center;align-items:center};--la yout-end:{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end}; --layout-baseline:{-ms-flex-align:baseline;-webkit-align-items:baseline;align-it ems:baseline};--layout-start-justified:{-ms-flex-pack:start;-webkit-justify-cont ent:flex-start;justify-content:flex-start};--layout-center-justified:{-ms-flex-p ack:center;-webkit-justify-content:center;justify-content:center};--layout-end-j ustified:{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:fle x-end};--layout-around-justified:{-ms-flex-pack:distribute;-webkit-justify-conte nt:space-around;justify-content:space-around};--layout-justified:{-ms-flex-pack: justify;-webkit-justify-content:space-between;justify-content:space-between};--l ayout-center-center:{@apply(--layout-center);@apply(--layout-center-justified)}; --layout-self-start:{-ms-align-self:flex-start;-webkit-align-self:flex-start;ali gn-self:flex-start};--layout-self-center:{-ms-align-self:center;-webkit-align-se lf:center;align-self:center};--layout-self-end:{-ms-align-self:flex-end;-webkit- align-self:flex-end;align-self:flex-end};--layout-self-stretch:{-ms-align-self:s tretch;-webkit-align-self:stretch;align-self:stretch};--layout-self-baseline:{-m s-align-self:baseline;-webkit-align-self:baseline;align-self:baseline};--layout- start-aligned:{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-ali gn-content:flex-start;align-content:flex-start};--layout-end-aligned:{-ms-flex-l ine-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-con tent:flex-end};--layout-center-aligned:{-ms-flex-line-pack:center;-ms-align-cont ent:center;-webkit-align-content:center;align-content:center};--layout-between-a ligned:{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align -content:space-between;align-content:space-between};--layout-around-aligned:{-ms -flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content: space-around;align-content:space-around};--layout-block:{display:block};--layout -invisible:{visibility:hidden!important};--layout-relative:{position:relative};- -layout-fit:{position:absolute;top:0;right:0;bottom:0;left:0};--layout-scroll:{- webkit-overflow-scrolling:touch;overflow:auto};--layout-fullbleed:{margin:0;heig ht:100vh};--layout-fixed-top:{position:fixed;top:0;left:0;right:0};--layout-fixe d-right:{position:fixed;top:0;right:0;bottom:0};--layout-fixed-bottom:{position: fixed;right:0;bottom:0;left:0};--layout-fixed-left:{position:fixed;top:0;bottom: 0;left:0};}</style> <dom-module id="app-drawer" assetpath="/res/imp/bower_compon ents/app-layout/app-drawer/"> <template> <style>:host{position:fixed;top:-120px; right:0;bottom:-120px;left:0;visibility:hidden;transition-property:visibility}:h ost([opened]){visibility:visible}:host([persistent]){width:var(--app-drawer-widt h,256px)}:host([persistent][position=left]){right:auto}:host([persistent][positi on=right]){left:auto}#contentContainer{position:absolute;top:0;bottom:0;left:0;w idth:var(--app-drawer-width,256px);padding:120px 0;transition-property:-webkit-t ransform;transition-property:transform;-webkit-transform:translate3d(-100%,0,0); transform:translate3d(-100%,0,0);background-color:#FFF;@apply(--app-drawer-conte nt-container)}:host([position=right])>#contentContainer{right:0;left:auto;-webki t-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}:host([swipe-o pen])>#contentContainer::after{position:fixed;top:0;bottom:0;left:100%;visibilit y:visible;width:20px;content:''}:host([swipe-open][position=right])>#contentCont ainer::after{right:100%;left:auto}:host([opened])>#contentContainer{-webkit-tran sform:translate3d(0,0,0);transform:translate3d(0,0,0)}#scrim{position:absolute;t op:0;right:0;bottom:0;left:0;transition-property:opacity;-webkit-transform:trans lateZ(0);transform:translateZ(0);opacity:0;background:var(--app-drawer-scrim-bac kground,rgba(0,0,0,.5))}:host([opened])>#scrim{opacity:1}:host([opened][persiste nt])>#scrim{visibility:hidden;opacity:0}</style> <div id="scrim" on-tap="close"> </div> <div id="contentContainer"> <content></content> </div> </template> <scrip t>Polymer({is:"app-drawer",properties:{opened:{type:Boolean,value:!1,notify:!0,r eflectToAttribute:!0},persistent:{type:Boolean,value:!1,reflectToAttribute:!0},t ransitionDuration:{type:Number,value:200},align:{type:String,value:"left"},posit ion:{type:String,readOnly:!0,reflectToAttribute:!0},swipeOpen:{type:Boolean,valu e:!1,reflectToAttribute:!0},noFocusTrap:{type:Boolean,value:!1}},observers:["res etLayout(position, isAttached)","_resetPosition(align, isAttached)","_styleTrans itionDuration(transitionDuration)","_openedPersistentChanged(opened, persistent) "],_translateOffset:0,_trackDetails:null,_drawerState:0,_boundEscKeydownHandler: null,_firstTabStop:null,_lastTabStop:null,attached:function(){this._styleTransit ionDuration(0),Polymer.RenderStatus.afterNextRender(this,function(){this._styleT ransitionDuration(this.transitionDuration),this._boundEscKeydownHandler=this._es cKeydownHandler.bind(this),this._resetDrawerState(),this.$.scrim.addEventListene r("transitionend",this._transitionend.bind(this)),this.$.contentContainer.addEve ntListener("transitionend",this._transitionend.bind(this)),this.addEventListener ("keydown",this._tabKeydownHandler.bind(this)),this.listen(this,"track","_track" ),this.setScrollDirection("y")}),this.fire("app-drawer-attached")},detached:func tion(){document.removeEventListener("keydown",this._boundEscKeydownHandler)},ope n:function(){this.opened=!0},close:function(){this.opened=!1},toggle:function(){ this.opened=!this.opened},getWidth:function(){return this.$.contentContainer.off setWidth},resetLayout:function(){this.fire("app-drawer-reset-layout")},_isRTL:fu nction(){return"rtl"===window.getComputedStyle(this).direction},_resetPosition:f unction(){switch(this.align){case"start":return void this._setPosition(this._isR TL()?"right":"left");case"end":return void this._setPosition(this._isRTL()?"left ":"right")}this._setPosition(this.align)},_escKeydownHandler:function(t){var i=2 7;t.keyCode===i&&(t.preventDefault(),this.close())},_track:function(t){if(!this. persistent)switch(t.preventDefault(),t.detail.state){case"start":this._trackStar t(t);break;case"track":this._trackMove(t);break;case"end":this._trackEnd(t)}},_t rackStart:function(t){this._drawerState=this._DRAWER_STATE.TRACKING,this._styleT ransitionDuration(0),this.style.visibility="visible";var i=this.$.contentContain er.getBoundingClientRect();"left"===this.position?this._translateOffset=i.left:t his._translateOffset=i.right-window.innerWidth,this._trackDetails=[]},_trackMove :function(t){this._translateDrawer(t.detail.dx+this._translateOffset),this._trac kDetails.push({dx:t.detail.dx,timeStamp:Date.now()})},_trackEnd:function(t){var i=t.detail.dx+this._translateOffset,e=this.getWidth(),n="left"===this.position,s =n?i>=0||i<=-e:i<=0||i>=e;if(!s){var a=this._trackDetails;if(this._trackDetails= null,this._flingDrawer(t,a),this._drawerState===this._DRAWER_STATE.FLINGING)retu rn}var r=e/2;t.detail.dx<-r?this.opened="right"===this.position:t.detail.dx>r&&( this.opened="left"===this.position),s&&this._resetDrawerState(),this._styleTrans itionDuration(this.transitionDuration),this._resetDrawerTranslate(),this.style.v isibility=""},_calculateVelocity:function(t,i){for(var e,n=Date.now(),s=n-100,a= 0,r=i.length-1;a<=r;){var o=a+r>>1,h=i[o];h.timeStamp>=s?(e=h,r=o-1):a=o+1}if(e) {var l=t.detail.dx-e.dx,d=n-e.timeStamp||1;return l/d}return 0},_flingDrawer:fun ction(t,i){var e=this._calculateVelocity(t,i);if(!(Math.abs(e)<this._MIN_FLING_T HRESHOLD)){this._drawerState=this._DRAWER_STATE.FLINGING;var n,s=t.detail.dx+thi s._translateOffset,a=this.getWidth(),r="left"===this.position,o=e>0,h=!o&&r,l=o& &!r;n=h?-(s+a):l?a-s:-s,o?(e=Math.max(e,this._MIN_TRANSITION_VELOCITY),this.open ed="left"===this.position):(e=Math.min(e,-this._MIN_TRANSITION_VELOCITY),this.op ened="right"===this.position),this._styleTransitionDuration(this._FLING_INITIAL_ SLOPE*n/e),this._styleTransitionTimingFunction(this._FLING_TIMING_FUNCTION),this ._resetDrawerTranslate()}},_transitionend:function(){this._drawerState===this._D RAWER_STATE.FLINGING&&(this._styleTransitionDuration(this.transitionDuration),th is._styleTransitionTimingFunction(""),this.style.visibility=""),this._resetDrawe rState()},_styleTransitionDuration:function(t){this.style.transitionDuration=t+" ms",this.$.contentContainer.style.transitionDuration=t+"ms",this.$.scrim.style.t ransitionDuration=t+"ms"},_styleTransitionTimingFunction:function(t){this.$.cont entContainer.style.transitionTimingFunction=t,this.$.scrim.style.transitionTimin gFunction=t},_translateDrawer:function(t){var i=this.getWidth();"left"===this.po sition?(t=Math.max(-i,Math.min(t,0)),this.$.scrim.style.opacity=1+t/i):(t=Math.m ax(0,Math.min(t,i)),this.$.scrim.style.opacity=1-t/i),this.translate3d(t+"px","0 ","0",this.$.contentContainer)},_resetDrawerTranslate:function(){this.$.scrim.st yle.opacity="",this.transform("",this.$.contentContainer)},_resetDrawerState:fun ction(){var t=this._drawerState;this.opened?this._drawerState=this.persistent?th is._DRAWER_STATE.OPENED_PERSISTENT:this._DRAWER_STATE.OPENED:this._drawerState=t his._DRAWER_STATE.CLOSED,t!==this._drawerState&&(this._drawerState===this._DRAWE R_STATE.OPENED?(this._setKeyboardFocusTrap(),document.addEventListener("keydown" ,this._boundEscKeydownHandler),document.body.style.overflow="hidden"):(document. removeEventListener("keydown",this._boundEscKeydownHandler),document.body.style. overflow=""),t!==this._DRAWER_STATE.INIT&&this.fire("app-drawer-transitioned"))} ,_setKeyboardFocusTrap:function(){if(!this.noFocusTrap){var t=['a[href]:not([tab index="-1"])','area[href]:not([tabindex="-1"])','input:not([disabled]):not([tabi ndex="-1"])','select:not([disabled]):not([tabindex="-1"])','textarea:not([disabl ed]):not([tabindex="-1"])','button:not([disabled]):not([tabindex="-1"])','iframe :not([tabindex="-1"])','[tabindex]:not([tabindex="-1"])','[contentEditable=true] :not([tabindex="-1"])'].join(","),i=Polymer.dom(this).querySelectorAll(t);i.leng th>0?(this._firstTabStop=i[0],this._lastTabStop=i[i.length-1]):(this._firstTabSt op=null,this._lastTabStop=null);var e=this.getAttribute("tabindex");e&&parseInt( e,10)>-1?this.focus():this._firstTabStop&&this._firstTabStop.focus()}},_tabKeydo wnHandler:function(t){if(!this.noFocusTrap){var i=9;this._drawerState===this._DR AWER_STATE.OPENED&&t.keyCode===i&&(t.shiftKey?this._firstTabStop&&Polymer.dom(t) .localTarget===this._firstTabStop&&(t.preventDefault(),this._lastTabStop.focus() ):this._lastTabStop&&Polymer.dom(t).localTarget===this._lastTabStop&&(t.preventD efault(),this._firstTabStop.focus()))}},_openedPersistentChanged:function(){0=== this.transitionDuration&&this._resetDrawerState()},_MIN_FLING_THRESHOLD:.2,_MIN_ TRANSITION_VELOCITY:1.2,_FLING_TIMING_FUNCTION:"cubic-bezier(0.667, 1, 0.667, 1) ",_FLING_INITIAL_SLOPE:1.5,_DRAWER_STATE:{INIT:0,OPENED:1,OPENED_PERSISTENT:2,CL OSED:3,TRACKING:4,FLINGING:5}})</script> </dom-module> <script>Polymer({is:"iron -media-query",properties:{queryMatches:{type:Boolean,value:!1,readOnly:!0,notify :!0},query:{type:String,observer:"queryChanged"},full:{type:Boolean,value:!1},_b oundMQHandler:{value:function(){return this.queryHandler.bind(this)}},_mq:{value :null}},attached:function(){this.style.display="none",this.queryChanged()},detac hed:function(){this._remove()},_add:function(){this._mq&&this._mq.addListener(th is._boundMQHandler)},_remove:function(){this._mq&&this._mq.removeListener(this._ boundMQHandler),this._mq=null},queryChanged:function(){this._remove();var e=this .query;e&&(this.full||"("===e[0]||(e="("+e+")"),this._mq=window.matchMedia(e),th is._add(),this.queryHandler(this._mq))},queryHandler:function(e){this._setQueryM atches(e.matches)}})</script> <script>Polymer.IronResizableBehavior={properties: {_parentResizable:{type:Object,observer:"_parentResizableChanged"},_notifyingDes cendant:{type:Boolean,value:!1}},listeners:{"iron-request-resize-notifications": "_onIronRequestResizeNotifications"},created:function(){this._interestedResizabl es=[],this._boundNotifyResize=this.notifyResize.bind(this)},attached:function(){ this.fire("iron-request-resize-notifications",null,{node:this,bubbles:!0,cancela ble:!0}),this._parentResizable||(window.addEventListener("resize",this._boundNot ifyResize),this.notifyResize())},detached:function(){this._parentResizable?this. _parentResizable.stopResizeNotificationsFor(this):window.removeEventListener("re size",this._boundNotifyResize),this._parentResizable=null},notifyResize:function (){this.isAttached&&(this._interestedResizables.forEach(function(e){this.resizer ShouldNotify(e)&&this._notifyDescendant(e)},this),this._fireResize())},assignPar entResizable:function(e){this._parentResizable=e},stopResizeNotificationsFor:fun ction(e){var i=this._interestedResizables.indexOf(e);i>-1&&(this._interestedResi zables.splice(i,1),this.unlisten(e,"iron-resize","_onDescendantIronResize"))},re sizerShouldNotify:function(e){return!0},_onDescendantIronResize:function(e){retu rn this._notifyingDescendant?void e.stopPropagation():void(Polymer.Settings.useS hadow||this._fireResize())},_fireResize:function(){this.fire("iron-resize",null, {node:this,bubbles:!1})},_onIronRequestResizeNotifications:function(e){var i=e.p ath?e.path[0]:e.target;i!==this&&(this._interestedResizables.indexOf(i)===-1&&(t his._interestedResizables.push(i),this.listen(i,"iron-resize","_onDescendantIron Resize")),i.assignParentResizable(this),this._notifyDescendant(i),e.stopPropagat ion())},_parentResizableChanged:function(e){e&&window.removeEventListener("resiz e",this._boundNotifyResize)},_notifyDescendant:function(e){this.isAttached&&(thi s._notifyingDescendant=!0,e.notifyResize(),this._notifyingDescendant=!1)}}</scri pt> <dom-module id="app-drawer-layout" assetpath="/res/imp/bower_components/app- layout/app-drawer-layout/"> <template> <style>:host{display:block}:host([fullble ed]){@apply(--layout-fit)}#contentContainer{position:relative;height:100%;transi tion:var(--app-drawer-layout-content-transition,none)}#contentContainer:not(.nar row)>::content [drawer-toggle]{display:none}</style> <div id="contentContainer"> <content select=":not(app-drawer)"></content> </div> <content id="drawerContent " select="app-drawer"></content> <iron-media-query query="[[_computeMediaQuery(f orceNarrow, responsiveWidth)]]" on-query-matches-changed="_onQueryMatchesChanged "></iron-media-query> </template> <script>Polymer({is:"app-drawer-layout",behavi ors:[Polymer.IronResizableBehavior],properties:{forceNarrow:{type:Boolean,value: !1},responsiveWidth:{type:String,value:"640px"},narrow:{type:Boolean,readOnly:!0 ,notify:!0},openedWhenNarrow:{type:Boolean,value:!1}},listeners:{tap:"_tapHandle r","app-drawer-attached":"_resetDrawerState","app-drawer-reset-layout":"resetLay out","iron-resize":"resetLayout"},observers:["resetLayout(narrow, isAttached)"," _narrowChanged(narrow, isAttached)"],get drawer(){return Polymer.dom(this.$.draw erContent).getDistributedNodes()[0]},_tapHandler:function(e){var t=Polymer.dom(e ).localTarget;if(t&&t.hasAttribute("drawer-toggle")){var r=this.drawer;r&&!r.per sistent&&r.toggle()}},resetLayout:function(){this.debounce("_resetLayout",functi on(){var e=this.drawer,t=this.$.contentContainer;if(this.narrow||!e)t.style.marg inLeft="",t.style.marginRight="";else{var r=e.getWidth();"right"==e.position?(t. style.marginLeft="",t.style.marginRight=r+"px"):(t.style.marginLeft=r+"px",t.sty le.marginRight="")}})},_resetDrawerState:function(){this.debounce("_resetDrawerS tate",function(){var e=this.drawer;e&&(this.narrow?(e.opened=this.openedWhenNarr ow,e.persistent=!1):e.opened=e.persistent=!0)})},_narrowChanged:function(e){this .toggleClass("narrow",e,this.$.contentContainer),this._resetDrawerState(),this.n otifyResize()},_onQueryMatchesChanged:function(e){this._setNarrow(e.detail.value )},_computeMediaQuery:function(e,t){return e?"(min-width: 0px)":"(max-width: "+t +")"}})</script> </dom-module> <dom-module id="app-grid-style" assetpath="/res/i mp/bower_components/app-layout/app-grid/"> <template> <style>:host{--app-grid-ex pandible-item:{-webkit-flex-basis:calc((100% - .1px)/ var(--app-grid-columns,1) * var(--app-grid-expandible-item-columns,1) - var(--app-grid-gutter,0px))!import ant;flex-basis:calc((100% - .1px)/ var(--app-grid-columns,1) * var(--app-grid-ex pandible-item-columns,1) - var(--app-grid-gutter,0px))!important;max-width:calc( (100% - .1px)/ var(--app-grid-columns,1) * var(--app-grid-expandible-item-column s,1) - var(--app-grid-gutter,0px))!important};}.app-grid{display:-ms-flexbox;dis play:-webkit-flex;display:flex;-ms-flex-direction:row;-webkit-flex-direction:row ;flex-direction:row;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap;pad ding-top:var(--app-grid-gutter,0);padding-left:var(--app-grid-gutter,0);box-sizi ng:border-box}.app-grid>*{-ms-flex:1 1 100%;-webkit-flex:1;flex:1;-webkit-flex-b asis:calc((100% - .1px - (var(--app-grid-gutter,0px) * var(--app-grid-columns,1) ))/ var(--app-grid-columns,1));flex-basis:calc((100% - .1px - (var(--app-grid-gu tter,0px) * var(--app-grid-columns,1)))/ var(--app-grid-columns,1));max-width:ca lc((100% - .1px - (var(--app-grid-gutter,0px) * var(--app-grid-columns,1)))/ var (--app-grid-columns,1));margin-bottom:var(--app-grid-gutter,0);margin-right:var( --app-grid-gutter,0);height:var(--app-grid-item-height);box-sizing:border-box}.a pp-grid[has-aspect-ratio]>*{position:relative}.app-grid[has-aspect-ratio]>::befo re{display:block;content:"";padding-top:var(--app-grid-item-height,100%)}.app-gr id[has-aspect-ratio]>*>*{position:absolute;top:0;right:0;bottom:0;left:0}</style > </template> </dom-module> <script>Polymer.IronScrollTargetBehavior={properties :{scrollTarget:{type:HTMLElement,value:function(){return this._defaultScrollTarg et}}},observers:["_scrollTargetChanged(scrollTarget, isAttached)"],_shouldHaveLi stener:!0,_scrollTargetChanged:function(t,l){this._oldScrollTarget&&(this._toggl eScrollListener(!1,this._oldScrollTarget),this._oldScrollTarget=null),l&&("docum ent"===t?this.scrollTarget=this._doc:"string"==typeof t?this.scrollTarget=this.d omHost?this.domHost.$[t]:Polymer.dom(this.ownerDocument).querySelector("#"+t):th is._isValidScrollTarget()&&(this._boundScrollHandler=this._boundScrollHandler||t his._scrollHandler.bind(this),this._oldScrollTarget=t,this._toggleScrollListener (this._shouldHaveListener,t)))},_scrollHandler:function(){},get _defaultScrollTa rget(){return this._doc},get _doc(){return this.ownerDocument.documentElement},g et _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.sc rollTarget.scrollLeft:0},set _scrollTop(t){this.scrollTarget===this._doc?window. scrollTo(window.pageXOffset,t):this._isValidScrollTarget()&&(this.scrollTarget.s crollTop=t)},set _scrollLeft(t){this.scrollTarget===this._doc?window.scrollTo(t, window.pageYOffset):this._isValidScrollTarget()&&(this.scrollTarget.scrollLeft=t )},scroll:function(t,l){this.scrollTarget===this._doc?window.scrollTo(t,l):this. _isValidScrollTarget()&&(this.scrollTarget.scrollLeft=t,this.scrollTarget.scroll Top=l)},get _scrollTargetWidth(){return this._isValidScrollTarget()?this.scrollT arget===this._doc?window.innerWidth:this.scrollTarget.offsetWidth:0},get _scroll TargetHeight(){return this._isValidScrollTarget()?this.scrollTarget===this._doc? window.innerHeight:this.scrollTarget.offsetHeight:0},_isValidScrollTarget:functi on(){return this.scrollTarget instanceof HTMLElement},_toggleScrollListener:func tion(t,l){if(this._boundScrollHandler){var e=l===this._doc?window:l;t?e.addEvent Listener("scroll",this._boundScrollHandler):e.removeEventListener("scroll",this. _boundScrollHandler)}},toggleScrollListener:function(t){this._shouldHaveListener =t,this._toggleScrollListener(t,this.scrollTarget)}}</script> <script>Polymer.Ap pScrollEffectsBehavior=[Polymer.IronScrollTargetBehavior,{properties:{effects:{t ype:String},effectsConfig:{type:Object,value:function(){return{}}},disabled:{typ e:Boolean,reflectToAttribute:!0,value:!1},threshold:{type:Number,value:0},thresh oldTriggered:{type:Boolean,notify:!0,readOnly:!0,reflectToAttribute:!0}},observe rs:["_effectsChanged(effects, effectsConfig, isAttached)"],_updateScrollState:fu nction(){},isOnScreen:function(){return!1},isContentBelow:function(){return!1},_ effectsRunFn:null,_effects:null,get _clampedScrollTop(){return Math.max(0,this._ scrollTop)},detached:function(){this._tearDownEffects()},createEffect:function(t ,e){var f=Polymer.AppLayout._scrollEffects[t];if(!f)throw new ReferenceError(thi s._getUndefinedMsg(t));var n=this._boundEffect(f,e||{});return n.setUp(),n},_eff ectsChanged:function(t,e,f){this._tearDownEffects(),""!==t&&f&&(t.split(" ").for Each(function(t){var f;""!==t&&((f=Polymer.AppLayout._scrollEffects[t])?this._ef fects.push(this._boundEffect(f,e[t])):this._warn(this._logf("_effectsChanged",th is._getUndefinedMsg(t))))},this),this._setUpEffect())},_layoutIfDirty:function() {return this.offsetWidth},_boundEffect:function(t,e){e=e||{};var f=parseFloat(e. startsAt||0),n=parseFloat(e.endsAt||1),s=n-f,i=function(){},r=0===f&&1===n?t.run :function(e,n){t.run.call(this,Math.max(0,(e-f)/s),n)};return{setUp:t.setUp?t.se tUp.bind(this,e):i,run:t.run?r.bind(this):i,tearDown:t.tearDown?t.tearDown.bind( this):i}},_setUpEffect:function(){this.isAttached&&this._effects&&(this._effects RunFn=[],this._effects.forEach(function(t){t.setUp()!==!1&&this._effectsRunFn.pu sh(t.run)},this))},_tearDownEffects:function(){this._effects&&this._effects.forE ach(function(t){t.tearDown()}),this._effectsRunFn=[],this._effects=[]},_runEffec ts:function(t,e){this._effectsRunFn&&this._effectsRunFn.forEach(function(f){f(t, e)})},_scrollHandler:function(){if(!this.disabled){var t=this._clampedScrollTop; this._updateScrollState(t),this.threshold>0&&this._setThresholdTriggered(t>=this .threshold)}},_getDOMRef:function(t){this._warn(this._logf("_getDOMRef","`"+t+"` is undefined"))},_getUndefinedMsg:function(t){return"Scroll effect `"+t+"` is u ndefined. Did you forget to import app-layout/app-scroll-effects/effects/"+t+".h tml ?"}}]</script> <dom-module id="app-header" assetpath="/res/imp/bower_compone nts/app-layout/app-header/"> <template> <style>:host{position:relative;display:b lock;transition-timing-function:linear;transition-property:-webkit-transform;tra nsition-property:transform}:host::after{position:absolute;right:0;bottom:-5px;le ft:0;width:100%;height:5px;content:"";transition:opacity .4s;pointer-events:none ;opacity:0;box-shadow:inset 0 5px 6px -3px rgba(0,0,0,.4);will-change:opacity;@a pply(--app-header-shadow)}:host([shadow])::after{opacity:1}::content [condensed- title],::content [main-title]{-webkit-transform-origin:left top;transform-origin :left top;white-space:nowrap}::content [condensed-title]{opacity:0}#background{@ apply(--layout-fit);overflow:hidden}#backgroundFrontLayer,#backgroundRearLayer{@ apply(--layout-fit);height:100%;pointer-events:none;background-size:cover}#backg roundFrontLayer{@apply(--app-header-background-front-layer)}#backgroundRearLayer {opacity:0;@apply(--app-header-background-rear-layer)}#contentContainer{position :relative;width:100%;height:100%}:host([disabled]),:host([disabled]) #background FrontLayer,:host([disabled]) #backgroundRearLayer,:host([disabled]) ::content>[s ticky],:host([disabled]) ::content>app-toolbar:first-of-type,:host([disabled]):: after,:host-context(.app-layout-silent-scroll),:host-context(.app-layout-silent- scroll) #backgroundFrontLayer,:host-context(.app-layout-silent-scroll) #backgrou ndRearLayer,:host-context(.app-layout-silent-scroll) ::content>[sticky],:host-co ntext(.app-layout-silent-scroll) ::content>app-toolbar:first-of-type,:host-conte xt(.app-layout-silent-scroll)::after{transition:none!important}</style> <div id= "contentContainer"> <content id="content"></content> </div> </template> <script> Polymer({is:"app-header",behaviors:[Polymer.AppScrollEffectsBehavior,Polymer.Iro nResizableBehavior],properties:{condenses:{type:Boolean,value:!1},fixed:{type:Bo olean,value:!1},reveals:{type:Boolean,value:!1},shadow:{type:Boolean,reflectToAt tribute:!0,value:!1}},observers:["resetLayout(isAttached, condenses, fixed)"],li steners:{"iron-resize":"_resizeHandler"},_height:0,_dHeight:0,_stickyElTop:0,_st ickyEl:null,_top:0,_progress:0,_wasScrollingDown:!1,_initScrollTop:0,_initTimest amp:0,_lastTimestamp:0,_lastScrollTop:0,get _maxHeaderTop(){return this.fixed?th is._dHeight:this._height+5},_getStickyEl:function(){for(var t,e=Polymer.dom(this .$.content).getDistributedNodes(),i=0;i<e.length;i++)if(e[i].nodeType===Node.ELE MENT_NODE){var s=e[i];if(s.hasAttribute("sticky")){t=s;break}t||(t=s)}return t}, resetLayout:function(){this.fire("app-header-reset-layout"),this.debounce("_rese tLayout",function(){if(0!==this.offsetWidth||0!==this.offsetHeight){var t=this._ clampedScrollTop,e=0===this._height||0===t,i=this.disabled;this._height=this.off setHeight,this._stickyEl=this._getStickyEl(),this.disabled=!0,e||this._updateScr ollState(0,!0),this._mayMove()?this._dHeight=this._stickyEl?this._height-this._s tickyEl.offsetHeight:0:this._dHeight=0,this._stickyElTop=this._stickyEl?this._st ickyEl.offsetTop:0,this._setUpEffect(),e?this._updateScrollState(t,!0):(this._up dateScrollState(this._lastScrollTop,!0),this._layoutIfDirty()),this.disabled=i}} )},_updateScrollState:function(t,e){if(0!==this._height){var i=0,s=0,o=this._top ,r=(this._lastScrollTop,this._maxHeaderTop),h=t-this._lastScrollTop,n=Math.abs(h ),a=t>this._lastScrollTop,l=Date.now();if(this._mayMove()&&(s=this._clamp(this.r eveals?o+h:t,0,r)),t>=this._dHeight&&(s=this.condenses&&!this.fixed?Math.max(thi s._dHeight,s):s,this.style.transitionDuration="0ms"),this.reveals&&!this.disable d&&n<100&&((l-this._initTimestamp>300||this._wasScrollingDown!==a)&&(this._initS crollTop=t,this._initTimestamp=l),t>=r))if(Math.abs(this._initScrollTop-t)>30||n >10){a&&t>=r?s=r:!a&&t>=this._dHeight&&(s=this.condenses&&!this.fixed?this._dHei ght:0);var _=h/(l-this._lastTimestamp);this.style.transitionDuration=this._clamp ((s-o)/_,0,300)+"ms"}else s=this._top;i=0===this._dHeight?t>0?1:0:s/this._dHeigh t,e||(this._lastScrollTop=t,this._top=s,this._wasScrollingDown=a,this._lastTimes tamp=l),(e||i!==this._progress||o!==s||0===t)&&(this._progress=i,this._runEffect s(i,s),this._transformHeader(s))}},_mayMove:function(){return this.condenses||!t his.fixed},willCondense:function(){return this._dHeight>0&&this.condenses},isOnS creen:function(){return 0!==this._height&&this._top<this._height},isContentBelow :function(){return 0===this._top?this._clampedScrollTop>0:this._clampedScrollTop -this._maxHeaderTop>=0},_transformHeader:function(t){this.translate3d(0,-t+"px", 0),this._stickyEl&&this.condenses&&t>=this._stickyElTop&&this.translate3d(0,Math .min(t,this._dHeight)-this._stickyElTop+"px",0,this._stickyEl)},_resizeHandler:f unction(){this.resetLayout()},_clamp:function(t,e,i){return Math.min(i,Math.max( e,t))},_ensureBgContainers:function(){this._bgContainer||(this._bgContainer=docu ment.createElement("div"),this._bgContainer.id="background",this._bgRear=documen t.createElement("div"),this._bgRear.id="backgroundRearLayer",this._bgContainer.a ppendChild(this._bgRear),this._bgFront=document.createElement("div"),this._bgFro nt.id="backgroundFrontLayer",this._bgContainer.appendChild(this._bgFront),Polyme r.dom(this.root).insertBefore(this._bgContainer,this.$.contentContainer))},_getD OMRef:function(t){switch(t){case"backgroundFrontLayer":return this._ensureBgCont ainers(),this._bgFront;case"backgroundRearLayer":return this._ensureBgContainers (),this._bgRear;case"background":return this._ensureBgContainers(),this._bgConta iner;case"mainTitle":return Polymer.dom(this).querySelector("[main-title]");case "condensedTitle":return Polymer.dom(this).querySelector("[condensed-title]")}ret urn null},getScrollState:function(){return{progress:this._progress,top:this._top }}})</script> </dom-module> <dom-module id="app-header-layout" assetpath="/res/i mp/bower_components/app-layout/app-header-layout/"> <template> <style>:host{disp lay:block;position:relative;z-index:0}:host>::content>app-header{@apply(--layout -fixed-top);z-index:1}:host([has-scrolling-region]){height:100%}:host([has-scrol ling-region])>::content>app-header{position:absolute}:host([has-scrolling-region ])>#contentContainer{@apply(--layout-fit);overflow-y:auto;-webkit-overflow-scrol ling:touch}:host([fullbleed]){@apply(--layout-vertical);@apply(--layout-fit)}:ho st([fullbleed])>#contentContainer{@apply(--layout-vertical);@apply(--layout-flex )}#contentContainer{position:relative;z-index:0}</style> <content id="header" se lect="app-header"></content> <div id="contentContainer"> <content></content> </d iv> </template> <script>Polymer({is:"app-header-layout",behaviors:[Polymer.IronR esizableBehavior],properties:{hasScrollingRegion:{type:Boolean,value:!1,reflectT oAttribute:!0}},listeners:{"iron-resize":"_resizeHandler","app-header-reset-layo ut":"resetLayout"},observers:["resetLayout(isAttached, hasScrollingRegion)"],get header(){return Polymer.dom(this.$.header).getDistributedNodes()[0]},resetLayou t:function(){this._updateScroller(),this.debounce("_resetLayout",this._updateCon tentPosition)},_updateContentPosition:function(){var e=this.header;if(this.isAtt ached&&e){var t=e.offsetHeight;if(this.hasScrollingRegion)e.style.left="",e.styl e.right="";else{var i=this.getBoundingClientRect(),o=document.documentElement.cl ientWidth-i.right;e.style.left=i.left+"px",e.style.right=o+"px"}var n=this.$.con tentContainer.style;e.fixed&&!e.willCondense()&&this.hasScrollingRegion?(n.margi nTop=t+"px",n.paddingTop=""):(n.paddingTop=t+"px",n.marginTop="")}},_updateScrol ler:function(){if(this.isAttached){var e=this.header;e&&(e.scrollTarget=this.has ScrollingRegion?this.$.contentContainer:this.ownerDocument.documentElement)}},_r esizeHandler:function(){this.resetLayout()}})</script> </dom-module> <dom-module id="app-scrollpos-control" assetpath="/res/imp/bower_components/app-layout/app- scrollpos-control/"> <script>Polymer({is:"app-scrollpos-control",behaviors:[Poly mer.IronScrollTargetBehavior],properties:{selected:{type:String,observer:"_selec tedChanged"},reset:{type:Boolean,value:!1}},observers:["_updateScrollPos(selecte d, reset)"],created:function(){this._scrollposMap={}},_selectedChanged:function( e,s){null!=s&&(this._scrollposMap[s]={x:this._scrollLeft,y:this._scrollTop})},_u pdateScrollPos:function(e,s){this.debounce("_updateScrollPos",function(){var e=t his._scrollposMap[this.selected];null==e||this.reset?this.scroll(0,0):this.scrol l(e.x,e.y)})}})</script> </dom-module> <dom-module id="app-toolbar" assetpath="/ res/imp/bower_components/app-layout/app-toolbar/"> <template> <style>:host{@appl y(--layout-horizontal);@apply(--layout-center);position:relative;height:64px;pad ding:0 16px;pointer-events:none;font-size:var(--app-toolbar-font-size,20px)}::co ntent>*{pointer-events:auto}::content>paper-icon-button{font-size:0}::content>[c ondensed-title],::content>[main-title]{pointer-events:none;@apply(--layout-flex) }::content>[bottom-item]{position:absolute;right:0;bottom:0;left:0}::content>[to p-item]{position:absolute;top:0;right:0;left:0}::content>[spacer]{margin-left:64 px}</style> <content></content> </template> <script>Polymer({is:"app-toolbar"})< /script> </dom-module> <dom-module id="app-box" assetpath="/res/imp/bower_compon ents/app-layout/app-box/"> <template> <style>:host{position:relative;display:blo ck}#background{@apply(--layout-fit);overflow:hidden;height:100%}#backgroundFront Layer{min-height:100%;pointer-events:none;background-size:cover;@apply(--app-box -background-front-layer)}#contentContainer{position:relative;width:100%;height:1 00%}:host([disabled]),:host([disabled]) #backgroundFrontLayer{transition:none!im portant}</style> <div id="background"> <div id="backgroundFrontLayer"> <content select="[background]"></content> </div> </div> <div id="contentContainer"> <cont ent id="content"></content> </div> </template> <script>Polymer({is:"app-box",beh aviors:[Polymer.AppScrollEffectsBehavior,Polymer.IronResizableBehavior],listener s:{"iron-resize":"_resizeHandler"},_progress:0,attached:function(){this.resetLay out()},resetLayout:function(){this.debounce("_resetLayout",function(){if(0!==thi s.offsetWidth||0!==this.offsetHeight){var e=this._clampedScrollTop,t=this.disabl ed;this.disabled=!0,this._elementTop=this._getElementTop(),this._elementHeight=t his.offsetHeight,this._cachedScrollTargetHeight=this._scrollTargetHeight,this._s etUpEffect(),this._updateScrollState(e),this.disabled=t}},1)},_getElementTop:fun ction(){for(var e=this,t=0;e&&e!==this.scrollTarget;)t+=e.offsetTop,e=e.offsetPa rent;return t},_updateScrollState:function(e){if(this.isOnScreen()){var t=this._ elementTop-e;this._progress=1-(t+this._elementHeight)/this._cachedScrollTargetHe ight,this._runEffects(this._progress,e)}},isOnScreen:function(){return this._ele mentTop<this._scrollTop+this._cachedScrollTargetHeight&&this._elementTop+this._e lementHeight>this._scrollTop},_resizeHandler:function(){this.resetLayout()},_get DOMRef:function(e){return"background"===e?this.$.background:"backgroundFrontLaye r"===e?this.$.backgroundFrontLayer:void 0},getScrollState:function(){return{prog ress:this._progress}}})</script> </dom-module> <dom-module id="iron-flex" assetp ath="/res/imp/bower_components/iron-flex-layout/"> <template> <style>.layout.hor izontal,.layout.vertical{display:-ms-flexbox;display:-webkit-flex;display:flex}. layout.inline{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inl ine-flex}.layout.horizontal{-ms-flex-direction:row;-webkit-flex-direction:row;fl ex-direction:row}.layout.vertical{-ms-flex-direction:column;-webkit-flex-directi on:column;flex-direction:column}.layout.wrap{-ms-flex-wrap:wrap;-webkit-flex-wra p:wrap;flex-wrap:wrap}.layout.center,.layout.center-center{-ms-flex-align:center ;-webkit-align-items:center;align-items:center}.layout.center-center,.layout.cen ter-justified{-ms-flex-pack:center;-webkit-justify-content:center;justify-conten t:center}.flex{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;fle x-basis:0px}.flex-auto{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto}.fl ex-none{-ms-flex:none;-webkit-flex:none;flex:none}</style> </template> </dom-mod ule> <dom-module id="iron-flex-reverse" assetpath="/res/imp/bower_components/iro n-flex-layout/"> <template> <style>.layout.horizontal-reverse,.layout.vertical-r everse{display:-ms-flexbox;display:-webkit-flex;display:flex}.layout.horizontal- reverse{-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-d irection:row-reverse}.layout.vertical-reverse{-ms-flex-direction:column-reverse; -webkit-flex-direction:column-reverse;flex-direction:column-reverse}.layout.wrap -reverse{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wra p-reverse}</style> </template> </dom-module> <dom-module id="iron-flex-alignment " assetpath="/res/imp/bower_components/iron-flex-layout/"> <template> <style>.la yout.start{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex- start}.layout.center,.layout.center-center{-ms-flex-align:center;-webkit-align-i tems:center;align-items:center}.layout.end{-ms-flex-align:end;-webkit-align-item s:flex-end;align-items:flex-end}.layout.baseline{-ms-flex-align:baseline;-webkit -align-items:baseline;align-items:baseline}.layout.start-justified{-ms-flex-pack :start;-webkit-justify-content:flex-start;justify-content:flex-start}.layout.cen ter-center,.layout.center-justified{-ms-flex-pack:center;-webkit-justify-content :center;justify-content:center}.layout.end-justified{-ms-flex-pack:end;-webkit-j ustify-content:flex-end;justify-content:flex-end}.layout.around-justified{-ms-fl ex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-ar ound}.layout.justified{-ms-flex-pack:justify;-webkit-justify-content:space-betwe en;justify-content:space-between}.self-start{-ms-align-self:flex-start;-webkit-a lign-self:flex-start;align-self:flex-start}.self-center{-ms-align-self:center;-w ebkit-align-self:center;align-self:center}.self-end{-ms-align-self:flex-end;-web kit-align-self:flex-end;align-self:flex-end}.self-stretch{-ms-align-self:stretch ;-webkit-align-self:stretch;align-self:stretch}.self-baseline{-ms-align-self:bas eline;-webkit-align-self:baseline;align-self:baseline}; .layout.start-aligned{-m s-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-s tart;align-content:flex-start}.layout.end-aligned{-ms-flex-line-pack:end;-ms-ali gn-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end}.layou t.center-aligned{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-alig n-content:center;align-content:center}.layout.between-aligned{-ms-flex-line-pack :justify;-ms-align-content:space-between;-webkit-align-content:space-between;ali gn-content:space-between}.layout.around-aligned{-ms-flex-line-pack:distribute;-m s-align-content:space-around;-webkit-align-content:space-around;align-content:sp ace-around}</style> </template> </dom-module> <dom-module id="iron-flex-factors" assetpath="/res/imp/bower_components/iron-flex-layout/"> <template> <style>.fle x,.flex-1{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-bas is:0px}.flex-2{-ms-flex:2;-webkit-flex:2;flex:2}.flex-3{-ms-flex:3;-webkit-flex: 3;flex:3}.flex-4{-ms-flex:4;-webkit-flex:4;flex:4}.flex-5{-ms-flex:5;-webkit-fle x:5;flex:5}.flex-6{-ms-flex:6;-webkit-flex:6;flex:6}.flex-7{-ms-flex:7;-webkit-f lex:7;flex:7}.flex-8{-ms-flex:8;-webkit-flex:8;flex:8}.flex-9{-ms-flex:9;-webkit -flex:9;flex:9}.flex-10{-ms-flex:10;-webkit-flex:10;flex:10}.flex-11{-ms-flex:11 ;-webkit-flex:11;flex:11}.flex-12{-ms-flex:12;-webkit-flex:12;flex:12}</style> < /template> </dom-module> <dom-module id="iron-positioning" assetpath="/res/imp/b ower_components/iron-flex-layout/"> <template> <style>.block{display:block}[hidd en]{display:none!important}.invisible{visibility:hidden!important}.relative{posi tion:relative}.fit{position:absolute;top:0;right:0;bottom:0;left:0}body.fullblee d{margin:0;height:100vh}.scroll{-webkit-overflow-scrolling:touch;overflow:auto}. fixed-bottom,.fixed-left,.fixed-right,.fixed-top{position:fixed}.fixed-top{top:0 ;left:0;right:0}.fixed-right{top:0;right:0;bottom:0}.fixed-bottom{right:0;bottom :0;left:0}.fixed-left{top:0;bottom:0;left:0}</style> </template> </dom-module> < script>!function(){var e={},t={},i=null;Polymer.IronMeta=Polymer({is:"iron-meta" ,properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{typ e:String,observer:"_keyChanged"},value:{type:Object,notify:!0,observer:"_valueCh anged"},self:{type:Boolean,observer:"_selfChanged"},list:{type:Array,notify:!0}} ,hostAttributes:{hidden:!0},factoryImpl:function(e){if(e)for(var t in e)switch(t ){case"type":case"key":case"value":this[t]=e[t]}},created:function(){this._metaD atas=e,this._metaArrays=t},_keyChanged:function(e,t){this._resetRegistration(t)} ,_valueChanged:function(e){this._resetRegistration(this.key)},_selfChanged:funct ion(e){e&&(this.value=this)},_typeChanged:function(i){this._unregisterKey(this.k ey),e[i]||(e[i]={}),this._metaData=e[i],t[i]||(t[i]=[]),this.list=t[i],this._reg isterKeyValue(this.key,this.value)},byKey:function(e){return this._metaData&&thi s._metaData[e]},_resetRegistration:function(e){this._unregisterKey(e),this._regi sterKeyValue(this.key,this.value)},_unregisterKey:function(e){this._unregister(e ,this._metaData,this.list)},_registerKeyValue:function(e,t){this._register(e,t,t his._metaData,this.list)},_register:function(e,t,i,a){e&&i&&void 0!==t&&(i[e]=t, a.push(t))},_unregister:function(e,t,i){if(e&&t&&e in t){var a=t[e];delete t[e], this.arrayDelete(i,a)}}}),Polymer.IronMeta.getIronMeta=function(){return null=== i&&(i=new Polymer.IronMeta),i},Polymer.IronMetaQuery=Polymer({is:"iron-meta-quer y",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{t ype:String,observer:"_keyChanged"},value:{type:Object,notify:!0,readOnly:!0},lis t:{type:Array,notify:!0}},factoryImpl:function(e){if(e)for(var t in e)switch(t){ case"type":case"key":this[t]=e[t]}},created:function(){this._metaDatas=e,this._m etaArrays=t},_keyChanged:function(e){this._setValue(this._metaData&&this._metaDa ta[e])},_typeChanged:function(i){this._metaData=e[i],this.list=t[i],this.key&&th is._keyChanged(this.key)},byKey:function(e){return this._metaData&&this._metaDat a[e]}})}()</script> <dom-module id="iron-icon" assetpath="/res/imp/bower_compone nts/iron-icon/"> <template> <style>:host{@apply(--layout-inline);@apply(--layout -center-center);position:relative;vertical-align:middle;fill:var(--iron-icon-fil l-color,currentcolor);stroke:var(--iron-icon-stroke-color,none);width:var(--iron -icon-width,24px);height:var(--iron-icon-height,24px);@apply(--iron-icon)}</styl e> </template> <script>Polymer({is:"iron-icon",properties:{icon:{type:String},th eme:{type:String},src:{type:String},_meta:{value:Polymer.Base.create("iron-meta" ,{type:"iconset"})}},observers:["_updateIcon(_meta, isAttached)","_updateIcon(th eme, isAttached)","_srcChanged(src, isAttached)","_iconChanged(icon, isAttached) "],_DEFAULT_ICONSET:"icons",_iconChanged:function(t){var i=(t||"").split(":");th is._iconName=i.pop(),this._iconsetName=i.pop()||this._DEFAULT_ICONSET,this._upda teIcon()},_srcChanged:function(t){this._updateIcon()},_usesIconset:function(){re turn this.icon||!this.src},_updateIcon:function(){this._usesIconset()?(this._img &&this._img.parentNode&&Polymer.dom(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._i conset.applyIcon(this,this._iconName,this.theme),this.unlisten(window,"iron-icon set-added","_updateIcon")):this.listen(window,"iron-iconset-added","_updateIcon" ))):(this._iconset&&this._iconset.removeIcon(this),this._img||(this._img=documen t.createElement("img"),this._img.style.width="100%",this._img.style.height="100% ",this._img.draggable=!1),this._img.src=this.src,Polymer.dom(this.root).appendCh ild(this._img))}})</script> </dom-module> <script>Polymer({is:"iron-iconset-svg" ,properties:{name:{type:String,observer:"_nameChanged"},size:{type:Number,value: 24},rtlMirroring:{type:Boolean,value:!1}},_targetIsRTL:function(e){return e&&e.n odeType!==Node.ELEMENT_NODE&&(e=e.host),e&&"rtl"===window.getComputedStyle(e).di rection},attached:function(){this.style.display="none"},getIconNames:function(){ return this._icons=this._createIconMap(),Object.keys(this._icons).map(function(e ){return this.name+":"+e},this)},applyIcon:function(e,t){e=e.root||e,this.remove Icon(e);var n=this._cloneIcon(t,this.rtlMirroring&&this._targetIsRTL(e));if(n){v ar o=Polymer.dom(e);return o.insertBefore(n,o.childNodes[0]),e._svgIcon=n}return null},removeIcon:function(e){e=e.root||e,e._svgIcon&&(Polymer.dom(e).removeChil d(e._svgIcon),e._svgIcon=null)},_nameChanged:function(){new Polymer.IronMeta({ty pe:"iconset",key:this.name,value:this}),this.async(function(){this.fire("iron-ic onset-added",this,{node:window})})},_createIconMap:function(){var e=Object.creat e(null);return Polymer.dom(this).querySelectorAll("[id]").forEach(function(t){e[ t.id]=t}),e},_cloneIcon:function(e,t){return this._icons=this._icons||this._crea teIconMap(),this._prepareSvgClone(this._icons[e],this.size,t)},_prepareSvgClone: function(e,t,n){if(e){var o=e.cloneNode(!0),r=document.createElementNS("http://w ww.w3.org/2000/svg","svg"),i=o.getAttribute("viewBox")||"0 0 "+t+" "+t,s="pointe r-events: none; display: block; width: 100%; height: 100%;";return n&&o.hasAttri bute("mirror-in-rtl")&&(s+="-webkit-transform:scale(-1,1);transform:scale(-1,1); "),r.setAttribute("viewBox",i),r.setAttribute("preserveAspectRatio","xMidYMid me et"),r.style.cssText=s,r.appendChild(o).removeAttribute("id"),r}return null}})</ script> <iron-iconset-svg name="icons" size="24"> <svg><defs> <g id="3d-rotation "><path d="M7.52 21.48C4.25 19.94 1.91 16.76 1.55 13H.05C.56 19.16 5.71 24 12 24 l.66-.03-3.81-3.81-1.33 1.32zm.89-6.52c-.19 0-.37-.03-.52-.08-.16-.06-.29-.13-.4 -.24-.11-.1-.2-.22-.26-.37-.06-.14-.09-.3-.09-.47h-1.3c0 .36.07.68.21.95.14.27.3 3.5.56.69.24.18.51.32.82.41.3.1.62.15.96.15.37 0 .72-.05 1.03-.15.32-.1.6-.25.83 -.44s.42-.43.55-.72c.13-.29.2-.61.2-.97 0-.19-.02-.38-.07-.56-.05-.18-.12-.35-.2 3-.51-.1-.16-.24-.3-.4-.43-.17-.13-.37-.23-.61-.31.2-.09.37-.2.52-.33.15-.13.27- .27.37-.42.1-.15.17-.3.22-.46.05-.16.07-.32.07-.48 0-.36-.06-.68-.18-.96-.12-.28 -.29-.51-.51-.69-.2-.19-.47-.33-.77-.43C9.1 8.05 8.76 8 8.39 8c-.36 0-.69.05-1 . 16-.3.11-.57.26-.79.45-.21.19-.38.41-.51.67-.12.26-.18.54-.18.85h1.3c0-.17.03-.3 2.09-.45s.14-.25.25-.34c.11-.09.23-.17.38-.22.15-.05.3-.08.48-.08.4 0 .7.1.89.31 .19.2.29.49.29.86 0 .18-.03.34-.08.49-.05.15-.14.27-.25.37-.11.1-.25.18-.41.24-. 16.06-.36.09-.58.09H7.5v1.03h.77c.22 0 .42.02.6.07s.33.13.45.23c.12.11.22.24.29. 4.07.16.1.35.1.57 0 .41-.12.72-.35.93-.23.23-.55.33-.95.33zm8.55-5.92c-.32-.33-. 7-.59-1.14-.77-.43-.18-.92-.27-1.46-.27H12v8h2.3c.55 0 1.06-.09 1.51-.27.45-.18. 84-.43 1.16-.76.32-.33.57-.73.74-1.19.17-.47.26-.99.26-1.57v-.4c0-.58-.09-1.1-.2 6-1.57-.18-.47-.43-.87-.75-1.2zm-.39 3.16c0 .42-.05.79-.14 1.13-.1.33-.24.62-.43 .85-.19.23-.43.41-.71.53-.29.12-.62.18-.99.18h-.91V9.12h.97c.72 0 1.27.23 1.64.6 9.38.46.57 1.12.57 1.99v.4zM12 0l-.66.03 3.81 3.81 1.33-1.33c3.27 1.55 5.61 4.72 5.96 8.48h1.5C23.44 4.84 18.29 0 12 0z"></path></g> <g id="accessibility"><path d="M12 2c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm9 7h-6v13h-2v-6h-2v6H9V9H3 V7h18v2z"></path></g> <g id="accessible"><circle cx="12" cy="4" r="2"></circle>< path d="M19 13v-2c-1.54.02-3.09-.75-4.07-1.83l-1.29-1.43c-.17-.19-.38-.34-.61-.4 5-.01 0-.01-.01-.02-.01H13c-.35-.2-.75-.3-1.19-.26C10.76 7.11 10 8.04 10 9.09V15 c0 1.1.9 2 2 2h5v5h2v-5.5c0-1.1-.9-2-2-2h-3v-3.45c1.29 1.07 3.25 1.94 5 1.95zm-6 .17 5c-.41 1.16-1.52 2-2.83 2-1.66 0-3-1.34-3-3 0-1.31.84-2.41 2-2.83V12.1c-2.28 .46-4 2.48-4 4.9 0 2.76 2.24 5 5 5 2.42 0 4.44-1.72 4.9-4h-2.07z"></path></g> <g id="account-balance"><path d="M4 10v7h3v-7H4zm6 0v7h3v-7h-3zM2 22h19v-3H2v3zm14 -12v7h3v-7h-3zm-4.5-9L2 6v2h19V6l-9.5-5z"></path></g> <g id="account-balance-wal let"><path d="M21 18v1c0 1.1-.9 2-2 2H5c-1.11 0-2-.9-2-2V5c0-1.1.89-2 2-2h14c1.1 0 2 .9 2 2v1h-9c-1.11 0-2 .9-2 2v8c0 1.1.89 2 2 2h9zm-9-2h10V8H12v8zm4-2.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"></path></g> <g id="account-box"><path d="M3 5v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9 -2-2-2H5c-1.11 0-2 .9-2 2zm12 4c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3zm-9 8c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1H6v-1z"></path></g> <g id="account-circle "><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6 -3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z"> </path></g> <g id="add"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path></g > <g id="add-alert"><path d="M10.01 21.01c0 1.1.89 1.99 1.99 1.99s1.99-.89 1.99- 1.99h-3.98zm8.87-4.19V11c0-3.25-2.25-5.97-5.29-6.69v-.72C13.59 2.71 12.88 2 12 2 s-1.59.71-1.59 1.59v.72C7.37 5.03 5.12 7.75 5.12 11v5.82L3 18.94V20h18v-1.06l-2. 12-2.12zM16 13.01h-3v3h-2v-3H8V11h3V8h2v3h3v2.01z"></path></g> <g id="add-box">< path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9- 2-2-2zm-2 10h-4v4h-2v-4H7v-2h4V7h2v4h4v2z"></path></g> <g id="add-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11h-4v4h -2v-4H7v-2h4V7h2v4h4v2z"></path></g> <g id="add-circle-outline"><path d="M13 7h- 2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S 17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"></path> </g> <g id="add-shopping-cart"><path d="M11 9h2V6h3V4h-3V1h-2v3H8v2h3v3zm-4 9c-1 .1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zm10 0c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2zm-9.83-3.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1 .03l3.86-7.01L19.42 4h-.01l-1.1 2-2.76 5H8.53l-.13-.27L6.16 6l-.95-2-.94-2H1v2h2 l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.13 0-.25-.1 1-.25-.25z"></path></g> <g id="alarm"><path d="M22 5.72l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2. 85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03- 9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"></path></g> <g id="alarm-add"><path d="M7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM22 5.72 l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7zm1-11h-2v3H8v2h3v3h2v-3h3v-2h-3V9z"></path></g> <g id="alarm-off"><path d="M12 6c3.87 0 7 3.13 7 7 0 .84-.16 1.65-.43 2.4l1.52 1.52c.58-1.19.91-2.51.91-3.92 0 -4.97-4.03-9-9-9-1.41 0-2.73.33-3.92.91L9.6 6.43C10.35 6.16 11.16 6 12 6zm10-.28 l-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM2.92 2.29L1.65 3.57 2.98 4.9l-1.11.93 1.4 2 1.42 1.11-.94.8.8C3.83 8.69 3 10.75 3 13c0 4.97 4.02 9 9 9 2.25 0 4.31-.83 5.8 9-2.2l2.2 2.2 1.27-1.27L3.89 3.27l-.97-.98zm13.55 16.1C15.26 19.39 13.7 20 12 20 c-3.87 0-7-3.13-7-7 0-1.7.61-3.26 1.61-4.47l9.86 9.86zM8.02 3.28L6.6 1.86l-.86.7 1 1.42 1.42.86-.71z"></path></g> <g id="alarm-on"><path d="M22 5.72l-4.6-3.86-1. 29 1.53 4.6 3.86L22 5.72zM7.88 3.39L6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12 4c-4 .97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7 -7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7zm-1.46-5.47L8.41 12.4l-1.06 1.06 3.18 3.18 6 -6-1.06-1.06-4.93 4.95z"></path></g> <g id="all-out"><path d="M16.21 4.16l4 4v-4 zm4 12l-4 4h4zm-12 4l-4-4v4zm-4-12l4-4h-4zm12.95-.95c-2.73-2.73-7.17-2.73-9.9 0s -2.73 7.17 0 9.9 7.17 2.73 9.9 0 2.73-7.16 0-9.9zm-1.1 8.8c-2.13 2.13-5.57 2.13- 7.7 0s-2.13-5.57 0-7.7 5.57-2.13 7.7 0 2.13 5.57 0 7.7z"></path></g> <g id="andr oid"><path d="M6 18c0 .55.45 1 1 1h1v3.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5V19 h2v3.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5V19h1c.55 0 1-.45 1-1V8H6v10zM3.5 8C2 .67 8 2 8.67 2 9.5v7c0 .83.67 1.5 1.5 1.5S5 17.33 5 16.5v-7C5 8.67 4.33 8 3.5 8z m17 0c-.83 0-1.5.67-1.5 1.5v7c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5v-7c0-.83-.67- 1.5-1.5-1.5zm-4.97-5.84l1.3-1.3c.2-.2.2-.51 0-.71-.2-.2-.51-.2-.71 0l-1.48 1.48C 13.85 1.23 12.95 1 12 1c-.96 0-1.86.23-2.66.63L7.85.15c-.2-.2-.51-.2-.71 0-.2.2- .2.51 0 .71l1.31 1.31C6.97 3.26 6 5.01 6 7h12c0-1.99-.97-3.75-2.47-4.84zM10 5H9V 4h1v1zm5 0h-1V4h1v1z"></path></g> <g id="announcement"><path d="M20 2H4c-1.1 0-1 .99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 9h-2V5h2v6zm0 4h-2v -2h2v2z"></path></g> <g id="apps"><path d="M4 8h4V4H4v4zm6 12h4v-4h-4v4zm-6 0h4v -4H4v4zm0-6h4v-4H4v4zm6 0h4v-4h-4v4zm6-10v4h4V4h-4zm-6 4h4V4h-4v4zm6 6h4v-4h-4v4 zm0 6h4v-4h-4v4z"></path></g> <g id="archive"><path d="M20.54 5.23l-1.39-1.68C18 .88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1.16.55L3.46 5.23C3.17 5.57 3 6.02 3 6.5V1 9c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.48-.17-.93-.46-1.27zM12 17.5L6.5 12H10v -2h4v2h3.5L12 17.5zM5.12 5l.81-1h12l.94 1H5.12z"></path></g> <g id="arrow-back"> <path d="M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z"></path></ g> <g id="arrow-downward"><path d="M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5 .59L4 12l8 8 8-8z"></path></g> <g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"> </path></g> <g id="arrow-drop-down-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.4 8 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 12l-4-4h8l-4 4z"></path></g> <g id="arr ow-drop-up"><path d="M7 14l5-5 5 5z"></path></g> <g id="arrow-forward"><path d=" M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"></path></g> <g id="ar row-upward"><path d="M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z "></path></g> <g id="aspect-ratio"><path d="M19 12h-2v3h-3v2h5v-5zM7 9h3V7H5v5h2 V9zm14-6H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm 0 16.01H3V4.99h18v14.02z"></path></g> <g id="assessment"><path d="M19 3H5c-1.1 0 -2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z"></path></g> <g id="assignment"><path d="M19 3h-4.18 C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h1 4c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45 -1 1-1zm2 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z"></path></g> <g id="assignme nt-ind"><path d="M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0 -2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 4c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm6 12H6v-1.4c0-2 4-3.1 6-3.1s6 1.1 6 3.1V19z"></path></g> <g id="ass ignment-late"><path d="M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c -1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-6 15h-2v-2 h2v2zm0-4h-2V8h2v6zm-1-9c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"></path ></g> <g id="assignment-return"><path d="M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9- 2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm4 12h-4v3l-5-5 5-5v3 h4v4z"></path></g> <g id="assignment-returned"><path d="M19 3h-4.18C14.4 1.84 13 .3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 15l -5-5h3V9h4v4h3l-5 5z"></path></g> <g id="assignment-turned-in"><path d="M19 3h-4 .18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm-2 14l-4-4 1.41-1.41L10 14.17l6.59-6.59L18 9l-8 8z"></path></g> <g id ="attachment"><path d="M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4- 4 4H9.5C8.12 15 7 13.88 7 12.5S8.12 10 9.5 10H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z"></path></g> <g id="autorenew"><path d="M12 6v3l4-4-4-4v3c-4.42 0 -8 3.58-8 8 0 1.57.46 3.03 1.24 4.26L6.7 14.8c-.45-.83-.7-1.79-.7-2.8 0-3.31 2.6 9-6 6-6zm6.76 1.74L17.3 9.2c.44.84.7 1.79.7 2.8 0 3.31-2.69 6-6 6v-3l-4 4 4 4v-3 c4.42 0 8-3.58 8-8 0-1.57-.46-3.03-1.24-4.26z"></path></g> <g id="backspace"><pa th d="M22 3H7c-.69 0-1.23.35-1.59.88L0 12l5.41 8.11c.36.53.9.89 1.59.89h15c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-3 12.59L17.59 17 14 13.41 10.41 17 9 15.59 12.59 12 9 8.41 10.41 7 14 10.59 17.59 7 19 8.41 15.41 12 19 15.59z"></path></g> <g id=" backup"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4 .65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z"></path></g> <g id="block"><path d="M12 2C 6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55- .63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z"></path></g> <g id="book"><path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2- 2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"></path></g> <g id="bookmark"><path d="M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2z"></path></g> <g id="bookmark-border"><path d="M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1- .9-2-2-2zm0 15l-5-2.18L7 18V5h10v13z"></path></g> <g id="bug-report"><path d="M2 0 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12. 49 5 12 5c-.49 0-.96.06-1.41.17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2 .97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.3 4-.04-.67-.09-1H20V8zm-6 8h-4v-2h4v2zm0-4h-4v-2h4v2z"></path></g> <g id="build"> <path d="M22.7 19l-9.1-9.1c.9-2.3.4-5-1.5-6.9-2-2-5-2.4-7.4-1.3L9 6 6 9 1.6 4.7C .4 7.1.9 10.1 2.9 12.1c1.9 1.9 4.6 2.4 6.9 1.5l9.1 9.1c.4.4 1 .4 1.4 0l2.3-2.3c. 5-.4.5-1.1.1-1.4z"></path></g> <g id="cached"><path d="M19 8l-4 4h3c0 3.31-2.69 6-6 6-1.01 0-1.97-.25-2.8-.7l-1.46 1.46C8.97 19.54 10.43 20 12 20c4.42 0 8-3.58 8-8h3l-4-4zM6 12c0-3.31 2.69-6 6-6 1.01 0 1.97.25 2.8.7l1.46-1.46C15.03 4.46 13. 57 4 12 4c-4.42 0-8 3.58-8 8H1l4 4 4-4H6z"></path></g> <g id="camera-enhance"><p ath d="M9 3L7.17 5H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1- .9-2-2-2h-3.17L15 3H9zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z m0-1l1.25-2.75L16 13l-2.75-1.25L12 9l-1.25 2.75L8 13l2.75 1.25z"></path></g> <g id="cancel"><path d="M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.5 9 15.59 7 17 8.41 13.41 12 17 15.59z"></path></g> <g id="card-giftcard"><path d= "M20 6h-2.18c.11-.31.18-.65.18-1 0-1.66-1.34-3-3-3-1.05 0-1.96.54-2.5 1.35l-.5.6 7-.5-.68C10.96 2.54 10.05 2 9 2 7.34 2 6 3.34 6 5c0 .35.07.69.18 1H4c-1.11 0-1.9 9.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-5-2c.5 5 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM9 4c.55 0 1 .45 1 1s-.45 1-1 1-1-. 45-1-1 .45-1 1-1zm11 15H4v-2h16v2zm0-5H4V8h5.08L7 10.83 8.62 12 11 8.76l1-1.36 1 1.36L15.38 12 17 10.83 14.92 8H20v6z"></path></g> <g id="card-membership"><path d="M20 2H4c-1.11 0-2 .89-2 2v11c0 1.11.89 2 2 2h4v5l4-2 4 2v-5h4c1.11 0 2-.89 2 -2V4c0-1.11-.89-2-2-2zm0 13H4v-2h16v2zm0-5H4V4h16v6z"></path></g> <g id="card-tr avel"><path d="M20 6h-3V4c0-1.11-.89-2-2-2H9c-1.11 0-2 .89-2 2v2H4c-1.11 0-2 .89 -2 2v11c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zM9 4h6v2H9V4zm11 15H4v-2h16v2zm0-5H4V8h3v2h2V8h6v2h2V8h3v6z"></path></g> <g id="change-history">< path d="M12 7.77L18.39 18H5.61L12 7.77M12 4L2 20h20L12 4z"></path></g> <g id="ch eck"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"></path></g> <g id="check-box"><path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-. 9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"></p ath></g> <g id="check-box-outline-blank"><path d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"></path></g> <g id= "check-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17. 52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"></path></g> <g id ="chevron-left"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"></path>< /g> <g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6 z"></path></g> <g id="chrome-reader-mode"><path d="M13 12h7v1.5h-7zm0-2.5h7V11h- 7zm0 5h7V16h-7zM21 4H3c-1.1 0-2 .9-2 2v13c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V6c0-1. 1-.9-2-2-2zm0 15h-9V6h9v13z"></path></g> <g id="class"><path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"></path></g> <g id="clear"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.4 1 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></g> <g id="close"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.4 1 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></g> <g id="cloud"><path d="M1 9.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96z"></path>< /g> <g id="cloud-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm4.5 14H8c-1.66 0-3-1.34-3-3s1.34-3 3-3l.14.01C8.58 8.28 10. 13 7 12 7c2.21 0 4 1.79 4 4h.5c1.38 0 2.5 1.12 2.5 2.5S17.88 16 16.5 16z"></path ></g> <g id="cloud-done"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6. 6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0 -2.64-2.05-4.78-4.65-4.96zM10 17l-3.5-3.5 1.41-1.41L10 14.17 15.18 9l1.41 1.41L1 0 17z"></path></g> <g id="cloud-download"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2. 76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM17 13l-5 5-5-5h3V9h4v4h3z"></path></ g> <g id="cloud-off"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4c-1.48 0-2.85. 43-4.01 1.17l1.46 1.46C10.21 6.23 11.08 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.6 6 0 3 1.34 3 3 0 1.13-.64 2.11-1.56 2.62l1.45 1.45C23.16 18.16 24 16.68 24 15c0- 2.64-2.05-4.78-4.65-4.96zM3 5.27l2.75 2.74C2.56 8.15 0 10.77 0 14c0 3.31 2.69 6 6 6h11.73l2 2L21 20.73 4.27 4 3 5.27zM7.73 10l8 8H6c-2.21 0-4-1.79-4-4s1.79-4 4- 4h1.73z"></path></g> <g id="cloud-queue"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.7 6 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM19 18H6c-2.21 0-4-1.79-4-4s1.79-4 4-4 h.71C7.37 7.69 9.48 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3s-1.34 3-3 3z"></path></g> <g id="cloud-upload"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2. 76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z"></path> </g> <g id="code"><path d="M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"></path></g> <g id="compare-arrows"><path d="M9.01 14H2v2h7.01v3L13 15l-3.99-4v3zm5.98-1v-3H22V8h-7.01V5L11 9l3.99 4z"></p ath></g> <g id="content-copy"><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H 8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h 11v14z"></path></g> <g id="content-cut"><path d="M9.64 7.64c.23-.5.36-1.05.36-1. 64 0-2.21-1.79-4-4-4S2 3.79 2 6s1.79 4 4 4c.59 0 1.14-.13 1.64-.36L10 12l-2.36 2 .36C7.14 14.13 6.59 14 6 14c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4c0-.59-.13-1 .14-.36-1.64L12 14l7 7h3v-1L9.64 7.64zM6 8c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-. 9 2-2 2zm0 12c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm6-7.5c-.28 0-.5-.22- .5-.5s.22-.5.5-.5.5.22.5.5-.22.5-.5.5zM19 3l-6 6 2 2 7-7V3z"></path></g> <g id=" content-paste"><path d="M19 2h-4.18C14.4.84 13.3 0 12 0c-1.3 0-2.4.84-2.82 2H5c- 1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm7 18H5V4h2v3h10V4h2v16z"></path></g> <g id="copyright"><path d="M10.08 10.86c.05-.33.16-.62.3-.87s.34-.46.59-.62c.24-.1 5.54-.22.91-.23.23.01.44.05.63.13.2.09.38.21.52.36s.25.33.34.53.13.42.14.64h1.79 c-.02-.47-.11-.9-.28-1.29s-.4-.73-.7-1.01-.66-.5-1.08-.66-.88-.23-1.39-.23c-.65 0-1.22.11-1.7.34s-.88.53-1.2.92-.56.84-.71 1.36S8 11.29 8 11.87v.27c0 .58.08 1.1 2.23 1.64s.39.97.71 1.35.72.69 1.2.91 1.05.34 1.7.34c.47 0 .91-.08 1.32-.23s.77- .36 1.08-.63.56-.58.74-.94.29-.74.3-1.15h-1.79c-.01.21-.06.4-.15.58s-.21.33-.36. 46-.32.23-.52.3c-.19.07-.39.09-.6.1-.36-.01-.66-.08-.89-.23-.25-.16-.45-.37-.59- .62s-.25-.55-.3-.88-.08-.67-.08-1v-.27c0-.35.03-.68.08-1.01zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8- 8 8 3.59 8 8-3.59 8-8 8z"></path></g> <g id="create"><path d="M3 17.25V21h3.75L1 7.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39- .39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"></path></g> <g id="create-n ew-folder"><path d="M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h 16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-1 8h-3v3h-2v-3h-3v-2h3V9h2v3h3v2z"></pa th></g> <g id="credit-card"><path d="M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11. 89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z" ></path></g> <g id="dashboard"><path d="M3 13h8V3H3v10zm0 8h8v-6H3v6zm10 0h8V11h -8v10zm0-18v6h8V3h-8z"></path></g> <g id="date-range"><path d="M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c 0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z"></path></g> <g id="delete"><path d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l- 1-1h-5l-1 1H5v2h14V4z"></path></g> <g id="description"><path d="M14 2H6c-1.1 0-1 .99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4 H8v-2h8v2zm-3-5V3.5L18.5 9H13z"></path></g> <g id="dns"><path d="M20 13H4c-.55 0 -1 .45-1 1v6c0 .55.45 1 1 1h16c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1zM7 19c-1.1 0-2 -.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM20 3H4c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h16c .55 0 1-.45 1-1V4c0-.55-.45-1-1-1zM7 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"></path></g> <g id="done"><path d="M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4 L9 16.2z"></path></g> <g id="done-all"><path d="M18 7l-1.41-1.41-6.34 6.34 1.41 1.41L18 7zm4.24-1.41L11.66 16.17 7.48 12l-1.41 1.41L11.66 19l12-12-1.42-1.41zM.4 1 13.41L6 19l1.41-1.41L1.83 12 .41 13.41z"></path></g> <g id="donut-large"><path d="M11 5.08V2c-5 .5-9 4.81-9 10s4 9.5 9 10v-3.08c-3-.48-6-3.4-6-6.92s3-6.44 6-6 .92zM18.97 11H22c-.47-5-4-8.53-9-9v3.08C16 5.51 18.54 8 18.97 11zM13 18.92V22c5- .47 8.53-4 9-9h-3.03c-.43 3-2.97 5.49-5.97 5.92z"></path></g> <g id="donut-small "><path d="M11 9.16V2c-5 .5-9 4.79-9 10s4 9.5 9 10v-7.16c-1-.41-2-1.52-2-2.84s1- 2.43 2-2.84zM14.86 11H22c-.48-4.75-4-8.53-9-9v7.16c1 .3 1.52.98 1.86 1.84zM13 14 .84V22c5-.47 8.52-4.25 9-9h-7.14c-.34.86-.86 1.54-1.86 1.84z"></path></g> <g id= "drafts"><path d="M21.99 8c0-.72-.37-1.35-.94-1.7L12 1 2.95 6.3C2.38 6.65 2 7.28 2 8v10c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2l-.01-10zM12 13L3.74 7.84 12 3l8.26 4.84L 12 13z"></path></g> <g id="eject"><path d="M5 17h14v2H5zm7-12L5.33 15h13.34z"></ path></g> <g id="error"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"></path></g> <g id="error-outl ine"><path d="M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 1 0C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"></path></g> <g id="event"><path d="M17 12h-5v5h5v-5zM16 1 v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1 -.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z"></path></g> <g id="event-seat"><path d="M4 1 8v3h3v-3h10v3h3v-6H4zm15-8h3v3h-3zM2 10h3v3H2zm15 3H7V5c0-1.1.9-2 2-2h6c1.1 0 2 .9 2 2v8z"></path></g> <g id="exit-to-app"><path d="M10.09 15.59L11.5 17l5-5-5-5 -1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v- 4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"></path></g> <g id="exp and-less"><path d="M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"></path></g> < g id="expand-more"><path d="M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"></path ></g> <g id="explore"><path d="M12 10.9c-.61 0-1.1.49-1.1 1.1s.49 1.1 1.1 1.1c.6 1 0 1.1-.49 1.1-1.1s-.49-1.1-1.1-1.1zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4 .48 10-10S17.52 2 12 2zm2.19 12.19L6 18l3.81-8.19L18 6l-3.81 8.19z"></path></g> <g id="extension"><path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 1 0.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.2 1 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.2 1 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z" ></path></g> <g id="face"><path d="M9 11.75c-.69 0-1.25.56-1.25 1.25s.56 1.25 1. 25 1.25 1.25-.56 1.25-1.25-.56-1.25-1.25-1.25zm6 0c-.69 0-1.25.56-1.25 1.25s.56 1.25 1.25 1.25 1.25-.56 1.25-1.25-.56-1.25-1.25-1.25zM12 2C6.48 2 2 6.48 2 12s4. 48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8 0-.29.02-.58.05- .86 2.36-1.05 4.23-2.98 5.21-5.37C11.07 8.33 14.05 10 17.42 10c.78 0 1.53-.09 2. 25-.26.21.71.33 1.47.33 2.26 0 4.41-3.59 8-8 8z"></path></g> <g id="favorite"><p ath d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3 .41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86 -8.55 11.54L12 21.35z"></path></g> <g id="favorite-border"><path d="M16.5 3c-1.7 4 0-3.41.81-4.5 2.09C10.91 3.81 9.24 3 7.5 3 4.42 3 2 5.42 2 8.5c0 3.78 3.4 6.86 8.55 11.54L12 21.35l1.45-1.32C18.6 15.36 22 12.28 22 8.5 22 5.42 19.58 3 16.5 3 zm-4.4 15.55l-.1.1-.1-.1C7.14 14.24 4 11.39 4 8.5 4 6.5 5.5 5 7.5 5c1.54 0 3.04. 99 3.57 2.36h1.87C13.46 5.99 14.96 5 16.5 5c2 0 3.5 1.5 3.5 3.5 0 2.89-3.14 5.74 -7.9 10.05z"></path></g> <g id="feedback"><path d="M20 2H4c-1.1 0-1.99.9-1.99 2L 2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 12h-2v-2h2v2zm0-4h-2V6h2v4z"></p ath></g> <g id="file-download"><path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5 z"></path></g> <g id="file-upload"><path d="M9 16h6v-6h4l-7-7-7 7h4zm-4 2h14v2H5 z"></path></g> <g id="filter-list"><path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h 12v-2H6v2z"></path></g> <g id="find-in-page"><path d="M20 19.59V8l-6-6H6c-1.1 0- 1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c.45 0 .85-.15 1.19-.4l-4.43-4.43c-.8.52- 1.74.83-2.76.83-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5c0 1.02-.31 1.96-.83 2.75 L20 19.59zM9 13c0 1.66 1.34 3 3 3s3-1.34 3-3-1.34-3-3-3-3 1.34-3 3z"></path></g> <g id="find-replace"><path d="M11 6c1.38 0 2.63.56 3.54 1.46L12 10h6V4l-2.05 2. 05C14.68 4.78 12.93 4 11 4c-3.53 0-6.43 2.61-6.92 6H6.1c.46-2.28 2.48-4 4.9-4zm5 .64 9.14c.66-.9 1.12-1.97 1.28-3.14H15.9c-.46 2.28-2.48 4-4.9 4-1.38 0-2.63-.56- 3.54-1.46L10 12H4v6l2.05-2.05C7.32 17.22 9.07 18 11 18c1.55 0 2.98-.51 4.14-1.36 L20 21.49 21.49 20l-4.85-4.86z"></path></g> <g id="fingerprint"><path d="M17.81 4.47c-.08 0-.16-.02-.23-.06C15.66 3.42 14 3 12.01 3c-1.98 0-3.86.47-5.57 1.41-.2 4.13-.54.04-.68-.2-.13-.24-.04-.55.2-.68C7.82 2.52 9.86 2 12.01 2c2.13 0 3.99.47 6.03 1.52.25.13.34.43.21.67-.09.18-.26.28-.44.28zM3.5 9.72c-.1 0-.2-.03-.29-.09 -.23-.16-.28-.47-.12-.7.99-1.4 2.25-2.5 3.75-3.27C9.98 4.04 14 4.03 17.15 5.65c1 .5.77 2.76 1.86 3.75 3.25.16.22.11.54-.12.7-.23.16-.54.11-.7-.12-.9-1.26-2.04-2. 25-3.39-2.94-2.87-1.47-6.54-1.47-9.4.01-1.36.7-2.5 1.7-3.4 2.96-.08.14-.23.21-.3 9.21zm6.25 12.07c-.13 0-.26-.05-.35-.15-.87-.87-1.34-1.43-2.01-2.64-.69-1.23-1.0 5-2.73-1.05-4.34 0-2.97 2.54-5.39 5.66-5.39s5.66 2.42 5.66 5.39c0 .28-.22.5-.5.5 s-.5-.22-.5-.5c0-2.42-2.09-4.39-4.66-4.39-2.57 0-4.66 1.97-4.66 4.39 0 1.44.32 2 .77.93 3.85.64 1.15 1.08 1.64 1.85 2.42.19.2.19.51 0 .71-.11.1-.24.15-.37.15zm7. 17-1.85c-1.19 0-2.24-.3-3.1-.89-1.49-1.01-2.38-2.65-2.38-4.39 0-.28.22-.5.5-.5s. 5.22.5.5c0 1.41.72 2.74 1.94 3.56.71.48 1.54.71 2.54.71.24 0 .64-.03 1.04-.1.27- .05.53.13.58.41.05.27-.13.53-.41.58-.57.11-1.07.12-1.21.12zM14.91 22c-.04 0-.09- .01-.13-.02-1.59-.44-2.63-1.03-3.72-2.1-1.4-1.39-2.17-3.24-2.17-5.22 0-1.62 1.38 -2.94 3.08-2.94 1.7 0 3.08 1.32 3.08 2.94 0 1.07.93 1.94 2.08 1.94s2.08-.87 2.08 -1.94c0-3.77-3.25-6.83-7.25-6.83-2.84 0-5.44 1.58-6.61 4.03-.39.81-.59 1.76-.59 2.8 0 .78.07 2.01.67 3.61.1.26-.03.55-.29.64-.26.1-.55-.04-.64-.29-.49-1.31-.73- 2.61-.73-3.96 0-1.2.23-2.29.68-3.24 1.33-2.79 4.28-4.6 7.51-4.6 4.55 0 8.25 3.51 8.25 7.83 0 1.62-1.38 2.94-3.08 2.94s-3.08-1.32-3.08-2.94c0-1.07-.93-1.94-2.08- 1.94s-2.08.87-2.08 1.94c0 1.71.66 3.31 1.87 4.51.95.94 1.86 1.46 3.27 1.85.27.07 .42.35.35.61-.05.23-.26.38-.47.38z"></path></g> <g id="flag"><path d="M14.4 6L14 4H5v17h2v-7h5.6l.4 2h7V6z"></path></g> <g id="flight-land"><path d="M2.5 19h19v 2h-19zm7.18-5.73l4.35 1.16 5.31 1.42c.8.21 1.62-.26 1.84-1.06.21-.8-.26-1.62-1.0 6-1.84l-5.31-1.42-2.76-9.02L10.12 2v8.28L5.15 8.95l-.93-2.32-1.45-.39v5.17l1.6.4 3 5.31 1.43z"></path></g> <g id="flight-takeoff"><path d="M2.5 19h19v2h-19zm19.5 7-9.36c-.21-.8-1.04-1.28-1.84-1.06L14.92 10l-6.9-6.43-1.93.51 4.14 7.17-4.97 1.3 3-1.97-1.54-1.45.39 1.82 3.16.77 1.33 1.6-.43 5.31-1.42 4.35-1.16L21 11.49c.81-. 23 1.28-1.05 1.07-1.85z"></path></g> <g id="flip-to-back"><path d="M9 7H7v2h2V7z m0 4H7v2h2v-2zm0-8c-1.11 0-2 .9-2 2h2V3zm4 12h-2v2h2v-2zm6-12v2h2c0-1.1-.9-2-2-2 zm-6 0h-2v2h2V3zM9 17v-2H7c0 1.1.89 2 2 2zm10-4h2v-2h-2v2zm0-4h2V7h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zM5 7H3v12c0 1.1.89 2 2 2h12v-2H5V7zm10-2h2V3h-2v2zm0 12h2v-2h-2 v2z"></path></g> <g id="flip-to-front"><path d="M3 13h2v-2H3v2zm0 4h2v-2H3v2zm2 4v-2H3c0 1.1.89 2 2 2zM3 9h2V7H3v2zm12 12h2v-2h-2v2zm4-18H9c-1.11 0-2 .9-2 2v10c 0 1.1.89 2 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12H9V5h10v10zm-8 6h2v-2h-2v 2zm-4 0h2v-2H7v2z"></path></g> <g id="folder"><path d="M10 4H4c-1.1 0-1.99.9-1.9 9 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z"></path></g> <g id="folder-open"><path d="M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z"></path></g> <g id="fol der-shared"><path d="M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c 1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-5 3c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2 zm4 8h-8v-1c0-1.33 2.67-2 4-2s4 .67 4 2v1z"></path></g> <g id="font-download"><p ath d="M9.93 13.5h4.14L12 7.98zM20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-4.05 16.5l-1.14-3H9.17l-1.12 3H5.96l5.11-13h1.86l5. 11 13h-2.09z"></path></g> <g id="forward"><path d="M12 8V4l8 8-8 8v-4H4V8z"></pa th></g> <g id="fullscreen"><path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h -3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"></path></g> <g id="fullscreen-exit"><path d= "M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"> </path></g> <g id="gavel"><path d="M1 21h12v2H1zM5.245 8.07l2.83-2.827 14.14 14. 142-2.828 2.828zM12.317 1l5.657 5.656-2.83 2.83-5.654-5.66zM3.825 9.485l5.657 5. 657-2.828 2.828-5.657-5.657z"></path></g> <g id="gesture"><path d="M4.59 6.89c.7 -.71 1.4-1.35 1.71-1.22.5.2 0 1.03-.3 1.52-.25.42-2.86 3.89-2.86 6.31 0 1.28.48 2.34 1.34 2.98.75.56 1.74.73 2.64.46 1.07-.31 1.95-1.4 3.06-2.77 1.21-1.49 2.83- 3.44 4.08-3.44 1.63 0 1.65 1.01 1.76 1.79-3.78.64-5.38 3.67-5.38 5.37 0 1.7 1.44 3.09 3.21 3.09 1.63 0 4.29-1.33 4.69-6.1H21v-2.5h-2.47c-.15-1.65-1.09-4.2-4.03- 4.2-2.25 0-4.18 1.91-4.94 2.84-.58.73-2.06 2.48-2.29 2.72-.25.3-.68.84-1.11.84-. 45 0-.72-.83-.36-1.92.35-1.09 1.4-2.86 1.85-3.52.78-1.14 1.3-1.92 1.3-3.28C8.95 3.69 7.31 3 6.44 3 5.12 3 3.97 4 3.72 4.25c-.36.36-.66.66-.88.93l1.75 1.71zm9.29 11.66c-.31 0-.74-.26-.74-.72 0-.6.73-2.2 2.87-2.76-.3 2.69-1.43 3.48-2.13 3.48z "></path></g> <g id="get-app"><path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z "></path></g> <g id="gif"><path d="M11.5 9H13v6h-1.5zM9 9H6c-.6 0-1 .5-1 1v4c0 . 5.4 1 1 1h3c.6 0 1-.5 1-1v-2H8.5v1.5h-2v-3H10V10c0-.5-.4-1-1-1zm10 1.5V9h-4.5v6H 16v-2h2v-1.5h-2v-1z"></path></g> <g id="grade"><path d="M12 17.27L18.18 21l-1.64 -7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"></path></g> <g id="group-work"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S1 7.52 2 12 2zM8 17.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1 .12 2.5-2.5 2.5zM9.5 8c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5 S9.5 9.38 9.5 8zm6.5 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"></path></g> <g id="help"><path d="M12 2C6.48 2 2 6.48 2 1 2s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13. 45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59- 1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z"></path></g> <g id="help-outline"><path d="M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.5 9-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c 0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z"></path></g> <g id="highlig ht-off"><path d="M14.59 8L12 10.59 9.41 8 8 9.41 10.59 12 8 14.59 9.41 16 12 13. 41 14.59 16 16 14.59 13.41 12 16 9.41 14.59 8zM12 2C6.47 2 2 6.47 2 12s4.47 10 1 0 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3 .59 8-8 8z"></path></g> <g id="history"><path d="M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94 -2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5 l4.28 2.54.72-1.21-3.5-2.08V8H12z"></path></g> <g id="home"><path d="M10 20v-6h4 v6h5v-8h3L12 3 2 12h3v8z"></path></g> <g id="hourglass-empty"><path d="M6 2v6h.0 1L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zm 10 14.5V20H8v-3.5l4-4 4 4zm-4-5l-4-4V4h8v3.5l-4 4z"></path></g> <g id="hourglass -full"><path d="M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4- 4 4-3.99-.01-.01H18V2H6z"></path></g> <g id="http"><path d="M4.5 11h-2V9H1v6h1.5 v-2.5h2V15H6V9H4.5v2zm2.5-.5h1.5V15H10v-4.5h1.5V9H7v1.5zm5.5 0H14V15h1.5v-4.5H17 V9h-4.5v1.5zm9-1.5H18v6h1.5v-2h2c.8 0 1.5-.7 1.5-1.5v-1c0-.8-.7-1.5-1.5-1.5zm0 2 .5h-2v-1h2v1z"></path></g> <g id="https"><path d="M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2 -2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z"></path></g> <g id="important-devices"><path d="M23 11.01L18 11c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-9c0-.55 -.45-.99-1-.99zM23 20h-5v-7h5v7zM20 2H2C.89 2 0 2.89 0 4v12c0 1.1.89 2 2 2h7v2H7 v2h8v-2h-2v-2h2v-2H2V4h18v5h2V4c0-1.11-.9-2-2-2zm-8.03 7L11 6l-.97 3H7l2.47 1.76 -.94 2.91 2.47-1.8 2.47 1.8-.94-2.91L15 9h-3.03z"></path></g> <g id="inbox"><pat h d="M19 3H4.99c-1.11 0-1.98.89-1.98 2L3 19c0 1.1.88 2 1.99 2H19c1.1 0 2-.9 2-2V 5c0-1.11-.9-2-2-2zm0 12h-4c0 1.66-1.35 3-3 3s-3-1.34-3-3H4.99V5H19v10z"></path>< /g> <g id="indeterminate-check-box"><path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"></path></g> <g id="i nfo"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2z m1 15h-2v-6h2v6zm0-8h-2V7h2v2z"></path></g> <g id="info-outline"><path d="M11 17 h2v-6h-2v6zm1-15C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zM11 9h2V7h-2v2z"></path>< /g> <g id="input"><path d="M21 3.01H3c-1.1 0-2 .9-2 2V9h2V4.99h18v14.03H3V15H1v4 .01c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98v-14c0-1.11-.9-2-2-2zM11 16l4-4-4-4 v3H1v2h10v3z"></path></g> <g id="invert-colors"><path d="M17.66 7.93L12 2.27 6.3 4 7.93c-3.12 3.12-3.12 8.19 0 11.31C7.9 20.8 9.95 21.58 12 21.58c2.05 0 4.1-.78 5.66-2.34 3.12-3.12 3.12-8.19 0-11.31zM12 19.59c-1.6 0-3.11-.62-4.24-1.76C6.62 1 6.69 6 15.19 6 13.59s.62-3.11 1.76-4.24L12 5.1v14.49z"></path></g> <g id="label" ><path d="M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1 .9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16z"></path></g> <g i d="label-outline"><path d="M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16zM 16 17H5V7h11l3.55 5L16 17z"></path></g> <g id="language"><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm6.93 6h-2 .95c-.32-1.25-.78-2.45-1.38-3.56 1.84.63 3.37 1.91 4.33 3.56zM12 4.04c.83 1.2 1. 48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96zM4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2 0 .68.06 1.34.14 2H4.26zm.82 2h2.9 5c.32 1.25.78 2.45 1.38 3.56-1.84-.63-3.37-1.9-4.33-3.56zm2.95-8H5.08c.96-1.66 2 .49-2.93 4.33-3.56C8.81 5.55 8.35 6.75 8.03 8zM12 19.96c-.83-1.2-1.48-2.53-1.91- 3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96zM14.34 14H9.66c-.09-.66-.16-1.32-.16-2 0 -.68.07-1.35.16-2h4.68c.09.65.16 1.32.16 2 0 .68-.07 1.34-.16 2zm.25 5.56c.6-1.1 1 1.06-2.31 1.38-3.56h2.95c-.96 1.65-2.49 2.93-4.33 3.56zM16.36 14c.08-.66.14-1. 32.14-2 0-.68-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2h-3.38z"></p ath></g> <g id="launch"><path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h -7z"></path></g> <g id="lightbulb-outline"><path d="M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7zm2.85 11.1 l-.85.6V16h-4v-2.3l-.85-.6C7.8 12.16 7 10.63 7 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.63-.8 3.16-2.15 4.1z"></path></g> <g id="line-style"><path d="M3 16h5v-2H3v2zm 6.5 0h5v-2h-5v2zm6.5 0h5v-2h-5v2zM3 20h2v-2H3v2zm4 0h2v-2H7v2zm4 0h2v-2h-2v2zm4 0h2v-2h-2v2zm4 0h2v-2h-2v2zM3 12h8v-2H3v2zm10 0h8v-2h-8v2zM3 4v4h18V4H3z"></path ></g> <g id="line-weight"><path d="M3 17h18v-2H3v2zm0 3h18v-1H3v1zm0-7h18v-3H3v3 zm0-9v4h18V4H3z"></path></g> <g id="link"><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3 .1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8 v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5 -2.24 5-5s-2.24-5-5-5z"></path></g> <g id="list"><path d="M3 13h2v-2H3v2zm0 4h2v -2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z"></path></g> <g id="lock"><path d="M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v 10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3 .1v2z"></path></g> <g id="lock-open"><path d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3 .1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2- 2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z"></path></g> <g id="lock-outline"><path d= "M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2 -2zM8.9 6c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1v2H8.9V6zM18 20H6V10h12v10z">< /path></g> <g id="loyalty"><path d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c -1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1 .41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7zm11.77 8.27L13 19.54l-4.27-4.27C8.2 8 14.81 8 14.19 8 13.5c0-1.38 1.12-2.5 2.5-2.5.69 0 1.32.28 1.77.74l.73.72.73-.7 3c.45-.45 1.08-.73 1.77-.73 1.38 0 2.5 1.12 2.5 2.5 0 .69-.28 1.32-.73 1.77z"></ path></g> <g id="mail"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h 16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"></path></g> <g id ="markunread"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"></path></g> <g id="markunr ead-mailbox"><path d="M20 6H10v6H8V4h6V0H6v6H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h 16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2z"></path></g> <g id="menu"><path d="M3 18h18v -2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"></path></g> <g id="more-horiz"><path d="M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2- .9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"></path></g> < g id="more-vert"><path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c -1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2- 2-.9-2-2-2z"></path></g> <g id="motorcycle"><path d="M19.44 9.03L15.41 5H11v2h3. 59l2 2H5c-2.8 0-5 2.2-5 5s2.2 5 5 5c2.46 0 4.45-1.69 4.9-4h1.65l2.77-2.77c-.21.5 4-.32 1.14-.32 1.77 0 2.8 2.2 5 5 5s5-2.2 5-5c0-2.65-1.97-4.77-4.56-4.97zM7.82 1 5C7.4 16.15 6.28 17 5 17c-1.63 0-3-1.37-3-3s1.37-3 3-3c1.28 0 2.4.85 2.82 2H5v2h 2.82zM19 17c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z"></path></g> <g id="move-to-inbox"><path d="M19 3H4.99c-1.11 0-1.98.9-1.98 2L3 19c0 1.1.88 2 1. 99 2H19c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12h-4c0 1.66-1.35 3-3 3s-3-1.34-3-3H4 .99V5H19v10zm-3-5h-2V7h-4v3H8l4 4 4-4z"></path></g> <g id="next-week"><path d="M 20 7h-4V5c0-.55-.22-1.05-.59-1.41C15.05 3.22 14.55 3 14 3h-4c-1.1 0-2 .9-2 2v2H4 c-1.1 0-2 .9-2 2v11c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2zM10 5h4v2h- 4V5zm1 13.5l-1-1 3-3-3-3 1-1 4 4-4 4z"></path></g> <g id="note-add"><path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 14h -3v3h-2v-3H8v-2h3v-3h2v3h3v2zm-3-7V3.5L18.5 9H13z"></path></g> <g id="offline-pi n"><path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm5 16H7 v-2h10v2zm-6.7-4L7 10.7l1.4-1.4 1.9 1.9 5.3-5.3L17 7.3 10.3 14z"></path></g> <g id="opacity"><path d="M17.66 8L12 2.35 6.34 8C4.78 9.56 4 11.64 4 13.64s.78 4.11 2.34 5.67 3.61 2.35 5.66 2.35 4.1-.79 5.66-2.35S20 15.64 20 13.64 19.22 9.56 17 .66 8zM6 14c.01-2 .62-3.27 1.76-4.4L12 5.27l4.24 4.38C17.38 10.77 17.99 12 18 14 H6z"></path></g> <g id="open-in-browser"><path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h4v-2H5V8h14v10h-4v2h4c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2zm-7 6l-4 4h3 v6h2v-6h3l-4-4z"></path></g> <g id="open-in-new"><path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"></path></g> <g id="open-with"><path d="M10 9h4V6h3 l-5-5-5 5h3v3zm-1 1H6V7l-5 5 5 5v-3h3v-4zm14 2l-5-5v3h-3v4h3v3l5-5zm-9 3h-4v3H7l 5 5 5-5h-3v-3z"></path></g> <g id="pageview"><path d="M11.5 9C10.12 9 9 10.12 9 11.5s1.12 2.5 2.5 2.5 2.5-1.12 2.5-2.5S12.88 9 11.5 9zM20 4H4c-1.1 0-2 .9-2 2v12 c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-3.21 14.21l-2.91-2.91c-.69.4 4-1.51.7-2.39.7C9.01 16 7 13.99 7 11.5S9.01 7 11.5 7 16 9.01 16 11.5c0 .88-.26 1 .69-.7 2.39l2.91 2.9-1.42 1.42z"></path></g> <g id="pan-tool"><path d="M23 5.5V2 0c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19L1 14.83s1.26-1.23 1.3-1.25c.22- .19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46V4c0-.83.67-1.5 1.5- 1.5S11 3.17 11 4v7h1V1.5c0-.83.67-1.5 1.5-1.5S15 .67 15 1.5V11h1V2.5c0-.83.67-1. 5 1.5-1.5s1.5.67 1.5 1.5V11h1V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z"></path>< /g> <g id="payment"><path d="M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2 h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z"></path> </g> <g id="perm-camera-mic"><path d="M20 5h-3.17L15 3H9L7.17 5H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h7v-2.09c-2.83-.48-5-2.94-5-5.91h2c0 2.21 1.79 4 4 4s4-1.79 4- 4h2c0 2.97-2.17 5.43-5 5.91V21h7c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm-6 8c0 1.1-.9 2-2 2s-2-.9-2-2V9c0-1.1.9-2 2-2s2 .9 2 2v4z"></path></g> <g id="perm-contact-cal endar"><path d="M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c 1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1 .34-3 3-3zm6 12H6v-1c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1z"></path></g> <g id="perm-dat a-setting"><path d="M18.99 11.5c.34 0 .67.03 1 .07L20 0 0 20h11.56c-.04-.33-.07- .66-.07-1 0-4.14 3.36-7.5 7.5-7.5zm3.71 7.99c.02-.16.04-.32.04-.49 0-.17-.01-.33 -.04-.49l1.06-.83c.09-.08.12-.21.06-.32l-1-1.73c-.06-.11-.19-.15-.31-.11l-1.24.5 c-.26-.2-.54-.37-.85-.49l-.19-1.32c-.01-.12-.12-.21-.24-.21h-2c-.12 0-.23.09-.25 .21l-.19 1.32c-.3.13-.59.29-.85.49l-1.24-.5c-.11-.04-.24 0-.31.11l-1 1.73c-.06.1 1-.04.24.06.32l1.06.83c-.02.16-.03.32-.03.49 0 .17.01.33.03.49l-1.06.83c-.09.08- .12.21-.06.32l1 1.73c.06.11.19.15.31.11l1.24-.5c.26.2.54.37.85.49l.19 1.32c.02.1 2.12.21.25.21h2c.12 0 .23-.09.25-.21l.19-1.32c.3-.13.59-.29.84-.49l1.25.5c.11.04 .24 0 .31-.11l1-1.73c.06-.11.03-.24-.06-.32l-1.07-.83zm-3.71 1.01c-.83 0-1.5-.67 -1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"></path></g> <g id="per m-device-information"><path d="M13 7h-2v2h2V7zm0 4h-2v6h2v-6zm4-9.99L7 1c-1.1 0- 2 .9-2 2v18c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99zM17 19H7V5h10 v14z"></path></g> <g id="perm-identity"><path d="M12 5.9c1.16 0 2.1.94 2.1 2.1s- .94 2.1-2.1 2.1S9.9 9.16 9.9 8s.94-2.1 2.1-2.1m0 9c2.97 0 6.1 1.46 6.1 2.1v1.1H5 .9V17c0-.64 3.13-2.1 6.1-2.1M12 4C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4 -4-4zm0 9c-2.67 0-8 1.34-8 4v3h16v-3c0-2.66-5.33-4-8-4z"></path></g> <g id="perm -media"><path d="M2 6H0v5h.01L0 20c0 1.1.9 2 2 2h18v-2H2V6zm20-2h-8l-2-2H6c-1.1 0-1.99.9-1.99 2L4 16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM7 15l4.5- 6 3.5 4.51 2.5-3.01L21 15H7z"></path></g> <g id="perm-phone-msg"><path d="M20 15 .5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.02.24l-2.2 2.2c-2.83-1.44-5.15-3.7 5-6.59-6.58l2.2-2.21c.28-.27.36-.66.25-1.01C8.7 6.45 8.5 5.25 8.5 4c0-.55-.45-1- 1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1 zM12 3v10l3-3h6V3h-9z"></path></g> <g id="perm-scan-wifi"><path d="M12 3C6.95 3 3.15 4.85 0 7.23L12 22 24 7.25C20.85 4.87 17.05 3 12 3zm1 13h-2v-6h2v6zm-2-8V6h2 v2h-2z"></path></g> <g id="pets"><circle cx="4.5" cy="9.5" r="2.5"></circle><cir cle cx="9" cy="5.5" r="2.5"></circle><circle cx="15" cy="5.5" r="2.5"></circle>< circle cx="19.5" cy="9.5" r="2.5"></circle><path d="M17.34 14.86c-.87-1.02-1.6-1 .89-2.48-2.91-.46-.54-1.05-1.08-1.75-1.32-.11-.04-.22-.07-.33-.09-.25-.04-.52-.0 4-.78-.04s-.53 0-.79.05c-.11.02-.22.05-.33.09-.7.24-1.28.78-1.75 1.32-.87 1.02-1 .6 1.89-2.48 2.91-1.31 1.31-2.92 2.76-2.62 4.79.29 1.02 1.02 2.03 2.33 2.32.73.1 5 3.06-.44 5.54-.44h.18c2.48 0 4.81.58 5.54.44 1.31-.29 2.04-1.31 2.33-2.32.31-2 .04-1.3-3.49-2.61-4.8z"></path></g> <g id="picture-in-picture"><path d="M19 7h-8 v6h8V7zm2-4H3c-1.1 0-2 .9-2 2v14c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98V5c0-1 .1-.9-2-2-2zm0 16.01H3V4.98h18v14.03z"></path></g> <g id="picture-in-picture-alt "><path d="M19 11h-8v6h8v-6zm4 8V4.98C23 3.88 22.1 3 21 3H3c-1.1 0-2 .88-2 1.98V 19c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2zm-2 .02H3V4.97h18v14.05z"></path></g> <g id=" play-for-work"><path d="M11 5v5.59H7.5l4.5 4.5 4.5-4.5H13V5h-2zm-5 9c0 3.31 2.69 6 6 6s6-2.69 6-6h-2c0 2.21-1.79 4-4 4s-4-1.79-4-4H6z"></path></g> <g id="polyme r"><path d="M19 4h-4L7.11 16.63 4.5 12 9 4H5L.5 12 5 20h4l7.89-12.63L19.5 12 15 20h4l4.5-8z"></path></g> <g id="power-settings-new"><path d="M13 3h-2v10h2V3zm4. 83 2.17l-1.42 1.42C17.99 7.86 19 9.81 19 12c0 3.87-3.13 7-7 7s-7-3.13-7-7c0-2.19 1.01-4.14 2.58-5.42L6.17 5.17C4.23 6.82 3 9.26 3 12c0 4.97 4.03 9 9 9s9-4.03 9- 9c0-2.74-1.23-5.18-3.17-6.83z"></path></g> <g id="pregnant-woman"><path d="M9 4c 0-1.11.89-2 2-2s2 .89 2 2-.89 2-2 2-2-.89-2-2zm7 9c-.01-1.34-.83-2.51-2-3 0-1.66 -1.34-3-3-3s-3 1.34-3 3v7h2v5h3v-5h3v-4z"></path></g> <g id="print"><path d="M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c -.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z"></path></g> <g i d="query-builder"><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3 .58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z"></path></g> <g id="question-a nswer"><path d="M21 6h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1zm-4 6V3c0 -.55-.45-1-1-1H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1z"></path></g> <g id= "radio-button-checked"><path d="M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2 .24-5-5-5zm0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18 c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"></path></g> <g id="radio- button-unchecked"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S 17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"></path> </g> <g id="receipt"><path d="M18 17H6v-2h12v2zm0-4H6v-2h12v2zm0-4H6V7h12v2zM3 2 2l1.5-1.5L6 22l1.5-1.5L9 22l1.5-1.5L12 22l1.5-1.5L15 22l1.5-1.5L18 22l1.5-1.5L21 22V2l-1.5 1.5L18 2l-1.5 1.5L15 2l-1.5 1.5L12 2l-1.5 1.5L9 2 7.5 3.5 6 2 4.5 3.5 3 2v20z"></path></g> <g id="record-voice-over"><circle cx="9" cy="9" r="4"></ci rcle><path d="M9 15c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4zm7.76-9.64l-1.6 8 1.69c.84 1.18.84 2.71 0 3.89l1.68 1.69c2.02-2.02 2.02-5.07 0-7.27zM20.07 2l-1. 63 1.63c2.77 3.02 2.77 7.56 0 10.74L20.07 16c3.9-3.89 3.91-9.95 0-14z"></path></ g> <g id="redeem"><path d="M20 6h-2.18c.11-.31.18-.65.18-1 0-1.66-1.34-3-3-3-1.0 5 0-1.96.54-2.5 1.35l-.5.67-.5-.68C10.96 2.54 10.05 2 9 2 7.34 2 6 3.34 6 5c0 .3 5.07.69.18 1H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8 c0-1.11-.89-2-2-2zm-5-2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM9 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm11 15H4v-2h16v2zm0-5H4V8h5.08L7 10.8 3 8.62 12 11 8.76l1-1.36 1 1.36L15.38 12 17 10.83 14.92 8H20v6z"></path></g> <g id="redo"><path d="M18.4 10.6C16.55 8.99 14.15 8 11.5 8c-4.65 0-8.58 3.03-9.96 7 .22L3.9 16c1.05-3.19 4.05-5.5 7.6-5.5 1.95 0 3.73.72 5.12 1.88L13 16h9V7l-3.6 3. 6z"></path></g> <g id="refresh"><path d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4 -5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2. 35z"></path></g> <g id="remove"><path d="M19 13H5v-2h14v2z"></path></g> <g id="r emove-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.5 2 2 12 2zm5 11H7v-2h10v2z"></path></g> <g id="remove-circle-outline"><path d="M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm 0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"></path></g> <g id="re order"><path d="M3 15h18v-2H3v2zm0 4h18v-2H3v2zm0-8h18V9H3v2zm0-6v2h18V5H3z"></p ath></g> <g id="reply"><path d="M10 9V5l-7 7 7 7v-4.1c5 0 8.5 1.6 11 5.1-1-5-4-1 0-11-11z"></path></g> <g id="reply-all"><path d="M7 8V5l-7 7 7 7v-3l-4-4 4-4zm6 1V5l-7 7 7 7v-4.1c5 0 8.5 1.6 11 5.1-1-5-4-10-11-11z"></path></g> <g id="report" ><path d="M15.73 3H8.27L3 8.27v7.46L8.27 21h7.46L21 15.73V8.27L15.73 3zM12 17.3c -.72 0-1.3-.58-1.3-1.3 0-.72.58-1.3 1.3-1.3.72 0 1.3.58 1.3 1.3 0 .72-.58 1.3-1. 3 1.3zm1-4.3h-2V7h2v6z"></path></g> <g id="report-problem"><path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"></path></g> <g id="restore"><path d="M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9- 4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"></path></g> <g id ="room"><path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.1 3-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2 .5-2.5 2.5z"></path></g> <g id="rounded-corner"><path d="M19 19h2v2h-2v-2zm0-2h2 v-2h-2v2zM3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm0-4h2V3H3v2zm4 0h2V3H7v2zm8 16h2v-2h-2v2zm-4 0h2v-2h-2v2zm4 0h2v-2h-2v2zm-8 0h2v-2H7v2zm-4 0h2v-2H3v2zM21 8c 0-2.76-2.24-5-5-5h-5v2h5c1.65 0 3 1.35 3 3v5h2V8z"></path></g> <g id="rowing"><p ath d="M8.5 14.5L4 19l1.5 1.5L9 17h2l-2.5-2.5zM15 1c-1.1 0-2 .9-2 2s.9 2 2 2 2-. 9 2-2-.9-2-2-2zm6 20.01L18 24l-2.99-3.01V19.5l-7.1-7.09c-.31.05-.61.07-.91.07v-2 .16c1.66.03 3.61-.87 4.67-2.04l1.4-1.55c.19-.21.43-.38.69-.5.29-.14.62-.23.96-.2 3h.03C15.99 6.01 17 7.02 17 8.26v5.75c0 .84-.35 1.61-.92 2.16l-3.58-3.58v-2.27c- .63.52-1.43 1.02-2.29 1.39L16.5 18H18l3 3.01z"></path></g> <g id="save"><path d= "M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.6 6 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z"></path></g> <g id="schedule"><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 1 7.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z"></path></g> <g id="search"><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5. 91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4. 99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z">< /path></g> <g id="select-all"><path d="M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1 .9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2 -.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h 10V7H7v10zm2-8h6v6H9V9z"></path></g> <g id="send"><path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"></path></g> <g id="settings"><path d="M19.43 12.98c.04-.32.07- .64.07-.98s-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39 -.3-.61-.22l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h -4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.23-.09-.49 0 -.61.22l-2 3.46c-.13.22-.07.49.12.64l2.11 1.65c-.04.32-.07.65-.07.98s.03.66.07.9 8l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.1 7-.59 1.69-.98l2.49 1c.23.09.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1. 65zM12 15.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5- 3.5 3.5z"></path></g> <g id="settings-applications"><path d="M12 10c-1.1 0-2 .9- 2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm7-7H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-1.75 9c0 .23-.02.46-.05.68l1.48 1.16c.13.11.17.3 .08.45l-1.4 2.42c-.09.15-.27.21-.43.15l-1.74-.7c-.36.28-.76.51-1.18.69l-.26 1.85 c-.03.17-.18.3-.35.3h-2.8c-.17 0-.32-.13-.35-.29l-.26-1.85c-.43-.18-.82-.41-1.18 -.69l-1.74.7c-.16.06-.34 0-.43-.15l-1.4-2.42c-.09-.15-.05-.34.08-.45l1.48-1.16c- .03-.23-.05-.46-.05-.69 0-.23.02-.46.05-.68l-1.48-1.16c-.13-.11-.17-.3-.08-.45l1 .4-2.42c.09-.15.27-.21.43-.15l1.74.7c.36-.28.76-.51 1.18-.69l.26-1.85c.03-.17.18 -.3.35-.3h2.8c.17 0 .32.13.35.29l.26 1.85c.43.18.82.41 1.18.69l1.74-.7c.16-.06.3 4 0 .43.15l1.4 2.42c.09.15.05.34-.08.45l-1.48 1.16c.03.23.05.46.05.69z"></path>< /g> <g id="settings-backup-restore"><path d="M14 12c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2zm-2-9c-4.97 0-9 4.03-9 9H0l4 4 4-4H5c0-3.87 3.13-7 7-7s7 3.13 7 7 -3.13 7-7 7c-1.51 0-2.91-.49-4.06-1.3l-1.42 1.44C8.04 20.3 9.94 21 12 21c4.97 0 9-4.03 9-9s-4.03-9-9-9z"></path></g> <g id="settings-bluetooth"><path d="M11 24h 2v-2h-2v2zm-4 0h2v-2H7v2zm8 0h2v-2h-2v2zm2.71-18.29L12 0h-1v7.59L6.41 3 5 4.41 1 0.59 10 5 15.59 6.41 17 11 12.41V20h1l5.71-5.71-4.3-4.29 4.3-4.29zM13 3.83l1.88 1.88L13 7.59V3.83zm1.88 10.46L13 16.17v-3.76l1.88 1.88z"></path></g> <g id="sett ings-brightness"><path d="M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16.01H3V4.99h18v14.02zM8 16h2.5l1.5 1.5 1.5-1.5H16v-2.5 l1.5-1.5-1.5-1.5V8h-2.5L12 6.5 10.5 8H8v2.5L6.5 12 8 13.5V16zm4-7c1.66 0 3 1.34 3 3s-1.34 3-3 3V9z"></path></g> <g id="settings-cell"><path d="M7 24h2v-2H7v2zm4 0h2v-2h-2v2zm4 0h2v-2h-2v2zM16 .01L8 0C6.9 0 6 .9 6 2v16c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V2c0-1.1-.9-1.99-2-1.99zM16 16H8V4h8v12z"></path></g> <g id="settings-et hernet"><path d="M7.77 6.76L6.23 5.48.82 12l5.41 6.52 1.54-1.28L3.42 12l4.35-5.2 4zM7 13h2v-2H7v2zm10-2h-2v2h2v-2zm-6 2h2v-2h-2v2zm6.77-7.52l-1.54 1.28L20.58 12l -4.35 5.24 1.54 1.28L23.18 12l-5.41-6.52z"></path></g> <g id="settings-input-ant enna"><path d="M12 5c-3.87 0-7 3.13-7 7h2c0-2.76 2.24-5 5-5s5 2.24 5 5h2c0-3.87- 3.13-7-7-7zm1 9.29c.88-.39 1.5-1.26 1.5-2.29 0-1.38-1.12-2.5-2.5-2.5S9.5 10.62 9 .5 12c0 1.02.62 1.9 1.5 2.29v3.3L7.59 21 9 22.41l3-3 3 3L16.41 21 13 17.59v-3.3z M12 1C5.93 1 1 5.93 1 12h2c0-4.97 4.03-9 9-9s9 4.03 9 9h2c0-6.07-4.93-11-11-11z" ></path></g> <g id="settings-input-component"><path d="M5 2c0-.55-.45-1-1-1s-1 . 45-1 1v4H1v6h6V6H5V2zm4 14c0 1.3.84 2.4 2 2.82V23h2v-4.18c1.16-.41 2-1.51 2-2.82 v-2H9v2zm-8 0c0 1.3.84 2.4 2 2.82V23h2v-4.18C6.16 18.4 7 17.3 7 16v-2H1v2zM21 6V 2c0-.55-.45-1-1-1s-1 .45-1 1v4h-2v6h6V6h-2zm-8-4c0-.55-.45-1-1-1s-1 .45-1 1v4H9v 6h6V6h-2V2zm4 14c0 1.3.84 2.4 2 2.82V23h2v-4.18c1.16-.41 2-1.51 2-2.82v-2h-6v2z" ></path></g> <g id="settings-input-composite"><path d="M5 2c0-.55-.45-1-1-1s-1 . 45-1 1v4H1v6h6V6H5V2zm4 14c0 1.3.84 2.4 2 2.82V23h2v-4.18c1.16-.41 2-1.51 2-2.82 v-2H9v2zm-8 0c0 1.3.84 2.4 2 2.82V23h2v-4.18C6.16 18.4 7 17.3 7 16v-2H1v2zM21 6V 2c0-.55-.45-1-1-1s-1 .45-1 1v4h-2v6h6V6h-2zm-8-4c0-.55-.45-1-1-1s-1 .45-1 1v4H9v 6h6V6h-2V2zm4 14c0 1.3.84 2.4 2 2.82V23h2v-4.18c1.16-.41 2-1.51 2-2.82v-2h-6v2z" ></path></g> <g id="settings-input-hdmi"><path d="M18 7V4c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v3H5v6l3 6v3h8v-3l3-6V7h-1zM8 4h8v3h-2V5h-1v2h-2V5h-1v2H8V4z"></path>< /g> <g id="settings-input-svideo"><path d="M8 11.5c0-.83-.67-1.5-1.5-1.5S5 10.67 5 11.5 5.67 13 6.5 13 8 12.33 8 11.5zm7-5c0-.83-.67-1.5-1.5-1.5h-3C9.67 5 9 5.6 7 9 6.5S9.67 8 10.5 8h3c.83 0 1.5-.67 1.5-1.5zM8.5 15c-.83 0-1.5.67-1.5 1.5S7.67 18 8.5 18s1.5-.67 1.5-1.5S9.33 15 8.5 15zM12 1C5.93 1 1 5.93 1 12s4.93 11 11 11 11-4.93 11-11S18.07 1 12 1zm0 20c-4.96 0-9-4.04-9-9s4.04-9 9-9 9 4.04 9 9-4.04 9-9 9zm5.5-11c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5- 1.5zm-2 5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z "></path></g> <g id="settings-overscan"><path d="M12.01 5.5L10 8h4l-1.99-2.5zM18 10v4l2.5-1.99L18 10zM6 10l-2.5 2.01L6 14v-4zm8 6h-4l2.01 2.5L14 16zm7-13H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16.01H3V4.99h 18v14.02z"></path></g> <g id="settings-phone"><path d="M13 9h-2v2h2V9zm4 0h-2v2h 2V9zm3 6.5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.02.24l-2.2 2.2c-2.83-1.44- 5.15-3.75-6.59-6.58l2.2-2.21c.28-.27.36-.66.25-1.01C8.7 6.45 8.5 5.25 8.5 4c0-.5 5-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-. 45-1-1-1zM19 9v2h2V9h-2z"></path></g> <g id="settings-power"><path d="M7 24h2v-2 H7v2zm4 0h2v-2h-2v2zm2-22h-2v10h2V2zm3.56 2.44l-1.45 1.45C16.84 6.94 18 8.83 18 11c0 3.31-2.69 6-6 6s-6-2.69-6-6c0-2.17 1.16-4.06 2.88-5.12L7.44 4.44C5.36 5.88 4 8.28 4 11c0 4.42 3.58 8 8 8s8-3.58 8-8c0-2.72-1.36-5.12-3.44-6.56zM15 24h2v-2h -2v2z"></path></g> <g id="settings-remote"><path d="M15 9H9c-.55 0-1 .45-1 1v12c 0 .55.45 1 1 1h6c.55 0 1-.45 1-1V10c0-.55-.45-1-1-1zm-3 6c-1.1 0-2-.9-2-2s.9-2 2 -2 2 .9 2 2-.9 2-2 2zM7.05 6.05l1.41 1.41C9.37 6.56 10.62 6 12 6s2.63.56 3.54 1. 46l1.41-1.41C15.68 4.78 13.93 4 12 4s-3.68.78-4.95 2.05zM12 0C8.96 0 6.21 1.23 4 .22 3.22l1.41 1.41C7.26 3.01 9.51 2 12 2s4.74 1.01 6.36 2.64l1.41-1.41C17.79 1.2 3 15.04 0 12 0z"></path></g> <g id="settings-voice"><path d="M7 24h2v-2H7v2zm5-1 1c1.66 0 2.99-1.34 2.99-3L15 4c0-1.66-1.34-3-3-3S9 2.34 9 4v6c0 1.66 1.34 3 3 3z m-1 11h2v-2h-2v2zm4 0h2v-2h-2v2zm4-14h-1.7c0 3-2.54 5.1-5.3 5.1S6.7 13 6.7 10H5c 0 3.41 2.72 6.23 6 6.72V20h2v-3.28c3.28-.49 6-3.31 6-6.72z"></path></g> <g id="s hop"><path d="M16 6V4c0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H2v13c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6h-6zm-6-2h4v2h-4V4zM9 18V9l7.5 4L9 18z"></path></g> <g i d="shop-two"><path d="M3 9H1v11c0 1.11.89 2 2 2h14c1.11 0 2-.89 2-2H3V9zm15-4V3c 0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H5v11c0 1.11.89 2 2 2h14c1.11 0 2-.89 2-2 V5h-5zm-6-2h4v2h-4V3zm0 12V8l5.5 3-5.5 4z"></path></g> <g id="shopping-basket">< path d="M17.21 9l-4.38-6.56c-.19-.28-.51-.42-.83-.42-.32 0-.64.14-.83.43L6.79 9H 2c-.55 0-1 .45-1 1 0 .09.01.18.04.27l2.54 9.27c.23.84 1 1.46 1.92 1.46h13c.92 0 1.69-.62 1.93-1.46l2.54-9.27L23 10c0-.55-.45-1-1-1h-4.79zM9 9l3-4.4L15 9H9zm3 8c -1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"></path></g> <g id="shopping-cart">< path d="M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7. 59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-. 25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2- .9-2-2-2z"></path></g> <g id="sort"><path d="M3 18h6v-2H3v2zM3 6v2h18V6H3zm0 7h1 2v-2H3v2z"></path></g> <g id="speaker-notes"><path d="M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM8 14H6v-2h2v2zm0-3H6V9h2v2zm0-3H 6V6h2v2zm7 6h-5v-2h5v2zm3-3h-8V9h8v2zm0-3h-8V6h8v2z"></path></g> <g id="spellche ck"><path d="M12.45 16h2.09L9.43 3H7.57L2.46 16h2.09l1.12-3h5.64l1.14 3zm-6.02-5 L8.5 5.48 10.57 11H6.43zm15.16.59l-8.09 8.09L9.83 16l-1.41 1.41 5.09 5.09L23 13l -1.41-1.41z"></path></g> <g id="star"><path d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"></path></g> <g id="star -border"><path d="M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L 12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z"></path></g> <g id="star-half "><path d="M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 1 8.18 21l-1.63-7.03L22 9.24zM12 15.4V6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15 .4z"></path></g> <g id="stars"><path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm4.24 16L12 15.45 7.77 18l1.12-4.81- 3.73-3.23 4.92-.42L12 5l1.92 4.53 4.92.42-3.73 3.23L16.23 18z"></path></g> <g id ="store"><path d="M20 4H4v2h16V4zm1 10v-2l-1-5H4l-1 5v2h1v6h10v-6h4v6h2v-6h1zm-9 4H6v-4h6v4z"></path></g> <g id="subdirectory-arrow-left"><path d="M11 9l1.42 1. 42L8.83 14H18V4h2v12H8.83l3.59 3.58L11 21l-6-6 6-6z"></path></g> <g id="subdirec tory-arrow-right"><path d="M19 15l-6 6-1.42-1.42L15.17 16H4V4h2v10h9.17l-3.59-3. 58L13 9l6 6z"></path></g> <g id="subject"><path d="M14 17H4v2h10v-2zm6-8H4v2h16V 9zM4 15h16v-2H4v2zM4 5v2h16V5H4z"></path></g> <g id="supervisor-account"><path d ="M16.5 12c1.38 0 2.49-1.12 2.49-2.5S17.88 7 16.5 7C15.12 7 14 8.12 14 9.5s1.12 2.5 2.5 2.5zM9 11c1.66 0 2.99-1.34 2.99-3S10.66 5 9 5C7.34 5 6 6.34 6 8s1.34 3 3 3zm7.5 3c-1.83 0-5.5.92-5.5 2.75V19h11v-2.25c0-1.83-3.67-2.75-5.5-2.75zM9 13c-2 .33 0-7 1.17-7 3.5V19h7v-2.25c0-.85.33-2.34 2.37-3.47C10.5 13.1 9.66 13 9 13z">< /path></g> <g id="swap-horiz"><path d="M6.99 11L3 15l3.99 4v-3H14v-2H6.99v-3zM21 9l-3.99-4v3H10v2h7.01v3L21 9z"></path></g> <g id="swap-vert"><path d="M16 17.01 V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3z"></path></g> <g id ="swap-vertical-circle"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM6.5 9L10 5.5 13.5 9H11v4H9V9H6.5zm11 6L14 18.5 10.5 15H13v-4 h2v4h2.5z"></path></g> <g id="system-update-alt"><path d="M12 16.5l4-4h-3v-9h-2v 9H8l4 4zm9-13h-6v1.99h6v14.03H3V5.49h6V3.5H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18 c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2z"></path></g> <g id="tab"><path d="M21 3H3c-1 .1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3V5h10v4 h8v10z"></path></g> <g id="tab-unselected"><path d="M1 9h2V7H1v2zm0 4h2v-2H1v2zm 0-8h2V3c-1.1 0-2 .9-2 2zm8 16h2v-2H9v2zm-8-4h2v-2H1v2zm2 4v-2H1c0 1.1.9 2 2 2zM2 1 3h-8v6h10V5c0-1.1-.9-2-2-2zm0 14h2v-2h-2v2zM9 5h2V3H9v2zM5 21h2v-2H5v2zM5 5h2V 3H5v2zm16 16c1.1 0 2-.9 2-2h-2v2zm0-8h2v-2h-2v2zm-8 8h2v-2h-2v2zm4 0h2v-2h-2v2z" ></path></g> <g id="text-format"><path d="M5 17v2h14v-2H5zm4.5-4.2h5l.9 2.2h2.1L 12.75 4h-1.5L6.5 15h2.1l.9-2.2zM12 5.98L13.87 11h-3.74L12 5.98z"></path></g> <g id="theaters"><path d="M18 3v2h-2V3H8v2H6V3H4v18h2v-2h2v2h8v-2h2v2h2V3h-2zM8 17H 6v-2h2v2zm0-4H6v-2h2v2zm0-4H6V7h2v2zm10 8h-2v-2h2v2zm0-4h-2v-2h2v2zm0-4h-2V7h2v2 z"></path></g> <g id="thumb-down"><path d="M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v1.91l.01.01L1 14c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32 c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm 4 0v12h4V3h-4z"></path></g> <g id="thumb-up"><path d="M1 21h4V9H1v12zm22-11c0-1. 1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7 .95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-. 47.14-.73v-1.91l-.01-.01L23 10z"></path></g> <g id="thumbs-up-down"><path d="M12 6c0-.55-.45-1-1-1H5.82l.66-3.18.02-.23c0-.31-.13-.59-.33-.8L5.38 0 .44 4.94C.17 5.21 0 5.59 0 6v6.5c0 .83.67 1.5 1.5 1.5h6.75c.62 0 1.15-.38 1.38-.91l2.26-5.29 c.07-.17.11-.36.11-.55V6zm10.5 4h-6.75c-.62 0-1.15.38-1.38.91l-2.26 5.29c-.07.17 -.11.36-.11.55V18c0 .55.45 1 1 1h5.18l-.66 3.18-.02.24c0 .31.13.59.33.8l.79.78 4 .94-4.94c.27-.27.44-.65.44-1.06v-6.5c0-.83-.67-1.5-1.5-1.5z"></path></g> <g id=" timeline"><path d="M23 8c0 1.1-.9 2-2 2-.18 0-.35-.02-.51-.07l-3.56 3.55c.05.16. 07.34.07.52 0 1.1-.9 2-2 2s-2-.9-2-2c0-.18.02-.36.07-.52l-2.55-2.55c-.16.05-.34. 07-.52.07s-.36-.02-.52-.07l-4.55 4.56c.05.16.07.33.07.51 0 1.1-.9 2-2 2s-2-.9-2- 2 .9-2 2-2c.18 0 .35.02.51.07l4.56-4.55C8.02 9.36 8 9.18 8 9c0-1.1.9-2 2-2s2 .9 2 2c0 .18-.02.36-.07.52l2.55 2.55c.16-.05.34-.07.52-.07s.36.02.52.07l3.55-3.56C1 9.02 8.35 19 8.18 19 8c0-1.1.9-2 2-2s2 .9 2 2z"></path></g> <g id="toc"><path d= "M3 9h14V7H3v2zm0 4h14v-2H3v2zm0 4h14v-2H3v2zm16 0h2v-2h-2v2zm0-10v2h2V7h-2zm0 6 h2v-2h-2v2z"></path></g> <g id="today"><path d="M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8 h14v11zM7 10h5v5H7z"></path></g> <g id="toll"><path d="M15 4c-4.42 0-8 3.58-8 8s 3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6- 2.69 6-6 6zM3 12c0-2.61 1.67-4.83 4-5.65V4.26C3.55 5.15 1 8.27 1 12s2.55 6.85 6 7.74v-2.09c-2.33-.82-4-3.04-4-5.65z"></path></g> <g id="touch-app"><path d="M9 1 1.24V7.5C9 6.12 10.12 5 11.5 5S14 6.12 14 7.5v3.74c1.21-.81 2-2.18 2-3.74C16 5.0 1 13.99 3 11.5 3S7 5.01 7 7.5c0 1.56.79 2.93 2 3.74zm9.84 4.63l-4.54-2.26c-.17-. 07-.35-.11-.54-.11H13v-6c0-.83-.67-1.5-1.5-1.5S10 6.67 10 7.5v10.74l-3.43-.72c-. 08-.01-.15-.03-.24-.03-.31 0-.59.13-.79.33l-.79.8 4.94 4.94c.27.27.65.44 1.06.44 h6.79c.75 0 1.33-.55 1.44-1.28l.75-5.27c.01-.07.02-.14.02-.2 0-.62-.38-1.16-.91- 1.38z"></path></g> <g id="track-changes"><path d="M19.07 4.93l-1.41 1.41C19.1 7. 79 20 9.79 20 12c0 4.42-3.58 8-8 8s-8-3.58-8-8c0-4.08 3.05-7.44 7-7.93v2.02C8.16 6.57 6 9.03 6 12c0 3.31 2.69 6 6 6s6-2.69 6-6c0-1.66-.67-3.16-1.76-4.24l-1.41 1 .41C15.55 9.9 16 10.9 16 12c0 2.21-1.79 4-4 4s-4-1.79-4-4c0-1.86 1.28-3.41 3-3.8 6v2.14c-.6.35-1 .98-1 1.72 0 1.1.9 2 2 2s2-.9 2-2c0-.74-.4-1.38-1-1.72V2h-1C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10c0-2.76-1.12-5.26-2.93-7.07z"></path>< /g> <g id="translate"><path d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.1 7 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7 .3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76- 2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17 h-3.24z"></path></g> <g id="trending-down"><path d="M16 18l2.29-2.29-4.88-4.88-4 4L2 7.41 3.41 6l6 6 4-4 6.3 6.29L22 12v6z"></path></g> <g id="trending-flat"><p ath d="M22 12l-4-4v3H3v2h15v3z"></path></g> <g id="trending-up"><path d="M16 6l2 .29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6z"></path></g> <g id="turned-in"><path d="M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2- 2-2z"></path></g> <g id="turned-in-not"><path d="M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2zm0 15l-5-2.18L7 18V5h10v13z"></path></g> <g id="unar chive"><path d="M20.55 5.22l-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1 .15.55L3.46 5.22C3.17 5.57 3 6.01 3 6.5V19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6.5c 0-.49-.17-.93-.45-1.28zM12 9.5l5.5 5.5H14v2h-4v-2H6.5L12 9.5zM5.12 5l.82-1h12l.9 3 1H5.12z"></path></g> <g id="undo"><path d="M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7 v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C 21.08 11.03 17.15 8 12.5 8z"></path></g> <g id="unfold-less"><path d="M7.41 18.5 9L8.83 20 12 16.83 15.17 20l1.41-1.41L12 14l-4.59 4.59zm9.18-13.18L15.17 4 12 7. 17 8.83 4 7.41 5.41 12 10l4.59-4.59z"></path></g> <g id="unfold-more"><path d="M 12 5.83L15.17 9l1.41-1.41L12 3 7.41 7.59 8.83 9 12 5.83zm0 12.34L8.83 15l-1.41 1 .41L12 21l4.59-4.59L15.17 15 12 18.17z"></path></g> <g id="update"><path d="M21 10.12h-6.78l2.74-2.82c-2.73-2.7-7.15-2.8-9.88-.1-2.73 2.71-2.73 7.08 0 9.79 2.73 2.71 7.15 2.71 9.88 0C18.32 15.65 19 14.08 19 12.1h2c0 1.98-.88 4.55-2.64 6.29- 3.51 3.48-9.21 3.48-12.72 0-3.5-3.47-3.53-9.11-.02-12.58 3.51-3.47 9.14-3.47 12. 65 0L21 3v7.12zM12.5 8v4.25l3.5 2.08-.72 1.21L11 13V8h1.5z"></path></g> <g id="v erified-user"><path d="M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V 5l-9-4zm-2 16l-4-4 1.41-1.41L10 14.17l6.59-6.59L18 9l-8 8z"></path></g> <g id="v iew-agenda"><path d="M20 13H3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h17c.55 0 1-.45 1 -1v-6c0-.55-.45-1-1-1zm0-10H3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h17c.55 0 1-.45 1 -1V4c0-.55-.45-1-1-1z"></path></g> <g id="view-array"><path d="M4 18h3V5H4v13zM1 8 5v13h3V5h-3zM8 18h9V5H8v13z"></path></g> <g id="view-carousel"><path d="M7 19h 10V4H7v15zm-5-2h4V6H2v11zM18 6v11h4V6h-4z"></path></g> <g id="view-column"><path d="M10 18h5V5h-5v13zm-6 0h5V5H4v13zM16 5v13h5V5h-5z"></path></g> <g id="view-da y"><path d="M2 21h19v-3H2v3zM20 8H3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h17c.55 0 1 -.45 1-1V9c0-.55-.45-1-1-1zM2 3v3h19V3H2z"></path></g> <g id="view-headline"><pa th d="M4 15h16v-2H4v2zm0 4h16v-2H4v2zm0-8h16V9H4v2zm0-6v2h16V5H4z"></path></g> < g id="view-list"><path d="M4 14h4v-4H4v4zm0 5h4v-4H4v4zM4 9h4V5H4v4zm5 5h12v-4H9 v4zm0 5h12v-4H9v4zM9 5v4h12V5H9z"></path></g> <g id="view-module"><path d="M4 11 h5V5H4v6zm0 7h5v-6H4v6zm6 0h5v-6h-5v6zm6 0h5v-6h-5v6zm-6-7h5V5h-5v6zm6-6v6h5V5h- 5z"></path></g> <g id="view-quilt"><path d="M10 18h5v-6h-5v6zm-6 0h5V5H4v13zm12 0h5v-6h-5v6zM10 5v6h11V5H10z"></path></g> <g id="view-stream"><path d="M4 18h17v -6H4v6zM4 5v6h17V5H4z"></path></g> <g id="view-week"><path d="M6 5H3c-.55 0-1 .4 5-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm14 0h-3c-.55 0-1 .4 5-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-7 0h-3c-.55 0-1 .4 5-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z"></path></g> <g id= "visibility"><path d="M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3 .11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"></path> </g> <g id="visibility-off"><path d="M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25 -3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20. 73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.5 3.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"></path></g> <g i d="warning"><path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"></path> </g> <g id="watch-later"><path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10- 10S17.5 2 12 2zm4.2 14.2L11 13V7h1.5v5.2l4.5 2.7-.8 1.3z"></path></g> <g id="wee kend"><path d="M21 10c-1.1 0-2 .9-2 2v3H5v-3c0-1.1-.9-2-2-2s-2 .9-2 2v5c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-5c0-1.1-.9-2-2-2zm-3-5H6c-1.1 0-2 .9-2 2v2.15c1.16.41 2 1.51 2 2.82V14h12v-2.03c0-1.3.84-2.4 2-2.82V7c0-1.1-.9-2-2-2z"></path></g> <g i d="work"><path d="M20 6h-4V4c0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H4c-1.11 0-1 .99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-6 0h -4V4h4v2z"></path></g> <g id="youtube-searched-for"><path d="M17.01 14h-.8l-.27- .27c.98-1.14 1.57-2.61 1.57-4.23 0-3.59-2.91-6.5-6.5-6.5s-6.5 3-6.5 6.5H2l3.84 4 4.16-4H6.51C6.51 7 8.53 5 11.01 5s4.5 2.01 4.5 4.5c0 2.48-2.02 4.5-4.5 4.5-.65 0-1.26-.14-1.82-.38L7.71 15.1c.97.57 2.09.9 3.3.9 1.61 0 3.08-.59 4.22-1.57l.27. 27v.79l5.01 4.99L22 19l-4.99-5z"></path></g> <g id="zoom-in"><path d="M15.5 14h- .79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7. 01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zm2.5-4h-2v2H9v-2 H7V9h2V7h1v2h2v1z"></path></g> <g id="zoom-out"><path d="M15.5 14h-.79l-.28-.27C 15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1. 61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7z"></path></g> </de fs></svg> </iron-iconset-svg> <script>!function(){"use strict";function e(e,t){v ar n="";if(e){var i=e.toLowerCase();" "===i||v.test(i)?n="space":f.test(i)?n="es c":1==i.length?t&&!u.test(i)||(n=i):n=c.test(i)?i.replace("arrow",""):"multiply" ==i?"*":i}return n}function t(e){var t="";return e&&(e in o?t=o[e]:h.test(e)?(e= parseInt(e.replace("U+","0x"),16),t=String.fromCharCode(e).toLowerCase()):t=e.to LowerCase()),t}function n(e){var t="";return Number(e)&&(t=e>=65&&e<=90?String.f romCharCode(32+e):e>=112&&e<=123?"f"+(e-112):e>=48&&e<=57?String(e-48):e>=96&&e< =105?String(e-96):d[e]),t}function i(i,r){return i.key?e(i.key,r):i.detail&&i.de tail.key?e(i.detail.key,r):t(i.keyIdentifier)||n(i.keyCode)||""}function r(e,t){ var n=i(t,e.hasModifiers);return n===e.key&&(!e.hasModifiers||!!t.shiftKey==!!e. shiftKey&&!!t.ctrlKey==!!e.ctrlKey&&!!t.altKey==!!e.altKey&&!!t.metaKey==!!e.met aKey)}function s(e){return 1===e.length?{combo:e,key:e,event:"keydown"}:e.split( "+").reduce(function(e,t){var n=t.split(":"),i=n[0],r=n[1];return i in y?(e[y[i] ]=!0,e.hasModifiers=!0):(e.key=i,e.event=r||"keydown"),e},{combo:e.split(":").sh ift()})}function a(e){return e.trim().split(" ").map(function(e){return s(e)})}v ar o={"U+0008":"backspace","U+0009":"tab","U+001B":"esc","U+0020":"space","U+007 F":"del"},d={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",1 06:"*"},y={shift:"shiftKey",ctrl:"ctrlKey",alt:"altKey",meta:"metaKey"},u=/[a-z0 -9*]/,h=/U\+/,c=/^arrow/,v=/^space(bar)?/,f=/^escape$/;Polymer.IronA11yKeysBehav ior={properties:{keyEventTarget:{type:Object,value:function(){return this}},stop KeyboardEventPropagation:{type:Boolean,value:!1},_boundKeyHandlers:{type:Array,v alue:function(){return[]}},_imperativeKeyBindings:{type:Object,value:function(){ return{}}}},observers:["_resetKeyEventListeners(keyEventTarget, _boundKeyHandler s)"],keyBindings:{},registered:function(){this._prepKeyBindings()},attached:func tion(){this._listenKeyEventListeners()},detached:function(){this._unlistenKeyEve ntListeners()},addOwnKeyBinding:function(e,t){this._imperativeKeyBindings[e]=t,t his._prepKeyBindings(),this._resetKeyEventListeners()},removeOwnKeyBindings:func tion(){this._imperativeKeyBindings={},this._prepKeyBindings(),this._resetKeyEven tListeners()},keyboardEventMatchesKeys:function(e,t){for(var n=a(t),i=0;i<n.leng th;++i)if(r(n[i],e))return!0;return!1},_collectKeyBindings:function(){var e=this .behaviors.map(function(e){return e.keyBindings});return e.indexOf(this.keyBindi ngs)===-1&&e.push(this.keyBindings),e},_prepKeyBindings:function(){this._keyBind ings={},this._collectKeyBindings().forEach(function(e){for(var t in e)this._addK eyBinding(t,e[t])},this);for(var e in this._imperativeKeyBindings)this._addKeyBi nding(e,this._imperativeKeyBindings[e]);for(var t in this._keyBindings)this._key Bindings[t].sort(function(e,t){var n=e[0].hasModifiers,i=t[0].hasModifiers;retur n n===i?0:n?-1:1})},_addKeyBinding:function(e,t){a(e).forEach(function(e){this._ keyBindings[e.event]=this._keyBindings[e.event]||[],this._keyBindings[e.event].p ush([e,t])},this)},_resetKeyEventListeners:function(){this._unlistenKeyEventList eners(),this.isAttached&&this._listenKeyEventListeners()},_listenKeyEventListene rs:function(){this.keyEventTarget&&Object.keys(this._keyBindings).forEach(functi on(e){var t=this._keyBindings[e],n=this._onKeyBindingEvent.bind(this,t);this._bo undKeyHandlers.push([this.keyEventTarget,e,n]),this.keyEventTarget.addEventListe ner(e,n)},this)},_unlistenKeyEventListeners:function(){for(var e,t,n,i;this._bou ndKeyHandlers.length;)e=this._boundKeyHandlers.pop(),t=e[0],n=e[1],i=e[2],t.remo veEventListener(n,i)},_onKeyBindingEvent:function(e,t){if(this.stopKeyboardEvent Propagation&&t.stopPropagation(),!t.defaultPrevented)for(var n=0;n<e.length;n++) {var i=e[n][0],s=e[n][1];if(r(i,t)&&(this._triggerKeyHandler(i,s,t),t.defaultPre vented))return}},_triggerKeyHandler:function(e,t,n){var i=Object.create(e);i.key boardEvent=n;var r=new CustomEvent(e.event,{detail:i,cancelable:!0});this[t].cal l(this,r),r.defaultPrevented&&n.preventDefault()}}}()</script> <script>Polymer.I ronControlState={properties:{focused:{type:Boolean,value:!1,notify:!0,readOnly:! 0,reflectToAttribute:!0},disabled:{type:Boolean,value:!1,notify:!0,observer:"_di sabledChanged",reflectToAttribute:!0},_oldTabIndex:{type:Number},_boundFocusBlur Handler:{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){if(e.target ===this)this._setFocused("focus"===e.type);else if(!this.shadowRoot){var t=Polym er.dom(e).localTarget;this.isLightDescendant(t)||this.fire(e.type,{sourceEvent:e },{node:this,bubbles:e.bubbles,cancelable:e.cancelable})}},_disabledChanged:func tion(e,t){this.setAttribute("aria-disabled",e?"true":"false"),this.style.pointer Events=e?"none":"",e?(this._oldTabIndex=this.tabIndex,this._setFocused(!1),this. tabIndex=-1,this.blur()):void 0!==this._oldTabIndex&&(this.tabIndex=this._oldTab Index)},_changedControlState:function(){this._controlStateChanged&&this._control StateChanged()}}</script> <script>Polymer.IronButtonStateImpl={properties:{press ed:{type:Boolean,readOnly:!0,value:!1,reflectToAttribute:!0,observer:"_pressedCh anged"},toggles:{type:Boolean,value:!1,reflectToAttribute:!0},active:{type:Boole an,value:!1,notify:!0,reflectToAttribute:!0},pointerDown:{type:Boolean,readOnly: !0,value:!1},receivedFocusFromKeyboard:{type:Boolean,readOnly:!0},ariaActiveAttr ibute:{type:String,value:"aria-pressed",observer:"_ariaActiveAttributeChanged"}} ,listeners:{down:"_downHandler",up:"_upHandler",tap:"_tapHandler"},observers:["_ detectKeyboardFocus(focused)","_activeChanged(active, ariaActiveAttribute)"],key Bindings:{"enter:keydown":"_asyncClick","space:keydown":"_spaceKeyDownHandler"," space:keyup":"_spaceKeyUpHandler"},_mouseEventRe:/^mouse/,_tapHandler:function() {this.toggles?this._userActivate(!this.active):this.active=!1},_detectKeyboardFo cus:function(e){this._setReceivedFocusFromKeyboard(!this.pointerDown&&e)},_userA ctivate:function(e){this.active!==e&&(this.active=e,this.fire("change"))},_downH andler:function(e){this._setPointerDown(!0),this._setPressed(!0),this._setReceiv edFocusFromKeyboard(!1)},_upHandler:function(){this._setPointerDown(!1),this._se tPressed(!1)},_spaceKeyDownHandler:function(e){var t=e.detail.keyboardEvent,i=Po lymer.dom(t).localTarget;this.isLightDescendant(i)||(t.preventDefault(),t.stopIm mediatePropagation(),this._setPressed(!0))},_spaceKeyUpHandler:function(e){var t =e.detail.keyboardEvent,i=Polymer.dom(t).localTarget;this.isLightDescendant(i)|| (this.pressed&&this._asyncClick(),this._setPressed(!1))},_asyncClick:function(){ this.async(function(){this.click()},1)},_pressedChanged:function(e){this._change dButtonState()},_ariaActiveAttributeChanged:function(e,t){t&&t!=e&&this.hasAttri bute(t)&&this.removeAttribute(t)},_activeChanged:function(e,t){this.toggles?this .setAttribute(this.ariaActiveAttribute,e?"true":"false"):this.removeAttribute(th is.ariaActiveAttribute),this._changedButtonState()},_controlStateChanged:functio n(){this.disabled?this._setPressed(!1):this._changedButtonState()},_changedButto nState:function(){this._buttonStateChanged&&this._buttonStateChanged()}},Polymer .IronButtonState=[Polymer.IronA11yKeysBehavior,Polymer.IronButtonStateImpl]</scr ipt> <dom-module id="paper-ripple" assetpath="/res/imp/bower_components/paper-ri pple/"> <template> <style>:host{display:block;position:absolute;border-radius:in herit;overflow:hidden;top:0;left:0;right:0;bottom:0;pointer-events:none}:host([a nimating]){-webkit-transform:translate(0,0);transform:translate3d(0,0,0)}#backgr ound,#waves,.wave,.wave-container{pointer-events:none;position:absolute;top:0;le ft:0;width:100%;height:100%}#background,.wave{opacity:0}#waves,.wave{overflow:hi dden}.wave,.wave-container{border-radius:50%}:host(.circle) #background,:host(.c ircle) #waves{border-radius:50%}:host(.circle) .wave-container{overflow:hidden}< /style> <div id="background"></div> <div id="waves"></div> </template> </dom-mod ule> <script>!function(){function t(t){this.element=t,this.width=this.boundingRe ct.width,this.height=this.boundingRect.height,this.size=Math.max(this.width,this .height)}function i(t){this.element=t,this.color=window.getComputedStyle(t).colo r,this.wave=document.createElement("div"),this.waveContainer=document.createElem ent("div"),this.wave.style.backgroundColor=this.color,this.wave.classList.add("w ave"),this.waveContainer.classList.add("wave-container"),Polymer.dom(this.waveCo ntainer).appendChild(this.wave),this.resetInteractionState()}var e={distance:fun ction(t,i,e,n){var s=t-e,o=i-n;return Math.sqrt(s*s+o*o)},now:window.performance &&window.performance.now?window.performance.now.bind(window.performance):Date.no w};t.prototype={get boundingRect(){return this.element.getBoundingClientRect()}, furthestCornerDistanceFrom:function(t,i){var n=e.distance(t,i,0,0),s=e.distance( t,i,this.width,0),o=e.distance(t,i,0,this.height),a=e.distance(t,i,this.width,th is.height);return Math.max(n,s,o,a)}},i.MAX_RADIUS=300,i.prototype={get recenter s(){return this.element.recenters},get center(){return this.element.center},get mouseDownElapsed(){var t;return this.mouseDownStart?(t=e.now()-this.mouseDownSta rt,this.mouseUpStart&&(t-=this.mouseUpElapsed),t):0},get mouseUpElapsed(){return this.mouseUpStart?e.now()-this.mouseUpStart:0},get mouseDownElapsedSeconds(){re turn this.mouseDownElapsed/1e3},get mouseUpElapsedSeconds(){return this.mouseUpE lapsed/1e3},get mouseInteractionSeconds(){return this.mouseDownElapsedSeconds+th is.mouseUpElapsedSeconds},get initialOpacity(){return this.element.initialOpacit y},get opacityDecayVelocity(){return this.element.opacityDecayVelocity},get radi us(){var t=this.containerMetrics.width*this.containerMetrics.width,e=this.contai nerMetrics.height*this.containerMetrics.height,n=1.1*Math.min(Math.sqrt(t+e),i.M AX_RADIUS)+5,s=1.1-.2*(n/i.MAX_RADIUS),o=this.mouseInteractionSeconds/s,a=n*(1-M ath.pow(80,-o));return Math.abs(a)},get opacity(){return this.mouseUpStart?Math. max(0,this.initialOpacity-this.mouseUpElapsedSeconds*this.opacityDecayVelocity): this.initialOpacity},get outerOpacity(){var t=.3*this.mouseUpElapsedSeconds,i=th is.opacity;return Math.max(0,Math.min(t,i))},get isOpacityFullyDecayed(){return this.opacity<.01&&this.radius>=Math.min(this.maxRadius,i.MAX_RADIUS)},get isRest ingAtMaxRadius(){return this.opacity>=this.initialOpacity&&this.radius>=Math.min (this.maxRadius,i.MAX_RADIUS)},get isAnimationComplete(){return this.mouseUpStar t?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.xSt art):this.xStart},get yNow(){return this.yEnd?this.yStart+this.translationFracti on*(this.yEnd-this.yStart):this.yStart},get isMouseDown(){return this.mouseDownS tart&&!this.mouseUpStart},resetInteractionState:function(){this.maxRadius=0,this .mouseDownStart=0,this.mouseUpStart=0,this.xStart=0,this.yStart=0,this.xEnd=0,th is.yEnd=0,this.slideDistance=0,this.containerMetrics=new t(this.element)},draw:f unction(){var t,i,e;this.wave.style.opacity=this.opacity,t=this.radius/(this.con tainerMetrics.size/2),i=this.xNow-this.containerMetrics.width/2,e=this.yNow-this .containerMetrics.height/2,this.waveContainer.style.webkitTransform="translate(" +i+"px, "+e+"px)",this.waveContainer.style.transform="translate3d("+i+"px, "+e+" px, 0)",this.wave.style.webkitTransform="scale("+t+","+t+")",this.wave.style.tra nsform="scale3d("+t+","+t+",1)"},downAction:function(t){var i=this.containerMetr ics.width/2,n=this.containerMetrics.height/2;this.resetInteractionState(),this.m ouseDownStart=e.now(),this.center?(this.xStart=i,this.yStart=n,this.slideDistanc e=e.distance(this.xStart,this.yStart,this.xEnd,this.yEnd)):(this.xStart=t?t.deta il.x-this.containerMetrics.boundingRect.left:this.containerMetrics.width/2,this. yStart=t?t.detail.y-this.containerMetrics.boundingRect.top:this.containerMetrics .height/2),this.recenters&&(this.xEnd=i,this.yEnd=n,this.slideDistance=e.distanc e(this.xStart,this.yStart,this.xEnd,this.yEnd)),this.maxRadius=this.containerMet rics.furthestCornerDistanceFrom(this.xStart,this.yStart),this.waveContainer.styl e.top=(this.containerMetrics.height-this.containerMetrics.size)/2+"px",this.wave Container.style.left=(this.containerMetrics.width-this.containerMetrics.size)/2+ "px",this.waveContainer.style.width=this.containerMetrics.size+"px",this.waveCon tainer.style.height=this.containerMetrics.size+"px"},upAction:function(t){this.i sMouseDown&&(this.mouseUpStart=e.now())},remove:function(){Polymer.dom(this.wave Container.parentNode).removeChild(this.waveContainer)}},Polymer({is:"paper-rippl e",behaviors:[Polymer.IronA11yKeysBehavior],properties:{initialOpacity:{type:Num ber,value:.25},opacityDecayVelocity:{type:Number,value:.8},recenters:{type:Boole an,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},ke yBindings:{"enter:keydown":"_onEnterKeydown","space:keydown":"_onSpaceKeydown"," space:keyup":"_onSpaceKeyup"},attached:function(){11==this.parentNode.nodeType?t his.keyEventTarget=Polymer.dom(this).getOwnerRoot().host:this.keyEventTarget=thi s.parentNode;var t=this.keyEventTarget;this.listen(t,"up","uiUpAction"),this.lis ten(t,"down","uiDownAction")},detached:function(){this.unlisten(this.keyEventTar get,"up","uiUpAction"),this.unlisten(this.keyEventTarget,"down","uiDownAction"), this.keyEventTarget=null},get shouldKeepAnimating(){for(var t=0;t<this.ripples.l ength;++t)if(!this.ripples[t].isAnimationComplete)return!0;return!1},simulatedRi pple:function(){this.downAction(null),this.async(function(){this.upAction()},1)} ,uiDownAction:function(t){this.noink||this.downAction(t)},downAction:function(t) {if(!(this.holdDown&&this.ripples.length>0)){var i=this.addRipple();i.downAction (t),this._animating||(this._animating=!0,this.animate())}},uiUpAction:function(t ){this.noink||this.upAction(t)},upAction:function(t){this.holdDown||(this.ripple s.forEach(function(i){i.upAction(t)}),this._animating=!0,this.animate())},onAnim ationComplete:function(){this._animating=!1,this.$.background.style.backgroundCo lor=null,this.fire("transitionend")},addRipple:function(){var t=new i(this);retu rn Polymer.dom(this.$.waves).appendChild(t.waveContainer),this.$.background.styl e.backgroundColor=t.color,this.ripples.push(t),this._setAnimating(!0),t},removeR ipple:function(t){var i=this.ripples.indexOf(t);i<0||(this.ripples.splice(i,1),t .remove(),this.ripples.length||this._setAnimating(!1))},animate:function(){if(th is._animating){var t,i;for(t=0;t<this.ripples.length;++t)i=this.ripples[t],i.dra w(),this.$.background.style.opacity=i.outerOpacity,i.isOpacityFullyDecayed&&!i.i sRestingAtMaxRadius&&this.removeRipple(i);this.shouldKeepAnimating||0!==this.rip ples.length?window.requestAnimationFrame(this._boundAnimate):this.onAnimationCom plete()}},_onEnterKeydown:function(){this.uiDownAction(),this.async(this.uiUpAct ion,1)},_onSpaceKeydown:function(){this.uiDownAction()},_onSpaceKeyup:function() {this.uiUpAction()},_holdDownChanged:function(t,i){void 0!==i&&(t?this.downActio n():this.upAction())}})}()</script> <script>Polymer.PaperRippleBehavior={propert ies:{noink:{type:Boolean,observer:"_noinkChanged"},_rippleContainer:{type:Object }},_buttonStateChanged:function(){this.focused&&this.ensureRipple()},_downHandle r:function(e){Polymer.IronButtonStateImpl._downHandler.call(this,e),this.pressed &&this.ensureRipple(e)},ensureRipple:function(e){if(!this.hasRipple()){this._rip ple=this._createRipple(),this._ripple.noink=this.noink;var i=this._rippleContain er||this.root;if(i&&Polymer.dom(i).appendChild(this._ripple),e){var n=Polymer.do m(this._rippleContainer||this),t=Polymer.dom(e).rootTarget;n.deepContains(t)&&th is._ripple.uiDownAction(e)}}},getRipple:function(){return this.ensureRipple(),th is._ripple},hasRipple:function(){return Boolean(this._ripple)},_createRipple:fun ction(){return document.createElement("paper-ripple")},_noinkChanged:function(e) {this.hasRipple()&&(this._ripple.noink=e)}}</script> <script>Polymer.PaperButton BehaviorImpl={properties:{elevation:{type:Number,reflectToAttribute:!0,readOnly: !0}},observers:["_calculateElevation(focused, disabled, active, pressed, receive dFocusFromKeyboard)","_computeKeyboardClass(receivedFocusFromKeyboard)"],hostAtt ributes:{role:"button",tabindex:"0",animated:!0},_calculateElevation:function(){ var e=1;this.disabled?e=0:this.active||this.pressed?e=4:this.receivedFocusFromKe yboard&&(e=3),this._setElevation(e)},_computeKeyboardClass:function(e){this.togg leClass("keyboard-focus",e)},_spaceKeyDownHandler:function(e){Polymer.IronButton StateImpl._spaceKeyDownHandler.call(this,e),this.hasRipple()&&this.getRipple().r ipples.length<1&&this._ripple.uiDownAction()},_spaceKeyUpHandler:function(e){Pol ymer.IronButtonStateImpl._spaceKeyUpHandler.call(this,e),this.hasRipple()&&this. _ripple.uiUpAction()}},Polymer.PaperButtonBehavior=[Polymer.IronButtonState,Poly mer.IronControlState,Polymer.PaperRippleBehavior,Polymer.PaperButtonBehaviorImpl ]</script> <style is="custom-style">:root{--shadow-transition:{transition:box-sh adow .28s cubic-bezier(.4,0,.2,1)};--shadow-none:{box-shadow:none};--shadow-elev ation-2dp:{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)};--shadow-elevation-3dp:{box-shadow:0 3px 4px 0 rgba (0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12),0 3px 3px -2px rgba(0,0,0,.4)};--shadow- elevation-4dp:{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.1 2),0 2px 4px -1px rgba(0,0,0,.4)};--shadow-elevation-6dp:{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.4)};-- shadow-elevation-8dp:{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px r gba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4)};--shadow-elevation-12dp:{box-shado w:0 12px 16px 1px rgba(0,0,0,.14),0 4px 22px 3px rgba(0,0,0,.12),0 6px 7px -4px rgba(0,0,0,.4)};--shadow-elevation-16dp:{box-shadow:0 16px 24px 2px rgba(0,0,0,. 14),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.4)};--shadow-elev ation-24dp:{box-shadow:0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0 ,.12),0 11px 15px -7px rgba(0,0,0,.4)};}</style> <dom-module id="paper-material- shared-styles" assetpath="/res/imp/bower_components/paper-material/"> <template> <style>:host{display:block;position:relative}:host([elevation="1"]){@apply(--sh adow-elevation-2dp)}:host([elevation="2"]){@apply(--shadow-elevation-4dp)}:host( [elevation="3"]){@apply(--shadow-elevation-6dp)}:host([elevation="4"]){@apply(-- shadow-elevation-8dp)}:host([elevation="5"]){@apply(--shadow-elevation-16dp)}</s tyle> </template> </dom-module> <style is="custom-style">:root{--google-red-100: #f4c7c3;--google-red-300:#e67c73;--google-red-500:#db4437;--google-red-700:#c539 29;--google-blue-100:#c6dafc;--google-blue-300:#7baaf7;--google-blue-500:#4285f4 ;--google-blue-700:#3367d6;--google-green-100:#b7e1cd;--google-green-300:#57bb8a ;--google-green-500:#0f9d58;--google-green-700:#0b8043;--google-yellow-100:#fce8 b2;--google-yellow-300:#f7cb4d;--google-yellow-500:#f4b400;--google-yellow-700:# f09300;--google-grey-100:#f5f5f5;--google-grey-300:#e0e0e0;--google-grey-500:#9e 9e9e;--google-grey-700:#616161;--paper-red-50:#ffebee;--paper-red-100:#ffcdd2;-- paper-red-200:#ef9a9a;--paper-red-300:#e57373;--paper-red-400:#ef5350;--paper-re d-500:#f44336;--paper-red-600:#e53935;--paper-red-700:#d32f2f;--paper-red-800:#c 62828;--paper-red-900:#b71c1c;--paper-red-a100:#ff8a80;--paper-red-a200:#ff5252; --paper-red-a400:#ff1744;--paper-red-a700:#d50000;--paper-pink-50:#fce4ec;--pape r-pink-100:#f8bbd0;--paper-pink-200:#f48fb1;--paper-pink-300:#f06292;--paper-pin k-400:#ec407a;--paper-pink-500:#e91e63;--paper-pink-600:#d81b60;--paper-pink-700 :#c2185b;--paper-pink-800:#ad1457;--paper-pink-900:#880e4f;--paper-pink-a100:#ff 80ab;--paper-pink-a200:#ff4081;--paper-pink-a400:#f50057;--paper-pink-a700:#c511 62;--paper-purple-50:#f3e5f5;--paper-purple-100:#e1bee7;--paper-purple-200:#ce93 d8;--paper-purple-300:#ba68c8;--paper-purple-400:#ab47bc;--paper-purple-500:#9c2 7b0;--paper-purple-600:#8e24aa;--paper-purple-700:#7b1fa2;--paper-purple-800:#6a 1b9a;--paper-purple-900:#4a148c;--paper-purple-a100:#ea80fc;--paper-purple-a200: #e040fb;--paper-purple-a400:#d500f9;--paper-purple-a700:#aa00ff;--paper-deep-pur ple-50:#ede7f6;--paper-deep-purple-100:#d1c4e9;--paper-deep-purple-200:#b39ddb;- -paper-deep-purple-300:#9575cd;--paper-deep-purple-400:#7e57c2;--paper-deep-purp le-500:#673ab7;--paper-deep-purple-600:#5e35b1;--paper-deep-purple-700:#512da8;- -paper-deep-purple-800:#4527a0;--paper-deep-purple-900:#311b92;--paper-deep-purp le-a100:#b388ff;--paper-deep-purple-a200:#7c4dff;--paper-deep-purple-a400:#651ff f;--paper-deep-purple-a700:#6200ea;--paper-indigo-50:#e8eaf6;--paper-indigo-100: #c5cae9;--paper-indigo-200:#9fa8da;--paper-indigo-300:#7986cb;--paper-indigo-400 :#5c6bc0;--paper-indigo-500:#3f51b5;--paper-indigo-600:#3949ab;--paper-indigo-70 0:#303f9f;--paper-indigo-800:#283593;--paper-indigo-900:#1a237e;--paper-indigo-a 100:#8c9eff;--paper-indigo-a200:#536dfe;--paper-indigo-a400:#3d5afe;--paper-indi go-a700:#304ffe;--paper-blue-50:#e3f2fd;--paper-blue-100:#bbdefb;--paper-blue-20 0:#90caf9;--paper-blue-300:#64b5f6;--paper-blue-400:#42a5f5;--paper-blue-500:#21 96f3;--paper-blue-600:#1e88e5;--paper-blue-700:#1976d2;--paper-blue-800:#1565c0; --paper-blue-900:#0d47a1;--paper-blue-a100:#82b1ff;--paper-blue-a200:#448aff;--p aper-blue-a400:#2979ff;--paper-blue-a700:#2962ff;--paper-light-blue-50:#e1f5fe;- -paper-light-blue-100:#b3e5fc;--paper-light-blue-200:#81d4fa;--paper-light-blue- 300:#4fc3f7;--paper-light-blue-400:#29b6f6;--paper-light-blue-500:#03a9f4;--pape r-light-blue-600:#039be5;--paper-light-blue-700:#0288d1;--paper-light-blue-800:# 0277bd;--paper-light-blue-900:#01579b;--paper-light-blue-a100:#80d8ff;--paper-li ght-blue-a200:#40c4ff;--paper-light-blue-a400:#00b0ff;--paper-light-blue-a700:#0 091ea;--paper-cyan-50:#e0f7fa;--paper-cyan-100:#b2ebf2;--paper-cyan-200:#80deea; --paper-cyan-300:#4dd0e1;--paper-cyan-400:#26c6da;--paper-cyan-500:#00bcd4;--pap er-cyan-600:#00acc1;--paper-cyan-700:#0097a7;--paper-cyan-800:#00838f;--paper-cy an-900:#006064;--paper-cyan-a100:#84ffff;--paper-cyan-a200:#18ffff;--paper-cyan- a400:#00e5ff;--paper-cyan-a700:#00b8d4;--paper-teal-50:#e0f2f1;--paper-teal-100: #b2dfdb;--paper-teal-200:#80cbc4;--paper-teal-300:#4db6ac;--paper-teal-400:#26a6 9a;--paper-teal-500:#009688;--paper-teal-600:#00897b;--paper-teal-700:#00796b;-- paper-teal-800:#00695c;--paper-teal-900:#004d40;--paper-teal-a100:#a7ffeb;--pape r-teal-a200:#64ffda;--paper-teal-a400:#1de9b6;--paper-teal-a700:#00bfa5;--paper- green-50:#e8f5e9;--paper-green-100:#c8e6c9;--paper-green-200:#a5d6a7;--paper-gre en-300:#81c784;--paper-green-400:#66bb6a;--paper-green-500:#4caf50;--paper-green -600:#43a047;--paper-green-700:#388e3c;--paper-green-800:#2e7d32;--paper-green-9 00:#1b5e20;--paper-green-a100:#b9f6ca;--paper-green-a200:#69f0ae;--paper-green-a 400:#00e676;--paper-green-a700:#00c853;--paper-light-green-50:#f1f8e9;--paper-li ght-green-100:#dcedc8;--paper-light-green-200:#c5e1a5;--paper-light-green-300:#a ed581;--paper-light-green-400:#9ccc65;--paper-light-green-500:#8bc34a;--paper-li ght-green-600:#7cb342;--paper-light-green-700:#689f38;--paper-light-green-800:#5 58b2f;--paper-light-green-900:#33691e;--paper-light-green-a100:#ccff90;--paper-l ight-green-a200:#b2ff59;--paper-light-green-a400:#76ff03;--paper-light-green-a70 0:#64dd17;--paper-lime-50:#f9fbe7;--paper-lime-100:#f0f4c3;--paper-lime-200:#e6e e9c;--paper-lime-300:#dce775;--paper-lime-400:#d4e157;--paper-lime-500:#cddc39;- -paper-lime-600:#c0ca33;--paper-lime-700:#afb42b;--paper-lime-800:#9e9d24;--pape r-lime-900:#827717;--paper-lime-a100:#f4ff81;--paper-lime-a200:#eeff41;--paper-l ime-a400:#c6ff00;--paper-lime-a700:#aeea00;--paper-yellow-50:#fffde7;--paper-yel low-100:#fff9c4;--paper-yellow-200:#fff59d;--paper-yellow-300:#fff176;--paper-ye llow-400:#ffee58;--paper-yellow-500:#ffeb3b;--paper-yellow-600:#fdd835;--paper-y ellow-700:#fbc02d;--paper-yellow-800:#f9a825;--paper-yellow-900:#f57f17;--paper- yellow-a100:#ffff8d;--paper-yellow-a200:#ffff00;--paper-yellow-a400:#ffea00;--pa per-yellow-a700:#ffd600;--paper-amber-50:#fff8e1;--paper-amber-100:#ffecb3;--pap er-amber-200:#ffe082;--paper-amber-300:#ffd54f;--paper-amber-400:#ffca28;--paper -amber-500:#ffc107;--paper-amber-600:#ffb300;--paper-amber-700:#ffa000;--paper-a mber-800:#ff8f00;--paper-amber-900:#ff6f00;--paper-amber-a100:#ffe57f;--paper-am ber-a200:#ffd740;--paper-amber-a400:#ffc400;--paper-amber-a700:#ffab00;--paper-o range-50:#fff3e0;--paper-orange-100:#ffe0b2;--paper-orange-200:#ffcc80;--paper-o range-300:#ffb74d;--paper-orange-400:#ffa726;--paper-orange-500:#ff9800;--paper- orange-600:#fb8c00;--paper-orange-700:#f57c00;--paper-orange-800:#ef6c00;--paper -orange-900:#e65100;--paper-orange-a100:#ffd180;--paper-orange-a200:#ffab40;--pa per-orange-a400:#ff9100;--paper-orange-a700:#ff6500;--paper-deep-orange-50:#fbe9 e7;--paper-deep-orange-100:#ffccbc;--paper-deep-orange-200:#ffab91;--paper-deep- orange-300:#ff8a65;--paper-deep-orange-400:#ff7043;--paper-deep-orange-500:#ff57 22;--paper-deep-orange-600:#f4511e;--paper-deep-orange-700:#e64a19;--paper-deep- orange-800:#d84315;--paper-deep-orange-900:#bf360c;--paper-deep-orange-a100:#ff9 e80;--paper-deep-orange-a200:#ff6e40;--paper-deep-orange-a400:#ff3d00;--paper-de ep-orange-a700:#dd2c00;--paper-brown-50:#efebe9;--paper-brown-100:#d7ccc8;--pape r-brown-200:#bcaaa4;--paper-brown-300:#a1887f;--paper-brown-400:#8d6e63;--paper- brown-500:#795548;--paper-brown-600:#6d4c41;--paper-brown-700:#5d4037;--paper-br own-800:#4e342e;--paper-brown-900:#3e2723;--paper-grey-50:#fafafa;--paper-grey-1 00:#f5f5f5;--paper-grey-200:#eeeeee;--paper-grey-300:#e0e0e0;--paper-grey-400:#b dbdbd;--paper-grey-500:#9e9e9e;--paper-grey-600:#757575;--paper-grey-700:#616161 ;--paper-grey-800:#424242;--paper-grey-900:#212121;--paper-blue-grey-50:#eceff1; --paper-blue-grey-100:#cfd8dc;--paper-blue-grey-200:#b0bec5;--paper-blue-grey-30 0:#90a4ae;--paper-blue-grey-400:#78909c;--paper-blue-grey-500:#607d8b;--paper-bl ue-grey-600:#546e7a;--paper-blue-grey-700:#455a64;--paper-blue-grey-800:#37474f; --paper-blue-grey-900:#263238;--dark-divider-opacity:0.12;--dark-disabled-opacit y:0.38;--dark-secondary-opacity:0.54;--dark-primary-opacity:0.87;--light-divider -opacity:0.12;--light-disabled-opacity:0.3;--light-secondary-opacity:0.7;--light -primary-opacity:1.0}</style> <style is="custom-style">:root{--primary-text-colo r:var(--light-theme-text-color);--primary-background-color:var(--light-theme-bac kground-color);--secondary-text-color:var(--light-theme-secondary-color);--disab led-text-color:var(--light-theme-disabled-color);--divider-color:var(--light-the me-divider-color);--error-color:var(--paper-deep-orange-a700);--primary-color:va r(--paper-indigo-500);--light-primary-color:var(--paper-indigo-100);--dark-prima ry-color:var(--paper-indigo-700);--accent-color:var(--paper-pink-a200);--light-a ccent-color:var(--paper-pink-a100);--dark-accent-color:var(--paper-pink-a400);-- light-theme-background-color:#ffffff;--light-theme-base-color:#000000;--light-th eme-text-color:var(--paper-grey-900);--light-theme-secondary-color:#737373;--lig ht-theme-disabled-color:#9b9b9b;--light-theme-divider-color:#dbdbdb;--dark-theme -background-color:var(--paper-grey-900);--dark-theme-base-color:#ffffff;--dark-t heme-text-color:#ffffff;--dark-theme-secondary-color:#bcbcbc;--dark-theme-disabl ed-color:#646464;--dark-theme-divider-color:#3c3c3c;--text-primary-color:var(--d ark-theme-text-color);--default-primary-color:var(--primary-color)}</style> <dom -module id="paper-fab" assetpath="/res/imp/bower_components/paper-fab/"> <templa te strip-whitespace=""> <style include="paper-material-shared-styles">:host{@app ly(--layout-vertical);@apply(--layout-center-center);background:var(--paper-fab- background,--accent-color);border-radius:50%;box-sizing:border-box;color:var(--t ext-primary-color);cursor:pointer;height:56px;min-width:0;outline:0;padding:16px ;position:relative;-moz-user-select:none;-ms-user-select:none;-webkit-user-selec t:none;user-select:none;width:56px;z-index:0;-webkit-tap-highlight-color:transpa rent;-webkit-tap-highlight-color:transparent;@apply(--paper-fab)}[hidden]{displa y:none!important}:host([mini]){width:40px;height:40px;padding:8px;@apply(--paper -fab-mini)}:host([disabled]){color:var(--paper-fab-disabled-text,--paper-grey-50 0);background:var(--paper-fab-disabled-background,--paper-grey-300);@apply(--pap er-fab-disabled)}iron-icon{@apply(--paper-fab-iron-icon)}span{width:100%;white-s pace:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;@apply(--pa per-fab-label)}:host(.keyboard-focus){background:var(--paper-fab-keyboard-focus- background,--paper-pink-900)}</style> <iron-icon id="icon" hidden$="{{!_computeI sIconFab(icon, src)}}" src="[[src]]" icon="[[icon]]"></iron-icon> <span hidden$= "{{_computeIsIconFab(icon, src)}}">{{label}}</span> </template> <script>Polymer( {is:"paper-fab",behaviors:[Polymer.PaperButtonBehavior],properties:{src:{type:St ring,value:""},icon:{type:String,value:""},mini:{type:Boolean,value:!1,reflectTo Attribute:!0},label:{type:String,observer:"_labelChanged"}},_labelChanged:functi on(){this.setAttribute("aria-label",this.label)},_computeIsIconFab:function(e,t) {return e.length>0||t.length>0}})</script> </dom-module> <script>Polymer.PaperIn kyFocusBehaviorImpl={observers:["_focusedChanged(receivedFocusFromKeyboard)"],_f ocusedChanged:function(e){e&&this.ensureRipple(),this.hasRipple()&&(this._ripple .holdDown=e)},_createRipple:function(){var e=Polymer.PaperRippleBehavior._create Ripple();return e.id="ink",e.setAttribute("center",""),e.classList.add("circle") ,e}},Polymer.PaperInkyFocusBehavior=[Polymer.IronButtonState,Polymer.IronControl State,Polymer.PaperRippleBehavior,Polymer.PaperInkyFocusBehaviorImpl]</script> < dom-module id="paper-icon-button" assetpath="/res/imp/bower_components/paper-ico n-button/"> <template strip-whitespace=""> <style>:host{display:inline-block;pos ition:relative;padding:8px;outline:0;-webkit-user-select:none;-moz-user-select:n one;-ms-user-select:none;user-select:none;cursor:pointer;z-index:0;line-height:1 ;width:40px;height:40px;-webkit-tap-highlight-color:transparent;-webkit-tap-high light-color:transparent;box-sizing:border-box!important;@apply(--paper-icon-butt on)}:host #ink{color:var(--paper-icon-button-ink-color,--primary-text-color);opa city:.6}:host([disabled]){color:var(--paper-icon-button-disabled-text,--disabled -text-color);pointer-events:none;cursor:auto;@apply(--paper-icon-button-disabled )}:host(:hover){@apply(--paper-icon-button-hover)}iron-icon{--iron-icon-width:10 0%;--iron-icon-height:100%}</style> <iron-icon id="icon" src="[[src]]" icon="[[i con]]" alt$="[[alt]]"></iron-icon> </template> <script>Polymer({is:"paper-icon-b utton",hostAttributes:{role:"button",tabindex:"0"},behaviors:[Polymer.PaperInkyF ocusBehavior],properties:{src:{type:String},icon:{type:String},alt:{type:String, observer:"_altChanged"}},_altChanged:function(t,e){var r=this.getAttribute("aria -label");r&&e!=r||this.setAttribute("aria-label",t)}})</script> </dom-module> <s cript>Polymer.PaperItemBehaviorImpl={hostAttributes:{role:"option",tabindex:"0"} },Polymer.PaperItemBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Po lymer.PaperItemBehaviorImpl]</script> <link rel="stylesheet" href="https://fonts .googleapis.com/css?family=Roboto:400,300,300italic,400italic,500,500italic,700, 700italic"> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family =Roboto+Mono:400,700"> <style is="custom-style">:root{--paper-font-common-base:{ font-family:Roboto,Noto,sans-serif;-webkit-font-smoothing:antialiased};--paper-f ont-common-code:{font-family:'Roboto Mono',Consolas,Menlo,monospace;-webkit-font -smoothing:antialiased};--paper-font-common-expensive-kerning:{text-rendering:op timizeLegibility};--paper-font-common-nowrap:{white-space:nowrap;overflow:hidden ;text-overflow:ellipsis};--paper-font-display4:{@apply(--paper-font-common-base) ;@apply(--paper-font-common-nowrap);font-size:112px;font-weight:300;letter-spaci ng:-.044em;line-height:120px};--paper-font-display3:{@apply(--paper-font-common- base);@apply(--paper-font-common-nowrap);font-size:56px;font-weight:400;letter-s pacing:-.026em;line-height:60px};--paper-font-display2:{@apply(--paper-font-comm on-base);font-size:45px;font-weight:400;letter-spacing:-.018em;line-height:48px} ;--paper-font-display1:{@apply(--paper-font-common-base);font-size:34px;font-wei ght:400;letter-spacing:-.01em;line-height:40px};--paper-font-headline:{@apply(-- paper-font-common-base);font-size:24px;font-weight:400;letter-spacing:-.012em;li ne-height:32px};--paper-font-title:{@apply(--paper-font-common-base);@apply(--pa per-font-common-nowrap);font-size:20px;font-weight:500;line-height:28px};--paper -font-subhead:{@apply(--paper-font-common-base);font-size:16px;font-weight:400;l ine-height:24px};--paper-font-body2:{@apply(--paper-font-common-base);font-size: 14px;font-weight:500;line-height:24px};--paper-font-body1:{@apply(--paper-font-c ommon-base);font-size:14px;font-weight:400;line-height:20px};--paper-font-captio n:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size :12px;font-weight:400;letter-spacing:0.011em;line-height:20px};--paper-font-menu :{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size: 13px;font-weight:500;line-height:24px};--paper-font-button:{@apply(--paper-font- common-base);@apply(--paper-font-common-nowrap);font-size:14px;font-weight:500;l etter-spacing:0.018em;line-height:24px;text-transform:uppercase};--paper-font-co de2:{@apply(--paper-font-common-code);font-size:14px;font-weight:700;line-height :20px};--paper-font-code1:{@apply(--paper-font-common-code);font-size:14px;font- weight:500;line-height:20px};}</style> <dom-module id="paper-item-shared-styles" assetpath="/res/imp/bower_components/paper-item/"> <template> <style>.paper-ite m,:host{display:block;position:relative;min-height:var(--paper-item-min-height,4 8px);padding:0 16px}.paper-item{@apply(--paper-font-subhead);border:none;outline :0;background:#fff;width:100%;text-align:left}.paper-item[hidden],:host([hidden] ){display:none!important}.paper-item.iron-selected,:host(.iron-selected){font-we ight:var(--paper-item-selected-weight,bold);@apply(--paper-item-selected)}.paper -item[disabled],:host([disabled]){color:var(--paper-item-disabled-color,--disabl ed-text-color);@apply(--paper-item-disabled)}.paper-item:focus,:host(:focus){pos ition:relative;outline:0;@apply(--paper-item-focused)}.paper-item:focus:before,: host(:focus):before{@apply(--layout-fit);background:currentColor;content:'';opac ity:var(--dark-divider-opacity);pointer-events:none;@apply(--paper-item-focused- before)}</style> </template> </dom-module> <dom-module id="paper-item" assetpath ="/res/imp/bower_components/paper-item/"> <template> <style include="paper-item- shared-styles"></style> <style>:host{@apply(--layout-horizontal);@apply(--layout -center);@apply(--paper-font-subhead);@apply(--paper-item)}</style> <content></c ontent> </template> <script>Polymer({is:"paper-item",behaviors:[Polymer.PaperIte mBehavior]})</script> </dom-module> <script>Polymer.IronSelection=function(e){th is.selection=[],this.selectCallback=e},Polymer.IronSelection.prototype={get:func tion(){return this.multi?this.selection.slice():this.selection[0]},clear:functio n(e){this.selection.slice().forEach(function(t){(!e||e.indexOf(t)<0)&&this.setIt emSelected(t,!1)},this)},isSelected:function(e){return this.selection.indexOf(e) >=0},setItemSelected:function(e,t){if(null!=e&&t!==this.isSelected(e)){if(t)this .selection.push(e);else{var i=this.selection.indexOf(e);i>=0&&this.selection.spl ice(i,1)}this.selectCallback&&this.selectCallback(e,t)}},select:function(e){this .multi?this.toggle(e):this.get()!==e&&(this.setItemSelected(this.get(),!1),this. setItemSelected(e,!0))},toggle:function(e){this.setItemSelected(e,!this.isSelect ed(e))}}</script> <script>Polymer.IronSelectableBehavior={properties:{attrForSel ected:{type:String,value:null},selected:{type:String,notify:!0},selectedItem:{ty pe:Object,readOnly:!0,notify:!0},activateEvent:{type:String,value:"tap",observer :"_activateEventChanged"},selectable:String,selectedClass:{type:String,value:"ir on-selected"},selectedAttribute:{type:String,value:null},fallbackSelection:{type :String,value:null},items:{type:Array,readOnly:!0,notify:!0,value:function(){ret urn[]}},_excludedLocalNames:{type:Object,value:function(){return{template:1}}}}, observers:["_updateAttrForSelected(attrForSelected)","_updateSelected(selected)" ,"_checkFallback(fallbackSelection)"],created:function(){this._bindFilterItem=th is._filterItem.bind(this),this._selection=new Polymer.IronSelection(this._applyS election.bind(this))},attached:function(){this._observer=this._observeItems(this ),this._updateItems(),this._shouldUpdateSelection||this._updateSelected(),this._ addListener(this.activateEvent)},detached:function(){this._observer&&Polymer.dom (this).unobserveNodes(this._observer),this._removeListener(this.activateEvent)}, indexOf:function(e){return this.items.indexOf(e)},select:function(e){this.select ed=e},selectPrevious:function(){var e=this.items.length,t=(Number(this._valueToI ndex(this.selected))-1+e)%e;this.selected=this._indexToValue(t)},selectNext:func tion(){var e=(Number(this._valueToIndex(this.selected))+1)%this.items.length;thi s.selected=this._indexToValue(e)},selectIndex:function(e){this.select(this._inde xToValue(e))},forceSynchronousItemUpdate:function(){this._updateItems()},get _sh ouldUpdateSelection(){return null!=this.selected},_checkFallback:function(){this ._shouldUpdateSelection&&this._updateSelected()},_addListener:function(e){this.l isten(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=Polymer.dom(this).queryD istributedElements(this.selectable||"*");e=Array.prototype.filter.call(e,this._b indFilterItem),this._setItems(e)},_updateAttrForSelected:function(){this._should UpdateSelection&&(this.selected=this._indexToValue(this.indexOf(this.selectedIte m)))},_updateSelected:function(){this._selectSelected(this.selected)},_selectSel ected:function(e){this._selection.select(this._valueToItem(this.selected)),this. fallbackSelection&&this.items.length&&void 0===this._selection.get()&&(this.sele cted=this.fallbackSelection)},_filterItem:function(e){return!this._excludedLocal Names[e.localName]},_valueToItem:function(e){return null==e?null:this.items[this ._valueToIndex(e)]},_valueToIndex:function(e){if(!this.attrForSelected)return Nu mber(e);for(var t,i=0;t=this.items[i];i++)if(this._valueForItem(t)==e)return i}, _indexToValue:function(e){if(!this.attrForSelected)return e;var t=this.items[e]; return t?this._valueForItem(t):void 0},_valueForItem:function(e){var t=e[Polymer .CaseMap.dashToCamelCase(this.attrForSelected)];return void 0!=t?t:e.getAttribut e(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?"selec t":"deselect"),{item:e})},_selectionChange:function(){this._setSelectedItem(this ._selection.get())},_observeItems:function(e){return Polymer.dom(e).observeNodes (function(e){this._updateItems(),this._shouldUpdateSelection&&this._updateSelect ed(),this.fire("iron-items-changed",e,{bubbles:!1,cancelable:!1})})},_activateHa ndler:function(e){for(var t=e.target,i=this.items;t&&t!=this;){var s=i.indexOf(t );if(s>=0){var n=this._indexToValue(s);return void this._itemActivate(n,t)}t=t.p arentNode}},_itemActivate:function(e,t){this.fire("iron-activate",{selected:e,it em:t},{cancelable:!0}).defaultPrevented||this.select(e)}}</script> <script>Polym er.IronMultiSelectableBehaviorImpl={properties:{multi:{type:Boolean,value:!1,obs erver:"multiChanged"},selectedValues:{type:Array,notify:!0},selectedItems:{type: Array,readOnly:!0,notify:!0}},observers:["_updateSelected(selectedValues.splices )"],select:function(e){this.multi?this.selectedValues?this._toggleSelected(e):th is.selectedValues=[e]:this.selected=e},multiChanged:function(e){this._selection. multi=e},get _shouldUpdateSelection(){return null!=this.selected||null!=this.sel ectedValues&&this.selectedValues.length},_updateAttrForSelected:function(){this. multi?this._shouldUpdateSelection&&(this.selectedValues=this.selectedItems.map(f unction(e){return this._indexToValue(this.indexOf(e))},this).filter(function(e){ return null!=e},this)):Polymer.IronSelectableBehavior._updateAttrForSelected.app ly(this)},_updateSelected:function(){this.multi?this._selectMulti(this.selectedV alues):this._selectSelected(this.selected)},_selectMulti:function(e){if(e){var t =this._valuesToItems(e);this._selection.clear(t);for(var l=0;l<t.length;l++)this ._selection.setItemSelected(t[l],!0);if(this.fallbackSelection&&this.items.lengt h&&!this._selection.get().length){var s=this._valueToItem(this.fallbackSelection );s&&(this.selectedValues=[this.fallbackSelection])}}else this._selection.clear( )},_selectionChange:function(){var e=this._selection.get();this.multi?this._setS electedItems(e):(this._setSelectedItems([e]),this._setSelectedItem(e))},_toggleS elected:function(e){var t=this.selectedValues.indexOf(e),l=t<0;l?this.push("sele ctedValues",e):this.splice("selectedValues",t,1)},_valuesToItems:function(e){ret urn null==e?null:e.map(function(e){return this._valueToItem(e)},this)}},Polymer. IronMultiSelectableBehavior=[Polymer.IronSelectableBehavior,Polymer.IronMultiSel ectableBehaviorImpl]</script> <script>Polymer.IronMenuBehaviorImpl={properties:{ focusedItem:{observer:"_focusedItemChanged",readOnly:!0,type:Object},attrForItem Title:{type:String}},_SEARCH_RESET_TIMEOUT_MS:1e3,hostAttributes:{role:"menu",ta bindex:"0"},observers:["_updateMultiselectable(multi)"],listeners:{focus:"_onFoc us",keydown:"_onKeydown","iron-items-changed":"_onIronItemsChanged"},keyBindings :{up:"_onUpKey",down:"_onDownKey",esc:"_onEscKey","shift+tab:keydown":"_onShiftT abDown"},attached:function(){this._resetTabindices()},select:function(e){this._d efaultFocusAsync&&(this.cancelAsync(this._defaultFocusAsync),this._defaultFocusA sync=null);var t=this._valueToItem(e);t&&t.hasAttribute("disabled")||(this._setF ocusedItem(t),Polymer.IronMultiSelectableBehaviorImpl.select.apply(this,argument s))},_resetTabindices:function(){var e=this.multi?this.selectedItems&&this.selec tedItems[0]:this.selectedItem;this.items.forEach(function(t){t.setAttribute("tab index",t===e?"0":"-1")},this)},_updateMultiselectable:function(e){e?this.setAttr ibute("aria-multiselectable","true"):this.removeAttribute("aria-multiselectable" )},_focusWithKeyboardEvent:function(e){this.cancelDebouncer("_clearSearchText"); var t=this._searchText||"",s=e.key&&1==e.key.length?e.key:String.fromCharCode(e. keyCode);t+=s.toLocaleLowerCase();for(var i,o=t.length,n=0;i=this.items[n];n++)i f(!i.hasAttribute("disabled")){var r=this.attrForItemTitle||"textContent",a=(i[r ]||i.getAttribute(r)||"").trim();if(!(a.length<o)&&a.slice(0,o).toLocaleLowerCas e()==t){this._setFocusedItem(i);break}}this._searchText=t,this.debounce("_clearS earchText",this._clearSearchText,this._SEARCH_RESET_TIMEOUT_MS)},_clearSearchTex t:function(){this._searchText=""},_focusPrevious:function(){for(var e=this.items .length,t=Number(this.indexOf(this.focusedItem)),s=1;s<e+1;s++){var i=this.items [(t-s+e)%e];if(!i.hasAttribute("disabled")){var o=Polymer.dom(i).getOwnerRoot()| |document;if(this._setFocusedItem(i),Polymer.dom(o).activeElement==i)return}}},_ focusNext:function(){for(var e=this.items.length,t=Number(this.indexOf(this.focu sedItem)),s=1;s<e+1;s++){var i=this.items[(t+s)%e];if(!i.hasAttribute("disabled" )){var o=Polymer.dom(i).getOwnerRoot()||document;if(this._setFocusedItem(i),Poly mer.dom(o).activeElement==i)return}}},_applySelection:function(e,t){t?e.setAttri bute("aria-selected","true"):e.removeAttribute("aria-selected"),Polymer.IronSele ctableBehavior._applySelection.apply(this,arguments)},_focusedItemChanged:functi on(e,t){t&&t.setAttribute("tabindex","-1"),e&&(e.setAttribute("tabindex","0"),e. focus())},_onIronItemsChanged:function(e){e.detail.addedNodes.length&&this._rese tTabindices()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");P olymer.IronMenuBehaviorImpl._shiftTabPressed=!0,this._setFocusedItem(null),this. setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex" ,t),Polymer.IronMenuBehaviorImpl._shiftTabPressed=!1},1)},_onFocus:function(e){i f(!Polymer.IronMenuBehaviorImpl._shiftTabPressed){var t=Polymer.dom(e).rootTarge t;(t===this||"undefined"==typeof t.tabIndex||this.isLightDescendant(t))&&(this._ defaultFocusAsync=this.async(function(){var e=this.multi?this.selectedItems&&thi s.selectedItems[0]:this.selectedItem;this._setFocusedItem(null),e?this._setFocus edItem(e):this.items[0]&&this._focusNext()}))}},_onUpKey:function(e){this._focus Previous(),e.detail.keyboardEvent.preventDefault()},_onDownKey:function(e){this. _focusNext(),e.detail.keyboardEvent.preventDefault()},_onEscKey:function(e){this .focusedItem.blur()},_onKeydown:function(e){this.keyboardEventMatchesKeys(e,"up down esc")||this._focusWithKeyboardEvent(e),e.stopPropagation()},_activateHandle r:function(e){Polymer.IronSelectableBehavior._activateHandler.call(this,e),e.sto pPropagation()}},Polymer.IronMenuBehaviorImpl._shiftTabPressed=!1,Polymer.IronMe nuBehavior=[Polymer.IronMultiSelectableBehavior,Polymer.IronA11yKeysBehavior,Pol ymer.IronMenuBehaviorImpl]</script> <dom-module id="paper-menu-shared-styles" as setpath="/res/imp/bower_components/paper-menu/"> <template> <style>.selectable-c ontent>::content>.iron-selected{font-weight:700;@apply(--paper-menu-selected-ite m)}.selectable-content>::content>[disabled]{color:var(--paper-menu-disabled-colo r,--disabled-text-color)}.selectable-content>::content>:focus{position:relative; outline:0;@apply(--paper-menu-focused-item)}.selectable-content>::content>:focus :after{@apply(--layout-fit);background:currentColor;opacity:var(--dark-divider-o pacity);content:'';pointer-events:none;@apply(--paper-menu-focused-item-after)}. selectable-content>::content>[colored]:focus:after{opacity:.26}</style> </templa te> </dom-module> <dom-module id="paper-menu" assetpath="/res/imp/bower_componen ts/paper-menu/"> <template> <style include="paper-menu-shared-styles"></style> < style>:host{display:block;padding:8px 0;background:var(--paper-menu-background-c olor,--primary-background-color);color:var(--paper-menu-color,--primary-text-col or);@apply(--paper-menu)}</style> <div class="selectable-content"> <content></co ntent> </div> </template> <script>!function(){Polymer({is:"paper-menu",behaviors :[Polymer.IronMenuBehavior]})}()</script> </dom-module> <script>Polymer.PaperSpi nnerBehavior={listeners:{animationend:"__reset",webkitAnimationEnd:"__reset"},pr operties:{active:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"__active Changed"},alt:{type:String,value:"loading",observer:"__altChanged"},__coolingDow n:{type:Boolean,value:!1}},__computeContainerClasses:function(e,t){return[e||t?" active":"",t?"cooldown":""].join(" ")},__activeChanged:function(e,t){this.__setA riaHidden(!e),this.__coolingDown=!e&&t},__altChanged:function(e){e===this.getPro pertyInfo("alt").value?this.alt=this.getAttribute("aria-label")||e:(this.__setAr iaHidden(""===e),this.setAttribute("aria-label",e))},__setAriaHidden:function(e) {var t="aria-hidden";e?this.setAttribute(t,"true"):this.removeAttribute(t)},__re set:function(){this.active=!1,this.__coolingDown=!1}}</script> <dom-module id="p aper-spinner-styles" assetpath="/res/imp/bower_components/paper-spinner/"> <temp late> <style>:host{display:inline-block;position:relative;width:28px;height:28px ;--paper-spinner-container-rotation-duration:1568ms;--paper-spinner-expand-contr act-duration:1333ms;--paper-spinner-full-cycle-duration:5332ms;--paper-spinner-c ooldown-duration:400ms}#spinnerContainer{width:100%;height:100%;direction:ltr}#s pinnerContainer.active{-webkit-animation:container-rotate var(--paper-spinner-co ntainer-rotation-duration) linear infinite;animation:container-rotate var(--pape r-spinner-container-rotation-duration) linear infinite}@-webkit-keyframes contai ner-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{t ransform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100% ;opacity:0;white-space:nowrap;border-color:var(--paper-spinner-color,--google-bl ue-500)}.layer-1{border-color:var(--paper-spinner-layer-1-color,--google-blue-50 0)}.layer-2{border-color:var(--paper-spinner-layer-2-color,--google-red-500)}.la yer-3{border-color:var(--paper-spinner-layer-3-color,--google-yellow-500)}.layer -4{border-color:var(--paper-spinner-layer-4-color,--google-green-500)}.active .s pinner-layer{-webkit-animation-name:fill-unfill-rotate;-webkit-animation-duratio n:var(--paper-spinner-full-cycle-duration);-webkit-animation-timing-function:cub ic-bezier(.4,0,.2,1);-webkit-animation-iteration-count:infinite;animation-name:f ill-unfill-rotate;animation-duration:var(--paper-spinner-full-cycle-duration);an imation-timing-function:cubic-bezier(.4,0,.2,1);animation-iteration-count:infini te;opacity:1}.active .spinner-layer.layer-1{-webkit-animation-name:fill-unfill-r otate,layer-1-fade-in-out;animation-name:fill-unfill-rotate,layer-1-fade-in-out} .active .spinner-layer.layer-2{-webkit-animation-name:fill-unfill-rotate,layer-2 -fade-in-out;animation-name:fill-unfill-rotate,layer-2-fade-in-out}.active .spin ner-layer.layer-3{-webkit-animation-name:fill-unfill-rotate,layer-3-fade-in-out; animation-name:fill-unfill-rotate,layer-3-fade-in-out}.active .spinner-layer.lay er-4{-webkit-animation-name:fill-unfill-rotate,layer-4-fade-in-out;animation-nam e:fill-unfill-rotate,layer-4-fade-in-out}@-webkit-keyframes fill-unfill-rotate{1 2.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5% {-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-we bkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit -transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill- unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{ transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675 deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:ro tate(1080deg)}}@-webkit-keyframes layer-1-fade-in-out{0%{opacity:1}25%{opacity:1 }26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@keyframes layer-1-fade -in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{ opacity:1}}@-webkit-keyframes layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25% {opacity:1}50%{opacity:1}51%{opacity:0}to{opacity:0}}@keyframes layer-2-fade-in- out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}to{opac ity:0}}@-webkit-keyframes layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opa city:1}75%{opacity:1}76%{opacity:0}to{opacity:0}}@keyframes layer-3-fade-in-out{ 0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}to{opacity: 0}}@-webkit-keyframes layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity :1}90%{opacity:1}to{opacity:0}}@keyframes layer-4-fade-in-out{0%{opacity:0}65%{o pacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}.circle-clipper{display:inlin e-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inh erit}.spinner-layer::after{left:45%;width:10%;border-top-style:solid}.circle-cli pper::after,.spinner-layer::after{content:'';box-sizing:border-box;position:abso lute;top:0;border-width:var(--paper-spinner-stroke-width,3px);border-color:inher it;border-radius:50%}.circle-clipper::after{bottom:0;width:200%;border-style:sol id;border-bottom-color:transparent!important}.circle-clipper.left::after{left:0; border-right-color:transparent!important;-webkit-transform:rotate(129deg);transf orm:rotate(129deg)}.circle-clipper.right::after{left:-100%;border-left-color:tra nsparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}. active .circle-clipper::after,.active .gap-patch::after{-webkit-animation-durati on:var(--paper-spinner-expand-contract-duration);-webkit-animation-timing-functi on:cubic-bezier(.4,0,.2,1);-webkit-animation-iteration-count:infinite;animation- duration:var(--paper-spinner-expand-contract-duration);animation-timing-function :cubic-bezier(.4,0,.2,1);animation-iteration-count:infinite}.active .circle-clip per.left::after{-webkit-animation-name:left-spin;animation-name:left-spin}.activ e .circle-clipper.right::after{-webkit-animation-name:right-spin;animation-name: right-spin}@-webkit-keyframes left-spin{0%{-webkit-transform:rotate(130deg)}50%{ -webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{0%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}to{transform:r otate(130deg)}}@-webkit-keyframes right-spin{0%{-webkit-transform:rotate(-130deg )}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyf rames right-spin{0%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}to{tran sform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-ro tate var(--paper-spinner-container-rotation-duration) linear infinite,fade-out v ar(--paper-spinner-cooldown-duration) cubic-bezier(.4,0,.2,1);animation:containe r-rotate var(--paper-spinner-container-rotation-duration) linear infinite,fade-o ut var(--paper-spinner-cooldown-duration) cubic-bezier(.4,0,.2,1)}@-webkit-keyfr ames fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-out{0%{opacity:1}to{opa city:0}}</style> </template> </dom-module> <dom-module id="paper-spinner-lite" a ssetpath="/res/imp/bower_components/paper-spinner/"> <template strip-whitespace= ""> <style include="paper-spinner-styles"></style> <div id="spinnerContainer" cl ass-name="[[__computeContainerClasses(active, __coolingDown)]]"> <div class="spi nner-layer"> <div class="circle-clipper left"></div> <div class="circle-clipper right"></div> </div> </div> </template> <script>Polymer({is:"paper-spinner-lite" ,behaviors:[Polymer.PaperSpinnerBehavior]})</script> </dom-module> <script>!func tion(){"use strict";Polymer.IronJsonpLibraryBehavior={properties:{libraryLoaded: {type:Boolean,value:!1,notify:!0,readOnly:!0},libraryErrorMessage:{type:String,v alue:null,notify:!0,readOnly:!0}},observers:["_libraryUrlChanged(libraryUrl)"],_ libraryUrlChanged:function(r){this._isReady&&this.libraryUrl&&this._loadLibrary( )},_libraryLoadCallback:function(r,i){r?(console.warn("Library load failed:",r.m essage),this._setLibraryErrorMessage(r.message)):(this._setLibraryErrorMessage(n ull),this._setLibraryLoaded(!0),this.notifyEvent&&this.fire(this.notifyEvent,i)) },_loadLibrary:function(){r.require(this.libraryUrl,this._libraryLoadCallback.bi nd(this),this.callbackName)},ready:function(){this._isReady=!0,this.libraryUrl&& this._loadLibrary()}};var r={apiMap:{},require:function(r,t,e){var a=this.nameFr omUrl(r);this.apiMap[a]||(this.apiMap[a]=new i(a,r,e)),this.apiMap[a].requestNot ify(t)},nameFromUrl:function(r){return r.replace(/[\:\/\%\?\&\.\=\-\,]/g,"_")+"_ api"}},i=function(r,i,t){if(this.notifiers=[],!t){if(!(i.indexOf(this.callbackMa cro)>=0))return void(this.error=new Error("IronJsonpLibraryBehavior a %%callback %% parameter is required in libraryUrl"));t=r+"_loaded",i=i.replace(this.callbac kMacro,t)}this.callbackName=t,window[this.callbackName]=this.success.bind(this), this.addScript(i)};i.prototype={callbackMacro:"%%callback%%",loaded:!1,addScript :function(r){var i=document.createElement("script");i.src=r,i.onerror=this.handl eError.bind(this);var t=document.querySelector("script")||document.body;t.parent Node.insertBefore(i,t),this.script=i},removeScript:function(){this.script.parent Node&&this.script.parentNode.removeChild(this.script),this.script=null},handleEr ror:function(r){this.error=new Error("Library failed to load"),this.notifyAll(), this.cleanup()},success:function(){this.loaded=!0,this.result=Array.prototype.sl ice.call(arguments),this.notifyAll(),this.cleanup()},cleanup:function(){delete w indow[this.callbackName]},notifyAll:function(){this.notifiers.forEach(function(r ){r(this.error,this.result)}.bind(this)),this.notifiers=[]},requestNotify:functi on(r){this.loaded||this.error?r(this.error,this.result):this.notifiers.push(r)}} }()</script> <script>Polymer({is:"iron-jsonp-library",behaviors:[Polymer.IronJso npLibraryBehavior],properties:{libraryUrl:String,callbackName:String,notifyEvent :String}})</script> <script>Polymer({is:"google-js-api",behaviors:[Polymer.IronJ sonpLibraryBehavior],properties:{libraryUrl:{type:String,value:"https://apis.goo gle.com/js/api.js?onload=%%callback%%"},notifyEvent:{type:String,value:"js-api-l oad"}},get api(){return gapi}})</script> <script>!function(){var e={appPackageNa me:"apppackagename",clientId:"clientid",cookiePolicy:"cookiepolicy",hostedDomain :"hostedDomain",openidPrompt:"prompt",requestVisibleActions:"requestvisibleactio ns"},t={_clientId:null,get clientId(){return this._clientId},set clientId(e){if( this._clientId&&e&&e!=this._clientId)throw new Error("clientId cannot change. Va lues do not match. New: "+e+" Old:"+this._clientId);e&&e!=this._clientId&&(this. _clientId=e,this.initAuth2())},_cookiePolicy:"single_host_origin",get cookiePoli cy(){return this._cookiePolicy},set cookiePolicy(e){e&&(this._cookiePolicy=e)},_ appPackageName:"",get appPackageName(){return this._appPackageName},set appPacka geName(e){if(this._appPackageName&&e&&e!=this._appPackageName)throw new Error("a ppPackageName cannot change. Values do not match. New: "+e+" Old: "+this._appPac kageName);e&&(this._appPackageName=e)},_requestVisibleActions:"",get requestVisi bleactions(){return this._requestVisibleActions},set requestVisibleactions(e){if (this._requestVisibleActions&&e&&e!=this._requestVisibleActions)throw new Error( "requestVisibleactions cannot change. Values do not match. New: "+e+" Old: "+thi s._requestVisibleActions);e&&(this._requestVisibleActions=e)},_hostedDomain:"",g et hostedDomain(){return this._hostedDomain},set hostedDomain(e){if(this._hosted Domain&&e&&e!=this._hostedDomain)throw new Error("hostedDomain cannot change. Va lues do not match. New: "+e+" Old: "+this._hostedDomain);e&&(this._hostedDomain= e)},_openidPrompt:"",get openidPrompt(){return this._openidPrompt},set openidPro mpt(e){if("string"!=typeof e)throw new Error("openidPrompt must be a string. Rec eived "+typeof e);if(e){var t=e.split(" ");t=t.map(function(e){return e.trim()}) ,t=t.filter(function(e){return e});var i={none:0,login:0,consent:0,select_accoun t:0};t.forEach(function(e){if("none"==e&&t.length>1)throw new Error("none cannot be combined with other openidPrompt values");if(!(e in i))throw new Error("inva lid openidPrompt value "+e+". Valid values: "+Object.keys(i).join(", "))})}this. _openidPrompt=e},_offline:!1,get offline(){return this._offline},set offline(e){ this._offline=e,this.updateAdditionalAuth()},_offlineAlwaysPrompt:!1,get offline AlwaysPrompt(){return this._offlineAlwaysPrompt},set offlineAlwaysPrompt(e){this ._offlineAlwaysPrompt=e,this.updateAdditionalAuth()},offlineGranted:!1,_apiLoade r:null,_requestedScopeArray:[],get requestedScopes(){return this._requestedScope Array.join(" ")},_signedIn:!1,_grantedScopeArray:[],_needAdditionalAuth:!0,_hasP lusScopes:!1,signinAwares:[],init:function(){this._apiLoader=document.createElem ent("google-js-api"),this._apiLoader.addEventListener("js-api-load",this.loadAut h2.bind(this))},loadAuth2:function(){gapi.load("auth2",this.initAuth2.bind(this) )},initAuth2:function(){if("gapi"in window&&"auth2"in window.gapi&&this.clientId ){var e=gapi.auth2.init({client_id:this.clientId,cookie_policy:this.cookiePolicy ,scope:this.requestedScopes,hosted_domain:this.hostedDomain});e.currentUser.list en(this.handleUserUpdate.bind(this)),e.then(function(){},function(e){console.err or(e)})}},handleUserUpdate:function(e){var t=e.isSignedIn();if(t!=this._signedIn ){this._signedIn=t;for(var i=0;i<this.signinAwares.length;i++)this.signinAwares[ i]._setSignedIn(t)}this._grantedScopeArray=this.strToScopeArray(e.getGrantedScop es()),this.updateAdditionalAuth();for(var n=e.getAuthResponse(),i=0;i<this.signi nAwares.length;i++)this.signinAwares[i]._updateScopeStatus(n)},setOfflineCode:fu nction(e){for(var t=0;t<this.signinAwares.length;t++)this.signinAwares[t]._updat eOfflineCode(e)},strToScopeArray:function(e){if(!e)return[];for(var t=e.replace( /\ +/g," ").trim().split(" "),i=0;i<t.length;i++)t[i]=t[i].toLowerCase(),"https: //www.googleapis.com/auth/userinfo.profile"===t[i]&&(t[i]="profile"),"https://ww w.googleapis.com/auth/userinfo.email"===t[i]&&(t[i]="email");return t.filter(fun ction(e,t,i){return i.indexOf(e)===t})},isPlusScope:function(e){return e.indexOf ("/auth/games")>-1||e.indexOf("auth/plus.")>-1&&e.indexOf("auth/plus.me")<0},has GrantedScopes:function(e){for(var t=this.strToScopeArray(e),i=0;i<t.length;i++)i f(this._grantedScopeArray.indexOf(t[i])===-1)return!1;return!0},requestScopes:fu nction(e){for(var t=this.strToScopeArray(e),i=!1,n=0;n<t.length;n++)this._reques tedScopeArray.indexOf(t[n])===-1&&(this._requestedScopeArray.push(t[n]),i=!0);i& &(this.updateAdditionalAuth(),this.updatePlusScopes())},updateAdditionalAuth:fun ction(){var e=!1;if(!this.offlineAlwaysPrompt&&!this.offline||this.offlineGrante d){for(var t=0;t<this._requestedScopeArray.length;t++)if(this._grantedScopeArray .indexOf(this._requestedScopeArray[t])===-1){e=!0;break}}else e=!0;if(this._need AdditionalAuth!=e){this._needAdditionalAuth=e;for(var t=0;t<this.signinAwares.le ngth;t++)this.signinAwares[t]._setNeedAdditionalAuth(e)}},updatePlusScopes:funct ion(){for(var e=!1,t=0;t<this._requestedScopeArray.length;t++)if(this.isPlusScop e(this._requestedScopeArray[t])){e=!0;break}if(this._hasPlusScopes!=e){this._has PlusScopes=e;for(var t=0;t<this.signinAwares.length;t++)this.signinAwares[t]._se tHasPlusScopes(e)}},attachSigninAware:function(e){this.signinAwares.indexOf(e)== -1?(this.signinAwares.push(e),e._setNeedAdditionalAuth(this._needAdditionalAuth) ,e._setSignedIn(this._signedIn),e._setHasPlusScopes(this._hasPlusScopes)):consol e.warn("signinAware attached more than once",e)},detachSigninAware:function(e){v ar t=this.signinAwares.indexOf(e);t!=-1?this.signinAwares.splice(t,1):console.wa rn("Trying to detach unattached signin-aware")},getMissingScopes:function(){retu rn this._requestedScopeArray.filter(function(e){return this._grantedScopeArray.i ndexOf(e)===-1}.bind(this)).join(" ")},assertAuthInitialized:function(){if(!this .clientId)throw new Error("AuthEngine not initialized. clientId has not been con figured.");if(!("gapi"in window))throw new Error("AuthEngine not initialized. ga pi has not loaded.");if(!("auth2"in window.gapi))throw new Error("AuthEngine not initialized. auth2 not loaded.")},signIn:function(){this.assertAuthInitialized( );var i={scope:this.getMissingScopes()};Object.keys(e).forEach(function(t){this[ t]&&""!==this[t]&&(i[e[t]]=this[t])},this);var n,o=gapi.auth2.getAuthInstance(). currentUser.get();this.offline||this.offlineAlwaysPrompt?(i.redirect_uri="postme ssage",this.offlineAlwaysPrompt&&(i.approval_prompt="force"),n=gapi.auth2.getAut hInstance().grantOfflineAccess(i)):n=o.getGrantedScopes()?o.grant(i):gapi.auth2. getAuthInstance().signIn(i),n.then(function(e){var i;e.code?(t.offlineGranted=!0 ,i=gapi.auth2.getAuthInstance().currentUser.get(),t.setOfflineCode(e.code)):i=e; i.getAuthResponse()},function(e){"Access denied."!==e.reason&&this.signinAwares. forEach(function(t){t.errorNotify(e)})}.bind(this))},signOut:function(){this.ass ertAuthInitialized(),gapi.auth2.getAuthInstance().signOut().then(function(){},fu nction(e){console.error(e)})}};t.init(),Polymer({is:"google-signin-aware",proper ties:{appPackageName:{type:String,observer:"_appPackageNameChanged"},clientId:{t ype:String,observer:"_clientIdChanged"},cookiePolicy:{type:String,observer:"_coo kiePolicyChanged"},requestVisibleActions:{type:String,observer:"_requestVisibleA ctionsChanged"},hostedDomain:{type:String,observer:"_hostedDomainChanged"},offli ne:{type:Boolean,value:!1,observer:"_offlineChanged"},offlineAlwaysPrompt:{type: Boolean,value:!1,observer:"_offlineAlwaysPromptChanged"},scopes:{type:String,val ue:"profile",observer:"_scopesChanged"},openidPrompt:{type:String,value:"",obser ver:"_openidPromptChanged"},signedIn:{type:Boolean,notify:!0,readOnly:!0},isAuth orized:{type:Boolean,notify:!0,readOnly:!0,value:!1},needAdditionalAuth:{type:Bo olean,notify:!0,readOnly:!0},hasPlusScopes:{type:Boolean,value:!1,notify:!0,read Only:!0}},attached:function(){t.attachSigninAware(this)},detached:function(){t.d etachSigninAware(this)},signIn:function(){t.signIn()},signOut:function(){t.signO ut()},errorNotify:function(e){this.fire("google-signin-aware-error",e)},_appPack ageNameChanged:function(e,i){t.appPackageName=e},_clientIdChanged:function(e,i){ t.clientId=e},_cookiePolicyChanged:function(e,i){t.cookiePolicy=e},_requestVisib leActionsChanged:function(e,i){t.requestVisibleActions=e},_hostedDomainChanged:f unction(e,i){t.hostedDomain=e},_offlineChanged:function(e,i){t.offline=e},_offli neAlwaysPromptChanged:function(e,i){t.offlineAlwaysPrompt=e},_scopesChanged:func tion(e,i){t.requestScopes(e),this._updateScopeStatus(void 0)},_openidPromptChang ed:function(e,i){t.openidPrompt=e},_updateScopeStatus:function(e){var i=this.sig nedIn&&t.hasGrantedScopes(this.scopes);i!==this.isAuthorized&&(this._setIsAuthor ized(i),i?this.fire("google-signin-aware-success",e):this.fire("google-signin-aw are-signed-out",e))},_updateOfflineCode:function(e){e&&this.fire("google-signin- offline-success",{code:e})}})}()</script> <dom-module id="auth-signin" assetpath ="/res/imp/common/"> <template> <style>#avatar{border-radius:5px}a{color:#fff}.c enter{vertical-align:middle}</style> <google-signin-aware id="aware" client-id=" [[client_id]]" offline="" scopes="email" on-google-signin-aware-success="_onSign in" on-google-signin-aware-signed-out="_onSignout"> </google-signin-aware> <temp late is="dom-if" if="[[!signed_in]]"> <div id="signinContainer"> <a on-tap="sign In" href="#">Sign in</a> </div> </template> <template is="dom-if" if="[[signed_i n]]"> <img class="center" id="avatar" src="[[profile.imageUrl]]" width="30" heig ht="30"> <span class="center">[[profile.email]]</span> <span class="center">|</s pan> <a class="center" on-tap="signOut" href="#">Sign out</a> </template> </temp late> <script>"use strict";Polymer({is:"auth-signin",properties:{auth_headers:{t ype:Object,computed:"_makeHeader(auth_response)",notify:!0},auth_response:{type: Object,notify:!0},client_id:{type:String},profile:{type:Object,readOnly:!0,notif y:!0},signed_in:{type:Boolean,readOnly:!0,value:!1,notify:!0}},ready:function(){ this.client_id&&window.setTimeout(function(){if(!this.signed_in&&!this._signingI n)if("gapi"in window&&"auth2"in window.gapi){var i=gapi.auth2.getAuthInstance(). currentUser.get();i&&i.getAuthResponse().access_token?this._onSignin():window.se tTimeout(this.ready.bind(this),50)}else window.setTimeout(this.ready.bind(this), 50)}.bind(this),50)},_onSignin:function(){this._signingIn=!0;var i=gapi.auth2.ge tAuthInstance().currentUser.get(),e=i.getBasicProfile();this._setProfile({email: e.getEmail(),imageUrl:e.getImageUrl()}),this.set("auth_response",i.getAuthRespon se()),this._setSigned_in(!0),this.fire("auth-signin"),this.async(function(){cons ole.log("reloading credentials"),i.reloadAuthResponse(),this._onSignin()},1e3*th is.auth_response.expires_in),this._signingIn=!1},_onSignout:function(i){this._se tSigned_in(!1),this._setProfile(null)},_makeHeader:function(i){return i?{authori zation:i.token_type+" "+i.access_token}:{}},signIn:function(){this.$.aware.signI n()},signOut:function(){this.$.aware.signOut()}})</script> </dom-module> <dom-mo dule id="iron-a11y-announcer" assetpath="/res/imp/bower_components/iron-a11y-ann ouncer/"> <template> <style>:host{display:inline-block;position:fixed;clip:rect( 0,0,0,0)}</style> <div aria-live$="[[mode]]">[[_text]]</div> </template> <script >!function(){"use strict";Polymer.IronA11yAnnouncer=Polymer({is:"iron-a11y-annou ncer",properties:{mode:{type:String,value:"polite"},_text:{type:String,value:""} },created:function(){Polymer.IronA11yAnnouncer.instance||(Polymer.IronA11yAnnoun cer.instance=this),document.body.addEventListener("iron-announce",this._onIronAn nounce.bind(this))},announce:function(n){this._text="",this.async(function(){thi s._text=n},100)},_onIronAnnounce:function(n){n.detail&&n.detail.text&&this.annou nce(n.detail.text)}}),Polymer.IronA11yAnnouncer.instance=null,Polymer.IronA11yAn nouncer.requestAvailability=function(){Polymer.IronA11yAnnouncer.instance||(Poly mer.IronA11yAnnouncer.instance=document.createElement("iron-a11y-announcer")),do cument.body.appendChild(Polymer.IronA11yAnnouncer.instance)}}()</script> </dom-m odule> <script>Polymer.IronFitBehavior={properties:{sizingTarget:{type:Object,va lue:function(){return this}},fitInto:{type:Object,value:window},noOverlap:{type: Boolean},positionTarget:{type:Element},horizontalAlign:{type:String},verticalAli gn:{type:String},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value :0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},autoFitOnAttach:{ty pe:Boolean,value:!1},_fitInfo:{type:Object}},get _fitWidth(){var t;return t=this .fitInto===window?this.fitInto.innerWidth:this.fitInto.getBoundingClientRect().w idth},get _fitHeight(){var t;return t=this.fitInto===window?this.fitInto.innerHe ight:this.fitInto.getBoundingClientRect().height},get _fitLeft(){var t;return t= this.fitInto===window?0:this.fitInto.getBoundingClientRect().left},get _fitTop() {var t;return t=this.fitInto===window?0:this.fitInto.getBoundingClientRect().top },get _defaultPositionTarget(){var t=Polymer.dom(this).parentNode;return t&&t.no deType===Node.DOCUMENT_FRAGMENT_NODE&&(t=t.host),t},get _localeHorizontalAlign() {if(this._isRTL){if("right"===this.horizontalAlign)return"left";if("left"===this .horizontalAlign)return"right"}return this.horizontalAlign},attached:function(){ this._isRTL="rtl"==window.getComputedStyle(this).direction,this.positionTarget=t his.positionTarget||this._defaultPositionTarget,this.autoFitOnAttach&&("none"=== window.getComputedStyle(this).display?setTimeout(function(){this.fit()}.bind(thi s)):this.fit())},fit:function(){this.position(),this.constrain(),this.center()}, _discoverInfo:function(){if(!this._fitInfo){var t=window.getComputedStyle(this), i=window.getComputedStyle(this.sizingTarget);this._fitInfo={inlineStyle:{top:thi s.style.top||"",left:this.style.left||"",position:this.style.position||""},sizer InlineStyle:{maxWidth:this.sizingTarget.style.maxWidth||"",maxHeight:this.sizing Target.style.maxHeight||"",boxSizing:this.sizingTarget.style.boxSizing||""},posi tionedBy:{vertically:"auto"!==t.top?"top":"auto"!==t.bottom?"bottom":null,horizo ntally:"auto"!==t.left?"left":"auto"!==t.right?"right":null},sizedBy:{height:"no ne"!==i.maxHeight,width:"none"!==i.maxWidth,minWidth:parseInt(i.minWidth,10)||0, minHeight:parseInt(i.minHeight,10)||0},margin:{top:parseInt(t.marginTop,10)||0,r ight:parseInt(t.marginRight,10)||0,bottom:parseInt(t.marginBottom,10)||0,left:pa rseInt(t.marginLeft,10)||0}},this.verticalOffset&&(this._fitInfo.margin.top=this ._fitInfo.margin.bottom=this.verticalOffset,this._fitInfo.inlineStyle.marginTop= this.style.marginTop||"",this._fitInfo.inlineStyle.marginBottom=this.style.margi nBottom||"",this.style.marginTop=this.style.marginBottom=this.verticalOffset+"px "),this.horizontalOffset&&(this._fitInfo.margin.left=this._fitInfo.margin.right= this.horizontalOffset,this._fitInfo.inlineStyle.marginLeft=this.style.marginLeft ||"",this._fitInfo.inlineStyle.marginRight=this.style.marginRight||"",this.style .marginLeft=this.style.marginRight=this.horizontalOffset+"px")}},resetFit:functi on(){var t=this._fitInfo||{};for(var i in t.sizerInlineStyle)this.sizingTarget.s tyle[i]=t.sizerInlineStyle[i];for(var i in t.inlineStyle)this.style[i]=t.inlineS tyle[i];this._fitInfo=null},refit:function(){var t=this.sizingTarget.scrollLeft, i=this.sizingTarget.scrollTop;this.resetFit(),this.fit(),this.sizingTarget.scrol lLeft=t,this.sizingTarget.scrollTop=i},position:function(){if(this.horizontalAli gn||this.verticalAlign){this._discoverInfo(),this.style.position="fixed",this.si zingTarget.style.boxSizing="border-box",this.style.left="0px",this.style.top="0p x";var t=this.getBoundingClientRect(),i=this.__getNormalizedRect(this.positionTa rget),e=this.__getNormalizedRect(this.fitInto),n=this._fitInfo.margin,o={width:t .width+n.left+n.right,height:t.height+n.top+n.bottom},h=this.__getPosition(this. _localeHorizontalAlign,this.verticalAlign,o,i,e),s=h.left+n.left,l=h.top+n.top,r =Math.min(e.right-n.right,s+t.width),a=Math.min(e.bottom-n.bottom,l+t.height),g= this._fitInfo.sizedBy.minWidth,f=this._fitInfo.sizedBy.minHeight;s<n.left&&(s=n. left,r-s<g&&(s=r-g)),l<n.top&&(l=n.top,a-l<f&&(l=a-f)),this.sizingTarget.style.m axWidth=r-s+"px",this.sizingTarget.style.maxHeight=a-l+"px",this.style.left=s-t. left+"px",this.style.top=l-t.top+"px"}},constrain:function(){if(!this.horizontal Align&&!this.verticalAlign){this._discoverInfo();var t=this._fitInfo;t.positione dBy.vertically||(this.style.position="fixed",this.style.top="0px"),t.positionedB y.horizontally||(this.style.position="fixed",this.style.left="0px"),this.sizingT arget.style.boxSizing="border-box";var i=this.getBoundingClientRect();t.sizedBy. height||this.__sizeDimension(i,t.positionedBy.vertically,"top","bottom","Height" ),t.sizedBy.width||this.__sizeDimension(i,t.positionedBy.horizontally,"left","ri ght","Width")}},_sizeDimension:function(t,i,e,n,o){this.__sizeDimension(t,i,e,n, o)},__sizeDimension:function(t,i,e,n,o){var h=this._fitInfo,s=this.__getNormaliz edRect(this.fitInto),l="Width"===o?s.width:s.height,r=i===n,a=r?l-t[n]:t[e],g=h. margin[r?e:n],f="offset"+o,p=this[f]-this.sizingTarget[f];this.sizingTarget.styl e["max"+o]=l-g-a-p+"px"},center:function(){if(!this.horizontalAlign&&!this.verti calAlign){this._discoverInfo();var t=this._fitInfo.positionedBy;if(!t.vertically ||!t.horizontally){this.style.position="fixed",t.vertically||(this.style.top="0p x"),t.horizontally||(this.style.left="0px");var i=this.getBoundingClientRect(),e =this.__getNormalizedRect(this.fitInto);if(!t.vertically){var n=e.top-i.top+(e.h eight-i.height)/2;this.style.top=n+"px"}if(!t.horizontally){var o=e.left-i.left+ (e.width-i.width)/2;this.style.left=o+"px"}}}},__getNormalizedRect:function(t){r eturn t===document.documentElement||t===window?{top:0,left:0,width:window.innerW idth,height:window.innerHeight,right:window.innerWidth,bottom:window.innerHeight }:t.getBoundingClientRect()},__getCroppedArea:function(t,i,e){var n=Math.min(0,t .top)+Math.min(0,e.bottom-(t.top+i.height)),o=Math.min(0,t.left)+Math.min(0,e.ri ght-(t.left+i.width));return Math.abs(n)*i.width+Math.abs(o)*i.height},__getPosi tion:function(t,i,e,n,o){var h=[{verticalAlign:"top",horizontalAlign:"left",top: n.top,left:n.left},{verticalAlign:"top",horizontalAlign:"right",top:n.top,left:n .right-e.width},{verticalAlign:"bottom",horizontalAlign:"left",top:n.bottom-e.he ight,left:n.left},{verticalAlign:"bottom",horizontalAlign:"right",top:n.bottom-e .height,left:n.right-e.width}];if(this.noOverlap){for(var s=0,l=h.length;s<l;s++ ){var r={};for(var a in h[s])r[a]=h[s][a];h.push(r)}h[0].top=h[1].top+=n.height, h[2].top=h[3].top-=n.height,h[4].left=h[6].left+=n.width,h[5].left=h[7].left-=n. width}i="auto"===i?null:i,t="auto"===t?null:t;for(var g,s=0;s<h.length;s++){var f=h[s];if(!this.dynamicAlign&&!this.noOverlap&&f.verticalAlign===i&&f.horizontal Align===t){g=f;break}var p=!(i&&f.verticalAlign!==i||t&&f.horizontalAlign!==t);i f(this.dynamicAlign||p){g=g||f,f.croppedArea=this.__getCroppedArea(f,e,o);var d= f.croppedArea-g.croppedArea;if((d<0||0===d&&p)&&(g=f),0===g.croppedArea&&p)break }}return g}}</script> <dom-module id="iron-overlay-backdrop" assetpath="/res/imp /bower_components/iron-overlay-behavior/"> <template> <style>:host{position:fixe d;top:0;left:0;width:100%;height:100%;background-color:var(--iron-overlay-backdr op-background-color,#000);opacity:0;transition:opacity .2s;pointer-events:none;@ apply(--iron-overlay-backdrop)}:host(.opened){opacity:var(--iron-overlay-backdro p-opacity,.6);pointer-events:auto;@apply(--iron-overlay-backdrop-opened)}</style > <content></content> </template> </dom-module> <script>!function(){"use strict" ;Polymer({is:"iron-overlay-backdrop",properties:{opened:{reflectToAttribute:!0,t ype:Boolean,value:!1,observer:"_openedChanged"}},listeners:{transitionend:"_onTr ansitionend"},created:function(){this.__openedRaf=null},attached:function(){this .opened&&this._openedChanged(this.opened)},prepare:function(){this.opened&&!this .parentNode&&Polymer.dom(document.body).appendChild(this)},open:function(){this. opened=!0},close:function(){this.opened=!1},complete:function(){this.opened||thi s.parentNode!==document.body||Polymer.dom(this.parentNode).removeChild(this)},_o nTransitionend:function(e){e&&e.target===this&&this.complete()},_openedChanged:f unction(e){if(e)this.prepare();else{var t=window.getComputedStyle(this);"0s"!==t .transitionDuration&&0!=t.opacity||this.complete()}this.isAttached&&(this.__open edRaf&&(window.cancelAnimationFrame(this.__openedRaf),this.__openedRaf=null),thi s.scrollTop=this.scrollTop,this.__openedRaf=window.requestAnimationFrame(functio n(){this.__openedRaf=null,this.toggleClass("opened",this.opened)}.bind(this)))}} )}()</script> <script>Polymer.IronOverlayManagerClass=function(){this._overlays= [],this._minimumZ=101,this._backdropElement=null,Polymer.Gestures.add(document," tap",this._onCaptureClick.bind(this)),document.addEventListener("focus",this._on CaptureFocus.bind(this),!0),document.addEventListener("keydown",this._onCaptureK eyDown.bind(this),!0)},Polymer.IronOverlayManagerClass.prototype={constructor:Po lymer.IronOverlayManagerClass,get backdropElement(){return this._backdropElement ||(this._backdropElement=document.createElement("iron-overlay-backdrop")),this._ backdropElement},get deepActiveElement(){for(var e=document.activeElement||docum ent.body;e.root&&Polymer.dom(e.root).activeElement;)e=Polymer.dom(e.root).active Element;return e},_bringOverlayAtIndexToFront:function(e){var t=this._overlays[e ];if(t){var r=this._overlays.length-1,a=this._overlays[r];if(a&&this._shouldBeBe hindOverlay(t,a)&&r--,!(e>=r)){var n=Math.max(this.currentOverlayZ(),this._minim umZ);for(this._getZ(t)<=n&&this._applyOverlayZ(t,n);e<r;)this._overlays[e]=this. _overlays[e+1],e++;this._overlays[r]=t}}},addOrRemoveOverlay:function(e){e.opene d?this.addOverlay(e):this.removeOverlay(e)},addOverlay:function(e){var t=this._o verlays.indexOf(e);if(t>=0)return this._bringOverlayAtIndexToFront(t),void this. trackBackdrop();var r=this._overlays.length,a=this._overlays[r-1],n=Math.max(thi s._getZ(a),this._minimumZ),o=this._getZ(e);if(a&&this._shouldBeBehindOverlay(e,a )){this._applyOverlayZ(a,n),r--;var i=this._overlays[r-1];n=Math.max(this._getZ( i),this._minimumZ)}o<=n&&this._applyOverlayZ(e,n),this._overlays.splice(r,0,e),t his.trackBackdrop()},removeOverlay:function(e){var t=this._overlays.indexOf(e);t !==-1&&(this._overlays.splice(t,1),this.trackBackdrop())},currentOverlay:functio n(){var e=this._overlays.length-1;return this._overlays[e]},currentOverlayZ:func tion(){return this._getZ(this.currentOverlay())},ensureMinimumZ:function(e){this ._minimumZ=Math.max(this._minimumZ,e)},focusOverlay:function(){var e=this.curren tOverlay();e&&e._applyFocus()},trackBackdrop:function(){var e=this._overlayWithB ackdrop();(e||this._backdropElement)&&(this.backdropElement.style.zIndex=this._g etZ(e)-1,this.backdropElement.opened=!!e)},getBackdrops:function(){for(var e=[], t=0;t<this._overlays.length;t++)this._overlays[t].withBackdrop&&e.push(this._ove rlays[t]);return e},backdropZ:function(){return this._getZ(this._overlayWithBack drop())-1},_overlayWithBackdrop:function(){for(var e=0;e<this._overlays.length;e ++)if(this._overlays[e].withBackdrop)return this._overlays[e]},_getZ:function(e) {var t=this._minimumZ;if(e){var r=Number(e.style.zIndex||window.getComputedStyle (e).zIndex);r===r&&(t=r)}return t},_setZ:function(e,t){e.style.zIndex=t},_applyO verlayZ:function(e,t){this._setZ(e,t+2)},_overlayInPath:function(e){e=e||[];for( var t=0;t<e.length;t++)if(e[t]._manager===this)return e[t]},_onCaptureClick:func tion(e){var t=this.currentOverlay();t&&this._overlayInPath(Polymer.dom(e).path)! ==t&&t._onCaptureClick(e)},_onCaptureFocus:function(e){var t=this.currentOverlay ();t&&t._onCaptureFocus(e)},_onCaptureKeyDown:function(e){var t=this.currentOver lay();t&&(Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,"esc")?t._onCa ptureEsc(e):Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,"tab")&&t._o nCaptureTab(e))},_shouldBeBehindOverlay:function(e,t){return!e.alwaysOnTop&&t.al waysOnTop}},Polymer.IronOverlayManager=new Polymer.IronOverlayManagerClass</scri pt> <script>!function(){"use strict";Polymer.IronOverlayBehaviorImpl={properties :{opened:{observer:"_openedChanged",type:Boolean,value:!1,notify:!0},canceled:{o bserver:"_canceledChanged",readOnly:!0,type:Boolean,value:!1},withBackdrop:{obse rver:"_withBackdropChanged",type:Boolean},noAutoFocus:{type:Boolean,value:!1},no CancelOnEscKey:{type:Boolean,value:!1},noCancelOnOutsideClick:{type:Boolean,valu e:!1},closingReason:{type:Object},restoreFocusOnClose:{type:Boolean,value:!1},al waysOnTop:{type:Boolean},_manager:{type:Object,value:Polymer.IronOverlayManager} ,_focusedChild:{type:Object}},listeners:{"iron-resize":"_onIronResize"},get back dropElement(){return this._manager.backdropElement},get _focusNode(){return this ._focusedChild||Polymer.dom(this).querySelector("[autofocus]")||this},get _focus ableNodes(){var e=["a[href]","area[href]","iframe","[tabindex]","[contentEditabl e=true]"],t=["input","select","textarea","button"],i=e.join(':not([tabindex="-1" ]),')+':not([tabindex="-1"]),'+t.join(':not([disabled]):not([tabindex="-1"]),')+ ':not([disabled]):not([tabindex="-1"])',s=Polymer.dom(this).querySelectorAll(i); return this.tabIndex>=0&&s.splice(0,0,this),s.sort(function(e,t){return e.tabInd ex===t.tabIndex?0:0===e.tabIndex||e.tabIndex>t.tabIndex?1:-1})},ready:function() {this.__isAnimating=!1,this.__shouldRemoveTabIndex=!1,this.__firstFocusableNode= this.__lastFocusableNode=null,this.__raf=null,this.__restoreFocusNode=null,this. _ensureSetup()},attached:function(){this.opened&&this._openedChanged(this.opened ),this._observer=Polymer.dom(this).observeNodes(this._onNodesChange)},detached:f unction(){Polymer.dom(this).unobserveNodes(this._observer),this._observer=null,t his.__raf&&(window.cancelAnimationFrame(this.__raf),this.__raf=null),this._manag er.removeOverlay(this)},toggle:function(){this._setCanceled(!1),this.opened=!thi s.opened},open:function(){this._setCanceled(!1),this.opened=!0},close:function() {this._setCanceled(!1),this.opened=!1},cancel:function(e){var t=this.fire("iron- overlay-canceled",e,{cancelable:!0});t.defaultPrevented||(this._setCanceled(!0), this.opened=!1)},invalidateTabbables:function(){this.__firstFocusableNode=this._ _lastFocusableNode=null},_ensureSetup:function(){this._overlaySetup||(this._over laySetup=!0,this.style.outline="none",this.style.display="none")},_openedChanged :function(e){e?this.removeAttribute("aria-hidden"):this.setAttribute("aria-hidde n","true"),this.isAttached&&(this.__isAnimating=!0,this.__onNextAnimationFrame(t his.__openedChanged))},_canceledChanged:function(){this.closingReason=this.closi ngReason||{},this.closingReason.canceled=this.canceled},_withBackdropChanged:fun ction(){this.withBackdrop&&!this.hasAttribute("tabindex")?(this.setAttribute("ta bindex","-1"),this.__shouldRemoveTabIndex=!0):this.__shouldRemoveTabIndex&&(this .removeAttribute("tabindex"),this.__shouldRemoveTabIndex=!1),this.opened&&this.i sAttached&&this._manager.trackBackdrop()},_prepareRenderOpened:function(){this._ _restoreFocusNode=this._manager.deepActiveElement,this._preparePositioning(),thi s.refit(),this._finishPositioning(),this.noAutoFocus&&document.activeElement===t his._focusNode&&(this._focusNode.blur(),this.__restoreFocusNode.focus())},_rende rOpened:function(){this._finishRenderOpened()},_renderClosed:function(){this._fi nishRenderClosed()},_finishRenderOpened:function(){this.notifyResize(),this.__is Animating=!1,this.fire("iron-overlay-opened")},_finishRenderClosed:function(){th is.style.display="none",this.style.zIndex="",this.notifyResize(),this.__isAnimat ing=!1,this.fire("iron-overlay-closed",this.closingReason)},_preparePositioning: function(){this.style.transition=this.style.webkitTransition="none",this.style.t ransform=this.style.webkitTransform="none",this.style.display=""},_finishPositio ning:function(){this.style.display="none",this.scrollTop=this.scrollTop,this.sty le.transition=this.style.webkitTransition="",this.style.transform=this.style.web kitTransform="",this.style.display="",this.scrollTop=this.scrollTop},_applyFocus :function(){if(this.opened)this.noAutoFocus||this._focusNode.focus();else{this._ focusNode.blur(),this._focusedChild=null,this.restoreFocusOnClose&&this.__restor eFocusNode&&this.__restoreFocusNode.focus(),this.__restoreFocusNode=null;var e=t his._manager.currentOverlay();e&&this!==e&&e._applyFocus()}},_onCaptureClick:fun ction(e){this.noCancelOnOutsideClick||this.cancel(e)},_onCaptureFocus:function(e ){if(this.withBackdrop){var t=Polymer.dom(e).path;t.indexOf(this)===-1?(e.stopPr opagation(),this._applyFocus()):this._focusedChild=t[0]}},_onCaptureEsc:function (e){this.noCancelOnEscKey||this.cancel(e)},_onCaptureTab:function(e){if(this.wit hBackdrop){this.__ensureFirstLastFocusables();var t=e.shiftKey,i=t?this.__firstF ocusableNode:this.__lastFocusableNode,s=t?this.__lastFocusableNode:this.__firstF ocusableNode,n=!1;if(i===s)n=!0;else{var o=this._manager.deepActiveElement;n=o== =i||o===this}n&&(e.preventDefault(),this._focusedChild=s,this._applyFocus())}},_ onIronResize:function(){this.opened&&!this.__isAnimating&&this.__onNextAnimation Frame(this.refit)},_onNodesChange:function(){this.opened&&!this.__isAnimating&&( this.invalidateTabbables(),this.notifyResize())},__ensureFirstLastFocusables:fun ction(){if(!this.__firstFocusableNode||!this.__lastFocusableNode){var e=this._fo cusableNodes;this.__firstFocusableNode=e[0],this.__lastFocusableNode=e[e.length- 1]}},__openedChanged:function(){this.opened?(this._prepareRenderOpened(),this._m anager.addOverlay(this),this._applyFocus(),this._renderOpened()):(this._manager. removeOverlay(this),this._applyFocus(),this._renderClosed())},__onNextAnimationF rame:function(e){this.__raf&&window.cancelAnimationFrame(this.__raf);var t=this; this.__raf=window.requestAnimationFrame(function(){t.__raf=null,e.call(t)})}},Po lymer.IronOverlayBehavior=[Polymer.IronFitBehavior,Polymer.IronResizableBehavior ,Polymer.IronOverlayBehaviorImpl]}()</script> <dom-module id="paper-toast" asset path="/res/imp/bower_components/paper-toast/"> <template> <style>:host{display:b lock;position:fixed;background-color:var(--paper-toast-background-color,#323232) ;color:var(--paper-toast-color,#f1f1f1);min-height:48px;min-width:288px;padding: 16px 24px;box-sizing:border-box;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-ra dius:2px;margin:12px;font-size:14px;cursor:default;-webkit-transition:-webkit-tr ansform .3s,opacity .3s;transition:transform .3s,opacity .3s;opacity:0;-webkit-t ransform:translateY(100px);transform:translateY(100px);@apply(--paper-font-commo n-base)}:host(.capsule){border-radius:24px}:host(.fit-bottom){width:100%;min-wid th:0;border-radius:0;margin:0}:host(.paper-toast-open){opacity:1;-webkit-transfo rm:translateY(0);transform:translateY(0)}</style> <span id="label">{{text}}</spa n> <content></content> </template> <script>!function(){var e=null;Polymer({is:"p aper-toast",behaviors:[Polymer.IronOverlayBehavior],properties:{fitInto:{type:Ob ject,value:window,observer:"_onFitIntoChanged"},horizontalAlign:{type:String,val ue:"left"},verticalAlign:{type:String,value:"bottom"},duration:{type:Number,valu e:3e3},text:{type:String,value:""},noCancelOnOutsideClick:{type:Boolean,value:!0 },noAutoFocus:{type:Boolean,value:!0}},listeners:{transitionend:"__onTransitionE nd"},get visible(){return Polymer.Base._warn("`visible` is deprecated, use `open ed` instead"),this.opened},get _canAutoClose(){return this.duration>0&&this.dura tion!==1/0},created:function(){this._autoClose=null,Polymer.IronA11yAnnouncer.re questAvailability()},show:function(e){"string"==typeof e&&(e={text:e});for(var t in e)0===t.indexOf("_")?Polymer.Base._warn('The property "'+t+'" is private and was not set.'):t in this?this[t]=e[t]:Polymer.Base._warn('The property "'+t+'" is not valid.');this.open()},hide:function(){this.close()},__onTransitionEnd:fun ction(e){e&&e.target===this&&"opacity"===e.propertyName&&(this.opened?this._fini shRenderOpened():this._finishRenderClosed())},_openedChanged:function(){null!==t his._autoClose&&(this.cancelAsync(this._autoClose),this._autoClose=null),this.op ened?(e&&e!==this&&e.close(),e=this,this.fire("iron-announce",{text:this.text}), this._canAutoClose&&(this._autoClose=this.async(this.close,this.duration))):e=== this&&(e=null),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,argumen ts)},_renderOpened:function(){this.classList.add("paper-toast-open")},_renderClo sed:function(){this.classList.remove("paper-toast-open")},_onFitIntoChanged:func tion(e){this.positionTarget=e}})}()</script> </dom-module> <dom-module id="error -toast" assetpath="/res/imp/common/"> <template> <paper-toast id="toast"></paper -toast> </template> </dom-module> <script>Polymer({is:"error-toast",ready:functi on(){document.addEventListener("error-sk",function(t){if(this.$.toast.close(),t. detail.message){this.$.toast.text=t.detail.message;var e=1e4;void 0!==t.detail.d uration&&(e=t.detail.duration),this.$.toast.duration=e,this.$.toast.show()}else console.log("Empty message?",t)}.bind(this))}})</script> <dom-module id="swarmin g-app" assetpath="/res/imp/common/"> <template> <style include="iron-flex">:host {position:absolute;top:0;bottom:0;left:0;right:0}app-toolbar{background-color:#1 F78B4;color:#fff}app-toolbar.error{background-color:#b41f1f;color:#fff}app-toolb ar a{color:#fff}.left{margin-right:15px}.right{margin-left:15px}.main-content{pa dding:3px}.main-content a{color:#1F78B4}.menu-button{min-width:40px}.small,auth- signin{font-size:.7em}#mobile_menu{z-index:10;--app-drawer-content-container:{ma rgin-top:64px};}a[href]{color:#1F78B4}.menu-item{padding:8px 3px;border-bottom:1 px solid #CCC}paper-fab{position:fixed;bottom:5px;right:5px;background-color:#1F 78B4}paper-spinner-lite{--paper-spinner-color:var(--google-yellow-500)}</style> <app-header-layout> <app-drawer id="mobile_menu"> <div class="menu-item"><a clas s="left" href="/">Home</a></div> <div class="menu-item"><a class="left" href="/b otlist">Bot List</a></div> <div class="menu-item"><a class="left" href="/tasklis t">Task List</a></div> <div class="menu-item"><a class="left" href="/oldui">Old UI</a></div> </app-drawer> <app-header fixed=""> <app-toolbar class$="[[_toolbar Class(client_id)]]"> <paper-icon-button class="menu-button" icon="icons:menu" on -tap="_toggleMobileMenu" hidden$="[[wide_layout]]"> </paper-icon-button> <div cl ass="title left">[[name]]</div> <paper-spinner-lite class="left" active="[[_or(b usy,_busy1,_busy2)]]"></paper-spinner-lite> <a class="left" href="/" hidden$="[[ !wide_layout]]">Home</a> <a class="left" href="/botlist" hidden$="[[!wide_layout ]]">Bot List</a> <a class="left" href="/tasklist" hidden$="[[!wide_layout]]">Tas k List</a> <div class="flex" hidden$="[[!wide_layout]]"></div> <template is="dom -if" if="[[client_id]]"> <div class="small right"> Server: <a href$="[[_versionL ink(server_details)]]"> [[server_details.server_version]] </a> </div> <auth-sign in class="right" client_id="[[client_id]]" auth_headers="{{auth_headers}}" profi le="{{profile}}" signed_in="{{signed_in}}"> </auth-signin> </template> <template is="dom-if" if="[[!client_id]]"> <div class="right">No OAauth client id found.< /div> </template> </app-toolbar> </app-header> <div class="main-content"> <conte nt></content> </div> <error-toast></error-toast> <a target="_blank" rel="noopene r" href="https://bugs.chromium.org/p/chromium/issues/entry?components=Infra%3EPl atform%3ESwarming&amp;owner=kjlubick@chromium.org&amp;status=Assigned"> <paper-f ab mini="" icon="icons:bug-report"></paper-fab> </a> </app-header-layout> <iron- media-query query="min-width: 600px" query-matches="{{wide_layout}}"></iron-medi a-query> </template> <script>Polymer({is:"swarming-app",behaviors:[SwarmingBehav iors.CommonBehavior],properties:{busy:{type:Boolean},client_id:{type:String},nam e:{type:String},auth_headers:{type:Object,notify:!0,observer:"_load"},permission s:{type:Object,value:function(){return{}},notify:!0},profile:{type:Object,notify :!0},server_details:{type:Object,notify:!0},signed_in:{type:Boolean,value:!1,not ify:!0},_busy1:{type:Boolean,value:!1},_busy2:{type:Boolean,value:!1}},_load:fun ction(){this._getJsonAsync("permissions","/api/swarming/v1/server/permissions"," _busy1",this.auth_headers),this._getJsonAsync("server_details","/api/swarming/v1 /server/details","_busy2",this.auth_headers).catch(function(e){sk.errorMessage(" Http response: "+(e.status||" ")+" "+e.response)})},_toggleMobileMenu:function() {this.$.mobile_menu.toggle()},_toolbarClass:function(e){return e?"":"error"},_ve rsionLink:function(e){if(e&&e.server_version){var s=e.server_version.split("-"); if(2===s.length)return"https://github.com/luci/luci-py/commit/"+s[1]}}})</script > </dom-module> <dom-module id="swarming-app-style" assetpath="/res/imp/common/" > <style>*{font-family:sans-serif}a[href]{color:#1F78B4}button{min-width:5.14em; background-color:#fff;color:#1f78b4;text-align:center;text-transform:uppercase;o utline:0;border-radius:3px;padding:.6em 1.2em;border:solid #d3d3d3 1px;margin:.6 em;cursor:pointer}button:hover{background:#eee}button:focus{background-color:#dd d;transition:background-color .1s cubic-bezier(.4,0,.2,1)}button.raised:active,b utton:active{background-color:#999;transition:background-color .1s cubic-bezier( .4,0,.2,1)}button:disabled{color:#999}button:disabled:hover{background:initial;c ursor:initial}button.action:active{background-color:#A6CEE3;transition:backgroun d-color .1s color .1s cubic-bezier(.4,0,.2,1)}button.action{color:#fff;backgroun d:#1f78b4;border:none}button.action:disabled{color:#fff;background:#999;border:n one}button.raised{transition:box-shadow .1s cubic-bezier(.4,0,.2,1);box-shadow:5 px 5px 18px 0 rgba(0,0,0,.3)}button.raised:active{box-shadow:2px 2px 5px 0 rgba( 0,0,0,.1)}option,select{padding:.4em 1.2em;background-color:#fff;border:none;lin e-height:20px;vertical-align:middle}select{overflow-y:auto}</style> </dom-module > <dom-module id="swarming-index" assetpath="/res/imp/index/"> <template> <style include="swarming-app-style">.command{font-family:monospace;margin-bottom:10px; margin-top:10px;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid # ccc;border-radius:4px}</style> <swarming-app client_id="[[client_id]]" auth_head ers="{{_auth_headers}}" permissions="{{_permissions}}" server_details="{{_server _details}}" name="Swarming Server" busy="[[_or(_busy1,busy2)]]"> <h2>Service Sta tus</h2> <div>Server Version: [[_server_details.server_version]]</div> <div>Bot Version: [[_server_details.bot_version]]</div> <ul> <li> <a href="/stats">Usage statistics</a> </li> <li> <a href="/restricted/mapreduce/status">Map Reduce Jobs </a> </li> <li> <a href$="[[_makeInstancesUrl(_server_details,_project_id)]]">Vi ew version's instances on Cloud Console</a> </li> <li> <a></a><a href$="[[_makeE rrorUrl(_project_id)]]">View server errors on Cloud Console</a> </li> <li> <a></ a><a href$="[[_makeLogUrl(_project_id)]]">View logs for HTTP 5xx on Cloud Consol e</a> </li> </ul> <h2>Configuration</h2> <ul> <li> <a href="/restricted/config"> View server config</a> </li> <li> <a href="/restricted/upload/bootstrap">View/up load bootstrap.py</a> </li> <li> <a href="/restricted/upload/bot_config">View/up load bot_config.py</a> </li> <li> <a href="/auth/groups">View/edit user groups</ a> </li> </ul> <div hidden$="[[_cannotBootstrap(_permissions)]]"> <h2>Bootstrapp ing a bot</h2> To bootstrap a bot, run one of these (all links are valid for 1 h our): <ol> <li> <strong> TL;DR; </strong> <pre class="command">python -c "import urllib; exec urllib.urlopen('[[_host_url]]/bootstrap?tok=[[_bootstrap_token]]') .read()"</pre> </li> <li> Escaped version to pass as a ssh argument: <pre class= "command">'python -c "import urllib; exec urllib.urlopen('"'[[_host_url]]/bootst rap?tok=[[_bootstrap_token]]'"').read()"'</pre> </li> <li> Manually: <pre class= "command" style="margin-bottom:0">mkdir bot; cd bot
196 rm -f swarming_bot.zip; curl -sSLOJ [[_host_url]]/bot_code?tok=[[_bootstrap_to ken]] 196 rm -f swarming_bot.zip; curl -sSLOJ [[_host_url]]/bot_code?tok=[[_bootstrap_to ken]]
197 python swarming_bot.zip</pre> </li> </ol> </div> </swarming-app> </template> < script>Polymer({is:"swarming-index",behaviors:[SwarmingBehaviors.CommonBehavior] ,properties:{client_id:{type:String},_auth_headers:{type:String},_bootstrap_toke n:{type:String,value:"..."},_busy1:{type:Boolean,value:!1},_busy2:{type:Boolean, value:!1},_host_url:{type:String,value:function(){return location.origin}},_perm issions:{type:Object},_project_id:{type:String,value:function(){var t=location.h ostname.indexOf(".appspot.com");return location.hostname.substring(0,t)}},_serve r_details:{type:Object}},observers:["_fetchBootstrap(_permissions,_auth_headers) "],_cannotBootstrap:function(t){return!(t&&t.get_bootstrap_token)},_fetchBootstr ap:function(t,e){e&&t&&!this._cannotBootstrap(t)&&(this.set("_busy1",!0),sk.requ est("POST","/api/swarming/v1/server/token",void 0,e).then(JSON.parse).then(funct ion(t){this.set("_bootstrap_token",t.bootstrap_token),this.set("_busy1",!1)}.bin d(this)).catch(function(t){console.log("Could not get token",t),this.set("_busy1 ",!1)}.bind(this)))},_makeInstancesUrl:function(t,e){return"https://console.clou d.google.com/appengine/instances?project="+e+"&versionId="+t.server_version},_ma keErrorUrl:function(t){return"https://console.cloud.google.com/errors?project="+ t},_makeLogUrl:function(t){return"https://pantheon.corp.google.com/logs/viewer?f ilters=status:500..599&project="+t}})</script> </dom-module><dom-module id="dyna mic-table-style" assetpath="/res/imp/common/"> <template> <style>table{border-co llapse:collapse;margin-left:5px}td,th{border:1px solid #DDD;padding:5px}th{posit ion:relative}sort-toggle{position:absolute;right:0;top:.4em}</style> </template> </dom-module> <script>!function(){SwarmingBehaviors.DynamicTableBehavior=[Swarm ingBehaviors.CommonBehavior,{properties:{_columns:{type:Array},_filter:{type:Fun ction},_filteredSortedItems:{type:Array,computed:"_filterAndSort(_items.*,_filte r.*,_sort.*)"},_items:{type:Array},_plainColumns:{type:Array,computed:"_stripSpe cial(_columns.*)"},_sort:{type:Object,computed:"_makeSortObject(_sortstr)"},_sor tstr:{type:String},_verbose:{type:Boolean}},_column:function(t,i){var n=this._co lumnMap[t];return n||(n=function(i){var n=this._attribute(i,t,"none");return thi s._verbose?n.join(" | "):n[0]}),n.bind(this)(i)},_compare:function(t,i){if(!this ._sort)return 0;var n=1;"desc"===this._sort.direction&&(n=-1);var r=this._specia lSort[this._sort.name];if(r)return r.bind(this)(n,t,i);var e=this._column(this._ sort.name,t),s=this._column(this._sort.name,i);return n*swarming.naturalCompare( e,s)},_filterAndSort:function(){swarming.stableSort(this._items,this._compare.bi nd(this));var t=this._items;return this._filter&&(t=t.filter(this._filter.bind(t his))),t},_header:function(t){return this._headerMap[t]||t},_hide:function(t){re turn this._columns.indexOf(t)===-1},_makeSortObject:function(t){if(t){var i=t.sp lit(":");return 2!=i.length?{name:"id",direction:"asc"}:{name:i[0],direction:i[1 ]}}},_sortChange:function(t){t&&t.detail&&t.detail.name&&this.set("_sortstr",t.d etail.name+":"+t.detail.direction)},_stripSpecial:function(){return this._column s.filter(function(t){return this._specialColumns.indexOf(t)===-1}.bind(this)).so rt()},_commonColumns:function(){return{device_type:function(t){var i=this._attri bute(t,"device_type","none");i=i[0];var n=swarming.alias.android(i);return"unkno wn"===n?i:swarming.alias.apply(i,n)},gpu:function(t){var i=this._attribute(t,"gp u","none"),n=[],r=[];return i.forEach(function(t){var i=swarming.alias.gpu(t);re turn"unknown"===i?(n.push(t),void(t.indexOf(":")===-1&&r.push(t))):(n.push(swarm ing.alias.apply(t,i)),void(t.indexOf(":")===-1&&r.push(swarming.alias.apply(t,i) )))}.bind(this)),this._verbose||!r.length?n.join(" | "):r.join(" | ")},pool:func tion(t){var i=this._attribute(t,"pool");return i.join(" | ")}}}}]}()</script><do m-module id="sort-toggle" assetpath="/res/imp/common/"> <template> <style>:host{ display:inline-block;position:relative;min-width:20px;min-height:16px;vertical-a lign:middle}iron-icon{position:absolute;left:0;cursor:pointer}.hidden{visibility :hidden}</style> <span on-click="toggle"> <iron-icon style="top:0" class$="[[_hi dden(direction,'asc')]]" icon="icons:arrow-drop-down"> </iron-icon> <iron-icon s tyle="bottom:0" class$="[[_hidden(direction,'desc')]]" icon="icons:arrow-drop-up "> </iron-icon> </span> </template> <script>Polymer({is:"sort-toggle",properties :{current:{type:Object,observer:"_resetSort"},name:{type:String,observer:"_reset Sort"},direction:{type:String,value:"",notify:!0}},toggle:function(){"asc"===thi s.direction?this.set("direction","desc"):this.set("direction","asc"),this.fire(" sort_change",{direction:this.direction,name:this.name})},_hidden:function(t,e){r eturn t===e?"hidden":""},_resetSort:function(){this.current&&this.current.name== =this.name?this.set("direction",this.current.direction):this.set("direction","") }})</script> </dom-module><dom-module id="url-param" assetpath="/res/imp/common/ "> <template> <paper-toast id="toast"></paper-toast> </template> <script>!functi on(){Polymer({is:"url-param",properties:{default_value:{type:String},default_val ues:{type:Array},multi:{type:Boolean,value:!1},name:{type:String},valid:{type:Ar ray},value:{type:String,value:"",notify:!0,observer:"_valueChanged"},_loaded:{ty pe:Boolean,value:!1}},observers:["_valueChanged(value.splices)"],ready:function( ){this._loaded=!0;var t=this._getURL();t&&this._isValid(t)?this.set("value",t):t his.default_value&&this._isValid(this.default_value)?this.set("value",this.defau lt_value):this.multi&&this.default_values&&this._isValid(this.default_values)?th is.set("value",this.default_values):this._putURL()},_getURL:function(){var t=sk. query.toParamSet(window.location.search.substring(1))[this.name];return t?this.m ulti?t:t.length>1?(this._error("Multiple values provided for "+this.name+" but o nly one accepted: "+t),null):t[0]:null},_putURL:function(){var t=sk.query.toPara mSet(window.location.search.substring(1));delete t[this.name],!this.value||Array .isArray(this.value)&&0==this.value.length||(this.multi?t[this.name]=this.value: t[this.name]=[this.value]);var e=window.location.href.split("?")[0]+"?"+sk.query .fromParamSet(t);window.history.replaceState("","",e)},_isValid:function(t){var e=function(t){if(this.valid){for(var e=0;e<this.valid.length;e++)if(t==this.vali d[e])return!0;return this._error("Invalid value for "+this.name+': "'+t+'". Must be one of: '+this.valid),!1}return!0}.bind(this);if(!this.multi)return Array.is Array(t)&&this._error("Multiple values provided for "+this.name+" but only one a ccepted: "+t),e(t);if(!Array.isArray(t))return this._error("url-param-sk: Value is not an array: "+t),!1;for(var i=0;i<t.length;i++)if(!e(t[i]))return!1;return! 0},_valueChanged:function(){this._loaded&&this._putURL()},_error:function(t){con sole.log("[ERROR] "+t),this.set("$.toast.text",t),this.$.toast.show()}})}()</scr ipt> </dom-module> <dom-module id="pageable-data" assetpath="/res/imp/common/"> <template> <style include="swarming-app-style"></style> <button on-tap="page" di sabled$="[[_noMore(_cursor)]]"> [[label]] </button> </template> <script> (functi on(){ 197 python swarming_bot.zip</pre> </li> </ol> </div> </swarming-app> </template> < script>Polymer({is:"swarming-index",behaviors:[SwarmingBehaviors.CommonBehavior] ,properties:{client_id:{type:String},_auth_headers:{type:String},_bootstrap_toke n:{type:String,value:"..."},_busy1:{type:Boolean,value:!1},_busy2:{type:Boolean, value:!1},_host_url:{type:String,value:function(){return location.origin}},_perm issions:{type:Object},_project_id:{type:String,value:function(){var t=location.h ostname.indexOf(".appspot.com");return location.hostname.substring(0,t)}},_serve r_details:{type:Object}},observers:["_fetchBootstrap(_permissions,_auth_headers) "],_cannotBootstrap:function(t){return!(t&&t.get_bootstrap_token)},_fetchBootstr ap:function(t,e){e&&t&&!this._cannotBootstrap(t)&&(this.set("_busy1",!0),sk.requ est("POST","/api/swarming/v1/server/token",void 0,e).then(JSON.parse).then(funct ion(t){this.set("_bootstrap_token",t.bootstrap_token),this.set("_busy1",!1)}.bin d(this)).catch(function(t){console.log("Could not get token",t),this.set("_busy1 ",!1)}.bind(this)))},_makeInstancesUrl:function(t,e){return"https://console.clou d.google.com/appengine/instances?project="+e+"&versionId="+t.server_version},_ma keErrorUrl:function(t){return"https://console.cloud.google.com/errors?project="+ t},_makeLogUrl:function(t){return"https://pantheon.corp.google.com/logs/viewer?f ilters=status:500..599&project="+t}})</script> </dom-module><dom-module id="dyna mic-table-style" assetpath="/res/imp/common/"> <template> <style>table{border-co llapse:collapse;margin-left:5px}td,th{border:1px solid #DDD;padding:5px}th{posit ion:relative}sort-toggle{position:absolute;right:0;top:.4em}</style> </template> </dom-module> <script>!function(){SwarmingBehaviors.DynamicTableBehavior=[Swarm ingBehaviors.CommonBehavior,{properties:{_columns:{type:Array},_filter:{type:Fun ction},_filteredSortedItems:{type:Array,computed:"_filterAndSort(_items.*,_filte r.*,_sort.*)"},_items:{type:Array},_plainColumns:{type:Array,computed:"_stripSpe cial(_columns.*)"},_sort:{type:Object,computed:"_makeSortObject(_sortstr)"},_sor tstr:{type:String},_verbose:{type:Boolean}},_column:function(t,i){var n=this._co lumnMap[t];return n||(n=function(i){var n=this._attribute(i,t,"none");return thi s._verbose?n.join(" | "):n[0]}),n.bind(this)(i)},_compare:function(t,i){if(!this ._sort)return 0;var n=1;"desc"===this._sort.direction&&(n=-1);var r=this._specia lSort[this._sort.name];if(r)return r.bind(this)(n,t,i);var e=this._column(this._ sort.name,t);"none"===e&&(e="ZZZ");var o=this._column(this._sort.name,i);return" none"===o&&(o="ZZZ"),n*swarming.naturalCompare(e,o)},_filterAndSort:function(){s warming.stableSort(this._items,this._compare.bind(this));var t=this._items;retur n this._filter&&(t=t.filter(this._filter.bind(this))),t},_header:function(t){ret urn this._headerMap[t]||t},_hide:function(t){return this._columns.indexOf(t)===- 1},_makeSortObject:function(t){if(t){var i=t.split(":");return 2!=i.length?{name :"id",direction:"asc"}:{name:i[0],direction:i[1]}}},_sortChange:function(t){t&&t .detail&&t.detail.name&&this.set("_sortstr",t.detail.name+":"+t.detail.direction )},_stripSpecial:function(){return this._columns.filter(function(t){return this. _specialColumns.indexOf(t)===-1}.bind(this)).sort()},_commonColumns:function(){r eturn{device_type:function(t){var i=this._attribute(t,"device_type","none");i=i[ 0];var n=swarming.alias.android(i);return"unknown"===n?i:swarming.alias.apply(i, n)},gpu:function(t){var i=this._attribute(t,"gpu","none"),n=[],r=[];return i.for Each(function(t){var i=swarming.alias.gpu(t);return"unknown"===i?(n.push(t),void (t.indexOf(":")===-1&&r.push(t))):(n.push(swarming.alias.apply(t,i)),void(t.inde xOf(":")===-1&&r.push(swarming.alias.apply(t,i))))}.bind(this)),this._verbose||! r.length?n.join(" | "):r.join(" | ")},pool:function(t){var i=this._attribute(t," pool");return i.join(" | ")}}}}]}()</script><dom-module id="sort-toggle" assetpa th="/res/imp/common/"> <template> <style>:host{display:inline-block;position:rel ative;min-width:20px;min-height:16px;vertical-align:middle}iron-icon{position:ab solute;left:0;cursor:pointer}.hidden{visibility:hidden}</style> <span on-click=" toggle"> <iron-icon style="top:0" class$="[[_hidden(direction,'asc')]]" icon="ic ons:arrow-drop-down"> </iron-icon> <iron-icon style="bottom:0" class$="[[_hidden (direction,'desc')]]" icon="icons:arrow-drop-up"> </iron-icon> </span> </templat e> <script>Polymer({is:"sort-toggle",properties:{current:{type:Object,observer:" _resetSort"},name:{type:String,observer:"_resetSort"},direction:{type:String,val ue:"",notify:!0}},toggle:function(){"asc"===this.direction?this.set("direction", "desc"):this.set("direction","asc"),this.fire("sort_change",{direction:this.dire ction,name:this.name})},_hidden:function(t,e){return t===e?"hidden":""},_resetSo rt:function(){this.current&&this.current.name===this.name?this.set("direction",t his.current.direction):this.set("direction","")}})</script> </dom-module><dom-mo dule id="url-param" assetpath="/res/imp/common/"> <template> <paper-toast id="to ast"></paper-toast> </template> <script>!function(){Polymer({is:"url-param",prop erties:{default_value:{type:String},default_values:{type:Array},multi:{type:Bool ean,value:!1},name:{type:String},valid:{type:Array},value:{type:String,value:"", notify:!0,observer:"_valueChanged"},_loaded:{type:Boolean,value:!1}},observers:[ "_valueChanged(value.splices)"],ready:function(){this._loaded=!0;var t=this._get URL();t&&this._isValid(t)?this.set("value",t):this.default_value&&this._isValid( this.default_value)?this.set("value",this.default_value):this.multi&&this.defaul t_values&&this._isValid(this.default_values)?this.set("value",this.default_value s):this._putURL()},_getURL:function(){var t=sk.query.toParamSet(window.location. search.substring(1))[this.name];return t?this.multi?t:t.length>1?(this._error("M ultiple values provided for "+this.name+" but only one accepted: "+t),null):t[0] :null},_putURL:function(){var t=sk.query.toParamSet(window.location.search.subst ring(1));delete t[this.name],!this.value||Array.isArray(this.value)&&0==this.val ue.length||(this.multi?t[this.name]=this.value:t[this.name]=[this.value]);var e= window.location.href.split("?")[0]+"?"+sk.query.fromParamSet(t);window.history.r eplaceState("","",e)},_isValid:function(t){var e=function(t){if(this.valid){for( var e=0;e<this.valid.length;e++)if(t==this.valid[e])return!0;return this._error( "Invalid value for "+this.name+': "'+t+'". Must be one of: '+this.valid),!1}retu rn!0}.bind(this);if(!this.multi)return Array.isArray(t)&&this._error("Multiple v alues provided for "+this.name+" but only one accepted: "+t),e(t);if(!Array.isAr ray(t))return this._error("url-param-sk: Value is not an array: "+t),!1;for(var i=0;i<t.length;i++)if(!e(t[i]))return!1;return!0},_valueChanged:function(){this. _loaded&&this._putURL()},_error:function(t){console.log("[ERROR] "+t),this.set(" $.toast.text",t),this.$.toast.show()}})}()</script> </dom-module> <dom-module id ="pageable-data" assetpath="/res/imp/common/"> <template> <style include="swarmi ng-app-style"></style> <button on-tap="page" disabled$="[[_noMore(_cursor)]]"> [ [label]] </button> </template> <script> (function(){
198 var END = "END"; 198 var END = "END";
199 Polymer({ 199 Polymer({
200 is: 'pageable-data', 200 is: 'pageable-data',
201 201
202 properties: { 202 properties: {
203 // input 203 // input
204 label: { 204 label: {
205 type: String, 205 type: String,
206 value: "Show More", 206 value: "Show More",
207 }, 207 },
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 console.log("Reason for failure of request to " + this._url, reason); 299 console.log("Reason for failure of request to " + this._url, reason);
300 sk.errorMessage("Could not get next set of results. Try reloading the page?", 0); 300 sk.errorMessage("Could not get next set of results. Try reloading the page?", 0);
301 this.set("busy", false); 301 this.set("busy", false);
302 }.bind(this)); 302 }.bind(this));
303 }, 303 },
304 304
305 _noMore: function(cursor) { 305 _noMore: function(cursor) {
306 return cursor === END; 306 return cursor === END;
307 } 307 }
308 }); 308 });
309 })(); </script> </dom-module><script>Polymer({is:"iron-a11y-keys",behaviors:[P olymer.IronA11yKeysBehavior],properties:{target:{type:Object,observer:"_targetCh anged"},keys:{type:String,reflectToAttribute:!0,observer:"_keysChanged"}},attach ed:function(){this.target||(this.target=this.parentNode)},_targetChanged:functio n(e){this.keyEventTarget=e},_keysChanged:function(){this.removeOwnKeyBindings(), this.addOwnKeyBinding(this.keys,"_fireKeysPressed")},_fireKeysPressed:function(e ){this.fire("keys-pressed",e.detail,{})}})</script> <script>Polymer({is:"iron-se lector",behaviors:[Polymer.IronMultiSelectableBehavior]})</script> <script>Polym er.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties: {validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,v alue:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validato r"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers :["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehav iorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){thi s.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-in valid")},hasValidator:function(){return null!=this._validator},validate:function (a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:functi on(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidato r:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatable BehaviorMeta.byKey(this.validator)}}</script> <script>Polymer.IronFormElementBeh avior={properties:{name:{type:String},value:{notify:!0,type:String},required:{ty pe:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("i ron-form-element-register")},detached:function(){this._parentForm&&this._parentF orm.fire("iron-form-element-unregister",{target:this})}}</script> <script>Polyme r.IronCheckedElementBehaviorImpl={properties:{checked:{type:Boolean,value:!1,ref lectToAttribute:!0,notify:!0,observer:"_checkedChanged"},toggles:{type:Boolean,v alue:!0,reflectToAttribute:!0},value:{type:String,value:"on",observer:"_valueCha nged"}},observers:["_requiredChanged(required)"],created:function(){this._hasIro nCheckedElementBehavior=!0},_getValidity:function(e){return this.disabled||!this .required||this.checked},_requiredChanged:function(){this.required?this.setAttri bute("aria-required","true"):this.removeAttribute("aria-required")},_checkedChan ged:function(){this.active=this.checked,this.fire("iron-change")},_valueChanged: function(){void 0!==this.value&&null!==this.value||(this.value="on")}},Polymer.I ronCheckedElementBehavior=[Polymer.IronFormElementBehavior,Polymer.IronValidatab leBehavior,Polymer.IronCheckedElementBehaviorImpl]</script> <script>Polymer.Pape rCheckedElementBehaviorImpl={_checkedChanged:function(){Polymer.IronCheckedEleme ntBehaviorImpl._checkedChanged.call(this),this.hasRipple()&&(this.checked?this._ ripple.setAttribute("checked",""):this._ripple.removeAttribute("checked"))},_but tonStateChanged:function(){Polymer.PaperRippleBehavior._buttonStateChanged.call( this),this.disabled||this.isAttached&&(this.checked=this.active)}},Polymer.Paper CheckedElementBehavior=[Polymer.PaperInkyFocusBehavior,Polymer.IronCheckedElemen tBehavior,Polymer.PaperCheckedElementBehaviorImpl]</script> <dom-module id="pape r-checkbox" assetpath="/res/imp/bower_components/paper-checkbox/"> <template str ip-whitespace=""> <style>:host{display:inline-block;white-space:nowrap;cursor:po inter;--calculated-paper-checkbox-size:var(--paper-checkbox-size, 18px);--calcul ated-paper-checkbox-ink-size:var(--paper-checkbox-ink-size, -1px);@apply(--paper -font-common-base);line-height:0;-webkit-tap-highlight-color:transparent}:host([ hidden]){display:none!important}:host(:focus){outline:0}.hidden{display:none}#ch eckboxContainer{display:inline-block;position:relative;width:var(--calculated-pa per-checkbox-size);height:var(--calculated-paper-checkbox-size);min-width:var(-- calculated-paper-checkbox-size);margin:var(--paper-checkbox-margin,initial);vert ical-align:var(--paper-checkbox-vertical-align,middle);background-color:var(--pa per-checkbox-unchecked-background-color,transparent)}#ink{position:absolute;top: calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-c heckbox-size))/ 2);left:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);width:var(--calculated-paper-checkbox -ink-size);height:var(--calculated-paper-checkbox-ink-size);color:var(--paper-ch eckbox-unchecked-ink-color,var(--primary-text-color));opacity:.6;pointer-events: none}:host-context([dir=rtl]) #ink{right:calc(0px - (var(--calculated-paper-chec kbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:auto}#ink[check ed]{color:var(--paper-checkbox-checked-ink-color,var(--primary-color))}#checkbox {position:relative;box-sizing:border-box;height:100%;border:solid 2px;border-col or:var(--paper-checkbox-unchecked-color,var(--primary-text-color));border-radius :2px;pointer-events:none;-webkit-transition:background-color 140ms,border-color 140ms;transition:background-color 140ms,border-color 140ms}#checkbox.checked #ch eckmark{-webkit-animation:checkmark-expand 140ms ease-out forwards;animation:che ckmark-expand 140ms ease-out forwards}@-webkit-keyframes checkmark-expand{0%{-we bkit-transform:scale(0,0) rotate(45deg)}100%{-webkit-transform:scale(1,1) rotate (45deg)}}@keyframes checkmark-expand{0%{transform:scale(0,0) rotate(45deg)}100%{ transform:scale(1,1) rotate(45deg)}}#checkbox.checked{background-color:var(--pap er-checkbox-checked-color,var(--primary-color));border-color:var(--paper-checkbo x-checked-color,var(--primary-color))}#checkmark{position:absolute;width:36%;hei ght:70%;border-style:solid;border-top:none;border-left:none;border-right-width:c alc(2/15 * var(--calculated-paper-checkbox-size));border-bottom-width:calc(2/15 * var(--calculated-paper-checkbox-size));border-color:var(--paper-checkbox-check mark-color,#fff);-webkit-transform-origin:97% 86%;transform-origin:97% 86%;box-s izing:content-box}:host-context([dir=rtl]) #checkmark{-webkit-transform-origin:5 0% 14%;transform-origin:50% 14%}#checkboxLabel{position:relative;display:inline- block;vertical-align:middle;padding-left:var(--paper-checkbox-label-spacing,8px) ;white-space:normal;line-height:normal;color:var(--paper-checkbox-label-color,va r(--primary-text-color));@apply(--paper-checkbox-label)}:host([checked]) #checkb oxLabel{color:var(--paper-checkbox-label-checked-color,var(--paper-checkbox-labe l-color,var(--primary-text-color)));@apply(--paper-checkbox-label-checked)}:host -context([dir=rtl]) #checkboxLabel{padding-right:var(--paper-checkbox-label-spac ing,8px);padding-left:0}#checkboxLabel[hidden]{display:none}:host([disabled]) #c heckbox{opacity:.5;border-color:var(--paper-checkbox-unchecked-color,var(--prima ry-text-color))}:host([disabled][checked]) #checkbox{background-color:var(--pape r-checkbox-unchecked-color,var(--primary-text-color));opacity:.5}:host([disabled ]) #checkboxLabel{opacity:.65}#checkbox.invalid:not(.checked){border-color:var(- -paper-checkbox-error-color,var(--error-color))}</style> <div id="checkboxContai ner"> <div id="checkbox" class$="[[_computeCheckboxClass(checked, invalid)]]"> < div id="checkmark" class$="[[_computeCheckmarkClass(checked)]]"></div> </div> </ div> <div id="checkboxLabel"><content></content></div> </template> <script>Polym er({is:"paper-checkbox",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttr ibutes:{role:"checkbox","aria-checked":!1,tabindex:0},properties:{ariaActiveAttr ibute:{type:String,value:"aria-checked"}},attached:function(){var e=this.getComp utedStyleValue("--calculated-paper-checkbox-ink-size");if("-1px"===e){var t=pars eFloat(this.getComputedStyleValue("--calculated-paper-checkbox-size")),a=Math.fl oor(8/3*t);a%2!==t%2&&a++,this.customStyle["--paper-checkbox-ink-size"]=a+"px",t his.updateStyles()}},_computeCheckboxClass:function(e,t){var a="";return e&&(a+= "checked "),t&&(a+="invalid"),a},_computeCheckmarkClass:function(e){return e?"": "hidden"},_createRipple:function(){return this._rippleContainer=this.$.checkboxC ontainer,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)}})</script> </dom-module> <script>Polymer({is:"iron-input",extends:"input",behaviors:[Polym er.IronValidatableBehavior],properties:{bindValue:{observer:"_bindValueChanged", type:String},preventInvalidInput:{type:Boolean},allowedPattern:{type:String,obse rver:"_allowedPatternChanged"},_previousValidInput:{type:String,value:""},_patte rnAlreadyChecked:{type:Boolean,value:!1}},listeners:{input:"_onInput",keypress:" _onKeypress"},registered:function(){this._canDispatchEventOnDisabled()||(this._o rigDispatchEvent=this.dispatchEvent,this.dispatchEvent=this._dispatchEventFirefo xIE)},created:function(){Polymer.IronA11yAnnouncer.requestAvailability()},_canDi spatchEventOnDisabled:function(){var e=document.createElement("input"),t=!1;e.di sabled=!0,e.addEventListener("feature-check-dispatch-event",function(){t=!0});tr y{e.dispatchEvent(new Event("feature-check-dispatch-event"))}catch(e){}return t} ,_dispatchEventFirefoxIE:function(){var e=this.disabled;this.disabled=!1,this._o rigDispatchEvent.apply(this,arguments),this.disabled=e},get _patternRegExp(){var e;if(this.allowedPattern)e=new RegExp(this.allowedPattern);else switch(this.typ e){case"number":e=/[0-9.,e-]/}return e},ready:function(){this.bindValue=this.val ue},_bindValueChanged:function(){this.value!==this.bindValue&&(this.value=this.b indValue||0===this.bindValue||this.bindValue===!1?this.bindValue:""),this.fire(" bind-value-changed",{value:this.bindValue})},_allowedPatternChanged:function(){t his.preventInvalidInput=!!this.allowedPattern},_onInput:function(){if(this.preve ntInvalidInput&&!this._patternAlreadyChecked){var e=this._checkPatternValidity() ;e||(this._announceInvalidCharacter("Invalid string of characters not entered.") ,this.value=this._previousValidInput)}this.bindValue=this.value,this._previousVa lidInput=this.value,this._patternAlreadyChecked=!1},_isPrintable:function(e){var t=8==e.keyCode||9==e.keyCode||13==e.keyCode||27==e.keyCode,i=19==e.keyCode||20= =e.keyCode||45==e.keyCode||46==e.keyCode||144==e.keyCode||145==e.keyCode||e.keyC ode>32&&e.keyCode<41||e.keyCode>111&&e.keyCode<124;return!(t||0==e.charCode&&i)} ,_onKeypress:function(e){if(this.preventInvalidInput||"number"===this.type){var t=this._patternRegExp;if(t&&!(e.metaKey||e.ctrlKey||e.altKey)){this._patternAlre adyChecked=!0;var i=String.fromCharCode(e.charCode);this._isPrintable(e)&&!t.tes t(i)&&(e.preventDefault(),this._announceInvalidCharacter("Invalid character "+i+ " not entered."))}}},_checkPatternValidity:function(){var e=this._patternRegExp; if(!e)return!0;for(var t=0;t<this.value.length;t++)if(!e.test(this.value[t]))ret urn!1;return!0},validate:function(){var e=this.checkValidity();return e&&(this.r equired&&""===this.value?e=!1:this.hasValidator()&&(e=Polymer.IronValidatableBeh avior.validate.call(this,this.value))),this.invalid=!e,this.fire("iron-input-val idate"),e},_announceInvalidCharacter:function(e){this.fire("iron-announce",{text :e})}})</script> <script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.Ne xtLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImp l={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type: Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput: {type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String },pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:Stri ng},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alw aysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},valid ator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolea n,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number}, maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},n ame:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,valu e:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{ type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{ty pe:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_aria LabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached "},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex: 0},get inputElement(){return this.$.input},get _focusableElement(){return this.i nputElement},registered:function(){this._typesThatHaveText=["date","datetime","d atetime-local","month","time","week","file"]},attached:function(){this._updateAr iaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElem ent.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t) {return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.tar get;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribe dBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID+ +;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy ,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler :function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focuse d&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:funct ion(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttr ibute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),thi s._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&thi s.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElemen t.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputEleme nt.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t) {return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).quer ySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id: (t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ari aLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEv ent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged :function(){if(this.autofocus&&this._focusableElement){var e=document.activeElem ent,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElem ent;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.Iro nControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</scri pt> <script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attach ed:function(){this.fire("addon-attached")},update:function(t){}}</script> <dom-m odule id="paper-input-char-counter" assetpath="/res/imp/bower_components/paper-i nput/"> <template> <style>:host{display:inline-block;float:right;@apply(--paper- font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!im portant}:host-context([dir=rtl]){float:left}</style> <span>[[_charCounterStr]]</ span> </template> </dom-module> <script>Polymer({is:"paper-input-char-counter",b ehaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:Str ing,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e= t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&( e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</scr ipt> <dom-module id="paper-input-container" assetpath="/res/imp/bower_components /paper-input/"> <template> <style>:host{display:block;padding:8px 0;@apply(--pap er-input-container)}:host([inline]){display:inline-block}:host([disabled]){point er-events:none;opacity:.33;@apply(--paper-input-container-disabled)}:host([hidde n]){display:none!important}.floated-label-placeholder{@apply(--paper-font-captio n)}.underline{position:relative}.focused-line{@apply(--layout-fit);background:va r(--paper-input-container-focus-color,--primary-color);height:2px;-webkit-transf orm-origin:center center;transform-origin:center center;-webkit-transform:scale3 d(0,1,1);transform:scale3d(0,1,1);@apply(--paper-input-container-underline-focus )}.underline.is-highlighted .focused-line{-webkit-transform:none;transform:none; -webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--pap er-transition-easing)}.underline.is-invalid .focused-line{background:var(--paper -input-container-invalid-color,--error-color);-webkit-transform:none;transform:n one;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(- -paper-transition-easing)}.unfocused-line{@apply(--layout-fit);background:var(-- paper-input-container-color,--secondary-text-color);height:1px;@apply(--paper-in put-container-underline)}:host([disabled]) .unfocused-line{border-bottom:1px das hed;border-color:var(--paper-input-container-color,--secondary-text-color);backg round:0 0;@apply(--paper-input-container-underline-disabled)}.label-and-input-co ntainer{@apply(--layout-flex-auto);@apply(--layout-relative);width:100%;max-widt h:100%}.input-content{@apply(--layout-horizontal);@apply(--layout-center);positi on:relative}.input-content ::content .paper-input-label,.input-content ::content label{position:absolute;top:0;right:0;left:0;width:100%;font:inherit;color:var( --paper-input-container-color,--secondary-text-color);-webkit-transition:-webkit -transform .25s,width .25s;transition:transform .25s,width .25s;-webkit-transfor m-origin:left top;transform-origin:left top;@apply(--paper-font-common-nowrap);@ apply(--paper-font-subhead);@apply(--paper-input-container-label);@apply(--paper -transition-easing)}.input-content.label-is-floating ::content .paper-input-labe l,.input-content.label-is-floating ::content label{-webkit-transform:translateY( -75%) scale(.75);transform:translateY(-75%) scale(.75);width:133%;@apply(--paper -input-container-label-floating)}:host-context([dir=rtl]) .input-content.label-i s-floating ::content .paper-input-label,:host-context([dir=rtl]) .input-content. label-is-floating ::content label{width:100%;-webkit-transform-origin:right top; transform-origin:right top}.input-content.label-is-highlighted ::content .paper- input-label,.input-content.label-is-highlighted ::content label{color:var(--pape r-input-container-focus-color,--primary-color);@apply(--paper-input-container-la bel-focus)}.input-content.is-invalid ::content .paper-input-label,.input-content .is-invalid ::content label{color:var(--paper-input-container-invalid-color,--er ror-color)}.input-content.label-is-hidden ::content .paper-input-label,.input-co ntent.label-is-hidden ::content label{visibility:hidden}.input-content ::content .paper-input-input,.input-content ::content input,.input-content ::content iron -autogrow-textarea,.input-content ::content textarea{position:relative;outline:0 ;box-shadow:none;padding:0;width:100%;max-width:100%;background:0 0;border:none; color:var(--paper-input-container-input-color,--primary-text-color);-webkit-appe arance:none;text-align:inherit;vertical-align:bottom;@apply(--paper-font-subhead );@apply(--paper-input-container-input)}::content [prefix]{@apply(--paper-font-s ubhead);@apply(--paper-input-prefix);@apply(--layout-flex-none)}::content [suffi x]{@apply(--paper-font-subhead);@apply(--paper-input-suffix);@apply(--layout-fle x-none)}.input-content ::content input{min-width:0}.input-content ::content text area{resize:none}.add-on-content{position:relative}.add-on-content.is-invalid :: content *{color:var(--paper-input-container-invalid-color,--error-color)}.add-on -content.is-highlighted ::content *{color:var(--paper-input-container-focus-colo r,--primary-color)}</style> <template is="dom-if" if="[[!noLabelFloat]]"> <div c lass="floated-label-placeholder" aria-hidden="true">&nbsp;</div> </template> <di v class$="[[_computeInputContentClass(noLabelFloat,alwaysFloatLabel,focused,inva lid,_inputHasContent)]]"> <content select="[prefix]" id="prefix"></content> <div class="label-and-input-container" id="labelAndInputContainer"> <content select= ":not([add-on]):not([prefix]):not([suffix])"></content> </div> <content select=" [suffix]"></content> </div> <div class$="[[_computeUnderlineClass(focused,invali d)]]"> <div class="unfocused-line"></div> <div class="focused-line"></div> </div > <div class$="[[_computeAddOnContentClass(focused,invalid)]]"> <content id="add OnContent" select="[add-on]"></content> </div> </template> </dom-module> <script >Polymer({is:"paper-input-container",properties:{noLabelFloat:{type:Boolean,valu e:!1},alwaysFloatLabel:{type:Boolean,value:!1},attrForValue:{type:String,value:" bind-value"},autoValidate:{type:Boolean,value:!1},invalid:{observer:"_invalidCha nged",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,textarea,.paper-input-input"},_boundOnFocus:{type:Func tion,value:function(){return this._onFocus.bind(this)}},_boundOnBlur:{type:Funct ion,value:function(){return this._onBlur.bind(this)}},_boundOnInput:{type:Functi on,value:function(){return this._onInput.bind(this)}},_boundValueChanged:{type:F unction,value:function(){return this._onValueChanged.bind(this)}}},listeners:{"a ddon-attached":"_onAddonAttached","iron-input-validate":"_onIronInputValidate"}, get _valueChangedEvent(){return this.attrForValue+"-changed"},get _propertyForVa lue(){return Polymer.CaseMap.dashToCamelCase(this.attrForValue)},get _inputEleme nt(){return Polymer.dom(this).querySelector(this._inputSelector)},get _inputElem entValue(){return this._inputElement[this._propertyForValue]||this._inputElement .value},ready:function(){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._handleValueAndAutoValidate(this._inp utElement):this._handleValue(this._inputElement)},_onAddonAttached:function(t){t his._addons||(this._addons=[]);var n=t.target;this._addons.indexOf(n)===-1&&(thi s._addons.push(n),this.isAttached&&this._handleValue(this._inputElement))},_onFo cus:function(){this._setFocused(!0)},_onBlur:function(){this._setFocused(!1),thi s._handleValueAndAutoValidate(this._inputElement)},_onInput:function(t){this._ha ndleValueAndAutoValidate(t.target)},_onValueChanged:function(t){this._handleValu eAndAutoValidate(t.target)},_handleValue:function(t){var n=this._inputElementVal ue;n||0===n||"number"===t.type&&!t.checkValidity()?this._inputHasContent=!0:this ._inputHasContent=!1,this.updateAddons({inputElement:t,value:n,invalid:this.inva lid})},_handleValueAndAutoValidate:function(t){if(this.autoValidate){var n;n=t.v alidate?t.validate(this._inputElementValue):t.checkValidity(),this.invalid=!n}th is._handleValue(t)},_onIronInputValidate:function(t){this.invalid=this._inputEle ment.invalid},_invalidChanged:function(){this._addons&&this.updateAddons({invali d:this.invalid})},updateAddons:function(t){for(var n,e=0;n=this._addons[e];e++)n .update(t)},_computeInputContentClass:function(t,n,e,i,a){var u="input-content"; if(t)a&&(u+=" label-is-hidden");else{var o=this.querySelector("label");n||a?(u+= " label-is-floating",this.$.labelAndInputContainer.style.position="static",i?u+= " is-invalid":e&&(u+=" label-is-highlighted")):o&&(this.$.labelAndInputContainer .style.position="relative")}return u},_computeUnderlineClass:function(t,n){var e ="underline";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e},_computeAddO nContentClass:function(t,n){var e="add-on-content";return n?e+=" is-invalid":t&& (e+=" is-highlighted"),e}})</script> <dom-module id="paper-input-error" assetpat h="/res/imp/bower_components/paper-input/"> <template> <style>:host{display:inli ne-block;visibility:hidden;color:var(--paper-input-container-invalid-color,--err or-color);@apply(--paper-font-caption);@apply(--paper-input-error);position:abso lute;left:0;right:0}:host([invalid]){visibility:visible};</style> <content></con tent> </template> </dom-module> <script>Polymer({is:"paper-input-error",behavior s:[Polymer.PaperInputAddonBehavior],properties:{invalid:{readOnly:!0,reflectToAt tribute:!0,type:Boolean}},update:function(e){this._setInvalid(e.invalid)}})</scr ipt> <dom-module id="paper-input" assetpath="/res/imp/bower_components/paper-inp ut/"> <template> <style>:host{display:block}:host([focused]){outline:0}:host([hi dden]){display:none!important}input::-webkit-input-placeholder{color:var(--paper -input-container-color,--secondary-text-color)}input:-moz-placeholder{color:var( --paper-input-container-color,--secondary-text-color)}input::-moz-placeholder{co lor:var(--paper-input-container-color,--secondary-text-color)}input:-ms-input-pl aceholder{color:var(--paper-input-container-color,--secondary-text-color)}label{ pointer-events:none}</style> <paper-input-container no-label-float="[[noLabelFlo at]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholde r)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[inva lid]]"> <content select="[prefix]"></content> <label hidden$="[[!label]]" aria-h idden="true" for="input">[[label]]</label> <input is="iron-input" id="input" ari a-labelledby$="[[_ariaLabelledBy]]" aria-describedby$="[[_ariaDescribedBy]]" dis abled$="[[disabled]]" title$="[[title]]" bind-value="{{value}}" invalid="{{inval id}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowed Pattern]]" validator="[[validator]]" type$="[[type]]" pattern$="[[pattern]]" req uired$="[[required]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]] " inputmode$="[[inputmode]]" minlength$="[[minlength]]" maxlength$="[[maxlength] ]" min$="[[min]]" max$="[[max]]" step$="[[step]]" name$="[[name]]" placeholder$= "[[placeholder]]" readonly$="[[readonly]]" list$="[[list]]" size$="[[size]]" aut ocapitalize$="[[autocapitalize]]" autocorrect$="[[autocorrect]]" on-change="_onC hange" tabindex$="[[tabindex]]" autosave$="[[autosave]]" results$="[[results]]" accept$="[[accept]]" multiple$="[[multiple]]"> <content select="[suffix]"></cont ent> <template is="dom-if" if="[[errorMessage]]"> <paper-input-error aria-live=" assertive">[[errorMessage]]</paper-input-error> </template> <template is="dom-if " if="[[charCounter]]"> <paper-input-char-counter></paper-input-char-counter> </ template> </paper-input-container> </template> </dom-module> <script>Polymer({is :"paper-input",behaviors:[Polymer.IronFormElementBehavior,Polymer.PaperInputBeha vior]})</script> <dom-module id="query-column-filter-style" assetpath="/res/imp/ common/"> <template> <style>:host{display:block;font-family:sans-serif}#filter{m argin:0 5px}.container{min-height:120px;width:100%}.item{border-bottom:1px solid #EEE;max-width:250px;min-height:1em;min-width:100px;padding:.1em .2em;line-heig ht:1.5em}.header{height:2em;padding:.25em;line-height:2em}.selector{border:1px s olid #000;margin:0 5px;max-height:200px;min-height:130px;min-width:275px;overflo w-y:auto}.selectable{cursor:pointer}.selectable:hover{background-color:#A6CEE3}. iron-selected{background-color:#1F78B4;color:#fff}.icons{cursor:pointer;height:2 0px;margin:2px;width:20px;flex-shrink:0}.side-by-side{display:inline-block;verti cal-align:top}.bold{font-weight:700}paper-checkbox{max-height:2em;margin:2px;--p aper-checkbox-checked-color:black;--paper-checkbox-checked-ink-color:black;--pap er-checkbox-unchecked-color:black;--paper-checkbox-unchecked-ink-color:black;--p aper-checkbox-label-color:black}</style> </template> </dom-module> <script>!func tion(){var r=":",t=function(r,t){if(!t)return{idx:0,part:""};if(!r)return{idx:-1 };t=t.trim().toLocaleLowerCase(),r=r.toLocaleLowerCase();for(var i=t.split(" "), e=0;e<i.length;e++){var n=r.indexOf(i[e]);if(n!==-1)return{idx:n,part:i[e]}}retu rn{idx:-1}},i=function(t,i,e){if(!i)return!0;if(!t)return!1;if(t=t.toLocaleLower Case(),i=i.trim().toLocaleLowerCase(),i.indexOf(" ")!==-1||i.indexOf(":")===-1)r eturn!1;var n=i.split(r,1)[0],a=i.substring(n.length+r.length);return e?t===n:t. startsWith(a)};SwarmingBehaviors.QueryColumnFilter=[SwarmingBehaviors.CommonBeha vior,{properties:{primary_map:{type:Object},primary_arr:{type:Array},dimensions: {type:Array},filter:{type:Function,computed:"_makeFilter(_filters.*)",notify:!0} ,FILTER_SEP:{type:String,value:r},_filters:{type:Array},_limit:{type:Number},_pr imaryItems:{type:Array,computed:"_primary(_query, primary_map, primary_arr, colu mns.*)"},_primarySelected:{type:String,value:""},_query:{type:String},_secondary Items:{type:Array,computed:"_secondary(_primarySelected, _query, primary_map)"}} ,_addFilter:function(r){var t=r.model.item;if(!this._cantAddFilter(this._primary Selected,t)){var i=this._primarySelected+this.FILTER_SEP+t;this.push("_filters", i)}},_removeFilter:function(r){var t=r.model.fil;if(!this._cantRemoveFilter(t)){ var i=this._filters.indexOf(t);i!==-1&&this.splice("_filters",i,1)}},_cantAddFil ter:function(r,t){if(!r||!t)return!0;var i=r+this.FILTER_SEP+t;return this._filt ers.indexOf(i)!==-1},_cantRemoveFilter:function(r){return!r||this._filters.index Of(r)===-1},_makeFilter:function(){var r={};this._filters.forEach(function(t){va r i=t.indexOf(this.FILTER_SEP),e=t.slice(0,i),n=t.slice(i+this.FILTER_SEP.length ),a=r[e]||[];a.push(n),r[e]=a}.bind(this));var t=this._filterMap||{};return func tion(i){var e=!0;for(primary in r){var n=r[primary],a=t[primary];a||(a=function( r,t){var i=this._attribute(r,primary);return i.indexOf(t)!==-1}.bind(this)),a&&n .forEach(function(r){e=e&&a.bind(this)(i,r)}.bind(this))}return e}},_manuallyAdd Filter:function(){var r=this._query.trim().split(":");if(2!=r.length)return void sk.errorMessage('Invalid filter. Should be like "foo:bar"',5e3);var t=r.join(" :");return this._filters.indexOf(t)!==-1?void sk.errorMessage('Filter "'+t+'" is already active',5e3):(this.push("_filters",t),void this.set("_query",""))},_tog gleColumn:function(r){var t=r.model.item;if(!this._cantToggleColumn(t)){if(this. _columnState(t)){var i=this.columns.indexOf(t);return void(i!==-1&&this.splice(" columns",i,1))}this.push("columns",t)}},_cantToggleColumn:function(r){return!1}, _columnState:function(r){return!!r&&this.columns.indexOf(r)!==-1},_primary:funct ion(r,e,n){var a=this.primary_arr.filter(function(n){if(i(n,r,!0))return!0;if(t( n,r).idx!==-1)return!0;for(var a=e[n]||[],s=0;s<a.length;s++)if(t(a[s],r).idx!== -1)return!0;return!1});return r&&a.length>0&&a.indexOf(this._primarySelected)=== -1&&this.set("_primarySelected",a[0]),a.sort(function(r,t){var i=this._columnSta te(r),e=this._columnState(t);return i&&!e?-1:e&&!i?1:swarming.naturalCompare(r,t )}.bind(this)),a},_secondary:function(r,e,n){if(requestAnimationFrame(function() {this.$.secondaryList.render()}.bind(this)),!r)return[];var a=n[r]||[];return i( r,e,!0)?a.sort(function(r,t){var n=i(r,e,!1),a=i(t,e,!1);return n===a?swarming.n aturalCompare(r,t):a-n}):t(r,e).idx!==-1?a.sort(function(r,i){var n=t(r,e).idx!= =-1,a=t(i,e).idx!==-1;return n===a?swarming.naturalCompare(r,i):a-n}):a.filter(f unction(r){return t(r,e).idx!==-1})},_beforeBold:function(r,i){var e=t(r,i.repla ce(":"," "));return e.idx===-1?r:r.substring(0,e.idx)},_bold:function(r,i){var e =t(r,i.replace(":"," "));return e.idx===-1?"":r.substring(e.idx,e.idx+e.part.len gth)},_afterBold:function(r,i){var e=t(r,i.replace(":"," "));return e.idx===-1?" ":r.substring(e.idx+e.part.length)},_commonFilters:function(){return{android_dev ices:function(r,t){var i=this._attribute(r,"android_devices","0");return i.index Of(t)!==-1},device_os:function(r,t){var i=this._attribute(r,"device_os","none"); return i.indexOf(t)!==-1},device_type:function(r,t){var i=this._attribute(r,"dev ice_type","none");return i.indexOf(swarming.alias.unapply(t))!==-1},gpu:function (r,t){var i=this._attribute(r,"gpu","none");return i.indexOf(swarming.alias.unap ply(t))!==-1}}}}]}()</script> <script>!function(){var e="unknown";SwarmingBehavi ors.BotListBehavior=[SwarmingBehaviors.CommonBehavior,{properties:{BOT_PROPERTIE S:{type:Array,value:function(){return["disk_space","uptime","running_time","task ","status","version","external_ip","cloud_console_link","mp_lease_id","mp_lease_ expires","last_seen","first_seen","battery_level","battery_voltage","battery_tem perature","battery_status","battery_health","bot_temperature","device_temperatur e"]}}},_attribute:function(t,i,n){return n=n||e,this._dimension(t,i)||this._stat e(t,i)||[n]},_devices:function(e){return e.state.devices},_deviceType:function(e ){return e.device_type.toLowerCase()},_dimension:function(e,t){if(e&&e.dimension s&&t)for(var i=0;i<e.dimensions.length;i++)if(e.dimensions[i].key===t)return e.d imensions[i].value},_state:function(e,t){if(e&&e.state&&e.state[t]){var i=e.stat e[t];return Array.isArray(i)?i:[i]}},_taskId:function(e){return e&&e.task_id?e.t ask_id:"idle"}}]}()</script> <dom-module id="bot-filters" assetpath="/res/imp/bo tlist/"> <template> <style is="custom-style" include="iron-flex iron-flex-alignm ent iron-positioning query-column-filter-style"></style> <url-param name="f" val ue="{{_filters}}" default_values="[]" multi=""> </url-param> <url-param name="c" value="{{columns}}" default_values="[&quot;id&quot;,&quot;os&quot;,&quot;task&q uot;,&quot;status&quot;]" multi=""> </url-param> <url-param name="q" value="{{_q uery}}" default_value=""> </url-param> <url-param name="v" value="{{verbose}}"> </url-param> <url-param name="l" default_value="100" value="{{_limit}}"> </url-p aram> <div class="container horizontal layout"> <div class="narrow-down-selector "> <div> <iron-a11y-keys target="[[_filter_input]]" keys="enter" on-keys-pressed ="_manuallyAddFilter"></iron-a11y-keys> <paper-input id="filter" label="Search c olumns and filters or supply a filter and press enter" placeholder="gpu nvidia p ool:Chrome" value="{{_query::input}}"> </paper-input> </div> <div class="selecto r side-by-side" title="This shows all bot dimension names and other interesting bot properties. Mark the check box to add as a column. Select the row to see fil ter options."> <iron-selector attr-for-selected="label" selected="{{_primarySele cted}}"> <template is="dom-repeat" items="[[_primaryItems]]" as="item"> <div cla ss="selectable item horizontal layout" label="[[item]]"> <span>[[_beforeBold(ite m,_query)]]<span class="bold">[[_bold(item,_query)]]</span>[[_afterBold(item,_qu ery)]]</span> <span class="flex"></span> <paper-checkbox noink="" disabled$="[[_ cantToggleColumn(item)]]" checked="[[_columnState(item,columns.*)]]" on-change=" _toggleColumn"> </paper-checkbox> </div> </template> </iron-selector> </div> <di v class="selector side-by-side" title="These are all options (if any) that the b ot list can be filtered on."> <template is="dom-repeat" id="secondaryList" items ="[[_secondaryItems]]" as="item"> <div class="item horizontal layout" label="[[i tem]]"> <span>[[_beforeBold(item,_query)]]<span class="bold">[[_bold(item,_query )]]</span>[[_afterBold(item,_query)]]</span> <span class="flex"></span> <iron-ic on class="icons" icon="icons:arrow-forward" hidden="[[_cantAddFilter(_primarySel ected,item,_filters.*)]]" on-tap="_addFilter"> </iron-icon> </div> </template> < /div> <div class="selector side-by-side" title="These filters are AND'd together and applied to all bots in 309 })(); </script> </dom-module><script>Polymer({is:"iron-a11y-keys",behaviors:[P olymer.IronA11yKeysBehavior],properties:{target:{type:Object,observer:"_targetCh anged"},keys:{type:String,reflectToAttribute:!0,observer:"_keysChanged"}},attach ed:function(){this.target||(this.target=this.parentNode)},_targetChanged:functio n(e){this.keyEventTarget=e},_keysChanged:function(){this.removeOwnKeyBindings(), this.addOwnKeyBinding(this.keys,"_fireKeysPressed")},_fireKeysPressed:function(e ){this.fire("keys-pressed",e.detail,{})}})</script> <script>Polymer({is:"iron-se lector",behaviors:[Polymer.IronMultiSelectableBehavior]})</script> <script>Polym er.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties: {validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,v alue:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validato r"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers :["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehav iorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){thi s.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-in valid")},hasValidator:function(){return null!=this._validator},validate:function (a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:functi on(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidato r:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatable BehaviorMeta.byKey(this.validator)}}</script> <script>Polymer.IronFormElementBeh avior={properties:{name:{type:String},value:{notify:!0,type:String},required:{ty pe:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("i ron-form-element-register")},detached:function(){this._parentForm&&this._parentF orm.fire("iron-form-element-unregister",{target:this})}}</script> <script>Polyme r.IronCheckedElementBehaviorImpl={properties:{checked:{type:Boolean,value:!1,ref lectToAttribute:!0,notify:!0,observer:"_checkedChanged"},toggles:{type:Boolean,v alue:!0,reflectToAttribute:!0},value:{type:String,value:"on",observer:"_valueCha nged"}},observers:["_requiredChanged(required)"],created:function(){this._hasIro nCheckedElementBehavior=!0},_getValidity:function(e){return this.disabled||!this .required||this.checked},_requiredChanged:function(){this.required?this.setAttri bute("aria-required","true"):this.removeAttribute("aria-required")},_checkedChan ged:function(){this.active=this.checked,this.fire("iron-change")},_valueChanged: function(){void 0!==this.value&&null!==this.value||(this.value="on")}},Polymer.I ronCheckedElementBehavior=[Polymer.IronFormElementBehavior,Polymer.IronValidatab leBehavior,Polymer.IronCheckedElementBehaviorImpl]</script> <script>Polymer.Pape rCheckedElementBehaviorImpl={_checkedChanged:function(){Polymer.IronCheckedEleme ntBehaviorImpl._checkedChanged.call(this),this.hasRipple()&&(this.checked?this._ ripple.setAttribute("checked",""):this._ripple.removeAttribute("checked"))},_but tonStateChanged:function(){Polymer.PaperRippleBehavior._buttonStateChanged.call( this),this.disabled||this.isAttached&&(this.checked=this.active)}},Polymer.Paper CheckedElementBehavior=[Polymer.PaperInkyFocusBehavior,Polymer.IronCheckedElemen tBehavior,Polymer.PaperCheckedElementBehaviorImpl]</script> <dom-module id="pape r-checkbox" assetpath="/res/imp/bower_components/paper-checkbox/"> <template str ip-whitespace=""> <style>:host{display:inline-block;white-space:nowrap;cursor:po inter;--calculated-paper-checkbox-size:var(--paper-checkbox-size, 18px);--calcul ated-paper-checkbox-ink-size:var(--paper-checkbox-ink-size, -1px);@apply(--paper -font-common-base);line-height:0;-webkit-tap-highlight-color:transparent}:host([ hidden]){display:none!important}:host(:focus){outline:0}.hidden{display:none}#ch eckboxContainer{display:inline-block;position:relative;width:var(--calculated-pa per-checkbox-size);height:var(--calculated-paper-checkbox-size);min-width:var(-- calculated-paper-checkbox-size);margin:var(--paper-checkbox-margin,initial);vert ical-align:var(--paper-checkbox-vertical-align,middle);background-color:var(--pa per-checkbox-unchecked-background-color,transparent)}#ink{position:absolute;top: calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-c heckbox-size))/ 2);left:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);width:var(--calculated-paper-checkbox -ink-size);height:var(--calculated-paper-checkbox-ink-size);color:var(--paper-ch eckbox-unchecked-ink-color,var(--primary-text-color));opacity:.6;pointer-events: none}:host-context([dir=rtl]) #ink{right:calc(0px - (var(--calculated-paper-chec kbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:auto}#ink[check ed]{color:var(--paper-checkbox-checked-ink-color,var(--primary-color))}#checkbox {position:relative;box-sizing:border-box;height:100%;border:solid 2px;border-col or:var(--paper-checkbox-unchecked-color,var(--primary-text-color));border-radius :2px;pointer-events:none;-webkit-transition:background-color 140ms,border-color 140ms;transition:background-color 140ms,border-color 140ms}#checkbox.checked #ch eckmark{-webkit-animation:checkmark-expand 140ms ease-out forwards;animation:che ckmark-expand 140ms ease-out forwards}@-webkit-keyframes checkmark-expand{0%{-we bkit-transform:scale(0,0) rotate(45deg)}100%{-webkit-transform:scale(1,1) rotate (45deg)}}@keyframes checkmark-expand{0%{transform:scale(0,0) rotate(45deg)}100%{ transform:scale(1,1) rotate(45deg)}}#checkbox.checked{background-color:var(--pap er-checkbox-checked-color,var(--primary-color));border-color:var(--paper-checkbo x-checked-color,var(--primary-color))}#checkmark{position:absolute;width:36%;hei ght:70%;border-style:solid;border-top:none;border-left:none;border-right-width:c alc(2/15 * var(--calculated-paper-checkbox-size));border-bottom-width:calc(2/15 * var(--calculated-paper-checkbox-size));border-color:var(--paper-checkbox-check mark-color,#fff);-webkit-transform-origin:97% 86%;transform-origin:97% 86%;box-s izing:content-box}:host-context([dir=rtl]) #checkmark{-webkit-transform-origin:5 0% 14%;transform-origin:50% 14%}#checkboxLabel{position:relative;display:inline- block;vertical-align:middle;padding-left:var(--paper-checkbox-label-spacing,8px) ;white-space:normal;line-height:normal;color:var(--paper-checkbox-label-color,va r(--primary-text-color));@apply(--paper-checkbox-label)}:host([checked]) #checkb oxLabel{color:var(--paper-checkbox-label-checked-color,var(--paper-checkbox-labe l-color,var(--primary-text-color)));@apply(--paper-checkbox-label-checked)}:host -context([dir=rtl]) #checkboxLabel{padding-right:var(--paper-checkbox-label-spac ing,8px);padding-left:0}#checkboxLabel[hidden]{display:none}:host([disabled]) #c heckbox{opacity:.5;border-color:var(--paper-checkbox-unchecked-color,var(--prima ry-text-color))}:host([disabled][checked]) #checkbox{background-color:var(--pape r-checkbox-unchecked-color,var(--primary-text-color));opacity:.5}:host([disabled ]) #checkboxLabel{opacity:.65}#checkbox.invalid:not(.checked){border-color:var(- -paper-checkbox-error-color,var(--error-color))}</style> <div id="checkboxContai ner"> <div id="checkbox" class$="[[_computeCheckboxClass(checked, invalid)]]"> < div id="checkmark" class$="[[_computeCheckmarkClass(checked)]]"></div> </div> </ div> <div id="checkboxLabel"><content></content></div> </template> <script>Polym er({is:"paper-checkbox",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttr ibutes:{role:"checkbox","aria-checked":!1,tabindex:0},properties:{ariaActiveAttr ibute:{type:String,value:"aria-checked"}},attached:function(){var e=this.getComp utedStyleValue("--calculated-paper-checkbox-ink-size");if("-1px"===e){var t=pars eFloat(this.getComputedStyleValue("--calculated-paper-checkbox-size")),a=Math.fl oor(8/3*t);a%2!==t%2&&a++,this.customStyle["--paper-checkbox-ink-size"]=a+"px",t his.updateStyles()}},_computeCheckboxClass:function(e,t){var a="";return e&&(a+= "checked "),t&&(a+="invalid"),a},_computeCheckmarkClass:function(e){return e?"": "hidden"},_createRipple:function(){return this._rippleContainer=this.$.checkboxC ontainer,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)}})</script> </dom-module> <script>Polymer({is:"iron-input",extends:"input",behaviors:[Polym er.IronValidatableBehavior],properties:{bindValue:{observer:"_bindValueChanged", type:String},preventInvalidInput:{type:Boolean},allowedPattern:{type:String,obse rver:"_allowedPatternChanged"},_previousValidInput:{type:String,value:""},_patte rnAlreadyChecked:{type:Boolean,value:!1}},listeners:{input:"_onInput",keypress:" _onKeypress"},registered:function(){this._canDispatchEventOnDisabled()||(this._o rigDispatchEvent=this.dispatchEvent,this.dispatchEvent=this._dispatchEventFirefo xIE)},created:function(){Polymer.IronA11yAnnouncer.requestAvailability()},_canDi spatchEventOnDisabled:function(){var e=document.createElement("input"),t=!1;e.di sabled=!0,e.addEventListener("feature-check-dispatch-event",function(){t=!0});tr y{e.dispatchEvent(new Event("feature-check-dispatch-event"))}catch(e){}return t} ,_dispatchEventFirefoxIE:function(){var e=this.disabled;this.disabled=!1,this._o rigDispatchEvent.apply(this,arguments),this.disabled=e},get _patternRegExp(){var e;if(this.allowedPattern)e=new RegExp(this.allowedPattern);else switch(this.typ e){case"number":e=/[0-9.,e-]/}return e},ready:function(){this.bindValue=this.val ue},_bindValueChanged:function(){this.value!==this.bindValue&&(this.value=this.b indValue||0===this.bindValue||this.bindValue===!1?this.bindValue:""),this.fire(" bind-value-changed",{value:this.bindValue})},_allowedPatternChanged:function(){t his.preventInvalidInput=!!this.allowedPattern},_onInput:function(){if(this.preve ntInvalidInput&&!this._patternAlreadyChecked){var e=this._checkPatternValidity() ;e||(this._announceInvalidCharacter("Invalid string of characters not entered.") ,this.value=this._previousValidInput)}this.bindValue=this.value,this._previousVa lidInput=this.value,this._patternAlreadyChecked=!1},_isPrintable:function(e){var t=8==e.keyCode||9==e.keyCode||13==e.keyCode||27==e.keyCode,i=19==e.keyCode||20= =e.keyCode||45==e.keyCode||46==e.keyCode||144==e.keyCode||145==e.keyCode||e.keyC ode>32&&e.keyCode<41||e.keyCode>111&&e.keyCode<124;return!(t||0==e.charCode&&i)} ,_onKeypress:function(e){if(this.preventInvalidInput||"number"===this.type){var t=this._patternRegExp;if(t&&!(e.metaKey||e.ctrlKey||e.altKey)){this._patternAlre adyChecked=!0;var i=String.fromCharCode(e.charCode);this._isPrintable(e)&&!t.tes t(i)&&(e.preventDefault(),this._announceInvalidCharacter("Invalid character "+i+ " not entered."))}}},_checkPatternValidity:function(){var e=this._patternRegExp; if(!e)return!0;for(var t=0;t<this.value.length;t++)if(!e.test(this.value[t]))ret urn!1;return!0},validate:function(){var e=this.checkValidity();return e&&(this.r equired&&""===this.value?e=!1:this.hasValidator()&&(e=Polymer.IronValidatableBeh avior.validate.call(this,this.value))),this.invalid=!e,this.fire("iron-input-val idate"),e},_announceInvalidCharacter:function(e){this.fire("iron-announce",{text :e})}})</script> <script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.Ne xtLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImp l={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type: Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput: {type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String },pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:Stri ng},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alw aysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},valid ator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolea n,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number}, maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},n ame:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,valu e:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{ type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{ty pe:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_aria LabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached "},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex: 0},get inputElement(){return this.$.input},get _focusableElement(){return this.i nputElement},registered:function(){this._typesThatHaveText=["date","datetime","d atetime-local","month","time","week","file"]},attached:function(){this._updateAr iaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElem ent.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t) {return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.tar get;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribe dBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID+ +;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy ,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler :function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focuse d&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:funct ion(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttr ibute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),thi s._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&thi s.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElemen t.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputEleme nt.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t) {return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).quer ySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id: (t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ari aLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEv ent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged :function(){if(this.autofocus&&this._focusableElement){var e=document.activeElem ent,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElem ent;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.Iro nControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</scri pt> <script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attach ed:function(){this.fire("addon-attached")},update:function(t){}}</script> <dom-m odule id="paper-input-char-counter" assetpath="/res/imp/bower_components/paper-i nput/"> <template> <style>:host{display:inline-block;float:right;@apply(--paper- font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!im portant}:host-context([dir=rtl]){float:left}</style> <span>[[_charCounterStr]]</ span> </template> </dom-module> <script>Polymer({is:"paper-input-char-counter",b ehaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:Str ing,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e= t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&( e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</scr ipt> <dom-module id="paper-input-container" assetpath="/res/imp/bower_components /paper-input/"> <template> <style>:host{display:block;padding:8px 0;@apply(--pap er-input-container)}:host([inline]){display:inline-block}:host([disabled]){point er-events:none;opacity:.33;@apply(--paper-input-container-disabled)}:host([hidde n]){display:none!important}.floated-label-placeholder{@apply(--paper-font-captio n)}.underline{position:relative}.focused-line{@apply(--layout-fit);background:va r(--paper-input-container-focus-color,--primary-color);height:2px;-webkit-transf orm-origin:center center;transform-origin:center center;-webkit-transform:scale3 d(0,1,1);transform:scale3d(0,1,1);@apply(--paper-input-container-underline-focus )}.underline.is-highlighted .focused-line{-webkit-transform:none;transform:none; -webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--pap er-transition-easing)}.underline.is-invalid .focused-line{background:var(--paper -input-container-invalid-color,--error-color);-webkit-transform:none;transform:n one;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(- -paper-transition-easing)}.unfocused-line{@apply(--layout-fit);background:var(-- paper-input-container-color,--secondary-text-color);height:1px;@apply(--paper-in put-container-underline)}:host([disabled]) .unfocused-line{border-bottom:1px das hed;border-color:var(--paper-input-container-color,--secondary-text-color);backg round:0 0;@apply(--paper-input-container-underline-disabled)}.label-and-input-co ntainer{@apply(--layout-flex-auto);@apply(--layout-relative);width:100%;max-widt h:100%}.input-content{@apply(--layout-horizontal);@apply(--layout-center);positi on:relative}.input-content ::content .paper-input-label,.input-content ::content label{position:absolute;top:0;right:0;left:0;width:100%;font:inherit;color:var( --paper-input-container-color,--secondary-text-color);-webkit-transition:-webkit -transform .25s,width .25s;transition:transform .25s,width .25s;-webkit-transfor m-origin:left top;transform-origin:left top;@apply(--paper-font-common-nowrap);@ apply(--paper-font-subhead);@apply(--paper-input-container-label);@apply(--paper -transition-easing)}.input-content.label-is-floating ::content .paper-input-labe l,.input-content.label-is-floating ::content label{-webkit-transform:translateY( -75%) scale(.75);transform:translateY(-75%) scale(.75);width:133%;@apply(--paper -input-container-label-floating)}:host-context([dir=rtl]) .input-content.label-i s-floating ::content .paper-input-label,:host-context([dir=rtl]) .input-content. label-is-floating ::content label{width:100%;-webkit-transform-origin:right top; transform-origin:right top}.input-content.label-is-highlighted ::content .paper- input-label,.input-content.label-is-highlighted ::content label{color:var(--pape r-input-container-focus-color,--primary-color);@apply(--paper-input-container-la bel-focus)}.input-content.is-invalid ::content .paper-input-label,.input-content .is-invalid ::content label{color:var(--paper-input-container-invalid-color,--er ror-color)}.input-content.label-is-hidden ::content .paper-input-label,.input-co ntent.label-is-hidden ::content label{visibility:hidden}.input-content ::content .paper-input-input,.input-content ::content input,.input-content ::content iron -autogrow-textarea,.input-content ::content textarea{position:relative;outline:0 ;box-shadow:none;padding:0;width:100%;max-width:100%;background:0 0;border:none; color:var(--paper-input-container-input-color,--primary-text-color);-webkit-appe arance:none;text-align:inherit;vertical-align:bottom;@apply(--paper-font-subhead );@apply(--paper-input-container-input)}::content [prefix]{@apply(--paper-font-s ubhead);@apply(--paper-input-prefix);@apply(--layout-flex-none)}::content [suffi x]{@apply(--paper-font-subhead);@apply(--paper-input-suffix);@apply(--layout-fle x-none)}.input-content ::content input{min-width:0}.input-content ::content text area{resize:none}.add-on-content{position:relative}.add-on-content.is-invalid :: content *{color:var(--paper-input-container-invalid-color,--error-color)}.add-on -content.is-highlighted ::content *{color:var(--paper-input-container-focus-colo r,--primary-color)}</style> <template is="dom-if" if="[[!noLabelFloat]]"> <div c lass="floated-label-placeholder" aria-hidden="true">&nbsp;</div> </template> <di v class$="[[_computeInputContentClass(noLabelFloat,alwaysFloatLabel,focused,inva lid,_inputHasContent)]]"> <content select="[prefix]" id="prefix"></content> <div class="label-and-input-container" id="labelAndInputContainer"> <content select= ":not([add-on]):not([prefix]):not([suffix])"></content> </div> <content select=" [suffix]"></content> </div> <div class$="[[_computeUnderlineClass(focused,invali d)]]"> <div class="unfocused-line"></div> <div class="focused-line"></div> </div > <div class$="[[_computeAddOnContentClass(focused,invalid)]]"> <content id="add OnContent" select="[add-on]"></content> </div> </template> </dom-module> <script >Polymer({is:"paper-input-container",properties:{noLabelFloat:{type:Boolean,valu e:!1},alwaysFloatLabel:{type:Boolean,value:!1},attrForValue:{type:String,value:" bind-value"},autoValidate:{type:Boolean,value:!1},invalid:{observer:"_invalidCha nged",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,textarea,.paper-input-input"},_boundOnFocus:{type:Func tion,value:function(){return this._onFocus.bind(this)}},_boundOnBlur:{type:Funct ion,value:function(){return this._onBlur.bind(this)}},_boundOnInput:{type:Functi on,value:function(){return this._onInput.bind(this)}},_boundValueChanged:{type:F unction,value:function(){return this._onValueChanged.bind(this)}}},listeners:{"a ddon-attached":"_onAddonAttached","iron-input-validate":"_onIronInputValidate"}, get _valueChangedEvent(){return this.attrForValue+"-changed"},get _propertyForVa lue(){return Polymer.CaseMap.dashToCamelCase(this.attrForValue)},get _inputEleme nt(){return Polymer.dom(this).querySelector(this._inputSelector)},get _inputElem entValue(){return this._inputElement[this._propertyForValue]||this._inputElement .value},ready:function(){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._handleValueAndAutoValidate(this._inp utElement):this._handleValue(this._inputElement)},_onAddonAttached:function(t){t his._addons||(this._addons=[]);var n=t.target;this._addons.indexOf(n)===-1&&(thi s._addons.push(n),this.isAttached&&this._handleValue(this._inputElement))},_onFo cus:function(){this._setFocused(!0)},_onBlur:function(){this._setFocused(!1),thi s._handleValueAndAutoValidate(this._inputElement)},_onInput:function(t){this._ha ndleValueAndAutoValidate(t.target)},_onValueChanged:function(t){this._handleValu eAndAutoValidate(t.target)},_handleValue:function(t){var n=this._inputElementVal ue;n||0===n||"number"===t.type&&!t.checkValidity()?this._inputHasContent=!0:this ._inputHasContent=!1,this.updateAddons({inputElement:t,value:n,invalid:this.inva lid})},_handleValueAndAutoValidate:function(t){if(this.autoValidate){var n;n=t.v alidate?t.validate(this._inputElementValue):t.checkValidity(),this.invalid=!n}th is._handleValue(t)},_onIronInputValidate:function(t){this.invalid=this._inputEle ment.invalid},_invalidChanged:function(){this._addons&&this.updateAddons({invali d:this.invalid})},updateAddons:function(t){for(var n,e=0;n=this._addons[e];e++)n .update(t)},_computeInputContentClass:function(t,n,e,i,a){var u="input-content"; if(t)a&&(u+=" label-is-hidden");else{var o=this.querySelector("label");n||a?(u+= " label-is-floating",this.$.labelAndInputContainer.style.position="static",i?u+= " is-invalid":e&&(u+=" label-is-highlighted")):o&&(this.$.labelAndInputContainer .style.position="relative")}return u},_computeUnderlineClass:function(t,n){var e ="underline";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e},_computeAddO nContentClass:function(t,n){var e="add-on-content";return n?e+=" is-invalid":t&& (e+=" is-highlighted"),e}})</script> <dom-module id="paper-input-error" assetpat h="/res/imp/bower_components/paper-input/"> <template> <style>:host{display:inli ne-block;visibility:hidden;color:var(--paper-input-container-invalid-color,--err or-color);@apply(--paper-font-caption);@apply(--paper-input-error);position:abso lute;left:0;right:0}:host([invalid]){visibility:visible};</style> <content></con tent> </template> </dom-module> <script>Polymer({is:"paper-input-error",behavior s:[Polymer.PaperInputAddonBehavior],properties:{invalid:{readOnly:!0,reflectToAt tribute:!0,type:Boolean}},update:function(e){this._setInvalid(e.invalid)}})</scr ipt> <dom-module id="paper-input" assetpath="/res/imp/bower_components/paper-inp ut/"> <template> <style>:host{display:block}:host([focused]){outline:0}:host([hi dden]){display:none!important}input::-webkit-input-placeholder{color:var(--paper -input-container-color,--secondary-text-color)}input:-moz-placeholder{color:var( --paper-input-container-color,--secondary-text-color)}input::-moz-placeholder{co lor:var(--paper-input-container-color,--secondary-text-color)}input:-ms-input-pl aceholder{color:var(--paper-input-container-color,--secondary-text-color)}label{ pointer-events:none}</style> <paper-input-container no-label-float="[[noLabelFlo at]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholde r)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[inva lid]]"> <content select="[prefix]"></content> <label hidden$="[[!label]]" aria-h idden="true" for="input">[[label]]</label> <input is="iron-input" id="input" ari a-labelledby$="[[_ariaLabelledBy]]" aria-describedby$="[[_ariaDescribedBy]]" dis abled$="[[disabled]]" title$="[[title]]" bind-value="{{value}}" invalid="{{inval id}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowed Pattern]]" validator="[[validator]]" type$="[[type]]" pattern$="[[pattern]]" req uired$="[[required]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]] " inputmode$="[[inputmode]]" minlength$="[[minlength]]" maxlength$="[[maxlength] ]" min$="[[min]]" max$="[[max]]" step$="[[step]]" name$="[[name]]" placeholder$= "[[placeholder]]" readonly$="[[readonly]]" list$="[[list]]" size$="[[size]]" aut ocapitalize$="[[autocapitalize]]" autocorrect$="[[autocorrect]]" on-change="_onC hange" tabindex$="[[tabindex]]" autosave$="[[autosave]]" results$="[[results]]" accept$="[[accept]]" multiple$="[[multiple]]"> <content select="[suffix]"></cont ent> <template is="dom-if" if="[[errorMessage]]"> <paper-input-error aria-live=" assertive">[[errorMessage]]</paper-input-error> </template> <template is="dom-if " if="[[charCounter]]"> <paper-input-char-counter></paper-input-char-counter> </ template> </paper-input-container> </template> </dom-module> <script>Polymer({is :"paper-input",behaviors:[Polymer.IronFormElementBehavior,Polymer.PaperInputBeha vior]})</script> <dom-module id="query-column-filter-style" assetpath="/res/imp/ common/"> <template> <style>:host{display:block;font-family:sans-serif}#filter{m argin:0 5px}.container{min-height:120px;width:100%}.item{border-bottom:1px solid #EEE;max-width:250px;min-height:1em;min-width:100px;padding:.1em .2em;line-heig ht:1.5em}.header{height:2em;padding:.25em;line-height:2em}.selector{border:1px s olid #000;margin:0 5px;max-height:200px;min-height:130px;min-width:275px;overflo w-y:auto}.pointable,.selectable{cursor:pointer}.selectable:hover{background-colo r:#A6CEE3}.iron-selected{background-color:#1F78B4;color:#fff}.icons{cursor:point er;height:20px;margin:2px;width:20px;flex-shrink:0}.side-by-side{display:inline- block;vertical-align:top}.bold{font-weight:700}paper-checkbox{max-height:2em;mar gin:2px;--paper-checkbox-checked-color:black;--paper-checkbox-checked-ink-color: black;--paper-checkbox-unchecked-color:black;--paper-checkbox-unchecked-ink-colo r:black;--paper-checkbox-label-color:black}</style> </template> </dom-module> <s cript>!function(){var r=":",t=function(r,t){if(!t)return{idx:0,part:""};if(!r)re turn{idx:-1};t=t.trim().toLocaleLowerCase(),r=r.toLocaleLowerCase();for(var i=t. split(" "),e=0;e<i.length;e++){var n=r.indexOf(i[e]);if(n!==-1)return{idx:n,part :i[e]}}return{idx:-1}},i=function(t,i,e){if(!i)return!0;if(!t)return!1;if(t=t.to LocaleLowerCase(),i=i.trim().toLocaleLowerCase(),i.indexOf(" ")!==-1||i.indexOf( ":")===-1)return!1;var n=i.split(r,1)[0],a=i.substring(n.length+r.length);return e?t===n:t.startsWith(a)};SwarmingBehaviors.QueryColumnFilter=[SwarmingBehaviors .CommonBehavior,{properties:{dimensions:{type:Array},primary_map:{type:Object},p rimary_arr:{type:Array},special_columns:{type:Array,value:function(){return[]}}, filter:{type:Function,computed:"_makeFilter(_filters.*)",notify:!0},FILTER_SEP:{ type:String,value:r},_filters:{type:Array},_limit:{type:Number},_primaryItems:{t ype:Array,computed:"_primary(_query, primary_map, primary_arr, columns.*)"},_pri marySelected:{type:String,value:""},_query:{type:String},_secondaryItems:{type:A rray,computed:"_secondary(_primarySelected, _query, primary_map)"}},_addFilter:f unction(r){var t=r.model.item;if(!this._cantAddFilter(this._primarySelected,t)){ var i=this._primarySelected+this.FILTER_SEP+t;this.push("_filters",i)}},_removeF ilter:function(r){var t=r.model.fil;if(!this._cantRemoveFilter(t)){var i=this._f ilters.indexOf(t);i!==-1&&this.splice("_filters",i,1)}},_cantAddFilter:function( r,t){if(!r||!t)return!0;var i=r+this.FILTER_SEP+t;return this._filters.indexOf(i )!==-1},_cantRemoveFilter:function(r){return!r||this._filters.indexOf(r)===-1},_ makeFilter:function(){var r={};this._filters.forEach(function(t){var i=t.indexOf (this.FILTER_SEP),e=t.slice(0,i),n=t.slice(i+this.FILTER_SEP.length),a=r[e]||[]; a.push(n),r[e]=a}.bind(this));var t=this._filterMap||{};return function(i){var e =!0;for(primary in r){var n=r[primary],a=t[primary];a||(a=function(r,t){var i=th is._attribute(r,primary);return i.indexOf(t)!==-1}.bind(this)),a&&n.forEach(func tion(r){e=e&&a.bind(this)(i,r)}.bind(this))}return e}},_manuallyAddFilter:functi on(){var r=this._query.trim().split(":");if(2!=r.length)return void sk.errorMess age('Invalid filter. Should be like "foo:bar"',5e3);var t=r.join(":");return th is._filters.indexOf(t)!==-1?void sk.errorMessage('Filter "'+t+'" is already acti ve',5e3):(this.push("_filters",t),void this.set("_query",""))},_toggleColumn:fun ction(r){var t=r.model.item;if(!this._cantToggleColumn(t)){if(this._columnState( t)){var i=this.columns.indexOf(t);return void(i!==-1&&this.splice("columns",i,1) )}this.push("columns",t)}},_cantToggleColumn:function(r){return!1},_columnState: function(r){return!!r&&this.columns.indexOf(r)!==-1},_primary:function(r,e,n){va r a=this.primary_arr.filter(function(n){if(i(n,r,!0))return!0;if(t(n,r).idx!==-1 )return!0;for(var a=e[n]||[],u=0;u<a.length;u++)if(t(a[u],r).idx!==-1)return!0;r eturn!1});return r&&a.length>0&&a.indexOf(this._primarySelected)===-1&&this.set( "_primarySelected",a[0]),a.sort(function(r,t){var i=this._columnState(r),e=this. _columnState(t);if(i&&!e)return-1;if(e&&!i)return 1;if(i&&e){if(i=this.special_c olumns.indexOf(r),e=this.special_columns.indexOf(t),i!==-1&&e===-1)return-1;if(i ===-1&&e!==-1)return 1;if(i!==-1&&e!==-1)return i-e}return swarming.naturalCompa re(r,t)}.bind(this)),a},_secondary:function(r,e,n){if(requestAnimationFrame(func tion(){this.$.secondaryList.render()}.bind(this)),!r)return[];var a=n[r]||[];ret urn i(r,e,!0)?a.sort(function(r,t){var n=i(r,e,!1),a=i(t,e,!1);return n===a?swar ming.naturalCompare(r,t):a-n}):t(r,e).idx!==-1?a.sort(function(r,i){var n=t(r,e) .idx!==-1,a=t(i,e).idx!==-1;return n===a?swarming.naturalCompare(r,i):a-n}):a.fi lter(function(r){return t(r,e).idx!==-1})},_beforeBold:function(r,i){var e=t(r,i .replace(":"," "));return e.idx===-1?r:r.substring(0,e.idx)},_bold:function(r,i) {var e=t(r,i.replace(":"," "));return e.idx===-1?"":r.substring(e.idx,e.idx+e.pa rt.length)},_afterBold:function(r,i){var e=t(r,i.replace(":"," "));return e.idx= ==-1?"":r.substring(e.idx+e.part.length)},_commonFilters:function(){return{andro id_devices:function(r,t){var i=this._attribute(r,"android_devices","0");return i .indexOf(t)!==-1},device_os:function(r,t){var i=this._attribute(r,"device_os","n one");return i.indexOf(t)!==-1},device_type:function(r,t){var i=this._attribute( r,"device_type","none");return i.indexOf(swarming.alias.unapply(t))!==-1},gpu:fu nction(r,t){var i=this._attribute(r,"gpu","none");return i.indexOf(swarming.alia s.unapply(t))!==-1}}}}]}()</script> <script>!function(){var e="unknown";Swarming Behaviors.BotListBehavior=[SwarmingBehaviors.CommonBehavior,{properties:{BOT_PRO PERTIES:{type:Array,value:function(){return["disk_space","uptime","running_time" ,"task","status","version","external_ip","internal_ip","cloud_console_link","mp_ lease_id","mp_lease_expires","last_seen","first_seen","battery_level","battery_v oltage","battery_temperature","battery_status","battery_health","bot_temperature ","device_temperature"]}}},_attribute:function(t,i,n){return n=n||e,this._dimens ion(t,i)||this._state(t,i)||[n]},_devices:function(e){return e.state.devices},_d eviceType:function(e){return e.device_type.toLowerCase()},_dimension:function(e, t){if(e&&e.dimensions&&t)for(var i=0;i<e.dimensions.length;i++)if(e.dimensions[i ].key===t)return e.dimensions[i].value},_state:function(e,t){if(e&&e.state&&e.st ate[t]){var i=e.state[t];return Array.isArray(i)?i:[i]}},_taskId:function(e){ret urn e&&e.task_id?e.task_id:"idle"}}]}()</script> <dom-module id="bot-filters" as setpath="/res/imp/botlist/"> <template> <style is="custom-style" include="iron-f lex iron-flex-alignment iron-positioning query-column-filter-style"></style> <ur l-param name="f" value="{{_filters}}" default_values="[]" multi=""> </url-param> <url-param name="c" value="{{columns}}" default_values="[&quot;id&quot;,&quot;o s&quot;,&quot;task&quot;,&quot;status&quot;]" multi=""> </url-param> <url-param name="q" value="{{_query}}" default_value=""> </url-param> <url-param name="v" v alue="{{verbose}}"> </url-param> <url-param name="l" default_value="100" value=" {{_limit}}"> </url-param> <div class="container horizontal layout"> <div class=" narrow-down-selector"> <div> <iron-a11y-keys target="[[_filter_input]]" keys="en ter" on-keys-pressed="_manuallyAddFilter"></iron-a11y-keys> <paper-input id="fil ter" label="Search columns and filters or supply a filter and press enter" place holder="gpu nvidia pool:Chrome" value="{{_query::input}}"> </paper-input> </div> <div class="selector side-by-side" title="This shows all bot dimension names an d other interesting bot properties. Mark the check box to add as a column. Selec t the row to see filter options."> <iron-selector attr-for-selected="label" sele cted="{{_primarySelected}}"> <template is="dom-repeat" items="[[_primaryItems]]" as="item"> <div class="selectable item horizontal layout" label="[[item]]"> <sp an>[[_beforeBold(item,_query)]]<span class="bold">[[_bold(item,_query)]]</span>[ [_afterBold(item,_query)]]</span> <span class="flex"></span> <paper-checkbox noi nk="" disabled$="[[_cantToggleColumn(item)]]" checked="[[_columnState(item,colum ns.*)]]" on-change="_toggleColumn"> </paper-checkbox> </div> </template> </iron- selector> </div> <div class="selector side-by-side" title="These are all options (if any) that the bot list can be filtered on."> <template is="dom-repeat" id=" secondaryList" items="[[_secondaryItems]]" as="item"> <div class="item horizonta l layout" label="[[item]]"> <span>[[_beforeBold(item,_query)]]<span class="bold" >[[_bold(item,_query)]]</span>[[_afterBold(item,_query)]]</span> <span class="fl ex"></span> <iron-icon class="icons" icon="icons:arrow-forward" hidden="[[_cantA ddFilter(_primarySelected,item,_filters.*)]]" on-tap="_addFilter"> </iron-icon> </div> </template> <template is="dom-if" if="[[_showDimensionMessage(_primarySel ected,_secondaryItems.length)]]"> <div class="item"> Only dimensions can be used for filtering. <i>"[[_primarySelected]]"</i> is a part of the bot's state and i s informational only. </div> </template> </div> <div class="selector side-by-sid e" title="These filters are AND'd together and applied to all bots in
310 the fleet."> <template is="dom-repeat" items="[[_filters]]" as="fil"> <div class ="item horizontal layout" label="[[fil]]"> <span>[[fil]]</span> <span class="fle x"></span> <iron-icon class="icons" icon="icons:remove-circle-outline" hidden="[ [_cantRemoveFilter(fil,_filters.*)]]" on-tap="_removeFilter"> </iron-icon> </div > </template> </div> <div class="side-by-side"> <paper-checkbox checked="{{verbo se}}">Verbose Entries</paper-checkbox> <paper-input id="_limit" label="Limit Res ults" auto-validate="" min="0" max="1000" pattern="[0-9]+" value="{{_limit}}"> < /paper-input> </div> </div> </div> </template> <script>!function(){var t={disk_s pace:function(t,i){return!0},id:function(t,i){return!0},status:function(t,i){ret urn"quarantined"===i?t.quarantined:"dead"===i?t.is_dead:!t.quarantined&&!t.is_de ad},task:function(t,i){return"idle"===i?"idle"===this._taskId(t):"idle"!==this._ taskId(t)}};Polymer({is:"bot-filters",behaviors:[SwarmingBehaviors.BotListBehavi or,SwarmingBehaviors.QueryColumnFilter],properties:{columns:{type:Array,notify:! 0},query_params:{type:Object,computed:"_extractQueryParams(dimensions.*,_filters .*, _limit)",notify:!0},verbose:{type:Boolean,notify:!0},_filter_input:{type:Obj ect,value:function(){return this.$.filter}},_filterMap:{type:Object,value:functi on(){var i=this._commonFilters();for(var e in t)i[e]=t[e];return i}}},_cantToggl eColumn:function(t){return!t||"id"===t},_extractQueryParams:function(){var t={}, i=[];this._filters.forEach(function(e){var n=e.split(this.FILTER_SEP,1),r=n[0];i f(this.dimensions.indexOf(r)!==-1){var a=e.substring(r.length+this.FILTER_SEP.le ngth);i.push(r+this.FILTER_SEP+swarming.alias.unapply(a))}else if("status"===r){ var a=e.substring(r.length+this.FILTER_SEP.length);"alive"===a?(t.is_dead=["FALS E"],t.quarantined=["FALSE"]):"quarantined"===a?t.quarantined=["TRUE"]:"dead"===a &&(t.is_dead=["TRUE"])}}.bind(this)),t.dimensions=i;var e=parseInt(this._limit); return Number.isInteger(e)&&(e=Math.max(e,1),e=Math.min(1e3,e),t.limit=[e],this. _limit!=e&&this.set("_limit",e)),t}})}()</script> </dom-module><dom-module id="b ot-list-data" assetpath="/res/imp/botlist/"> <script>!function(){function e(e){i f(!e)return{};var t=[],s=0;for(k in e)t.push(k+": "+e[k]),s+=e[k];return s/=t.le ngth,s=s?s.toFixed(1):"unknown",{average:s,zones:t.join(" | ")||"unknown"}}var t ="available",s=["quarantined","error"];Polymer({is:"bot-list-data",behaviors:[Sw armingBehaviors.BotListBehavior],properties:{auth_headers:{type:Object,observer: "signIn"},bots:{type:Array,computed:"parseBots(_list)",notify:!0},busy:{type:Boo lean,computed:"_or(_busy2,_busy1)",notify:!0},dimensions:{type:Array,computed:"_ makeArray(_dimensions)",notify:!0},fleet:{type:Object,computed:"_fleet(_count)", notify:!0},primary_map:{type:Object,computed:"_primaryMap(_dimensions)",notify:! 0},primary_arr:{type:Array,computed:"_primaryArr(dimensions, BOT_PROPERTIES)",no tify:!0},_busy1:{type:Boolean,value:!1},_busy2:{type:Boolean,value:!1},_count:{t ype:Object},_dimensions:{type:Object},_list:{type:Object}},signIn:function(){thi s._getJsonAsync("_count","/api/swarming/v1/bots/count","_busy2",this.auth_header s),this._getJsonAsync("_dimensions","/api/swarming/v1/bots/dimensions","_busy1", this.auth_headers)},parseBots:function(s){return s&&s.items?(s.items.forEach(fun ction(s){s.state=s.state||"{}",s.state=JSON.parse(s.state)||{};var n=s.state.dis ks||{},i=Object.keys(n);if(i.length){s.disks=[];for(var a=0;a<i.length;a++)s.dis ks.push({id:i[a],mb:n[i[a]].free_mb});s.disks.sort(function(e,t){return t.mb-e.m b})}else s.disks=[{id:"unknown",mb:0}];s.state.temp=e(s.state.temp);var o=[],r=s &&s.state&&s.state.devices||{};for(key in r){var u=r[key];u.serial=key,u.okay=u. state===t;var _=this._dimension(s,"device_type")||["unknown"];u.device_type=_[0] ,u.temp=e(u.temp),o.push(u)}s.state.devices=o,s.last_seen_ts&&(s.last_seen_ts=ne w Date(s.last_seen_ts)),s.first_seen_ts&&(s.first_seen_ts=new Date(s.first_seen_ ts)),s.lease_expiration_ts&&(s.lease_expiration_ts=new Date(s.lease_expiration_t s))}.bind(this)),s.items):[]},_fleet:function(){return this._count?{all:this._co unt.count||-1,alive:this._count.count-this._count.dead||-1,busy:this._count.busy ||-1,idle:this._count.count-this._count.busy||-1,dead:this._count.dead||-1,quara ntined:this._count.quarantined||-1}:{}},_makeArray:function(e){if(!e||!e.bots_di mensions)return[];var t=[];return e.bots_dimensions.forEach(function(e){s.indexO f(e.key)===-1&&t.push(e.key)}),t.push("id"),t.sort(),t},_primaryArr:function(e,t ){return e.concat(t)},_primaryMap:function(e){e=e.bots_dimensions||[];var t={};r eturn e.forEach(function(e){if(swarming.alias.DIMENSIONS_WITH_ALIASES.indexOf(e. key)===-1)t[e.key]=e.value;else{var s=[];e.value.forEach(function(t){s.push(swar ming.alias.apply(t,e.key))}),t[e.key]=s}}),t.android_devices&&t.android_devices. push("0"),t.device_os&&t.device_os.push("none"),t.device_type&&t.device_type.pus h("none"),t.id=[],t.disk_space=[],t.task=["busy","idle"],t.status=["alive","dead ","quarantined"],t}})}()</script> </dom-module><dom-module id="bot-list-summary" assetpath="/res/imp/botlist/"> <template> <style include="swarming-app-style">: host{display:block;border-left:1px solid #000;padding:5px 5px;font-family:sans-s erif}.header{font-size:1.2em;font-weight:700}.header.buffer{margin-top:5px}.righ t{text-align:right}.left{text-align:left}</style> <div class="header">Fleet</div > <table> <tbody><tr> <td class="right"> <a href$="[[_makeURL('','',columns.*,fi ltered_bots.*,sort,verbose)]]">All</a>: </td> <td class="left">[[fleet.all]]</td > </tr> <tr> <td class="right"> <a href$="[[_makeURL('alive','',columns.*,filter ed_bots.*,sort,verbose)]]">Alive</a>: </td> <td class="left">[[fleet.alive]]</td > </tr> <tr> <td class="right"> <a href$="[[_makeURL('busy','',columns.*,filtere d_bots.*,sort,verbose)]]">Busy</a>: </td> <td class="left">[[fleet.busy]]</td> < /tr> <tr> <td class="right"> <a href$="[[_makeURL('idle','',columns.*,filtered_b ots.*,sort,verbose)]]">Idle</a>: </td> <td class="left">[[fleet.idle]]</td> </tr > <tr> <td class="right"> <a href$="[[_makeURL('dead','',columns.*,filtered_bots .*,sort,verbose)]]">Dead</a>: </td> <td class="left">[[fleet.dead]]</td> </tr> < tr> <td class="right"> <a href$="[[_makeURL('quarantined','',columns.*,filtered_ bots.*,sort,verbose)]]">Quarantined</a>: </td> <td class="left">[[fleet.quaranti ned]]</td> </tr> </tbody></table> <div class="header buffer">Selected</div> <tab le> <tbody><tr> <td class="right"> Displayed: </td> <td class="left">[[_currentl yDisplayed(filtered_bots.*)]]</td> </tr> <tr> <td class="right"> All: </td> <td class="left">[[_count_query.count]]</td> </tr> <tr> <td class="right"> <a href$= "[[_makeURL('alive','true',columns.*,filtered_bots.*,sort,verbose)]]">Alive</a>: </td> <td class="left">[[_computeAlive(_count_query.*)]]</td> </tr> <tr> <td cl ass="right"> <a href$="[[_makeURL('busy','true',columns.*,filtered_bots.*,sort,v erbose)]]">Busy</a>: </td> <td class="left">[[_count_query.busy]]</td> </tr> <tr > <td class="right"> <a href$="[[_makeURL('idle','true',columns.*,filtered_bots. *,sort,verbose)]]">Idle</a>: </td> <td class="left">[[_computeIdle(_count_query. *)]]</td> </tr> <tr> <td class="right"> <a href$="[[_makeURL('dead','true',colum ns.*,filtered_bots.*,sort,verbose)]]">Dead</a>: </td> <td class="left">[[_count_ query.dead]]</td> </tr> <tr> <td class="right"> <a href$="[[_makeURL('quarantine d','true',columns.*,filtered_bots.*,sort,verbose)]]">Quarantined</a>: </td> <td class="left">[[_count_query.quarantined]]</td> </tr> </tbody></table> </template > <script>Polymer({is:"bot-list-summary",behaviors:[SwarmingBehaviors.BotListBeh avior],properties:{auth_headers:{type:Object},busy:{type:Boolean,value:!1,notify :!0},columns:{type:Array},count_params:{type:Object},filtered_bots:{type:Array}, fleet:{type:Object},sort:{type:String},verbose:{type:Boolean},_count_query:{type :Object}},observers:["_recountTotal(auth_headers.*,count_params.*)"],_computeAli ve:function(){return this._count_query.count-this._count_query.dead},_computeIdl e:function(){return this._count_query.count-this._count_query.busy},_currentlyDi splayed:function(){return this.filtered_bots&&this.filtered_bots.length},_getFil terStr:function(t){return t?"alive"===t||"dead"===t||"quarantined"===t?"status:" +t:"task:"+t:""},_makeURL:function(t,e){if(!e){var r={s:[this.sort],c:this.colum ns,v:[this.verbose]};return t&&(r.f=[this._getFilterStr(t)]),window.location.hre f.split("?")[0]+"?"+sk.query.fromParamSet(r)}var o=encodeURIComponent(this._getF ilterStr(t));if(window.location.href.indexOf(o)===-1)return window.location.href +"&f="+o},_recountTotal:function(){this.auth_headers&&this.count_params&&this._g etJsonAsync("_count_query","/api/swarming/v1/bots/count","busy",this.auth_header s,this.count_params)}})</script> </dom-module><dom-module id="bot-list" assetpat h="/res/imp/botlist/"> <template> <style include="iron-flex iron-flex-alignment iron-positioning swarming-app-style dynamic-table-style">bot-filters,bot-list-su mmary{margin-bottom:8px;margin-right:10px}.bad-device,.quarantined{background-co lor:#fdd}.dead{background-color:#ccc}.bot-list th>span{padding-right:30px}</styl e> <url-param name="s" value="{{_sortstr}}" default_value="id:asc"> </url-param> <swarming-app client_id="[[client_id]]" auth_headers="{{_auth_headers}}" signed _in="{{_signed_in}}" server_details="{{_server_details}}" busy="[[_or(_busy1,_bu sy2,_busy3)]]" name="Swarming Bot List"> <h2 hidden$="[[_signed_in]]">You must s ign in to see anything useful.</h2> <div hidden$="[[_not(_signed_in)]]"> <div cl ass="horizontal layout"> <bot-filters dimensions="[[_dimensions]]" primary_map=" [[_primary_map]]" primary_arr="[[_primary_arr]]" columns="{{_columns}}" query_pa rams="{{_query_params}}" filter="{{_filter}}" verbose="{{_verbose}}"> </bot-filt ers> <bot-list-summary auth_headers="[[_auth_headers]]" busy="{{_busy3}}" column s="[[_columns]]" count_params="[[_query_params]]" fleet="[[_fleet]]" filtered_bo ts="[[_filteredSortedItems]]" sort="[[_sortstr]]" verbose="[[_verbose]]"> </bot- list-summary> </div> <bot-list-data id="data" auth_headers="[[_auth_headers]]" q uery_params="[[_query_params]]" busy="{{_busy1}}" dimensions="{{_dimensions}}" f leet="{{_fleet}}" primary_map="{{_primary_map}}" primary_arr="{{_primary_arr}}"> </bot-list-data> <table class="bot-list"> <thead on-sort_change="_sortChange"> <tr> <th> <span>Bot Id</span> <sort-toggle name="id" current="[[_sort]]"> </sort -toggle> </th> <th hidden$="[[_hide('cloud_console_link', _columns.*)]]"> <span> Bot in Cloud Console</span> <sort-toggle name="cloud_console_link" current="[[_s ort]]"> </sort-toggle> </th> <th hidden$="[[_hide('mp_lease_id', _columns.*)]]"> <span>Machine Provider Lease Id</span> <sort-toggle name="mp_lease_id" current= "[[_sort]]"> </sort-toggle> </th> <th hidden$="[[_hide('task', _columns.*)]]"> < span>Current Task</span> <sort-toggle name="task" current="[[_sort]]"> </sort-to ggle> </th> <template is="dom-repeat" items="[[_plainColumns]]" as="c"> <th hidd en$="[[_hide(c)]]"> <span>[[_header(c)]]</span> <sort-toggle name="[[c]]" curren t="[[_sort]]"> </sort-toggle> </th> </template> </tr> </thead> <tbody> <template id="bot_table" is="dom-repeat" items="[[_filteredSortedItems]]" as="bot" initia l-count="50"> <tr class$="[[_botClass(bot)]]"> <td> <a class="center" href$="[[_ botLink(bot.bot_id)]]" target="_blank" rel="noopener"> [[bot.bot_id]] </a> </td> <td hidden$="[[_hide('cloud_console_link', _columns.*)]]"> <a href$="[[_ccLink( bot)]]">[[_ccText(bot)]]</a> </td> <td hidden$="[[_hide('mp_lease_id', _columns. *)]]"> <a href$="[[_mpLink(bot, _server_details.machine_provider_template)]]"> [ [_column('mp_lease_id', bot,_verbose)]] </a> </td> <td hidden$="[[_hide('task', _columns.*)]]"> <a href$="[[_taskLink(bot.task_id)]]">[[_taskId(bot)]]</a> </td> <template is="dom-repeat" items="[[_plainColumns]]" as="c"> <td hidden$="[[_hid e(c)]]"> [[_column(c, bot, _verbose)]] </td> </template> </tr> <template is="dom -repeat" items="[[_devices(bot)]]" as="device"> <tr hidden$="[[_hide('android_de vices', _columns.*)]]" class$="[[_deviceClass(device)]]"> <td></td> <td hidden$= "[[_hide('task', _columns.*)]]"></td> <template is="dom-repeat" items="[[_plainC olumns]]" as="c"> <td hidden$="[[_hide(c)]]"> [[_deviceColumn(c, device, _verbos e)]] </td> </template> </tr> </template> </template> </tbody> </table> <pageable -data id="page_bots" busy="{{_busy2}}" label="Show more bots" output="{{_items}} " parse="[[_parseBots]]"> </pageable-data> </div> </swarming-app> </template> <s cript> (function(){ 310 the fleet."> <template is="dom-repeat" items="[[_filters]]" as="fil"> <div class ="item horizontal layout" label="[[fil]]"> <span>[[fil]]</span> <span class="fle x"></span> <iron-icon class="icons" icon="icons:remove-circle-outline" hidden="[ [_cantRemoveFilter(fil,_filters.*)]]" on-tap="_removeFilter"> </iron-icon> </div > </template> </div> <div class="side-by-side"> <paper-checkbox checked="{{verbo se}}">Verbose Entries</paper-checkbox> <paper-input id="_limit" label="Limit Res ults" auto-validate="" min="0" max="1000" pattern="[0-9]+" value="{{_limit}}"> < /paper-input> </div> </div> </div> </template> <script>!function(){var i={disk_s pace:function(i,t){return!0},id:function(i,t){return!0},status:function(i,t){ret urn"quarantined"===t?i.quarantined:"dead"===t?i.is_dead:!i.quarantined&&!i.is_de ad},task:function(i,t){return"idle"===t?"idle"===this._taskId(i):"idle"!==this._ taskId(i)}};Polymer({is:"bot-filters",behaviors:[SwarmingBehaviors.BotListBehavi or,SwarmingBehaviors.QueryColumnFilter],properties:{columns:{type:Array,notify:! 0},query_params:{type:Object,computed:"_extractQueryParams(dimensions.*,_filters .*, _limit)",notify:!0},verbose:{type:Boolean,notify:!0},_filter_input:{type:Obj ect,value:function(){return this.$.filter}},_filterMap:{type:Object,value:functi on(){var t=this._commonFilters();for(var e in i)t[e]=i[e];return t}}},_cantToggl eColumn:function(i){return!i||"id"===i},_extractQueryParams:function(){var i={}, t=[];this._filters.forEach(function(e){var n=e.split(this.FILTER_SEP,1),r=n[0];i f(this.dimensions.indexOf(r)!==-1){var s=e.substring(r.length+this.FILTER_SEP.le ngth);t.push(r+this.FILTER_SEP+swarming.alias.unapply(s))}else if("status"===r){ var s=e.substring(r.length+this.FILTER_SEP.length);"alive"===s?(i.is_dead=["FALS E"],i.quarantined=["FALSE"]):"quarantined"===s?i.quarantined=["TRUE"]:"dead"===s &&(i.is_dead=["TRUE"])}}.bind(this)),i.dimensions=t;var e=parseInt(this._limit); return Number.isInteger(e)&&(e=Math.max(e,1),e=Math.min(1e3,e),i.limit=[e],this. _limit!=e&&this.set("_limit",e)),i},_showDimensionMessage:function(i,t){return i &&"id"!==i&&!t}})}()</script> </dom-module><dom-module id="bot-list-data" assetp ath="/res/imp/botlist/"> <script>!function(){function e(e){if(!e)return{};var t= [],s=0;for(k in e)t.push(k+": "+e[k]),s+=e[k];return s/=t.length,s=s?s.toFixed(1 ):"unknown",{average:s,zones:t.join(" | ")||"unknown"}}var t="available",s=["qua rantined","error"];Polymer({is:"bot-list-data",behaviors:[SwarmingBehaviors.BotL istBehavior],properties:{auth_headers:{type:Object,observer:"signIn"},bots:{type :Array,computed:"parseBots(_list)",notify:!0},busy:{type:Boolean,computed:"_or(_ busy2,_busy1)",notify:!0},dimensions:{type:Array,computed:"_makeArray(_dimension s)",notify:!0},fleet:{type:Object,computed:"_fleet(_count)",notify:!0},primary_m ap:{type:Object,computed:"_primaryMap(_dimensions)",notify:!0},primary_arr:{type :Array,computed:"_primaryArr(dimensions, BOT_PROPERTIES)",notify:!0},_busy1:{typ e:Boolean,value:!1},_busy2:{type:Boolean,value:!1},_count:{type:Object},_dimensi ons:{type:Object},_list:{type:Object}},signIn:function(){this._getJsonAsync("_co unt","/api/swarming/v1/bots/count","_busy2",this.auth_headers),this._getJsonAsyn c("_dimensions","/api/swarming/v1/bots/dimensions","_busy1",this.auth_headers)}, parseBots:function(s){return s&&s.items?(s.items.forEach(function(s){s.state=s.s tate||"{}",s.state=JSON.parse(s.state)||{};var n=s.state.disks||{},i=Object.keys (n);if(i.length){s.disks=[];for(var a=0;a<i.length;a++)s.disks.push({id:i[a],mb: n[i[a]].free_mb});s.disks.sort(function(e,t){return t.mb-e.mb})}else s.disks=[{i d:"unknown",mb:0}];s.state.temp=e(s.state.temp);var o=[],r=s&&s.state&&s.state.d evices||{};for(key in r){var u=r[key];u.serial=key,u.okay=u.state===t;var _=this ._dimension(s,"device_type")||["unknown"];u.device_type=_[0],u.temp=e(u.temp),o. push(u)}s.state.devices=o,s.last_seen_ts&&(s.last_seen_ts=new Date(s.last_seen_t s)),s.first_seen_ts&&(s.first_seen_ts=new Date(s.first_seen_ts)),s.lease_expirat ion_ts&&(s.lease_expiration_ts=new Date(s.lease_expiration_ts))}.bind(this)),s.i tems):[]},_fleet:function(){return this._count?{all:this._count.count||-1,alive: this._count.count-this._count.dead||-1,busy:this._count.busy||-1,idle:this._coun t.count-this._count.busy||-1,dead:this._count.dead||-1,quarantined:this._count.q uarantined||-1}:{}},_makeArray:function(e){if(!e||!e.bots_dimensions)return[];va r t=[];return e.bots_dimensions.forEach(function(e){s.indexOf(e.key)===-1&&t.pus h(e.key)}),t.push("id"),t.sort(),t},_primaryArr:function(e,t){return e.concat(t) },_primaryMap:function(e){e=e.bots_dimensions||[];var t={};return e.forEach(func tion(e){if(swarming.alias.DIMENSIONS_WITH_ALIASES.indexOf(e.key)===-1)t[e.key]=e .value;else{var s=[];e.value.forEach(function(t){s.push(swarming.alias.apply(t,e .key))}),t[e.key]=s}}),t.android_devices&&t.android_devices.push("0"),t.device_o s&&t.device_os.push("none"),t.device_type&&t.device_type.push("none"),t.id=[],t. disk_space=[],t.task=["busy","idle"],t.status=["alive","dead","quarantined"],t}} )}()</script> </dom-module><dom-module id="bot-list-summary" assetpath="/res/imp /botlist/"> <template> <style include="swarming-app-style">:host{display:block;b order-left:1px solid #000;padding:5px 5px;font-family:sans-serif}.header{font-si ze:1.2em;font-weight:700}.header.buffer{margin-top:5px}.right{text-align:right}. left{text-align:left}</style> <div class="header">Fleet</div> <table> <tbody><tr > <td class="right"> <a href$="[[_makeURL('','',columns.*,filtered_bots.*,sort,v erbose)]]">All</a>: </td> <td class="left">[[fleet.all]]</td> </tr> <tr> <td cla ss="right"> <a href$="[[_makeURL('alive','',columns.*,filtered_bots.*,sort,verbo se)]]">Alive</a>: </td> <td class="left">[[fleet.alive]]</td> </tr> <tr> <td cla ss="right"> <a href$="[[_makeURL('busy','',columns.*,filtered_bots.*,sort,verbos e)]]">Busy</a>: </td> <td class="left">[[fleet.busy]]</td> </tr> <tr> <td class= "right"> <a href$="[[_makeURL('idle','',columns.*,filtered_bots.*,sort,verbose)] ]">Idle</a>: </td> <td class="left">[[fleet.idle]]</td> </tr> <tr> <td class="ri ght"> <a href$="[[_makeURL('dead','',columns.*,filtered_bots.*,sort,verbose)]]"> Dead</a>: </td> <td class="left">[[fleet.dead]]</td> </tr> <tr> <td class="right "> <a href$="[[_makeURL('quarantined','',columns.*,filtered_bots.*,sort,verbose) ]]">Quarantined</a>: </td> <td class="left">[[fleet.quarantined]]</td> </tr> </t body></table> <div class="header buffer">Selected</div> <table> <tbody><tr> <td class="right"> Displayed: </td> <td class="left">[[_currentlyDisplayed(filtered_ bots.*)]]</td> </tr> <tr> <td class="right"> All: </td> <td class="left">[[_coun t_query.count]]</td> </tr> <tr> <td class="right"> <a href$="[[_makeURL('alive', 'true',columns.*,filtered_bots.*,sort,verbose)]]">Alive</a>: </td> <td class="le ft">[[_computeAlive(_count_query.*)]]</td> </tr> <tr> <td class="right"> <a href $="[[_makeURL('busy','true',columns.*,filtered_bots.*,sort,verbose)]]">Busy</a>: </td> <td class="left">[[_count_query.busy]]</td> </tr> <tr> <td class="right"> <a href$="[[_makeURL('idle','true',columns.*,filtered_bots.*,sort,verbose)]]">I dle</a>: </td> <td class="left">[[_computeIdle(_count_query.*)]]</td> </tr> <tr> <td class="right"> <a href$="[[_makeURL('dead','true',columns.*,filtered_bots.* ,sort,verbose)]]">Dead</a>: </td> <td class="left">[[_count_query.dead]]</td> </ tr> <tr> <td class="right"> <a href$="[[_makeURL('quarantined','true',columns.*, filtered_bots.*,sort,verbose)]]">Quarantined</a>: </td> <td class="left">[[_coun t_query.quarantined]]</td> </tr> </tbody></table> </template> <script>Polymer({i s:"bot-list-summary",behaviors:[SwarmingBehaviors.BotListBehavior],properties:{a uth_headers:{type:Object},busy:{type:Boolean,value:!1,notify:!0},columns:{type:A rray},count_params:{type:Object},filtered_bots:{type:Array},fleet:{type:Object}, sort:{type:String},verbose:{type:Boolean},_count_query:{type:Object}},observers: ["_recountTotal(auth_headers.*,count_params.*)"],_computeAlive:function(){return this._count_query.count-this._count_query.dead},_computeIdle:function(){return this._count_query.count-this._count_query.busy},_currentlyDisplayed:function(){r eturn this.filtered_bots&&this.filtered_bots.length},_getFilterStr:function(t){r eturn t?"alive"===t||"dead"===t||"quarantined"===t?"status:"+t:"task:"+t:""},_ma keURL:function(t,e){if(!e){var r={s:[this.sort],c:this.columns,v:[this.verbose]} ;return t&&(r.f=[this._getFilterStr(t)]),window.location.href.split("?")[0]+"?"+ sk.query.fromParamSet(r)}var o=encodeURIComponent(this._getFilterStr(t));if(wind ow.location.href.indexOf(o)===-1)return window.location.href+"&f="+o},_recountTo tal:function(){this.auth_headers&&this.count_params&&this._getJsonAsync("_count_ query","/api/swarming/v1/bots/count","busy",this.auth_headers,this.count_params) }})</script> </dom-module><dom-module id="bot-list" assetpath="/res/imp/botlist/ "> <template> <style include="iron-flex iron-flex-alignment iron-positioning swa rming-app-style dynamic-table-style">bot-filters,bot-list-summary{margin-bottom: 8px;margin-right:10px}.bad-device,.quarantined{background-color:#fdd}.dead{backg round-color:#ccc}.alt{background-color:#f8f8f8}.bot-list th>span{padding-right:3 0px}</style> <url-param name="s" value="{{_sortstr}}" default_value="id:asc"> </ url-param> <swarming-app client_id="[[client_id]]" auth_headers="{{_auth_headers }}" signed_in="{{_signed_in}}" server_details="{{_server_details}}" busy="[[_or( _busy1,_busy2,_busy3)]]" name="Swarming Bot List"> <h2 hidden$="[[_signed_in]]"> You must sign in to see anything useful.</h2> <div hidden$="[[_not(_signed_in)]] "> <div class="horizontal layout"> <bot-filters dimensions="[[_dimensions]]" pri mary_map="[[_primary_map]]" primary_arr="[[_primary_arr]]" special_columns="[[_s pecialColumns]]" columns="{{_columns}}" query_params="{{_query_params}}" filter= "{{_filter}}" verbose="{{_verbose}}"> </bot-filters> <bot-list-summary auth_head ers="[[_auth_headers]]" busy="{{_busy3}}" columns="[[_columns]]" count_params="[ [_query_params]]" fleet="[[_fleet]]" filtered_bots="[[_filteredSortedItems]]" so rt="[[_sortstr]]" verbose="[[_verbose]]"> </bot-list-summary> </div> <bot-list-d ata id="data" auth_headers="[[_auth_headers]]" query_params="[[_query_params]]" busy="{{_busy1}}" dimensions="{{_dimensions}}" fleet="{{_fleet}}" primary_map="{ {_primary_map}}" primary_arr="{{_primary_arr}}"> </bot-list-data> <table class=" bot-list"> <thead on-sort_change="_sortChange"> <tr> <th> <span>Bot Id</span> <s ort-toggle name="id" current="[[_sort]]"> </sort-toggle> </th> <th hidden$="[[_h ide('cloud_console_link', _columns.*)]]"> <span>Bot in Cloud Console</span> <sor t-toggle name="cloud_console_link" current="[[_sort]]"> </sort-toggle> </th> <th hidden$="[[_hide('mp_lease_id', _columns.*)]]"> <span>Machine Provider Lease Id </span> <sort-toggle name="mp_lease_id" current="[[_sort]]"> </sort-toggle> </th > <th hidden$="[[_hide('task', _columns.*)]]"> <span>Current Task</span> <sort-t oggle name="task" current="[[_sort]]"> </sort-toggle> </th> <template is="dom-re peat" items="[[_plainColumns]]" as="c"> <th hidden$="[[_hide(c)]]"> <span>[[_hea der(c)]]</span> <sort-toggle name="[[c]]" current="[[_sort]]"> </sort-toggle> </ th> </template> </tr> </thead> <tbody> <template id="bot_table" is="dom-repeat" items="[[_filteredSortedItems]]" as="bot" initial-count="50"> <tr class$="[[_bot Class(bot)]]"> <td> <a class="center" href$="[[_botLink(bot.bot_id)]]" target="_ blank" rel="noopener"> [[bot.bot_id]] </a> </td> <td hidden$="[[_hide('cloud_con sole_link', _columns.*)]]"> <a href$="[[_ccLink(bot)]]">[[_ccText(bot)]]</a> </t d> <td hidden$="[[_hide('mp_lease_id', _columns.*)]]"> <a href$="[[_mpLink(bot, _server_details.machine_provider_template)]]"> [[_column('mp_lease_id', bot,_ver bose)]] </a> </td> <td hidden$="[[_hide('task', _columns.*)]]"> <a href$="[[_tas kLink(bot.task_id)]]">[[_taskId(bot)]]</a> </td> <template is="dom-repeat" items ="[[_plainColumns]]" as="c"> <td hidden$="[[_hide(c)]]"> [[_column(c, bot, _verb ose)]] </td> </template> </tr> <template is="dom-repeat" items="[[_devices(bot)] ]" as="device"> <tr hidden$="[[_hide('android_devices', _columns.*)]]" class$="[ [_deviceClass(device,index)]]"> <td></td> <td hidden$="[[_hide('cloud_console_li nk', _columns.*)]]"></td> <td hidden$="[[_hide('mp_lease_id', _columns.*)]]"></t d> <td hidden$="[[_hide('task', _columns.*)]]"></td> <template is="dom-repeat" i tems="[[_plainColumns]]" as="c"> <td hidden$="[[_hide(c)]]"> [[_deviceColumn(c, device, _verbose)]] </td> </template> </tr> </template> </template> </tbody> </t able> <pageable-data id="page_bots" busy="{{_busy2}}" label="Show more bots" out put="{{_items}}" parse="[[_parseBots]]"> </pageable-data> </div> </swarming-app> </template> <script> (function(){
311 var UNKNOWN = "unknown"; 311 var UNKNOWN = "unknown";
312 // see dynamic-table for more information on specialColumns, headerMap, 312 // see dynamic-table for more information on specialColumns, headerMap,
313 // columnMap, and specialSort 313 // columnMap, and specialSort
314 var specialColumns = ["id", "task", "cloud_console_link", "mp_lease_id"]; 314 var specialColumns = ["id", "cloud_console_link", "mp_lease_id", "task"];
315 315
316 var deviceColumns = ["battery_health", "battery_level", "battery_status", "b attery_temperature", "battery_voltage", "device_temperature"]; 316 var deviceColumns = ["battery_health", "battery_level", "battery_status", "b attery_temperature", "battery_voltage", "device_temperature"];
317 317
318 var headerMap = { 318 var headerMap = {
319 // "id" and "task" are special, so they don't go here. They have their 319 // "id", "task" and other special columns don't go here. They have their
320 // headers hard-coded above. 320 // headers hard-coded above.
321 "android_devices": "Android Devices", 321 "android_devices": "Android Devices",
322 "battery_health": "Battery Health", 322 "battery_health": "Battery Health",
323 "battery_level": "Battery Level (%)", 323 "battery_level": "Battery Level (%)",
324 "battery_status": "Battery Status", 324 "battery_status": "Battery Status",
325 "battery_temperature": "Battery Temp (°C)", 325 "battery_temperature": "Battery Temp (°C)",
326 "battery_voltage": "Battery Voltage (mV)", 326 "battery_voltage": "Battery Voltage (mV)",
327 "bot_temperature": "Bot Temp (°C)", 327 "bot_temperature": "Bot Temp (°C)",
328 "cores": "Cores", 328 "cores": "Cores",
329 "cpu": "CPU", 329 "cpu": "CPU",
330 "device": "Non-android Device", 330 "device": "Non-android Device",
331 "device_os": "Device OS", 331 "device_os": "Device OS",
332 "device_temperature": "Device Temp (°C)", 332 "device_temperature": "Device Temp (°C)",
333 "device_type": "Device Type", 333 "device_type": "Device Type",
334 "disk_space": "Free Space (MB)", 334 "disk_space": "Free Space (MB)",
335 "external_ip": "External IP",
335 "first_seen": "First Seen", 336 "first_seen": "First Seen",
336 "gpu": "GPU", 337 "gpu": "GPU",
338 "internal_ip": "Internal or Local IP",
337 "last_seen": "Last Seen", 339 "last_seen": "Last Seen",
338 "mp_lease_expires": "Machine Provider Lease Expires", 340 "mp_lease_expires": "Machine Provider Lease Expires",
339 "os": "OS", 341 "os": "OS",
340 "pool": "Pool", 342 "pool": "Pool",
341 "running_time": "Swarming Uptime", 343 "running_time": "Swarming Uptime",
342 "status": "Status", 344 "status": "Status",
343 "uptime": "Bot Uptime", 345 "uptime": "Bot Uptime",
344 "xcode_version": "XCode Version", 346 "xcode_version": "XCode Version",
345 }; 347 };
346 348
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 }, 395 },
394 external_ip: function(bot) { 396 external_ip: function(bot) {
395 return bot.external_ip || "none"; 397 return bot.external_ip || "none";
396 }, 398 },
397 first_seen: function(bot) { 399 first_seen: function(bot) {
398 return sk.human.localeTime(bot.first_seen_ts) 400 return sk.human.localeTime(bot.first_seen_ts)
399 }, 401 },
400 id: function(bot) { 402 id: function(bot) {
401 return bot.bot_id; 403 return bot.bot_id;
402 }, 404 },
405 internal_ip: function(bot) {
406 return this._attribute(bot, "ip", "none")[0];
407 },
403 last_seen: function(bot) { 408 last_seen: function(bot) {
404 if (this._verbose) { 409 if (this._verbose) {
405 return sk.human.localeTime(bot.last_seen_ts); 410 return sk.human.localeTime(bot.last_seen_ts);
406 } 411 }
407 return this._timeDiffApprox(bot.last_seen_ts) + " ago"; 412 return this._timeDiffApprox(bot.last_seen_ts) + " ago";
408 }, 413 },
409 mp_lease_id: function(bot) { 414 mp_lease_id: function(bot) {
410 var id = bot.lease_id || "none"; 415 var id = bot.lease_id || "none";
411 if (this._verbose) { 416 if (this._verbose) {
412 return id; 417 return id;
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 // We sort based on the raw number of MB of the first disk. 566 // We sort based on the raw number of MB of the first disk.
562 var botACol = botA.disks[0].mb; 567 var botACol = botA.disks[0].mb;
563 var botBCol = botB.disks[0].mb; 568 var botBCol = botB.disks[0].mb;
564 return dir * swarming.naturalCompare(botACol, botBCol); 569 return dir * swarming.naturalCompare(botACol, botBCol);
565 }, 570 },
566 first_seen: function(dir, botA, botB) { 571 first_seen: function(dir, botA, botB) {
567 var botACol = botA.first_seen_ts; 572 var botACol = botA.first_seen_ts;
568 var botBCol = botB.first_seen_ts; 573 var botBCol = botB.first_seen_ts;
569 return dir * swarming.naturalCompare(botACol, botBCol); 574 return dir * swarming.naturalCompare(botACol, botBCol);
570 }, 575 },
571 gpu: function(dir, botA, botB) {
572 // We want all the "none" GPU bots to come last in the list.
573 var botACol = this._column("gpu", botA);
574 if (botACol === "none") {
575 botACol = "ZZZ";
576 }
577 var botBCol = this._column("gpu", botB);
578 if (botBCol === "none") {
579 botBCol = "ZZZ";
580 }
581 return dir * swarming.naturalCompare(botACol, botBCol);
582 },
583 last_seen: function(dir, botA, botB) { 576 last_seen: function(dir, botA, botB) {
584 var botACol = botA.last_seen_ts; 577 var botACol = botA.last_seen_ts;
585 var botBCol = botB.last_seen_ts; 578 var botBCol = botB.last_seen_ts;
586 return dir * swarming.naturalCompare(botACol, botBCol) 579 return dir * swarming.naturalCompare(botACol, botBCol)
587 }, 580 },
588 running_time: function(dir, botA, botB) { 581 running_time: function(dir, botA, botB) {
589 var botACol = this._state(botA, "running_time") || 0; 582 var botACol = this._state(botA, "running_time") || 0;
590 var botBCol = this._state(botB, "running_time") || 0; 583 var botBCol = this._state(botB, "running_time") || 0;
591 return dir * swarming.naturalCompare(botACol, botBCol) 584 return dir * swarming.naturalCompare(botACol, botBCol)
592 }, 585 },
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
708 }, 701 },
709 702
710 _deviceColumn: function(col, device) { 703 _deviceColumn: function(col, device) {
711 var f = deviceColumnMap[col]; 704 var f = deviceColumnMap[col];
712 if (!f || !device) { 705 if (!f || !device) {
713 return ""; 706 return "";
714 } 707 }
715 return f.bind(this)(device); 708 return f.bind(this)(device);
716 }, 709 },
717 710
718 _deviceClass: function(device) { 711 _deviceClass: function(device, idx) {
719 if (!device.okay) { 712 if (!device.okay) {
720 return "bad-device"; 713 return "bad-device";
721 } 714 }
715 if (idx % 2 === 0){
716 return "alt";
717 }
722 return ""; 718 return "";
723 }, 719 },
724 720
725 _mpLink: function(bot, template) { 721 _mpLink: function(bot, template) {
726 if (!bot || !bot.lease_id || !template) { 722 if (!bot || !bot.lease_id || !template) {
727 return false; 723 return false;
728 } 724 }
729 return template.replace("%s", bot.lease_id); 725 return template.replace("%s", bot.lease_id);
730 }, 726 },
731 727
732 _reload: function() { 728 _reload: function() {
733 if (!this._auth_headers || !this._query_params) { 729 if (!this._auth_headers || !this._query_params) {
734 return; 730 return;
735 } 731 }
736 var url = "/api/swarming/v1/bots/list?" + sk.query.fromParamSet(this._qu ery_params); 732 var url = "/api/swarming/v1/bots/list?" + sk.query.fromParamSet(this._qu ery_params);
737 this.$.page_bots.load(url,this._auth_headers); 733 this.$.page_bots.load(url,this._auth_headers);
738 } 734 }
739 735
740 }); 736 });
741 })(); </script> </dom-module> <dom-module id="paper-button" assetpath="/res/im p/bower_components/paper-button/"> <template strip-whitespace=""> <style include ="paper-material-shared-styles">:host{@apply(--layout-inline);@apply(--layout-ce nter-center);position:relative;box-sizing:border-box;min-width:5.14em;margin:0 . 29em;background:0 0;-webkit-tap-highlight-color:transparent;-webkit-tap-highligh t-color:transparent;font:inherit;text-transform:uppercase;outline-width:0;border -radius:3px;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none; user-select:none;cursor:pointer;z-index:0;padding:.7em .57em;@apply(--paper-font -common-base);@apply(--paper-button)}:host([hidden]){display:none!important}:hos t([raised].keyboard-focus){font-weight:700;@apply(--paper-button-raised-keyboard -focus)}:host(:not([raised]).keyboard-focus){font-weight:700;@apply(--paper-butt on-flat-keyboard-focus)}:host([disabled]){background:#eaeaea;color:#a8a8a8;curso r:auto;pointer-events:none;@apply(--paper-button-disabled)}:host([animated]){@ap ply(--shadow-transition)}paper-ripple{color:var(--paper-button-ink-color)}</styl e> <content></content> </template> <script>Polymer({is:"paper-button",behaviors: [Polymer.PaperButtonBehavior],properties:{raised:{type:Boolean,reflectToAttribut e:!0,value:!1,observer:"_calculateElevation"}},_calculateElevation:function(){th is.raised?Polymer.PaperButtonBehaviorImpl._calculateElevation.apply(this):this._ setElevation(0)}})</script> </dom-module> <script>Polymer.NeonAnimatableBehavior ={properties:{animationConfig:{type:Object},entryAnimation:{observer:"_entryAnim ationChanged",type:String},exitAnimation:{observer:"_exitAnimationChanged",type: String}},_entryAnimationChanged:function(){this.animationConfig=this.animationCo nfig||{},this.animationConfig.entry=[{name:this.entryAnimation,node:this}]},_exi tAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this. animationConfig.exit=[{name:this.exitAnimation,node:this}]},_copyProperties:func tion(i,n){for(var t in n)i[t]=n[t]},_cloneConfig:function(i){var n={isClone:!0}; return this._copyProperties(n,i),n},_getAnimationConfigRecursive:function(i,n,t) {if(this.animationConfig){if(this.animationConfig.value&&"function"==typeof this .animationConfig.value)return void this._warn(this._logf("playAnimation","Please put 'animationConfig' inside of your components 'properties' object instead of outside of it."));var o;if(o=i?this.animationConfig[i]:this.animationConfig,Arra y.isArray(o)||(o=[o]),o)for(var e,a=0;e=o[a];a++)if(e.animatable)e.animatable._g etAnimationConfigRecursive(e.type||i,n,t);else if(e.id){var r=n[e.id];r?(r.isClo ne||(n[e.id]=this._cloneConfig(r),r=n[e.id]),this._copyProperties(r,e)):n[e.id]= e}else t.push(e)}},getAnimationConfig:function(i){var n={},t=[];this._getAnimati onConfigRecursive(i,n,t);for(var o in n)t.push(n[o]);return t}}</script> <script >Polymer.NeonAnimationRunnerBehaviorImpl={_configureAnimations:function(n){var i =[];if(n.length>0)for(var e,t=0;e=n[t];t++){var o=document.createElement(e.name) ;if(o.isNeonAnimation){var a=null;try{a=o.configure(e),"function"!=typeof a.canc el&&(a=document.timeline.play(a))}catch(n){a=null,console.warn("Couldnt play","( ",e.name,").",n)}a&&i.push({neonAnimation:o,config:e,animation:a})}else console. warn(this.is+":",e.name,"not found!")}return i},_shouldComplete:function(n){for( var i=!0,e=0;e<n.length;e++)if("finished"!=n[e].animation.playState){i=!1;break} return i},_complete:function(n){for(var i=0;i<n.length;i++)n[i].neonAnimation.co mplete(n[i].config);for(var i=0;i<n.length;i++)n[i].animation.cancel()},playAnim ation:function(n,i){var e=this.getAnimationConfig(n);if(e){this._active=this._ac tive||{},this._active[n]&&(this._complete(this._active[n]),delete this._active[n ]);var t=this._configureAnimations(e);if(0==t.length)return void this.fire("neon -animation-finish",i,{bubbles:!1});this._active[n]=t;for(var o=0;o<t.length;o++) t[o].animation.onfinish=function(){this._shouldComplete(t)&&(this._complete(t),d elete this._active[n],this.fire("neon-animation-finish",i,{bubbles:!1}))}.bind(t his)}},cancelAnimation:function(){for(var n in this._animations)this._animations [n].cancel();this._animations={}}},Polymer.NeonAnimationRunnerBehavior=[Polymer. NeonAnimatableBehavior,Polymer.NeonAnimationRunnerBehaviorImpl]</script> <script >Polymer.PaperDialogBehaviorImpl={hostAttributes:{role:"dialog",tabindex:"-1"},p roperties:{modal:{type:Boolean,value:!1}},observers:["_modalChanged(modal, _read ied)"],listeners:{tap:"_onDialogClick"},ready:function(){this.__prevNoCancelOnOu tsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancel OnEscKey,this.__prevWithBackdrop=this.withBackdrop},_modalChanged:function(i,e){ e&&(i?(this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prev NoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop ,this.noCancelOnOutsideClick=!0,this.noCancelOnEscKey=!0,this.withBackdrop=!0):( this.noCancelOnOutsideClick=this.noCancelOnOutsideClick&&this.__prevNoCancelOnOu tsideClick,this.noCancelOnEscKey=this.noCancelOnEscKey&&this.__prevNoCancelOnEsc Key,this.withBackdrop=this.withBackdrop&&this.__prevWithBackdrop))},_updateClosi ngReasonConfirmed:function(i){this.closingReason=this.closingReason||{},this.clo singReason.confirmed=i},_onDialogClick:function(i){for(var e=Polymer.dom(i).path ,o=0;o<e.indexOf(this);o++){var t=e[o];if(t.hasAttribute&&(t.hasAttribute("dialo g-dismiss")||t.hasAttribute("dialog-confirm"))){this._updateClosingReasonConfirm ed(t.hasAttribute("dialog-confirm")),this.close(),i.stopPropagation();break}}}}, Polymer.PaperDialogBehavior=[Polymer.IronOverlayBehavior,Polymer.PaperDialogBeha viorImpl]</script> <dom-module id="paper-dialog-shared-styles" assetpath="/res/i mp/bower_components/paper-dialog-behavior/"> <template> <style>:host{display:blo ck;margin:24px 40px;background:var(--paper-dialog-background-color,--primary-bac kground-color);color:var(--paper-dialog-color,--primary-text-color);@apply(--pap er-font-body1);@apply(--shadow-elevation-16dp);@apply(--paper-dialog)}:host>::co ntent>*{margin-top:20px;padding:0 24px}:host>::content>.no-padding{padding:0}:ho st>::content>:first-child{margin-top:24px}:host>::content>:last-child{margin-bot tom:24px}:host>::content h2{position:relative;margin:0;@apply(--paper-font-title );@apply(--paper-dialog-title)}:host>::content .buttons{position:relative;paddin g:8px 8px 8px 24px;margin:0;color:var(--paper-dialog-button-color,--primary-colo r);@apply(--layout-horizontal);@apply(--layout-end-justified)}</style> </templat e> </dom-module> <dom-module id="paper-dialog" assetpath="/res/imp/bower_compone nts/paper-dialog/"> <template> <style include="paper-dialog-shared-styles"></sty le> <content></content> </template> </dom-module> <script>!function(){Polymer({i s:"paper-dialog",behaviors:[Polymer.PaperDialogBehavior,Polymer.NeonAnimationRun nerBehavior],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_rende rOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderCl osed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimat ionFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderCl osed()}})}()</script> <script>window.SwarmingBehaviors=window.SwarmingBehaviors| |{},function(){SwarmingBehaviors.TaskBehavior={properties:{BOT_DIED:{type:String ,value:"BOT_DIED"},CANCELED:{type:String,value:"CANCELED"},COMPLETED:{type:Strin g,value:"COMPLETED"},COMPLETED_DEDUPED:{type:String,value:"COMPLETED (DEDUPED)"} ,COMPLETED_FAILURE:{type:String,value:"COMPLETED (FAILURE)"},COMPLETED_SUCCESS:{ type:String,value:"COMPLETED (SUCCESS)"},EXPIRED:{type:String,value:"EXPIRED"},P ENDING:{type:String,value:"PENDING"},RUNNING:{type:String,value:"RUNNING"},TIMED _OUT:{type:String,value:"TIMED_OUT"}},stateClass:function(t){return t===this.CAN CELED||t===this.TIMED_OUT||t===this.EXPIRED?"exception":t===this.BOT_DIED?"bot_d ied":t===this.COMPLETED_FAILURE?"failed_task":t===this.RUNNING||t===this.PENDING ?"pending_task":""},state:function(t){return t?t.state===this.COMPLETED?t.failur e?this.COMPLETED_FAILURE:"0"===t.try_number?this.COMPLETED_DEDUPED:this.COMPLETE D_SUCCESS:t.state:""},_stateClass:function(t){return this.stateClass(this.state( t))}}}()</script> <dom-module id="task-style" assetpath="/res/imp/common/"> <tem plate> <style>.failed_task{background-color:#fdd}.bot_died{background-color:#ccc }.exception{background-color:#edd2ff}.pending_task{background-color:#fffc6c}</st yle> </template> </dom-module><dom-module id="task-filters" assetpath="/res/imp/ tasklist/"> <template> <style is="custom-style" include="iron-flex iron-flex-ali gnment iron-positioning query-column-filter-style">.item.wide{max-width:400px}.s elector.wide{min-width:275px}</style> <url-param name="f" value="{{_filters}}" d efault_values="[]" multi=""> </url-param> <url-param name="c" value="{{columns}} " default_values="[&quot;name&quot;,&quot;state&quot;,&quot;created_ts&quot;,&qu ot;user&quot;]" multi=""> </url-param> <url-param name="q" value="{{_query}}" de fault_value=""> </url-param> <url-param name="l" default_value="50" value="{{_li mit}}"> </url-param> <div class="container horizontal layout"> <div class="narro w-down-selector"> <div> <iron-a11y-keys target="[[_filter_input]]" keys="enter" on-keys-pressed="_manuallyAddFilter"></iron-a11y-keys> <paper-input id="filter" label="Search columns and filters or supply a filter and press enter" placeholde r="gpu nvidia pool:Chrome" value="{{_query::input}}"> </paper-input> </div> <div class="wide selector side-by-side" title="This shows all task tags and other in teresting task properties. Mark the check box to add as a column. Select the row to see filter options."> <iron-selector attr-for-selected="label" selected="{{_ primarySelected}}"> <template is="dom-repeat" items="[[_primaryItems]]" as="item "> <div class="selectable item horizontal layout" label="[[item]]"> <span>[[_bef oreBold(item,_query)]]<span class="bold">[[_bold(item,_query)]]</span>[[_afterBo ld(item,_query)]]</span> <span class="flex"></span> <paper-checkbox noink="" dis abled$="[[_cantToggleColumn(item)]]" checked="[[_columnState(item,columns.*)]]" on-change="_toggleColumn"> </paper-checkbox> </div> </template> </iron-selector> </div> <div class="selector side-by-side" title="These are most of the options (if any) that the task list can be filtered on. This list is all that have been seen recently, augmented with the ones returned by the current query. There may be others."> <template is="dom-repeat" id="secondaryList" items="[[_secondaryIte ms]]" as="item"> <div class="item horizontal layout" label="[[item]]"> <span>[[_ beforeBold(item,_query)]]<span class="bold">[[_bold(item,_query)]]</span>[[_afte rBold(item,_query)]]</span> <span class="flex"></span> <iron-icon class="icons" icon="icons:arrow-forward" hidden="[[_cantAddFilter(_primarySelected,item,_filte rs.*)]]" on-tap="_addFilter"> </iron-icon> </div> </template> </div> <div class= "selector side-by-side" title="These tag filters are AND'd together and applied to all tasks."> <template is="dom-repeat" items="[[_filters]]" as="fil"> <div cl ass="item horizontal layout" label="[[fil]]"> <span>[[fil]]</span> <span class=" flex"></span> <iron-icon class="icons" icon="icons:remove-circle-outline" hidden ="[[_cantRemoveFilter(fil,_filters.*)]]" on-tap="_removeFilter"> </iron-icon> </ div> </template> </div> <div class="side-by-side"> <paper-input id="_limit" labe l="Limit Results" auto-validate="" min="0" max="1000" pattern="[0-9]+" value="{{ _limit}}"> </paper-input> </div> </div> </div> </template> <script>!function(){v ar t={state:function(t,i){var r=this._attribute(t,"state")[0];if(i===r||"ALL"=== i)return!0;if("PENDING_RUNNING"===i)return r===this.PENDING||r===this.RUNNING;va r e=this._attribute(t,"failure",!1)[0];if("COMPLETED_SUCCESS"===i)return r===thi s.COMPLETED&&!e;if("COMPLETED_FAILURE"===i)return r===this.COMPLETED&&e;var a=th is._attribute(t,"try_number","-1")[0];return"DEDUPED"===i?r===this.COMPLETED&&"0 "===a:void 0}};Polymer({is:"task-filters",behaviors:[SwarmingBehaviors.QueryColu mnFilter,SwarmingBehaviors.TaskBehavior],properties:{columns:{type:Array,notify: !0},query_params:{type:Object,computed:"_extractQueryParams(_filters.*, _limit)" ,notify:!0},_filterMap:{type:Object,value:function(){var i=this._commonFilters() ;for(var r in t)i[r]=t[r];return i}}},_cantToggleColumn:function(t){return!t||"n ame"===t},_extractQueryParams:function(){var t={},i=[];this._filters.forEach(fun ction(r){var e=r.split(this.FILTER_SEP,1),a=e[0],s=r.substring(a.length+this.FIL TER_SEP.length);"state"===a?t.state=[s]:("user"===a&&"none"===s&&(s=""),i.push(a +this.FILTER_SEP+swarming.alias.unapply(s)))}.bind(this)),t.tags=i;var r=parseIn t(this._limit);return Number.isInteger(r)&&(r=Math.max(r,1),r=Math.min(1e3,r),t. limit=[r],this._limit!=r&&this.set("_limit",r)),t}})}()</script> </dom-module><d om-module id="task-list-data" assetpath="/res/imp/tasklist/"> <script>!function( ){var t=["abandoned_ts","completed_ts","created_ts","modified_ts","started_ts"]; Polymer({is:"task-list-data",behaviors:[SwarmingBehaviors.CommonBehavior,Swarmin gBehaviors.TaskBehavior],properties:{auth_headers:{type:Object,observer:"signIn" },query_params:{type:Object},tasks:{type:Array},busy:{type:Boolean,computed:"_or (_busy2,_busy1)",notify:!0},primary_map:{type:Object,computed:"_primaryMap(_tags ,_dimensions,tasks.*)",notify:!0},primary_arr:{type:Array,computed:"_primaryArr( primary_map)",notify:!0},_busy2:{type:Boolean,value:!1},_busy1:{type:Boolean,val ue:!1},_dimensions:{type:Object},_list:{type:Object},_tags:{type:Object}},signIn :function(){this._getJsonAsync("_tags","/api/swarming/v1/tasks/tags","_busy2",th is.auth_headers),this._getJsonAsync("_dimensions","/api/swarming/v1/bots/dimensi ons","_busy1",this.auth_headers)},_primaryArr:function(t){var a=Object.keys(t);r eturn a.sort(),a},_primaryMap:function(a,s){a=a&&a.tasks_tags||[],s=s&&s.bots_di mensions||[],tasks=this.tasks||[];var e={};a.forEach(function(t){e[t.key]||(e[t. key]={});var a=t.value||[];a.forEach(function(a){e[t.key][a]=!0})}),s.forEach(fu nction(t){var a=t.value;e[t.key]||(e[t.key]={}),a.forEach(function(a){e[t.key][a ]=!0})}),tasks.forEach(function(t){Object.keys(t.tagMap).forEach(function(a){var s=t.tagMap[a];e[a]||(e[a]={}),e[a][s]=!0})}),e.user&&(delete e.user[""],e.user. none=!0);var r={};for(key in e){var i=Object.keys(e[key]);if(swarming.alias.DIME NSIONS_WITH_ALIASES.indexOf(key)===-1)r[key]=i;else{var n=[];i.forEach(function( t){n.push(swarming.alias.apply(t,key))}),r[key]=n}}return r.name=[],r.state=[thi s.PENDING,this.RUNNING,"PENDING_RUNNING",this.COMPLETED,"COMPLETED_SUCCESS","COM PLETED_FAILURE",this.EXPIRED,this.TIMED_OUT,this.BOT_DIED,this.CANCELED,"DEDUPED ","ALL"],r.costs_usd=[],r.deduped_from=[],r.duration=[],r.server_versions=[],r.b ot=[],t.forEach(function(t){r[t]=[]}),r},parseTasks:function(a){if(!a||!a.items) return[];var s=new Date;return a.items.forEach(function(a){var e={};a.tags=a.tag s||[],a.tags.forEach(function(t){var a=t.split(":",1),s=a[0],r=t.substring(s.len gth+1);e[s]=r}),a.tagMap=e,t.forEach(function(t){a[t]&&(a[t]=new Date(a[t]),a["h uman_"+t]=sk.human.localeTime(a[t]))}),!a.duration&&a.state===this.RUNNING&&a.st arted_ts&&(a.duration=(s-a.started_ts)/1e3),a.duration&&(a.human_duration=this._ humanDuration(a.duration))}.bind(this)),a.items}})}()</script> </dom-module> <do m-module id="task-list" assetpath="/res/imp/tasklist/"> <template> <style includ e="iron-flex iron-flex-alignment iron-positioning swarming-app-style dynamic-tab le-style task-style">task-filters{margin-bottom:8px;margin-right:10px}.task-list th>span{padding-right:30px}</style> <url-param name="s" value="{{_sortstr}}" de fault_value="created_ts:desc"> </url-param> <swarming-app client_id="[[client_id ]]" auth_headers="{{_auth_headers}}" permissions="{{_permissions}}" signed_in="{ {_signed_in}}" busy="[[_or(_busy1,_busy2)]]" name="Swarming Task List"> <h2 hidd en$="[[_signed_in]]">You must sign in to see anything useful.</h2> <div hidden$= "[[_not(_signed_in)]]"> <task-list-data id="data" auth_headers="[[_auth_headers] ]" query_params="[[_query_params]]" tasks="[[_items]]" busy="{{_busy1)}}" primar y_map="{{_primary_map}}" primary_arr="{{_primary_arr}}"> </task-list-data> <div class="horizontal layout"> <task-filters primary_map="[[_primary_map]]" primary_ arr="[[_primary_arr]]" columns="{{_columns}}" query_params="{{_query_params}}" f ilter="{{_filter}}"> </task-filters> </div> <table class="task-list"> <thead on- sort_change="_sortChange"> <tr> <th> <span>Task Name</span> <sort-toggle name="n ame" current="[[_sort]]"> </sort-toggle> </th> <th hidden$="[[_hide('state', _co lumns.*)]]"> <span>State</span> <sort-toggle name="state" current="[[_sort]]"> < /sort-toggle> </th> <th hidden$="[[_hide('bot', _columns.*)]]"> <span>Bot Assign ed</span> <sort-toggle name="bot" current="[[_sort]]"> </sort-toggle> </th> <th hidden$="[[_hide('deduped_from', _columns.*)]]"> <span>Deduped from</span> <sort -toggle name="deduped_from" current="[[_sort]]"> </sort-toggle> </th> <th hidden $="[[_hide('source_revision', _columns.*)]]"> <span>Source Revision</span> <sort -toggle name="source_revision" current="[[_sort]]"> </sort-toggle> </th> <templa te is="dom-repeat" items="[[_plainColumns]]" as="c"> <th hidden$="[[_hide(c)]]"> <span>[[_header(c)]]</span> <sort-toggle name="[[c]]" current="[[_sort]]"> </so rt-toggle> </th> </template> </tr> </thead> <tbody> <template id="tasks_table" i s="dom-repeat" items="[[_filteredSortedItems]]" as="task" initial-count="50"> <t r class$="[[_taskClass(task)]]"> <td> <a class="center" href$="[[_taskLink(task. task_id)]]" target="_blank"> [[task.name]] </a> </td> <td hidden$="[[_hide('stat e', _columns.*)]]"> [[_column('state', task)]] <paper-button raised="" hidden$=" [[_cannotCancel(task,_permissions)]]" on-tap="_promptCancel"> Cancel </paper-but ton> </td> <td hidden$="[[_hide('bot', _columns.*)]]"> <a class="center" href$=" [[_botLink(task.bot_id)]]" target="_blank"> [[_column('bot',task)]] </a> </td> < td hidden$="[[_hide('deduped_from', _columns.*)]]"> <a class="center" href$="[[_ taskLink(task.deduped_from)]]" target="_blank"> [[_column('deduped_from',task)]] </a> </td> <td hidden$="[[_hide('source_revision', _columns.*)]]"> <a class="ce nter" href$="[[_sourceLink(task)]]" target="_blank"> [[_column('source_revision' ,task)]] </a> </td> <template is="dom-repeat" items="[[_plainColumns]]" as="c"> <td hidden$="[[_hide(c)]]"> [[_column(c, task)]] </td> </template> </tr> </templ ate> </tbody> </table> <pageable-data id="page_tasks" busy="{{_busy2}}" label="S how more tasks" output="{{_items}}" parse="[[_parseTasks]]"> </pageable-data> </ div> </swarming-app> <paper-dialog id="prompt" modal="" on-iron-overlay-closed=" _promptClosed"> <h2>Are you sure?</h2> <div>Are you sure you want to [[_dialogPr ompt]]?</div> <div class="buttons"> <paper-button dialog-dismiss="" autofocus="" >No</paper-button> <paper-button dialog-confirm="">Yes</paper-button> </div> </p aper-dialog> </template> <script>!function(){function t(t){return function(e){re turn this._attribute(e,"human_"+t)[0]}}function e(t){return function(e,a,s){var r=this._attribute(a,t,"0")[0],i=this._attribute(s,t,"0")[0];return e*(r-i)}}var a=["deduped_from","name","state","bot","source_revision"],s={abandoned_ts:t("aba ndoned_ts"),bot:function(t){return this._attribute(t,"bot_id")[0]},completed_ts: t("completed_ts"),costs_usd:function(t){return this._attribute(t,"costs_usd",0)[ 0]},created_ts:t("created_ts"),duration:t("duration"),modified_ts:t("modified_ts "),source_revision:function(t){var e=this._attribute(t,"source_revision")[0];ret urn e.substring(0,8)},started_ts:t("started_ts"),state:function(t){var e=this._a ttribute(t,"state")[0];if("COMPLETED"===e){if(this._attribute(t,"failure",!1)[0] )return"COMPLETED (FAILURE)";var a=this._attribute(t,"try_number","-1")[0];retur n"0"===a?"COMPLETED (DEDUPED)":"COMPLETED (SUCCESS)"}return e}},r={user:"Request ing User"},i={abandoned_ts:e("abandoned_ts"),completed_ts:e("completed_ts"),crea ted_ts:e("created_ts"),duration:e("duration"),modified_ts:e("modified_ts"),start ed_ts:e("started_ts")};Polymer({is:"task-list",behaviors:[SwarmingBehaviors.Dyna micTableBehavior,SwarmingBehaviors.TaskBehavior],properties:{client_id:{type:Str ing},_busy1:{type:Boolean,value:!1},_busy2:{type:Boolean,value:!1},_parseTasks:{ type:Function,value:function(){return this.$.data.parseTasks.bind(this)}},_toCan cel:{type:String},_columnMap:{type:Object,value:function(){var t=this._commonCol umns();for(var e in s)t[e]=s[e];return t}},_headerMap:{type:Object,value:r},_spe cialColumns:{type:Array,value:a},_specialSort:{type:Object,value:i}},observers:[ "reload(_query_params,_auth_headers)"],_attribute:function(t,e,a){void 0===a&&(a ="none");var s=this._tag(t,e)||t[e]||[a];return Array.isArray(s)?s:[s]},_cannotC ancel:function(t,e){return!(e&&e.cancel_task&&"PENDING"===this._column("state",t ))},_cancelTask:function(){var t="/api/swarming/v1/task/"+this._toCancel+"/cance l";swarming.postWithToast(t,"Canceling task "+this._toCancel,this._auth_headers) ,this.set("_toCancel","")},_promptClosed:function(t){t.detail.confirmed&&this._c ancelTask()},_promptCancel:function(t){var e=t.model.task;return e&&e.task_id?(t his.set("_toCancel",e.task_id),this.set("_dialogPrompt",'cancel task "'+e.name+' "'),void this.$.prompt.open()):void console.log("Missing task info",e)},reload:f unction(){if(this._auth_headers&&this._query_params){var t="/api/swarming/v1/tas ks/list?"+sk.query.fromParamSet(this._query_params);this.$.page_tasks.load(t,thi s._auth_headers)}},_sourceLink:function(t){var e=this._attribute(t,"source_revis ion")[0],a=this._attribute(t,"source_repo")[0];return"none"!==e&&"none"!==a&&a.r eplace("%s",e)},_tag:function(t,e){if(t&&t.tagMap)return t.tagMap[e]},_taskClass :function(t){return this.stateClass(this._column("state",t))}})}()</script> </do m-module> <dom-module id="iron-collapse" assetpath="/res/imp/bower_components/ir on-collapse/"> <template> <style>:host{display:block;transition-duration:var(--i ron-collapse-transition-duration,300ms);overflow:visible}:host(.iron-collapse-cl osed){display:none}:host(:not(.iron-collapse-opened)){overflow:hidden}</style> < content></content> </template> </dom-module> <script>Polymer({is:"iron-collapse" ,behaviors:[Polymer.IronResizableBehavior],properties:{horizontal:{type:Boolean, value:!1,observer:"_horizontalChanged"},opened:{type:Boolean,value:!1,notify:!0, observer:"_openedChanged"},noAnimation:{type:Boolean},_desiredSize:{type:String, value:""}},get dimension(){return this.horizontal?"width":"height"},get _dimensi onMax(){return this.horizontal?"maxWidth":"maxHeight"},get _dimensionMaxCss(){re turn this.horizontal?"max-width":"max-height"},hostAttributes:{role:"group","ari a-hidden":"true","aria-expanded":"false"},listeners:{transitionend:"_transitionE nd"},attached:function(){this._transitionEnd()},toggle:function(){this.opened=!t his.opened},show:function(){this.opened=!0},hide:function(){this.opened=!1},upda teSize:function(i,t){if(i="auto"===i?"":i,this._desiredSize!==i){this._desiredSi ze=i,this._updateTransition(!1);var e=t&&!this.noAnimation&&this._isDisplayed;if (e){var n=this._calcSize();""===i&&(this.style[this._dimensionMax]="",i=this._ca lcSize()),this.style[this._dimensionMax]=n,this.scrollTop=this.scrollTop,this._u pdateTransition(!0),e=i!==n}this.style[this._dimensionMax]=i,e||this._transition End()}},enableTransition:function(i){Polymer.Base._warn("`enableTransition()` is deprecated, use `noAnimation` instead."),this.noAnimation=!i},_updateTransition :function(i){this.style.transitionDuration=i&&!this.noAnimation?"":"0s"},_horizo ntalChanged:function(){this.style.transitionProperty=this._dimensionMaxCss;var i ="maxWidth"===this._dimensionMax?"maxHeight":"maxWidth";this.style[i]="",this.up dateSize(this.opened?"auto":"0px",!1)},_openedChanged:function(){this.setAttribu te("aria-expanded",this.opened),this.setAttribute("aria-hidden",!this.opened),th is.toggleClass("iron-collapse-closed",!1),this.toggleClass("iron-collapse-opened ",!1),this.updateSize(this.opened?"auto":"0px",!0),this.opened&&this.focus()},_t ransitionEnd:function(){this.style[this._dimensionMax]=this._desiredSize,this.to ggleClass("iron-collapse-closed",!this.opened),this.toggleClass("iron-collapse-o pened",this.opened),this._updateTransition(!1),this.notifyResize()},get _isDispl ayed(){var i=this.getBoundingClientRect();for(var t in i)if(0!==i[t])return!0;re turn!1},_calcSize:function(){return this.getBoundingClientRect()[this.dimension] +"px"}})</script> <script>Polymer.IronMenubarBehaviorImpl={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()},g et _isRTL(){return"rtl"===window.getComputedStyle(this).direction},_onLeftKey:fu nction(e){this._isRTL?this._focusNext():this._focusPrevious(),e.detail.keyboardE vent.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._focusWithKey boardEvent(e)}},Polymer.IronMenubarBehavior=[Polymer.IronMenuBehavior,Polymer.Ir onMenubarBehaviorImpl]</script> <iron-iconset-svg name="paper-tabs" size="24"> < svg><defs> <g id="chevron-left"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10. 83 12z"></path></g> <g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 12l-4.5 8 4.59L10 18l6-6z"></path></g> </defs></svg> </iron-iconset-svg> <dom-module id= "paper-tab" assetpath="/res/imp/bower_components/paper-tabs/"> <template> <style >:host{@apply(--layout-inline);@apply(--layout-center);@apply(--layout-center-ju stified);@apply(--layout-flex-auto);position:relative;padding:0 12px;overflow:hi dden;cursor:pointer;vertical-align:middle;@apply(--paper-font-common-base);@appl y(--paper-tab)}:host(:focus){outline:0}:host([link]){padding:0}.tab-content{heig ht:100%;transform:translateZ(0);-webkit-transform:translateZ(0);transition:opaci ty .1s cubic-bezier(.4,0,1,1);@apply(--layout-horizontal);@apply(--layout-center -center);@apply(--layout-flex-auto);@apply(--paper-tab-content)}:host(:not(.iron -selected))>.tab-content{opacity:.8;@apply(--paper-tab-content-unselected)}:host (:focus) .tab-content{opacity:1;font-weight:700}paper-ripple{color:var(--paper-t ab-ink,--paper-yellow-a100)}.tab-content>::content>a{@apply(--layout-flex-auto); height:100%}</style> <div class="tab-content"> <content></content> </div> </temp late> <script>Polymer({is:"paper-tab",behaviors:[Polymer.IronControlState,Polyme r.IronButtonState,Polymer.PaperRippleBehavior],properties:{link:{type:Boolean,va lue:!1,reflectToAttribute:!0}},hostAttributes:{role:"tab"},listeners:{down:"_upd ateNoink",tap:"_onTap"},attached:function(){this._updateNoink()},get _parentNoin k(){var t=Polymer.dom(this).parentNode;return!!t&&!!t.noink},_updateNoink:functi on(){this.noink=!!this.noink||!!this._parentNoink},_onTap:function(t){if(this.li nk){var e=this.queryEffectiveChildren("a");if(!e)return;if(t.target===e)return;e .click()}}})</script> </dom-module> <dom-module id="paper-tabs" assetpath="/res/ imp/bower_components/paper-tabs/"> <template> <style>:host{@apply(--layout);@app ly(--layout-center);height:48px;font-size:14px;font-weight:500;overflow:hidden;- moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:n one;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transpar ent;@apply(--paper-tabs)}:host-context([dir=rtl]){@apply(--layout-horizontal-rev erse)}#tabsContainer{position:relative;height:100%;white-space:nowrap;overflow:h idden;@apply(--layout-flex-auto)}#tabsContent{height:100%;-moz-flex-basis:auto;- ms-flex-basis:auto;flex-basis:auto}#tabsContent.scrollable{position:absolute;whi te-space:nowrap}#tabsContent.scrollable.fit-container,#tabsContent:not(.scrollab le){@apply(--layout-horizontal)}#tabsContent.scrollable.fit-container{min-width: 100%}#tabsContent.scrollable.fit-container>::content>*{-ms-flex:1 0 auto;-webkit -flex:1 0 auto;flex:1 0 auto}.hidden{display:none}.not-visible{opacity:0;cursor: default}paper-icon-button{width:48px;height:48px;padding:12px;margin:0 4px}#sele ctionBar{position:absolute;height:2px;bottom:0;left:0;right:0;background-color:v ar(--paper-tabs-selection-bar-color,--paper-yellow-a100);-webkit-transform:scale (0);transform:scale(0);-webkit-transform-origin:left center;transform-origin:lef t center;transition:-webkit-transform;transition:transform;@apply(--paper-tabs-s election-bar)}#selectionBar.align-bottom{top:0;bottom:auto}#selectionBar.expand{ transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,1,1)}#sele ctionBar.contract{transition-duration:.18s;transition-timing-function:cubic-bezi er(0,0,.2,1)}#tabsContent>::content>:not(#selectionBar){height:100%}</style> <pa per-icon-button icon="paper-tabs:chevron-left" class$="[[_computeScrollButtonCla ss(_leftHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-d own="_onLeftScrollButtonDown" tabindex="-1"></paper-icon-button> <div id="tabsCo ntainer" on-track="_scroll" on-down="_down"> <div id="tabsContent" class$="[[_co mputeTabsContentClass(scrollable, fitContainer)]]"> <div id="selectionBar" class $="[[_computeSelectionBarClass(noBar, alignBottom)]]" on-transitionend="_onBarTr ansitionEnd"></div> <content select="*"></content> </div> </div> <paper-icon-but ton icon="paper-tabs:chevron-right" class$="[[_computeScrollButtonClass(_rightHi dden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onRi ghtScrollButtonDown" tabindex="-1"></paper-icon-button> </template> <script>Poly mer({is:"paper-tabs",behaviors:[Polymer.IronResizableBehavior,Polymer.IronMenuba rBehavior],properties:{noink:{type:Boolean,value:!1,observer:"_noinkChanged"},no Bar:{type:Boolean,value:!1},noSlide:{type:Boolean,value:!1},scrollable:{type:Boo lean,value:!1},fitContainer:{type:Boolean,value:!1},disableDrag:{type:Boolean,va lue:!1},hideScrollButtons:{type:Boolean,value:!1},alignBottom:{type:Boolean,valu e:!1},selectable:{type:String,value:"paper-tab"},autoselect:{type:Boolean,value: !1},autoselectDelay:{type:Number,value:0},_step:{type:Number,value:10},_holdDela y:{type:Number,value:1},_leftHidden:{type:Boolean,value:!1},_rightHidden:{type:B oolean,value:!1},_previousTab:{type:Object}},hostAttributes:{role:"tablist"},lis teners:{"iron-resize":"_onTabSizingChanged","iron-items-changed":"_onTabSizingCh anged","iron-select":"_onIronSelect","iron-deselect":"_onIronDeselect"},keyBindi ngs:{"left:keyup right:keyup":"_onArrowKeyup"},created:function(){this._holdJob= null,this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,th is._bindDelayedActivationHandler=this._delayedActivationHandler.bind(this),this. addEventListener("blur",this._onBlurCapture.bind(this),!0)},ready:function(){thi s.setScrollDirection("y",this.$.tabsContainer)},detached:function(){this._cancel PendingActivation()},_noinkChanged:function(t){var e=Polymer.dom(this).querySele ctorAll("paper-tab");e.forEach(t?this._setNoinkAttribute:this._removeNoinkAttrib ute)},_setNoinkAttribute:function(t){t.setAttribute("noink","")},_removeNoinkAtt ribute:function(t){t.removeAttribute("noink")},_computeScrollButtonClass:functio n(t,e,i){return!e||i?"hidden":t?"not-visible":""},_computeTabsContentClass:funct ion(t,e){return t?"scrollable"+(e?" fit-container":""):" fit-container"},_comput eSelectionBarClass:function(t,e){return t?"hidden":e?"align-bottom":""},_onTabSi zingChanged:function(){this.debounce("_onTabSizingChanged",function(){this._scro ll(),this._tabChanged(this.selectedItem)},10)},_onIronSelect:function(t){this._t abChanged(t.detail.item,this._previousTab),this._previousTab=t.detail.item,this. cancelDebouncer("tab-changed")},_onIronDeselect:function(t){this.debounce("tab-c hanged",function(){this._tabChanged(null,this._previousTab),this._previousTab=nu ll},1)},_activateHandler:function(){this._cancelPendingActivation(),Polymer.Iron MenuBehaviorImpl._activateHandler.apply(this,arguments)},_scheduleActivation:fun ction(t,e){this._pendingActivationItem=t,this._pendingActivationTimeout=this.asy nc(this._bindDelayedActivationHandler,e)},_delayedActivationHandler:function(){v ar t=this._pendingActivationItem;this._pendingActivationItem=void 0,this._pendin gActivationTimeout=void 0,t.fire(this.activateEvent,null,{bubbles:!0,cancelable: !0})},_cancelPendingActivation:function(){void 0!==this._pendingActivationTimeou t&&(this.cancelAsync(this._pendingActivationTimeout),this._pendingActivationItem =void 0,this._pendingActivationTimeout=void 0)},_onArrowKeyup:function(t){this.a utoselect&&this._scheduleActivation(this.focusedItem,this.autoselectDelay)},_onB lurCapture:function(t){t.target===this._pendingActivationItem&&this._cancelPendi ngActivation()},get _tabContainerScrollSize(){return Math.max(0,this.$.tabsConta iner.scrollWidth-this.$.tabsContainer.offsetWidth)},_scroll:function(t,e){if(thi s.scrollable){var i=e&&-e.ddx||0;this._affectScroll(i)}},_down:function(t){this. async(function(){this._defaultFocusAsync&&(this.cancelAsync(this._defaultFocusAs ync),this._defaultFocusAsync=null)},1)},_affectScroll:function(t){this.$.tabsCon tainer.scrollLeft+=t;var e=this.$.tabsContainer.scrollLeft;this._leftHidden=0=== e,this._rightHidden=e===this._tabContainerScrollSize},_onLeftScrollButtonDown:fu nction(){this._scrollToLeft(),this._holdJob=setInterval(this._scrollToLeft.bind( this),this._holdDelay)},_onRightScrollButtonDown:function(){this._scrollToRight( ),this._holdJob=setInterval(this._scrollToRight.bind(this),this._holdDelay)},_on ScrollButtonUp:function(){clearInterval(this._holdJob),this._holdJob=null},_scro llToLeft:function(){this._affectScroll(-this._step)},_scrollToRight:function(){t his._affectScroll(this._step)},_tabChanged:function(t,e){if(!t)return this.$.sel ectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contr act"),void this._positionBar(0,0);var i=this.$.tabsContent.getBoundingClientRect (),n=i.width,o=t.getBoundingClientRect(),s=o.left-i.left;if(this._pos={width:thi s._calcPercent(o.width,n),left:this._calcPercent(s,n)},this.noSlide||null==e)ret urn this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList .remove("contract"),void this._positionBar(this._pos.width,this._pos.left);var a =e.getBoundingClientRect(),l=this.items.indexOf(e),c=this.items.indexOf(t),r=5;t his.$.selectionBar.classList.add("expand");var h=l<c,d=this._isRTL;d&&(h=!h),h?t his._positionBar(this._calcPercent(o.left+o.width-a.left,n)-r,this._left):this._ positionBar(this._calcPercent(a.left+a.width-o.left,n)-r,this._calcPercent(s,n)+ r),this.scrollable&&this._scrollToSelectedIfNeeded(o.width,s)},_scrollToSelected IfNeeded:function(t,e){var i=e-this.$.tabsContainer.scrollLeft;i<0?this.$.tabsCo ntainer.scrollLeft+=i:(i+=t-this.$.tabsContainer.offsetWidth,i>0&&(this.$.tabsCo ntainer.scrollLeft+=i))},_calcPercent:function(t,e){return 100*t/e},_positionBar :function(t,e){t=t||0,e=e||0,this._width=t,this._left=e,this.transform("translat eX("+e+"%) scaleX("+t/100+")",this.$.selectionBar)},_onBarTransitionEnd:function (t){var e=this.$.selectionBar.classList;e.contains("expand")?(e.remove("expand") ,e.add("contract"),this._positionBar(this._pos.width,this._pos.left)):e.contains ("contract")&&e.remove("contract")}})</script> </dom-module> <dom-module id="sin gle-page-style" assetpath="/res/imp/common/"> <template> <style>.header{max-widt h:800px}.title{font-size:1.5em;font-weight:700;margin:5px}.id_input{margin-left: 5px;--paper-input-container-input:{font-size:2em};}.refresh{max-width:40px;max-h eight:40px;width:initial;height:initial}button{min-width:4em;max-height:55px}tab le{border-collapse:collapse;margin-left:5px;margin-bottom:8px}td,th{border:1px s olid #BBB;padding:5px}.tabs{background-color:#1F78B4;color:#fff;max-width:600px; margin-left:5px;--paper-checkbox-label-color:#fff}paper-tab{background-color:#A6 CEE3;color:#000}paper-tab.iron-selected{background-color:#1F78B4;color:#fff;font -weight:700;text-decoration:underline}paper-tab[disabled]{background-color:#AAA; text-decoration:line-through}.quarantined{background-color:#fdd}.dead{background -color:#ccc}</style> </template> </dom-module><script>!function(){SwarmingBehavi ors.BotPageBehavior=[SwarmingBehaviors.CommonBehavior,{}]}()</script> <dom-modul e id="bot-page-data" assetpath="/res/imp/botpage/"> <script>!function(){function t(t){if(!s){var e=t.toString();s=e.substring(e.indexOf("("))}return t.toLocaleS tring()+" "+s}var e,s,i=400,n=["first_seen_ts","last_seen_ts","lease_expiration_ ts"],a=["started_ts","completed_ts","abandoned_ts","modified_ts"];Polymer({is:"b ot-page-data",behaviors:[SwarmingBehaviors.BotPageBehavior],properties:{auth_hea ders:{type:Object},bot_id:{type:String},busy:{type:Boolean,computed:"_or(_busy1) ",notify:!0},bot:{type:Object,computed:"_parseBot(_bot)",notify:!0},bot_exists:{ type:Boolean,value:!0,notify:!0},_busy1:{type:Boolean,value:!1},_bot:{type:Objec t},_events:{type:Object},_tasks:{type:Object}},observers:["request(auth_headers, bot_id)"],request:function(){this.bot_id&&this.auth_headers&&(e&&this.cancelAsyn c(e),e=this.async(function(){e=void 0;var t="/api/swarming/v1/bot/"+this.bot_id, s=this._getJsonAsync("_bot",t+"/get","_busy1",this.auth_headers);s.then(function (){this.set("bot_exists",!0)}.bind(this)).catch(function(t){404===t.status?this. set("bot_exists",!1):sk.errorMessage("Http response: "+(t.status||" ")+" "+t.res ponse)}.bind(this)),this.fire("reload",{id:this.bot_id})},i))},_parseBot:functio n(e){if(!e)return{};e.state=e.state||"{}",e.state=JSON.parse(e.state)||{};var s= e.state.disks||{},i=Object.keys(s);if(i.length){e.disks=[];for(var a=0;a<i.lengt h;a++)e.disks.push({id:i[a],mb:s[i[a]].free_mb});e.disks.sort(function(t,e){retu rn e.mb-t.mb})}else e.disks=[{id:"unknown",mb:0}];return e.dimensions=e.dimensio ns||[],e.dimensions.forEach(function(t){swarming.alias.DIMENSIONS_WITH_ALIASES.i ndexOf(t.key)!==-1&&t.value.forEach(function(e,s){t.value[s]=swarming.alias.appl y(e,t.key)})}),n.forEach(function(s){e[s]&&(e[s]=new Date(e[s]),e["human_"+s]=t( e[s]))}),e},parseEvents:function(e){if(!e||!e.items)return[];var e=e.items;retur n e.forEach(function(e){e.ts&&(e.ts=new Date(e.ts),e.human_ts=t(e.ts))}),e.sort( function(t,e){return e.ts-t.ts}),e},parseTasks:function(e){if(!e||!e.items)retur n[];var e=e.items;return e.forEach(function(e){if(a.forEach(function(s){e[s]&&(e [s]=new Date(e[s]),e["human_"+s]=t(e[s]))}),e.duration)e.human_duration=this._hu manDuration(e.duration);else{var s=e.completed_ts||e.abandoned_ts||e.modified_ts ||new Date;e.human_duration=this._timeDiffExact(e.started_ts,s),e.duration=(s.ge tTime()-e.started_ts)/1e3}e.state=e.state||"UNKNOWN","COMPLETED"===e.state&&(e.f ailure?e.state="FAILURE":e.state="SUCCESS")}.bind(this)),e.sort(function(t,e){re turn e.started_ts-t.started_ts}),e}})}()</script> </dom-module> <dom-module id=" bot-page-summary" assetpath="/res/imp/botpage/"> <template> <style include="sing le-page-style">.wrapper{display:table;margin-left:auto;margin-bottom:10px;margin -right:5px}paper-checkbox{margin-left:5px}.thick{border-top-style:solid}</style> <url-param name="show_full_names" value="{{_show_full_names}}"> </url-param> <u rl-param name="show_all_tasks" value="{{_show_all_tasks}}"> </url-param> <url-pa ram name="sort_stats" value="{{_sortstr}}" default_value="total:desc"> </url-par am> <div class="wrapper"> <table> <thead on-sort_change="_sortChange"> <tr> <th> <span>Name</span> <sort-toggle name="full_name" current="[[_sort]]"> </sort-tog gle> </th> <th> <span>Total</span> <sort-toggle name="total" current="[[_sort]]" > </sort-toggle> </th> <th> <span>Success</span> <sort-toggle name="success" cur rent="[[_sort]]"> </sort-toggle> </th> <th> <span>Failed</span> <sort-toggle nam e="failed" current="[[_sort]]"> </sort-toggle> </th> <th> <span>Died</span> <sor t-toggle name="bot_died" current="[[_sort]]"> </sort-toggle> </th> <th> <span>Av erage Duration</span> <sort-toggle name="avg_duration" current="[[_sort]]"> </so rt-toggle> </th> <th> <span>Total Duration</span> <sort-toggle name="total_time" current="[[_sort]]"> </sort-toggle> </th> <th>Percent of Total</th> </tr> </the ad> <tbody> <template is="dom-repeat" items="[[_tasksToShow]]" as="task"> <tr> < td hidden$="[[_truthy(_show_full_names)]]" title="[[task.full_name]]">[[task.nam e]]</td> <td hidden$="[[_not(_show_full_names)]]" title="[[task.full_name]]">[[t ask.full_name]]</td> <td>[[task.total]]</td> <td>[[task.success]]</td> <td>[[tas k.failed]]</td> <td>[[task.bot_died]]</td> <td>[[_humanDuration(task.avg_duratio n)]]</td> <td>[[_humanDuration(task.total_time)]]</td> <td>[[task.total_time_per cent]]%</td> </tr> </template> </tbody> <tbody><tr class="thick"> <td>Total</td> <td>[[_totalStats.total]]</td> <td>[[_totalStats.success]]</td> <td>[[_totalSta ts.failed]]</td> <td>[[_totalStats.bot_died]]</td> <td>[[_humanDuration(_totalSt ats.avg_duration)]]</td> <td>[[_humanDuration(_totalStats.total_time)]]</td> <td >100.0%</td> </tr> </tbody></table> <div> <table> <thead> <tr> <th title="How mu ch time passed between the oldest task fetched and now."> Total Wall Time </th> <th title="How much of the wall time this bot was busy with a task."> Wall Time Utilization </th> </tr> </thead> <tbody> <tr> <td>[[_humanDuration(_totalStats.w all_time)]]</td> <td>[[_totalStats.wall_time_utilization]]%</td> </tr> </tbody> </table> <paper-checkbox checked="{{_show_full_names}}"> Show Full Names </paper -checkbox> <paper-checkbox hidden$="[[_cannotExpand]]" checked="{{_show_all_task s}}"> Show All Tasks </paper-checkbox> </div> </div> </template> <script>!functi on(){var t=15;Polymer({is:"bot-page-summary",behaviors:[SwarmingBehaviors.BotPag eBehavior],properties:{tasks:{type:Array},_cannotExpand:{type:Boolean,computed:" _countTasks(_taskStats.*)"},_show_all_tasks:{type:Boolean},_show_full_names:{typ e:Boolean},_sortstr:{type:String},_sort:{type:Object,computed:"_makeSortObject(_ sortstr)"},_taskStats:{type:Array},_tasksToShow:{type:Array,computed:"_sortAndLi mitTasks(_taskStats.*,_sort.*,_show_all_tasks)"},_totalStats:{type:Object}},obse rvers:["_aggregate(tasks.*)"],_aggregate:function(){if(this.tasks&&this.tasks.le ngth){var t=new Date(1e3*sk.now()),a={},e={total:this.tasks.length,success:0,fai led:0,bot_died:0,avg_duration:0,total_time:0,wall_time:(t-this.tasks[this.tasks. length-1].started_ts)/1e3};this.tasks.forEach(function(t){var s=t.name.trim(),i= s.split("/");5===i.length&&(s=i[0]+"/"+i[3]),a[s]||(a[s]={full_name:s,name:s,tot al:0,success:0,failed:0,bot_died:0,avg_duration:0,total_time:0}),a[s].total++,t. failure?(e.failed++,a[s].failed++):t.internal_failure?(e.bot_died++,a[s].bot_die d++):(e.success++,a[s].success++),e.total_time+=t.duration,a[s].total_time+=t.du ration}),e.avg_duration=e.total_time/e.total,e.wall_time_utilization=(100*e.tota l_time/e.wall_time).toFixed(1),this.set("_totalStats",e);var s=Object.keys(a),i= [];s.forEach(function(t){a[t].avg_duration=a[t].total_time/a[t].total,a[t].total _time_percent=(100*a[t].total_time/e.total_time).toFixed(1),i.push(a[t])});var o =new Substrings({minOccurrence:Math.max(2,s.length-1),minLength:6});o.build(s);v ar n=o.weighByAverage()||[];n.length&&n[0].source.forEach(function(t){var a=i[t] .full_name;i[t].name=a.replace(n[0].name,"...")}),this.set("_taskStats",i)}},_co mpare:function(t,a){if(!this._sort)return 0;var e=1;return"desc"===this._sort.di rection&&(e=-1),e*swarming.naturalCompare(t[this._sort.name],a[this._sort.name]) },_countTasks:function(){return this._taskStats.length<=t},_makeSortObject:funct ion(t){if(t){var a=t.split(":");return 2!=a.length?{name:"full_name",direction:" asc"}:{name:a[0],direction:a[1]}}},_sortAndLimitTasks:function(){swarming.stable Sort(this._taskStats,this._compare.bind(this));var a=this._taskStats.length;retu rn!this._show_all_tasks&&this._taskStats.length>t&&(a=t),this._taskStats.slice(0 ,a)},_sortChange:function(t){t&&t.detail&&t.detail.name&&(t.preventDefault(),t.s topPropagation(),this.set("_sortstr",t.detail.name+":"+t.detail.direction))}})}( )</script> </dom-module><dom-module id="bot-page" assetpath="/res/imp/botpage/"> <template> <style include="iron-flex iron-flex-alignment iron-positioning swarm ing-app-style single-page-style task-style">.message{white-space:pre-line;font-f amily:monospace}.bot_state{white-space:pre;font-family:monospace;margin-bottom:1 0px}.events_table,.tasks_table{border:3px solid #1F78B4}.old_version{background- color:#ffd}.stats{min-width:700px;flex-grow:2}#collapse{max-width:700px}.cloud{w hite-space:nowrap;margin-bottom:5px;margin-top:auto}paper-checkbox{--paper-check box-label-color:#fff;--paper-checkbox-checked-color:#fff;--paper-checkbox-checkm ark-color:#000;--paper-checkbox-unchecked-color:#fff;padding:3px}paper-dialog{bo rder-radius:6px}</style> <url-param name="id" value="{{bot_id}}"> </url-param> < url-param name="show_all_events" value="{{_show_all}}"> </url-param> <url-param name="selected" value="{{_selected}}"> </url-param> <url-param name="show_state" value="{{_show_state}}"> </url-param> <swarming-app client_id="[[client_id]]" a uth_headers="{{_auth_headers}}" permissions="{{_permissions}}" server_details="{ {_server_details}}" signed_in="{{_signed_in}}" busy="[[_or(_busy1,_busy2,_busy3) ]]" name="Swarming Bot Page"> <h2 hidden$="[[_signed_in]]">You must sign in to s ee anything useful.</h2> <div hidden$="[[_not(_signed_in)]]"> <bot-page-data id= "data" auth_headers="[[_auth_headers]]" bot_id="[[bot_id]]" bot="{{_bot}}" bot_e xists="{{_bot_exists}}" busy="{{_busy1}}" events="{{_events}}" tasks="{{_tasks}} " on-reload="_clearAndReload"> </bot-page-data> <div class="header horizontal la yout"> <paper-input class="id_input" label="Bot id" value="{{bot_id}}"></paper-i nput> <template is="dom-if" if="[[_ccLink(_bot)]]"> <div class="vertical layout" > <a href$="[[_ccLink(_bot)]]" class="cloud">Cloud Console</a> </div> </template > <button on-click="_refresh"> <iron-icon class="refresh" icon="icons:refresh">< /iron-icon> </button> </div> </div> <h2 hidden$="[[_bot_exists]]">Bot not found. </h2> <div hidden$="[[_not(_bot_exists)]]"> <div class="horizontal wrap layout"> <div class="flex"> <table> <tbody><tr class$="[[_isDead(_bot)]]" title="Last ti me the bot contacted the server."> <td>Last Seen</td> <td title="[[_bot.human_la st_seen_ts]]"> [[_timeDiffExact(_bot.last_seen_ts)]] ago</td> <td> <template is= "dom-if" if="[[_canShutdown(_bot,_permissions)]]"> <button class="raised" on-cli ck="_promptShutdown"> Shut Down Gracefully </button> </template> <template is="d om-if" if="[[_canDelete(_bot,_permissions)]]"> <button class="raised" on-click=" _promptDelete"> Delete </button> </template> </td> </tr> <template is="dom-if" i f="[[_bot.quarantined]]"> <tr class="quarantined"> <td>Quarantined</td> <td cols pan="2" class="message">[[_quarantineMessage(_bot)]]</td> </tr> </template> <tr> <td>Current Task</td> <td> <a target="_blank" rel="noopener" href$="[[_taskLink (_bot.task_id)]]"> [[_task(_bot)]] </a> </td> <td> </td> </tr> <tr> <td rowspan$ ="[[_numRows(_bot.dimensions)]]">Dimensions</td> </tr> <template is="dom-repeat" items="[[_bot.dimensions]]" as="dim"> <tr> <td>[[dim.key]]</td> <td>[[_concat(d im.value)]]</td> </tr> </template> <tr title="IP address that the server saw the connection from."> <td>External IP</td> <td><a href$="[[_bot.external_ip]]">[[_ bot.external_ip]]</a></td> <td></td> </tr> <tr class$="[[_classVersion(_server_d etails.bot_version,_bot.version)]]" title="Version is based on the content of sw arming_bot.zip which is the swarming bot code. The bot won't update if quarantin ed, dead, or busy."> <td>Bot Version</td> <td>[[_shorten(_bot.version,'8')]]</td > <td></td> </tr> <tr title="The version the server expects the bot to be using. "> <td>Expected Bot Version</td> <td>[[_shorten(_server_details.bot_version,'8') ]]</td> <td></td> </tr> <tr title="First time ever a bot with this id contacted the server."> <td>First seen</td> <td title="[[_bot.human_first_seen_ts]]"> [[_t imeDiffApprox(_bot.first_seen_ts)]] ago </td> <td></td> </tr> <tr title="How the bot is authenticated by the server."> <td>Authenticated as</td> <td colspan="2" >[[_bot.authenticated_as]]</td> </tr> <template is="dom-if" if="[[_bot.lease_id] ]"> <tr> <td>Machine Provider Lease ID</td> <td colspan="2"> <a href$="[[_mpLink (_bot,_server_details.machine_provider_template)]]"> [[_bot.lease_id]] </a> </td > </tr> <tr> <td>Machine Provider Lease Expires</td> <td colspan="2">[[_bot.huma n_lease_expiration_ts]]</td> </tr> </template> </tbody></table> <span class="tit le">State</span> <template is="dom-if" if="[[_not(_show_state)]]"> <button on-cl ick="_toggleState"> <iron-icon icon="icons:add-circle-outline"></iron-icon> </bu tton> </template> <template is="dom-if" if="[[_show_state]]"> <button on-click=" _toggleState"> <iron-icon icon="icons:remove-circle-outline"></iron-icon> </butt on> </template> <iron-collapse id="collapse" opened="[[_show_state]]"> <div clas s="bot_state">[[_prettyPrint(_bot.state)]]</div> </iron-collapse> </div> <div cl ass="stats flex"> <bot-page-summary tasks="[[_tasks]]"> </bot-page-summary> </di v> </div> <div class="tabs"> <paper-tabs selected="{{_selected}}" no-bar=""> <pa per-tab>Tasks</paper-tab> <paper-tab>Events</paper-tab> </paper-tabs> <template is="dom-if" if="[[_showEvents]]"> <paper-checkbox checked="{{_show_all}}"> Show all events </paper-checkbox> </template> </div> <template is="dom-if" if="[[_not (_showEvents)]]"> <table class="tasks_table"> <thead> <tr> <th>Task</th> <th>Sta rted</th> <th>Duration</th> <th>Result</th> </tr> </thead> <tbody> <template is= "dom-repeat" items="{{_tasks}}" as="task"> <tr class$="[[_taskClass(task)]]"> <t d> <a target="_blank" rel="noopener" href$="[[_taskLink(task.task_id)]]"> [[task .name]] </a> </td> <td>[[task.human_started_ts]]</td> <td title="[[task.human_co mpleted_ts]]">[[task.human_duration]]</td> <td>[[task.state]]</td> </tr> </templ ate> </tbody> </table> </template> <template is="dom-if" if="[[_showEvents]]"> < table class="events_table"> <thead> <tr> <th>Message</th> <th>Type</th> <th>Time stamp</th> <th>Task ID</th> <th>Version</th> </tr> </thead> <tbody> <template is ="dom-repeat" items="{{_eventList(_show_all,_events.*)}}" as="event"> <tr> <td c lass="message">[[event.message]]</td> <td>[[event.event_type]]</td> <td>[[event. human_ts]]</td> <td> <a target="_blank" rel="noopener" href$="[[_taskLink(event. task_id)]]"> [[event.task_id]] </a> </td> <td class$="[[_classVersion(_server_de tails.bot_version,event.version)]]"> [[_shorten(event.version,'8')]] </td> </tr> </template> </tbody> </table> </template> <pageable-data id="page_tasks" hidden $="[[_showEvents]]" busy="{{_busy2}}" label="Show more tasks" output="{{_tasks}} " parse="[[_parseTasks]]"> </pageable-data> <pageable-data id="page_events" hidd en$="[[_not(_showEvents)]]" busy="{{_busy3}}" label="Show more events" output="{ {_events}}" parse="[[_parseEvents]]"> </pageable-data> </div> </swarming-app> <p aper-dialog id="prompt" modal="" on-iron-overlay-closed="_promptClosed"> <h2>Are you sure?</h2> <div>Are you sure you want to [[_dialogPrompt]]?</div> <div clas s="buttons"> <paper-button dialog-dismiss="" autofocus="">No</paper-button> <pap er-button dialog-confirm="">Yes</paper-button> </div> </paper-dialog> </template > <script> (function(){ 737 })(); </script> </dom-module> <dom-module id="paper-button" assetpath="/res/im p/bower_components/paper-button/"> <template strip-whitespace=""> <style include ="paper-material-shared-styles">:host{@apply(--layout-inline);@apply(--layout-ce nter-center);position:relative;box-sizing:border-box;min-width:5.14em;margin:0 . 29em;background:0 0;-webkit-tap-highlight-color:transparent;-webkit-tap-highligh t-color:transparent;font:inherit;text-transform:uppercase;outline-width:0;border -radius:3px;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none; user-select:none;cursor:pointer;z-index:0;padding:.7em .57em;@apply(--paper-font -common-base);@apply(--paper-button)}:host([hidden]){display:none!important}:hos t([raised].keyboard-focus){font-weight:700;@apply(--paper-button-raised-keyboard -focus)}:host(:not([raised]).keyboard-focus){font-weight:700;@apply(--paper-butt on-flat-keyboard-focus)}:host([disabled]){background:#eaeaea;color:#a8a8a8;curso r:auto;pointer-events:none;@apply(--paper-button-disabled)}:host([animated]){@ap ply(--shadow-transition)}paper-ripple{color:var(--paper-button-ink-color)}</styl e> <content></content> </template> <script>Polymer({is:"paper-button",behaviors: [Polymer.PaperButtonBehavior],properties:{raised:{type:Boolean,reflectToAttribut e:!0,value:!1,observer:"_calculateElevation"}},_calculateElevation:function(){th is.raised?Polymer.PaperButtonBehaviorImpl._calculateElevation.apply(this):this._ setElevation(0)}})</script> </dom-module> <script>Polymer.NeonAnimatableBehavior ={properties:{animationConfig:{type:Object},entryAnimation:{observer:"_entryAnim ationChanged",type:String},exitAnimation:{observer:"_exitAnimationChanged",type: String}},_entryAnimationChanged:function(){this.animationConfig=this.animationCo nfig||{},this.animationConfig.entry=[{name:this.entryAnimation,node:this}]},_exi tAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this. animationConfig.exit=[{name:this.exitAnimation,node:this}]},_copyProperties:func tion(i,n){for(var t in n)i[t]=n[t]},_cloneConfig:function(i){var n={isClone:!0}; return this._copyProperties(n,i),n},_getAnimationConfigRecursive:function(i,n,t) {if(this.animationConfig){if(this.animationConfig.value&&"function"==typeof this .animationConfig.value)return void this._warn(this._logf("playAnimation","Please put 'animationConfig' inside of your components 'properties' object instead of outside of it."));var o;if(o=i?this.animationConfig[i]:this.animationConfig,Arra y.isArray(o)||(o=[o]),o)for(var e,a=0;e=o[a];a++)if(e.animatable)e.animatable._g etAnimationConfigRecursive(e.type||i,n,t);else if(e.id){var r=n[e.id];r?(r.isClo ne||(n[e.id]=this._cloneConfig(r),r=n[e.id]),this._copyProperties(r,e)):n[e.id]= e}else t.push(e)}},getAnimationConfig:function(i){var n={},t=[];this._getAnimati onConfigRecursive(i,n,t);for(var o in n)t.push(n[o]);return t}}</script> <script >Polymer.NeonAnimationRunnerBehaviorImpl={_configureAnimations:function(n){var i =[];if(n.length>0)for(var e,t=0;e=n[t];t++){var o=document.createElement(e.name) ;if(o.isNeonAnimation){var a=null;try{a=o.configure(e),"function"!=typeof a.canc el&&(a=document.timeline.play(a))}catch(n){a=null,console.warn("Couldnt play","( ",e.name,").",n)}a&&i.push({neonAnimation:o,config:e,animation:a})}else console. warn(this.is+":",e.name,"not found!")}return i},_shouldComplete:function(n){for( var i=!0,e=0;e<n.length;e++)if("finished"!=n[e].animation.playState){i=!1;break} return i},_complete:function(n){for(var i=0;i<n.length;i++)n[i].neonAnimation.co mplete(n[i].config);for(var i=0;i<n.length;i++)n[i].animation.cancel()},playAnim ation:function(n,i){var e=this.getAnimationConfig(n);if(e){this._active=this._ac tive||{},this._active[n]&&(this._complete(this._active[n]),delete this._active[n ]);var t=this._configureAnimations(e);if(0==t.length)return void this.fire("neon -animation-finish",i,{bubbles:!1});this._active[n]=t;for(var o=0;o<t.length;o++) t[o].animation.onfinish=function(){this._shouldComplete(t)&&(this._complete(t),d elete this._active[n],this.fire("neon-animation-finish",i,{bubbles:!1}))}.bind(t his)}},cancelAnimation:function(){for(var n in this._animations)this._animations [n].cancel();this._animations={}}},Polymer.NeonAnimationRunnerBehavior=[Polymer. NeonAnimatableBehavior,Polymer.NeonAnimationRunnerBehaviorImpl]</script> <script >Polymer.PaperDialogBehaviorImpl={hostAttributes:{role:"dialog",tabindex:"-1"},p roperties:{modal:{type:Boolean,value:!1}},observers:["_modalChanged(modal, _read ied)"],listeners:{tap:"_onDialogClick"},ready:function(){this.__prevNoCancelOnOu tsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancel OnEscKey,this.__prevWithBackdrop=this.withBackdrop},_modalChanged:function(i,e){ e&&(i?(this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prev NoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop ,this.noCancelOnOutsideClick=!0,this.noCancelOnEscKey=!0,this.withBackdrop=!0):( this.noCancelOnOutsideClick=this.noCancelOnOutsideClick&&this.__prevNoCancelOnOu tsideClick,this.noCancelOnEscKey=this.noCancelOnEscKey&&this.__prevNoCancelOnEsc Key,this.withBackdrop=this.withBackdrop&&this.__prevWithBackdrop))},_updateClosi ngReasonConfirmed:function(i){this.closingReason=this.closingReason||{},this.clo singReason.confirmed=i},_onDialogClick:function(i){for(var e=Polymer.dom(i).path ,o=0;o<e.indexOf(this);o++){var t=e[o];if(t.hasAttribute&&(t.hasAttribute("dialo g-dismiss")||t.hasAttribute("dialog-confirm"))){this._updateClosingReasonConfirm ed(t.hasAttribute("dialog-confirm")),this.close(),i.stopPropagation();break}}}}, Polymer.PaperDialogBehavior=[Polymer.IronOverlayBehavior,Polymer.PaperDialogBeha viorImpl]</script> <dom-module id="paper-dialog-shared-styles" assetpath="/res/i mp/bower_components/paper-dialog-behavior/"> <template> <style>:host{display:blo ck;margin:24px 40px;background:var(--paper-dialog-background-color,--primary-bac kground-color);color:var(--paper-dialog-color,--primary-text-color);@apply(--pap er-font-body1);@apply(--shadow-elevation-16dp);@apply(--paper-dialog)}:host>::co ntent>*{margin-top:20px;padding:0 24px}:host>::content>.no-padding{padding:0}:ho st>::content>:first-child{margin-top:24px}:host>::content>:last-child{margin-bot tom:24px}:host>::content h2{position:relative;margin:0;@apply(--paper-font-title );@apply(--paper-dialog-title)}:host>::content .buttons{position:relative;paddin g:8px 8px 8px 24px;margin:0;color:var(--paper-dialog-button-color,--primary-colo r);@apply(--layout-horizontal);@apply(--layout-end-justified)}</style> </templat e> </dom-module> <dom-module id="paper-dialog" assetpath="/res/imp/bower_compone nts/paper-dialog/"> <template> <style include="paper-dialog-shared-styles"></sty le> <content></content> </template> </dom-module> <script>!function(){Polymer({i s:"paper-dialog",behaviors:[Polymer.PaperDialogBehavior,Polymer.NeonAnimationRun nerBehavior],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_rende rOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderCl osed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimat ionFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderCl osed()}})}()</script> <script>window.SwarmingBehaviors=window.SwarmingBehaviors| |{},function(){SwarmingBehaviors.TaskBehavior={properties:{BOT_DIED:{type:String ,value:"BOT_DIED"},CANCELED:{type:String,value:"CANCELED"},COMPLETED:{type:Strin g,value:"COMPLETED"},COMPLETED_DEDUPED:{type:String,value:"COMPLETED (DEDUPED)"} ,COMPLETED_FAILURE:{type:String,value:"COMPLETED (FAILURE)"},COMPLETED_SUCCESS:{ type:String,value:"COMPLETED (SUCCESS)"},EXPIRED:{type:String,value:"EXPIRED"},P ENDING:{type:String,value:"PENDING"},RUNNING:{type:String,value:"RUNNING"},TIMED _OUT:{type:String,value:"TIMED_OUT"}},stateClass:function(t){return t===this.CAN CELED||t===this.TIMED_OUT||t===this.EXPIRED?"exception":t===this.BOT_DIED?"bot_d ied":t===this.COMPLETED_FAILURE?"failed_task":t===this.RUNNING||t===this.PENDING ?"pending_task":""},state:function(t){return t?t.state===this.COMPLETED?t.failur e?this.COMPLETED_FAILURE:"0"===t.try_number?this.COMPLETED_DEDUPED:this.COMPLETE D_SUCCESS:t.state:""},_stateClass:function(t){return this.stateClass(this.state( t))}}}()</script> <dom-module id="task-style" assetpath="/res/imp/common/"> <tem plate> <style>.failed_task{background-color:#fdd}.bot_died{background-color:#ccc }.exception{background-color:#edd2ff}.pending_task{background-color:#fffc6c}</st yle> </template> </dom-module><dom-module id="task-filters" assetpath="/res/imp/ tasklist/"> <template> <style is="custom-style" include="iron-flex iron-flex-ali gnment iron-positioning query-column-filter-style">.item.wide{max-width:400px}.s elector.wide{min-width:275px}</style> <url-param name="f" value="{{_filters}}" d efault_values="[]" multi=""> </url-param> <url-param name="c" value="{{columns}} " default_values="[&quot;name&quot;,&quot;state&quot;,&quot;created_ts&quot;,&qu ot;user&quot;]" multi=""> </url-param> <url-param name="q" value="{{_query}}" de fault_value=""> </url-param> <url-param name="l" default_value="50" value="{{_li mit}}"> </url-param> <div class="container horizontal layout"> <div class="narro w-down-selector"> <div> <iron-a11y-keys target="[[_filter_input]]" keys="enter" on-keys-pressed="_manuallyAddFilter"></iron-a11y-keys> <paper-input id="filter" label="Search columns and filters or supply a filter and press enter" placeholde r="gpu nvidia pool:Chrome" value="{{_query::input}}"> </paper-input> </div> <div class="wide selector side-by-side" title="This shows all task tags and other in teresting task properties. Mark the check box to add as a column. Select the row to see filter options."> <iron-selector attr-for-selected="label" selected="{{_ primarySelected}}"> <template is="dom-repeat" items="[[_primaryItems]]" as="item "> <div class="selectable item horizontal layout" label="[[item]]"> <span>[[_bef oreBold(item,_query)]]<span class="bold">[[_bold(item,_query)]]</span>[[_afterBo ld(item,_query)]]</span> <span class="flex"></span> <paper-checkbox noink="" dis abled$="[[_cantToggleColumn(item)]]" checked="[[_columnState(item,columns.*)]]" on-change="_toggleColumn"> </paper-checkbox> </div> </template> </iron-selector> </div> <div class="selector side-by-side" title="These are most of the options (if any) that the task list can be filtered on. This list is all that have been seen recently, augmented with the ones returned by the current query. There may be others."> <template is="dom-repeat" id="secondaryList" items="[[_secondaryIte ms]]" as="item"> <div class="item horizontal layout" label="[[item]]"> <span>[[_ beforeBold(item,_query)]]<span class="bold">[[_bold(item,_query)]]</span>[[_afte rBold(item,_query)]]</span> <span class="flex"></span> <iron-icon class="icons" icon="icons:arrow-forward" hidden="[[_cantAddFilter(_primarySelected,item,_filte rs.*)]]" on-tap="_addFilter"> </iron-icon> </div> </template> <template is="dom- if" if="[[_secondaryItems.length]]"> <div class="pointable item" title="There ma y be more valid options than just the ones shown.">...</div> </template> <templa te is="dom-if" if="[[_showTagMessage(_primarySelected,_secondaryItems.length)]]" > <div class="item">Only tags can be used for filtering. <i>"[[_primarySelected] ]"</i> is informational only.</div> </template> </div> <div class="selector side -by-side" title="These tag filters are AND'd together and applied to all tasks." > <template is="dom-repeat" items="[[_filters]]" as="fil"> <div class="item hori zontal layout" label="[[fil]]"> <span>[[fil]]</span> <span class="flex"></span> <iron-icon class="icons" icon="icons:remove-circle-outline" hidden="[[_cantRemov eFilter(fil,_filters.*)]]" on-tap="_removeFilter"> </iron-icon> </div> </templat e> </div> <div class="side-by-side"> <paper-input id="_limit" label="Limit Resul ts" auto-validate="" min="0" max="1000" pattern="[0-9]+" value="{{_limit}}"> </p aper-input> </div> </div> </div> </template> <script>!function(){var t={state:fu nction(t,i){var r=this._attribute(t,"state")[0];if(i===r||"ALL"===i)return!0;if( "PENDING_RUNNING"===i)return r===this.PENDING||r===this.RUNNING;var e=this._attr ibute(t,"failure",!1)[0];if("COMPLETED_SUCCESS"===i)return r===this.COMPLETED&&! e;if("COMPLETED_FAILURE"===i)return r===this.COMPLETED&&e;var a=this._attribute( t,"try_number","-1")[0];return"DEDUPED"===i?r===this.COMPLETED&&"0"===a:void 0}} ;Polymer({is:"task-filters",behaviors:[SwarmingBehaviors.QueryColumnFilter,Swarm ingBehaviors.TaskBehavior],properties:{columns:{type:Array,notify:!0},query_para ms:{type:Object,computed:"_extractQueryParams(_filters.*, _limit)",notify:!0},_f ilterMap:{type:Object,value:function(){var i=this._commonFilters();for(var r in t)i[r]=t[r];return i}}},_cantToggleColumn:function(t){return!t||"name"===t},_ext ractQueryParams:function(){var t={},i=[];this._filters.forEach(function(r){var e =r.split(this.FILTER_SEP,1),a=e[0],s=r.substring(a.length+this.FILTER_SEP.length );"state"===a?t.state=[s]:("user"===a&&"none"===s&&(s=""),i.push(a+this.FILTER_S EP+swarming.alias.unapply(s)))}.bind(this)),t.tags=i;var r=parseInt(this._limit) ;return Number.isInteger(r)&&(r=Math.max(r,1),r=Math.min(1e3,r),t.limit=[r],this ._limit!=r&&this.set("_limit",r)),t},_showTagMessage:function(t,i){return t&&"na me"!==t&&!i}})}()</script> </dom-module><dom-module id="task-list-data" assetpat h="/res/imp/tasklist/"> <script>!function(){var t=["abandoned_ts","completed_ts" ,"created_ts","modified_ts","started_ts"];Polymer({is:"task-list-data",behaviors :[SwarmingBehaviors.CommonBehavior,SwarmingBehaviors.TaskBehavior],properties:{a uth_headers:{type:Object,observer:"signIn"},query_params:{type:Object},tasks:{ty pe:Array},busy:{type:Boolean,computed:"_or(_busy2,_busy1)",notify:!0},primary_ma p:{type:Object,computed:"_primaryMap(_tags,_dimensions,tasks.*)",notify:!0},prim ary_arr:{type:Array,computed:"_primaryArr(primary_map)",notify:!0},_busy2:{type: Boolean,value:!1},_busy1:{type:Boolean,value:!1},_dimensions:{type:Object},_list :{type:Object},_tags:{type:Object}},signIn:function(){this._getJsonAsync("_tags" ,"/api/swarming/v1/tasks/tags","_busy2",this.auth_headers),this._getJsonAsync("_ dimensions","/api/swarming/v1/bots/dimensions","_busy1",this.auth_headers)},_pri maryArr:function(t){var a=Object.keys(t);return a.sort(),a},_primaryMap:function (a,s){a=a&&a.tasks_tags||[],s=s&&s.bots_dimensions||[],tasks=this.tasks||[];var e={};a.forEach(function(t){e[t.key]||(e[t.key]={});var a=t.value||[];a.forEach(f unction(a){e[t.key][a]=!0})}),s.forEach(function(t){var a=t.value;e[t.key]||(e[t .key]={}),a.forEach(function(a){e[t.key][a]=!0})}),tasks.forEach(function(t){Obj ect.keys(t.tagMap).forEach(function(a){var s=t.tagMap[a];e[a]||(e[a]={}),e[a][s] =!0})}),e.user&&(delete e.user[""],e.user.none=!0);var r={};for(key in e){var i= Object.keys(e[key]);if(swarming.alias.DIMENSIONS_WITH_ALIASES.indexOf(key)===-1) r[key]=i;else{var n=[];i.forEach(function(t){n.push(swarming.alias.apply(t,key)) }),r[key]=n}}return r.name=[],r.state=[this.PENDING,this.RUNNING,"PENDING_RUNNIN G",this.COMPLETED,"COMPLETED_SUCCESS","COMPLETED_FAILURE",this.EXPIRED,this.TIME D_OUT,this.BOT_DIED,this.CANCELED,"DEDUPED","ALL"],r.costs_usd=[],r.deduped_from =[],r.duration=[],r.server_versions=[],r.bot=[],t.forEach(function(t){r[t]=[]}), r},parseTasks:function(a){if(!a||!a.items)return[];var s=new Date;return a.items .forEach(function(a){var e={};a.tags=a.tags||[],a.tags.forEach(function(t){var a =t.split(":",1),s=a[0],r=t.substring(s.length+1);e[s]=r}),a.tagMap=e,t.forEach(f unction(t){a[t]&&(a[t]=new Date(a[t]),a["human_"+t]=sk.human.localeTime(a[t]))}) ,!a.duration&&a.state===this.RUNNING&&a.started_ts&&(a.duration=(s-a.started_ts) /1e3),a.duration&&(a.human_duration=this._humanDuration(a.duration))}.bind(this) ),a.items}})}()</script> </dom-module> <dom-module id="task-list" assetpath="/re s/imp/tasklist/"> <template> <style include="iron-flex iron-flex-alignment iron- positioning swarming-app-style dynamic-table-style task-style">task-filters{marg in-bottom:8px;margin-right:10px}.task-list th>span{padding-right:30px}</style> < url-param name="s" value="{{_sortstr}}" default_value="created_ts:desc"> </url-p aram> <swarming-app client_id="[[client_id]]" auth_headers="{{_auth_headers}}" p ermissions="{{_permissions}}" signed_in="{{_signed_in}}" busy="[[_or(_busy1,_bus y2)]]" name="Swarming Task List"> <h2 hidden$="[[_signed_in]]">You must sign in to see anything useful.</h2> <div hidden$="[[_not(_signed_in)]]"> <task-list-dat a id="data" auth_headers="[[_auth_headers]]" query_params="[[_query_params]]" ta sks="[[_items]]" busy="{{_busy1)}}" primary_map="{{_primary_map}}" primary_arr=" {{_primary_arr}}"> </task-list-data> <div class="horizontal layout"> <task-filte rs primary_map="[[_primary_map]]" primary_arr="[[_primary_arr]]" special_columns ="[[_specialColumns]]" columns="{{_columns}}" query_params="{{_query_params}}" f ilter="{{_filter}}"> </task-filters> </div> <table class="task-list"> <thead on- sort_change="_sortChange"> <tr> <th> <span>Task Name</span> <sort-toggle name="n ame" current="[[_sort]]"> </sort-toggle> </th> <th hidden$="[[_hide('state', _co lumns.*)]]"> <span>State</span> <sort-toggle name="state" current="[[_sort]]"> < /sort-toggle> </th> <th hidden$="[[_hide('bot', _columns.*)]]"> <span>Bot Assign ed</span> <sort-toggle name="bot" current="[[_sort]]"> </sort-toggle> </th> <th hidden$="[[_hide('deduped_from', _columns.*)]]"> <span>Deduped from</span> <sort -toggle name="deduped_from" current="[[_sort]]"> </sort-toggle> </th> <th hidden $="[[_hide('source_revision', _columns.*)]]"> <span>Source Revision</span> <sort -toggle name="source_revision" current="[[_sort]]"> </sort-toggle> </th> <templa te is="dom-repeat" items="[[_plainColumns]]" as="c"> <th hidden$="[[_hide(c)]]"> <span>[[_header(c)]]</span> <sort-toggle name="[[c]]" current="[[_sort]]"> </so rt-toggle> </th> </template> </tr> </thead> <tbody> <template id="tasks_table" i s="dom-repeat" items="[[_filteredSortedItems]]" as="task" initial-count="50"> <t r class$="[[_taskClass(task)]]"> <td> <a class="center" href$="[[_taskLink(task. task_id)]]" target="_blank"> [[task.name]] </a> </td> <td hidden$="[[_hide('stat e', _columns.*)]]"> [[_column('state', task)]] <paper-button raised="" hidden$=" [[_cannotCancel(task,_permissions)]]" on-tap="_promptCancel"> Cancel </paper-but ton> </td> <td hidden$="[[_hide('bot', _columns.*)]]"> <a class="center" href$=" [[_botLink(task.bot_id)]]" target="_blank"> [[_column('bot',task)]] </a> </td> < td hidden$="[[_hide('deduped_from', _columns.*)]]"> <a class="center" href$="[[_ taskLink(task.deduped_from)]]" target="_blank"> [[_column('deduped_from',task)]] </a> </td> <td hidden$="[[_hide('source_revision', _columns.*)]]"> <a class="ce nter" href$="[[_sourceLink(task)]]" target="_blank"> [[_column('source_revision' ,task)]] </a> </td> <template is="dom-repeat" items="[[_plainColumns]]" as="c"> <td hidden$="[[_hide(c)]]"> [[_column(c, task)]] </td> </template> </tr> </templ ate> </tbody> </table> <pageable-data id="page_tasks" busy="{{_busy2}}" label="S how more tasks" output="{{_items}}" parse="[[_parseTasks]]"> </pageable-data> </ div> </swarming-app> <paper-dialog id="prompt" modal="" on-iron-overlay-closed=" _promptClosed"> <h2>Are you sure?</h2> <div>Are you sure you want to [[_dialogPr ompt]]?</div> <div class="buttons"> <paper-button dialog-dismiss="" autofocus="" >No</paper-button> <paper-button dialog-confirm="">Yes</paper-button> </div> </p aper-dialog> </template> <script>!function(){function t(t){return function(e){re turn this._attribute(e,"human_"+t)[0]}}function e(t){return function(e,a,s){var r=this._attribute(a,t,"0")[0],n=this._attribute(s,t,"0")[0];return e*(r-n)}}var a=["deduped_from","name","state","bot","source_revision"],s={abandoned_ts:t("aba ndoned_ts"),bot:function(t){return this._attribute(t,"bot_id")[0]},completed_ts: t("completed_ts"),costs_usd:function(t){return this._attribute(t,"costs_usd",0)[ 0]},created_ts:t("created_ts"),duration:t("duration"),modified_ts:t("modified_ts "),source_revision:function(t){var e=this._attribute(t,"source_revision")[0];ret urn e.substring(0,8)},started_ts:t("started_ts"),state:function(t){var e=this._a ttribute(t,"state")[0];if("COMPLETED"===e){if(this._attribute(t,"failure",!1)[0] )return"COMPLETED (FAILURE)";var a=this._attribute(t,"try_number","-1")[0];retur n"0"===a?"COMPLETED (DEDUPED)":"COMPLETED (SUCCESS)"}return e}},r={abandoned_ts: "Abandoned On",completed_ts:"Completed On",created_ts:"Created On",duration:"Dur ation",modified_ts:"Last Modified",started_ts:"Started Working On",user:"Request ing User"},n={abandoned_ts:e("abandoned_ts"),completed_ts:e("completed_ts"),crea ted_ts:e("created_ts"),duration:e("duration"),modified_ts:e("modified_ts"),start ed_ts:e("started_ts")};Polymer({is:"task-list",behaviors:[SwarmingBehaviors.Dyna micTableBehavior,SwarmingBehaviors.TaskBehavior],properties:{client_id:{type:Str ing},_busy1:{type:Boolean,value:!1},_busy2:{type:Boolean,value:!1},_parseTasks:{ type:Function,value:function(){return this.$.data.parseTasks.bind(this)}},_toCan cel:{type:String},_columnMap:{type:Object,value:function(){var t=this._commonCol umns();for(var e in s)t[e]=s[e];return t}},_headerMap:{type:Object,value:r},_spe cialColumns:{type:Array,value:a},_specialSort:{type:Object,value:n}},observers:[ "reload(_query_params,_auth_headers)"],_attribute:function(t,e,a){void 0===a&&(a ="none");var s=this._tag(t,e)||t[e]||[a];return Array.isArray(s)?s:[s]},_cannotC ancel:function(t,e){return!(e&&e.cancel_task&&"PENDING"===this._column("state",t ))},_cancelTask:function(){var t="/api/swarming/v1/task/"+this._toCancel+"/cance l";swarming.postWithToast(t,"Canceling task "+this._toCancel,this._auth_headers) ,this.set("_toCancel","")},_promptClosed:function(t){t.detail.confirmed&&this._c ancelTask()},_promptCancel:function(t){var e=t.model.task;return e&&e.task_id?(t his.set("_toCancel",e.task_id),this.set("_dialogPrompt",'cancel task "'+e.name+' "'),void this.$.prompt.open()):void console.log("Missing task info",e)},reload:f unction(){if(this._auth_headers&&this._query_params){var t="/api/swarming/v1/tas ks/list?"+sk.query.fromParamSet(this._query_params);this.$.page_tasks.load(t,thi s._auth_headers)}},_sourceLink:function(t){var e=this._attribute(t,"source_revis ion")[0],a=this._attribute(t,"source_repo")[0];return"none"!==e&&"none"!==a&&a.r eplace("%s",e)},_tag:function(t,e){if(t&&t.tagMap)return t.tagMap[e]},_taskClass :function(t){return this.stateClass(this._column("state",t))}})}()</script> </do m-module> <dom-module id="iron-collapse" assetpath="/res/imp/bower_components/ir on-collapse/"> <template> <style>:host{display:block;transition-duration:var(--i ron-collapse-transition-duration,300ms);overflow:visible}:host(.iron-collapse-cl osed){display:none}:host(:not(.iron-collapse-opened)){overflow:hidden}</style> < content></content> </template> </dom-module> <script>Polymer({is:"iron-collapse" ,behaviors:[Polymer.IronResizableBehavior],properties:{horizontal:{type:Boolean, value:!1,observer:"_horizontalChanged"},opened:{type:Boolean,value:!1,notify:!0, observer:"_openedChanged"},noAnimation:{type:Boolean},_desiredSize:{type:String, value:""}},get dimension(){return this.horizontal?"width":"height"},get _dimensi onMax(){return this.horizontal?"maxWidth":"maxHeight"},get _dimensionMaxCss(){re turn this.horizontal?"max-width":"max-height"},hostAttributes:{role:"group","ari a-hidden":"true","aria-expanded":"false"},listeners:{transitionend:"_transitionE nd"},attached:function(){this._transitionEnd()},toggle:function(){this.opened=!t his.opened},show:function(){this.opened=!0},hide:function(){this.opened=!1},upda teSize:function(i,t){if(i="auto"===i?"":i,this._desiredSize!==i){this._desiredSi ze=i,this._updateTransition(!1);var e=t&&!this.noAnimation&&this._isDisplayed;if (e){var n=this._calcSize();""===i&&(this.style[this._dimensionMax]="",i=this._ca lcSize()),this.style[this._dimensionMax]=n,this.scrollTop=this.scrollTop,this._u pdateTransition(!0),e=i!==n}this.style[this._dimensionMax]=i,e||this._transition End()}},enableTransition:function(i){Polymer.Base._warn("`enableTransition()` is deprecated, use `noAnimation` instead."),this.noAnimation=!i},_updateTransition :function(i){this.style.transitionDuration=i&&!this.noAnimation?"":"0s"},_horizo ntalChanged:function(){this.style.transitionProperty=this._dimensionMaxCss;var i ="maxWidth"===this._dimensionMax?"maxHeight":"maxWidth";this.style[i]="",this.up dateSize(this.opened?"auto":"0px",!1)},_openedChanged:function(){this.setAttribu te("aria-expanded",this.opened),this.setAttribute("aria-hidden",!this.opened),th is.toggleClass("iron-collapse-closed",!1),this.toggleClass("iron-collapse-opened ",!1),this.updateSize(this.opened?"auto":"0px",!0),this.opened&&this.focus()},_t ransitionEnd:function(){this.style[this._dimensionMax]=this._desiredSize,this.to ggleClass("iron-collapse-closed",!this.opened),this.toggleClass("iron-collapse-o pened",this.opened),this._updateTransition(!1),this.notifyResize()},get _isDispl ayed(){var i=this.getBoundingClientRect();for(var t in i)if(0!==i[t])return!0;re turn!1},_calcSize:function(){return this.getBoundingClientRect()[this.dimension] +"px"}})</script> <script>Polymer.IronMenubarBehaviorImpl={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()},g et _isRTL(){return"rtl"===window.getComputedStyle(this).direction},_onLeftKey:fu nction(e){this._isRTL?this._focusNext():this._focusPrevious(),e.detail.keyboardE vent.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._focusWithKey boardEvent(e)}},Polymer.IronMenubarBehavior=[Polymer.IronMenuBehavior,Polymer.Ir onMenubarBehaviorImpl]</script> <iron-iconset-svg name="paper-tabs" size="24"> < svg><defs> <g id="chevron-left"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10. 83 12z"></path></g> <g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 12l-4.5 8 4.59L10 18l6-6z"></path></g> </defs></svg> </iron-iconset-svg> <dom-module id= "paper-tab" assetpath="/res/imp/bower_components/paper-tabs/"> <template> <style >:host{@apply(--layout-inline);@apply(--layout-center);@apply(--layout-center-ju stified);@apply(--layout-flex-auto);position:relative;padding:0 12px;overflow:hi dden;cursor:pointer;vertical-align:middle;@apply(--paper-font-common-base);@appl y(--paper-tab)}:host(:focus){outline:0}:host([link]){padding:0}.tab-content{heig ht:100%;transform:translateZ(0);-webkit-transform:translateZ(0);transition:opaci ty .1s cubic-bezier(.4,0,1,1);@apply(--layout-horizontal);@apply(--layout-center -center);@apply(--layout-flex-auto);@apply(--paper-tab-content)}:host(:not(.iron -selected))>.tab-content{opacity:.8;@apply(--paper-tab-content-unselected)}:host (:focus) .tab-content{opacity:1;font-weight:700}paper-ripple{color:var(--paper-t ab-ink,--paper-yellow-a100)}.tab-content>::content>a{@apply(--layout-flex-auto); height:100%}</style> <div class="tab-content"> <content></content> </div> </temp late> <script>Polymer({is:"paper-tab",behaviors:[Polymer.IronControlState,Polyme r.IronButtonState,Polymer.PaperRippleBehavior],properties:{link:{type:Boolean,va lue:!1,reflectToAttribute:!0}},hostAttributes:{role:"tab"},listeners:{down:"_upd ateNoink",tap:"_onTap"},attached:function(){this._updateNoink()},get _parentNoin k(){var t=Polymer.dom(this).parentNode;return!!t&&!!t.noink},_updateNoink:functi on(){this.noink=!!this.noink||!!this._parentNoink},_onTap:function(t){if(this.li nk){var e=this.queryEffectiveChildren("a");if(!e)return;if(t.target===e)return;e .click()}}})</script> </dom-module> <dom-module id="paper-tabs" assetpath="/res/ imp/bower_components/paper-tabs/"> <template> <style>:host{@apply(--layout);@app ly(--layout-center);height:48px;font-size:14px;font-weight:500;overflow:hidden;- moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:n one;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transpar ent;@apply(--paper-tabs)}:host-context([dir=rtl]){@apply(--layout-horizontal-rev erse)}#tabsContainer{position:relative;height:100%;white-space:nowrap;overflow:h idden;@apply(--layout-flex-auto)}#tabsContent{height:100%;-moz-flex-basis:auto;- ms-flex-basis:auto;flex-basis:auto}#tabsContent.scrollable{position:absolute;whi te-space:nowrap}#tabsContent.scrollable.fit-container,#tabsContent:not(.scrollab le){@apply(--layout-horizontal)}#tabsContent.scrollable.fit-container{min-width: 100%}#tabsContent.scrollable.fit-container>::content>*{-ms-flex:1 0 auto;-webkit -flex:1 0 auto;flex:1 0 auto}.hidden{display:none}.not-visible{opacity:0;cursor: default}paper-icon-button{width:48px;height:48px;padding:12px;margin:0 4px}#sele ctionBar{position:absolute;height:2px;bottom:0;left:0;right:0;background-color:v ar(--paper-tabs-selection-bar-color,--paper-yellow-a100);-webkit-transform:scale (0);transform:scale(0);-webkit-transform-origin:left center;transform-origin:lef t center;transition:-webkit-transform;transition:transform;@apply(--paper-tabs-s election-bar)}#selectionBar.align-bottom{top:0;bottom:auto}#selectionBar.expand{ transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,1,1)}#sele ctionBar.contract{transition-duration:.18s;transition-timing-function:cubic-bezi er(0,0,.2,1)}#tabsContent>::content>:not(#selectionBar){height:100%}</style> <pa per-icon-button icon="paper-tabs:chevron-left" class$="[[_computeScrollButtonCla ss(_leftHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-d own="_onLeftScrollButtonDown" tabindex="-1"></paper-icon-button> <div id="tabsCo ntainer" on-track="_scroll" on-down="_down"> <div id="tabsContent" class$="[[_co mputeTabsContentClass(scrollable, fitContainer)]]"> <div id="selectionBar" class $="[[_computeSelectionBarClass(noBar, alignBottom)]]" on-transitionend="_onBarTr ansitionEnd"></div> <content select="*"></content> </div> </div> <paper-icon-but ton icon="paper-tabs:chevron-right" class$="[[_computeScrollButtonClass(_rightHi dden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onRi ghtScrollButtonDown" tabindex="-1"></paper-icon-button> </template> <script>Poly mer({is:"paper-tabs",behaviors:[Polymer.IronResizableBehavior,Polymer.IronMenuba rBehavior],properties:{noink:{type:Boolean,value:!1,observer:"_noinkChanged"},no Bar:{type:Boolean,value:!1},noSlide:{type:Boolean,value:!1},scrollable:{type:Boo lean,value:!1},fitContainer:{type:Boolean,value:!1},disableDrag:{type:Boolean,va lue:!1},hideScrollButtons:{type:Boolean,value:!1},alignBottom:{type:Boolean,valu e:!1},selectable:{type:String,value:"paper-tab"},autoselect:{type:Boolean,value: !1},autoselectDelay:{type:Number,value:0},_step:{type:Number,value:10},_holdDela y:{type:Number,value:1},_leftHidden:{type:Boolean,value:!1},_rightHidden:{type:B oolean,value:!1},_previousTab:{type:Object}},hostAttributes:{role:"tablist"},lis teners:{"iron-resize":"_onTabSizingChanged","iron-items-changed":"_onTabSizingCh anged","iron-select":"_onIronSelect","iron-deselect":"_onIronDeselect"},keyBindi ngs:{"left:keyup right:keyup":"_onArrowKeyup"},created:function(){this._holdJob= null,this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,th is._bindDelayedActivationHandler=this._delayedActivationHandler.bind(this),this. addEventListener("blur",this._onBlurCapture.bind(this),!0)},ready:function(){thi s.setScrollDirection("y",this.$.tabsContainer)},detached:function(){this._cancel PendingActivation()},_noinkChanged:function(t){var e=Polymer.dom(this).querySele ctorAll("paper-tab");e.forEach(t?this._setNoinkAttribute:this._removeNoinkAttrib ute)},_setNoinkAttribute:function(t){t.setAttribute("noink","")},_removeNoinkAtt ribute:function(t){t.removeAttribute("noink")},_computeScrollButtonClass:functio n(t,e,i){return!e||i?"hidden":t?"not-visible":""},_computeTabsContentClass:funct ion(t,e){return t?"scrollable"+(e?" fit-container":""):" fit-container"},_comput eSelectionBarClass:function(t,e){return t?"hidden":e?"align-bottom":""},_onTabSi zingChanged:function(){this.debounce("_onTabSizingChanged",function(){this._scro ll(),this._tabChanged(this.selectedItem)},10)},_onIronSelect:function(t){this._t abChanged(t.detail.item,this._previousTab),this._previousTab=t.detail.item,this. cancelDebouncer("tab-changed")},_onIronDeselect:function(t){this.debounce("tab-c hanged",function(){this._tabChanged(null,this._previousTab),this._previousTab=nu ll},1)},_activateHandler:function(){this._cancelPendingActivation(),Polymer.Iron MenuBehaviorImpl._activateHandler.apply(this,arguments)},_scheduleActivation:fun ction(t,e){this._pendingActivationItem=t,this._pendingActivationTimeout=this.asy nc(this._bindDelayedActivationHandler,e)},_delayedActivationHandler:function(){v ar t=this._pendingActivationItem;this._pendingActivationItem=void 0,this._pendin gActivationTimeout=void 0,t.fire(this.activateEvent,null,{bubbles:!0,cancelable: !0})},_cancelPendingActivation:function(){void 0!==this._pendingActivationTimeou t&&(this.cancelAsync(this._pendingActivationTimeout),this._pendingActivationItem =void 0,this._pendingActivationTimeout=void 0)},_onArrowKeyup:function(t){this.a utoselect&&this._scheduleActivation(this.focusedItem,this.autoselectDelay)},_onB lurCapture:function(t){t.target===this._pendingActivationItem&&this._cancelPendi ngActivation()},get _tabContainerScrollSize(){return Math.max(0,this.$.tabsConta iner.scrollWidth-this.$.tabsContainer.offsetWidth)},_scroll:function(t,e){if(thi s.scrollable){var i=e&&-e.ddx||0;this._affectScroll(i)}},_down:function(t){this. async(function(){this._defaultFocusAsync&&(this.cancelAsync(this._defaultFocusAs ync),this._defaultFocusAsync=null)},1)},_affectScroll:function(t){this.$.tabsCon tainer.scrollLeft+=t;var e=this.$.tabsContainer.scrollLeft;this._leftHidden=0=== e,this._rightHidden=e===this._tabContainerScrollSize},_onLeftScrollButtonDown:fu nction(){this._scrollToLeft(),this._holdJob=setInterval(this._scrollToLeft.bind( this),this._holdDelay)},_onRightScrollButtonDown:function(){this._scrollToRight( ),this._holdJob=setInterval(this._scrollToRight.bind(this),this._holdDelay)},_on ScrollButtonUp:function(){clearInterval(this._holdJob),this._holdJob=null},_scro llToLeft:function(){this._affectScroll(-this._step)},_scrollToRight:function(){t his._affectScroll(this._step)},_tabChanged:function(t,e){if(!t)return this.$.sel ectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contr act"),void this._positionBar(0,0);var i=this.$.tabsContent.getBoundingClientRect (),n=i.width,o=t.getBoundingClientRect(),s=o.left-i.left;if(this._pos={width:thi s._calcPercent(o.width,n),left:this._calcPercent(s,n)},this.noSlide||null==e)ret urn this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList .remove("contract"),void this._positionBar(this._pos.width,this._pos.left);var a =e.getBoundingClientRect(),l=this.items.indexOf(e),c=this.items.indexOf(t),r=5;t his.$.selectionBar.classList.add("expand");var h=l<c,d=this._isRTL;d&&(h=!h),h?t his._positionBar(this._calcPercent(o.left+o.width-a.left,n)-r,this._left):this._ positionBar(this._calcPercent(a.left+a.width-o.left,n)-r,this._calcPercent(s,n)+ r),this.scrollable&&this._scrollToSelectedIfNeeded(o.width,s)},_scrollToSelected IfNeeded:function(t,e){var i=e-this.$.tabsContainer.scrollLeft;i<0?this.$.tabsCo ntainer.scrollLeft+=i:(i+=t-this.$.tabsContainer.offsetWidth,i>0&&(this.$.tabsCo ntainer.scrollLeft+=i))},_calcPercent:function(t,e){return 100*t/e},_positionBar :function(t,e){t=t||0,e=e||0,this._width=t,this._left=e,this.transform("translat eX("+e+"%) scaleX("+t/100+")",this.$.selectionBar)},_onBarTransitionEnd:function (t){var e=this.$.selectionBar.classList;e.contains("expand")?(e.remove("expand") ,e.add("contract"),this._positionBar(this._pos.width,this._pos.left)):e.contains ("contract")&&e.remove("contract")}})</script> </dom-module> <dom-module id="sin gle-page-style" assetpath="/res/imp/common/"> <template> <style>.header{max-widt h:800px}.title{font-size:1.5em;font-weight:700;margin:5px}.id_input{margin-left: 5px;--paper-input-container-input:{font-size:2em};}.refresh{max-width:40px;max-h eight:40px;width:initial;height:initial}button{min-width:4em;max-height:55px}tab le{border-collapse:collapse;margin-left:5px;margin-bottom:8px}td,th{border:1px s olid #BBB;padding:5px}.tabs{background-color:#1F78B4;color:#fff;max-width:600px; margin-left:5px;--paper-checkbox-label-color:#fff}paper-tab{background-color:#A6 CEE3;color:#000}paper-tab.iron-selected{background-color:#1F78B4;color:#fff;font -weight:700;text-decoration:underline}paper-tab[disabled]{background-color:#AAA; text-decoration:line-through}.quarantined{background-color:#fdd}.dead{background -color:#ccc}</style> </template> </dom-module><script>!function(){SwarmingBehavi ors.BotPageBehavior=[SwarmingBehaviors.CommonBehavior,{}]}()</script> <dom-modul e id="bot-page-data" assetpath="/res/imp/botpage/"> <script>!function(){function t(t){if(!s){var e=t.toString();s=e.substring(e.indexOf("("))}return t.toLocaleS tring()+" "+s}var e,s,i=400,n=["first_seen_ts","last_seen_ts","lease_expiration_ ts"],a=["started_ts","completed_ts","abandoned_ts","modified_ts"];Polymer({is:"b ot-page-data",behaviors:[SwarmingBehaviors.BotPageBehavior],properties:{auth_hea ders:{type:Object},bot_id:{type:String},busy:{type:Boolean,computed:"_or(_busy1) ",notify:!0},bot:{type:Object,computed:"_parseBot(_bot)",notify:!0},bot_exists:{ type:Boolean,value:!0,notify:!0},_busy1:{type:Boolean,value:!1},_bot:{type:Objec t},_events:{type:Object},_tasks:{type:Object}},observers:["request(auth_headers, bot_id)"],request:function(){this.bot_id&&this.auth_headers&&(e&&this.cancelAsyn c(e),e=this.async(function(){e=void 0;var t="/api/swarming/v1/bot/"+this.bot_id, s=this._getJsonAsync("_bot",t+"/get","_busy1",this.auth_headers);s.then(function (){this.set("bot_exists",!0)}.bind(this)).catch(function(t){404===t.status?this. set("bot_exists",!1):sk.errorMessage("Http response: "+(t.status||" ")+" "+t.res ponse)}.bind(this)),this.fire("reload",{id:this.bot_id})},i))},_parseBot:functio n(e){if(!e)return{};e.state=e.state||"{}",e.state=JSON.parse(e.state)||{};var s= e.state.disks||{},i=Object.keys(s);if(i.length){e.disks=[];for(var a=0;a<i.lengt h;a++)e.disks.push({id:i[a],mb:s[i[a]].free_mb});e.disks.sort(function(t,e){retu rn e.mb-t.mb})}else e.disks=[{id:"unknown",mb:0}];return e.dimensions=e.dimensio ns||[],e.dimensions.forEach(function(t){swarming.alias.DIMENSIONS_WITH_ALIASES.i ndexOf(t.key)!==-1&&t.value.forEach(function(e,s){t.value[s]=swarming.alias.appl y(e,t.key)})}),n.forEach(function(s){e[s]&&(e[s]=new Date(e[s]),e["human_"+s]=t( e[s]))}),e},parseEvents:function(e){if(!e||!e.items)return[];var e=e.items;retur n e.forEach(function(e){e.ts&&(e.ts=new Date(e.ts),e.human_ts=t(e.ts))}),e.sort( function(t,e){return e.ts-t.ts}),e},parseTasks:function(e){if(!e||!e.items)retur n[];var e=e.items;return e.forEach(function(e){if(a.forEach(function(s){e[s]&&(e [s]=new Date(e[s]),e["human_"+s]=t(e[s]))}),e.duration)e.human_duration=this._hu manDuration(e.duration);else{var s=e.completed_ts||e.abandoned_ts||e.modified_ts ||new Date;e.human_duration=this._timeDiffExact(e.started_ts,s),e.duration=(s.ge tTime()-e.started_ts)/1e3}e.state=e.state||"UNKNOWN","COMPLETED"===e.state&&(e.f ailure?e.state="FAILURE":e.state="SUCCESS")}.bind(this)),e.sort(function(t,e){re turn e.started_ts-t.started_ts}),e}})}()</script> </dom-module> <dom-module id=" bot-page-summary" assetpath="/res/imp/botpage/"> <template> <style include="sing le-page-style">.wrapper{display:table;margin-left:auto;margin-bottom:10px;margin -right:5px}paper-checkbox{margin-left:5px}.thick{border-top-style:solid}</style> <url-param name="show_full_names" value="{{_show_full_names}}"> </url-param> <u rl-param name="show_all_tasks" value="{{_show_all_tasks}}"> </url-param> <url-pa ram name="sort_stats" value="{{_sortstr}}" default_value="total:desc"> </url-par am> <div class="wrapper"> <table> <thead on-sort_change="_sortChange"> <tr> <th> <span>Name</span> <sort-toggle name="full_name" current="[[_sort]]"> </sort-tog gle> </th> <th> <span>Total</span> <sort-toggle name="total" current="[[_sort]]" > </sort-toggle> </th> <th> <span>Success</span> <sort-toggle name="success" cur rent="[[_sort]]"> </sort-toggle> </th> <th> <span>Failed</span> <sort-toggle nam e="failed" current="[[_sort]]"> </sort-toggle> </th> <th> <span>Died</span> <sor t-toggle name="bot_died" current="[[_sort]]"> </sort-toggle> </th> <th> <span>Av erage Duration</span> <sort-toggle name="avg_duration" current="[[_sort]]"> </so rt-toggle> </th> <th> <span>Total Duration</span> <sort-toggle name="total_time" current="[[_sort]]"> </sort-toggle> </th> <th>Percent of Total</th> </tr> </the ad> <tbody> <template is="dom-repeat" items="[[_tasksToShow]]" as="task"> <tr> < td hidden$="[[_truthy(_show_full_names)]]" title="[[task.full_name]]">[[task.nam e]]</td> <td hidden$="[[_not(_show_full_names)]]" title="[[task.full_name]]">[[t ask.full_name]]</td> <td>[[task.total]]</td> <td>[[task.success]]</td> <td>[[tas k.failed]]</td> <td>[[task.bot_died]]</td> <td>[[_humanDuration(task.avg_duratio n)]]</td> <td>[[_humanDuration(task.total_time)]]</td> <td>[[task.total_time_per cent]]%</td> </tr> </template> </tbody> <tbody><tr class="thick"> <td>Total</td> <td>[[_totalStats.total]]</td> <td>[[_totalStats.success]]</td> <td>[[_totalSta ts.failed]]</td> <td>[[_totalStats.bot_died]]</td> <td>[[_humanDuration(_totalSt ats.avg_duration)]]</td> <td>[[_humanDuration(_totalStats.total_time)]]</td> <td >100.0%</td> </tr> </tbody></table> <div> <table> <thead> <tr> <th title="How mu ch time passed between the oldest task fetched and now."> Total Wall Time </th> <th title="How much of the wall time this bot was busy with a task."> Wall Time Utilization </th> </tr> </thead> <tbody> <tr> <td>[[_humanDuration(_totalStats.w all_time)]]</td> <td>[[_totalStats.wall_time_utilization]]%</td> </tr> </tbody> </table> <paper-checkbox checked="{{_show_full_names}}"> Show Full Names </paper -checkbox> <paper-checkbox hidden$="[[_cannotExpand]]" checked="{{_show_all_task s}}"> Show All Tasks </paper-checkbox> </div> </div> </template> <script>!functi on(){var t=15;Polymer({is:"bot-page-summary",behaviors:[SwarmingBehaviors.BotPag eBehavior],properties:{tasks:{type:Array},_cannotExpand:{type:Boolean,computed:" _countTasks(_taskStats.*)"},_show_all_tasks:{type:Boolean},_show_full_names:{typ e:Boolean},_sortstr:{type:String},_sort:{type:Object,computed:"_makeSortObject(_ sortstr)"},_taskStats:{type:Array},_tasksToShow:{type:Array,computed:"_sortAndLi mitTasks(_taskStats.*,_sort.*,_show_all_tasks)"},_totalStats:{type:Object}},obse rvers:["_aggregate(tasks.*)"],_aggregate:function(){if(this.tasks&&this.tasks.le ngth){var t=new Date(1e3*sk.now()),a={},e={total:this.tasks.length,success:0,fai led:0,bot_died:0,avg_duration:0,total_time:0,wall_time:(t-this.tasks[this.tasks. length-1].started_ts)/1e3};this.tasks.forEach(function(t){var s=t.name.trim(),i= s.split("/");5===i.length&&(s=i[0]+"/"+i[3]),a[s]||(a[s]={full_name:s,name:s,tot al:0,success:0,failed:0,bot_died:0,avg_duration:0,total_time:0}),a[s].total++,t. failure?(e.failed++,a[s].failed++):t.internal_failure?(e.bot_died++,a[s].bot_die d++):(e.success++,a[s].success++),e.total_time+=t.duration,a[s].total_time+=t.du ration}),e.avg_duration=e.total_time/e.total,e.wall_time_utilization=(100*e.tota l_time/e.wall_time).toFixed(1),this.set("_totalStats",e);var s=Object.keys(a),i= [];s.forEach(function(t){a[t].avg_duration=a[t].total_time/a[t].total,a[t].total _time_percent=(100*a[t].total_time/e.total_time).toFixed(1),i.push(a[t])});var o =new Substrings({minOccurrence:Math.max(2,s.length-1),minLength:6});o.build(s);v ar n=o.weighByAverage()||[];n.length&&n[0].source.forEach(function(t){var a=i[t] .full_name;i[t].name=a.replace(n[0].name,"...")}),this.set("_taskStats",i)}},_co mpare:function(t,a){if(!this._sort)return 0;var e=1;return"desc"===this._sort.di rection&&(e=-1),e*swarming.naturalCompare(t[this._sort.name],a[this._sort.name]) },_countTasks:function(){return this._taskStats.length<=t},_makeSortObject:funct ion(t){if(t){var a=t.split(":");return 2!=a.length?{name:"full_name",direction:" asc"}:{name:a[0],direction:a[1]}}},_sortAndLimitTasks:function(){swarming.stable Sort(this._taskStats,this._compare.bind(this));var a=this._taskStats.length;retu rn!this._show_all_tasks&&this._taskStats.length>t&&(a=t),this._taskStats.slice(0 ,a)},_sortChange:function(t){t&&t.detail&&t.detail.name&&(t.preventDefault(),t.s topPropagation(),this.set("_sortstr",t.detail.name+":"+t.detail.direction))}})}( )</script> </dom-module><dom-module id="bot-page" assetpath="/res/imp/botpage/"> <template> <style include="iron-flex iron-flex-alignment iron-positioning swarm ing-app-style single-page-style task-style">.message{white-space:pre-line;font-f amily:monospace}.bot_state{white-space:pre;font-family:monospace;margin-bottom:1 0px}.events_table,.tasks_table{border:3px solid #1F78B4}.old_version{background- color:#ffd}.stats{min-width:700px;flex-grow:2}#collapse{max-width:700px}.cloud{w hite-space:nowrap;margin-bottom:5px;margin-top:auto}paper-checkbox{--paper-check box-label-color:#fff;--paper-checkbox-checked-color:#fff;--paper-checkbox-checkm ark-color:#000;--paper-checkbox-unchecked-color:#fff;padding:3px}paper-dialog{bo rder-radius:6px}</style> <url-param name="id" value="{{bot_id}}"> </url-param> < url-param name="show_all_events" value="{{_show_all}}"> </url-param> <url-param name="selected" value="{{_selected}}"> </url-param> <url-param name="show_state" value="{{_show_state}}"> </url-param> <swarming-app client_id="[[client_id]]" a uth_headers="{{_auth_headers}}" permissions="{{_permissions}}" server_details="{ {_server_details}}" signed_in="{{_signed_in}}" busy="[[_or(_busy1,_busy2,_busy3) ]]" name="Swarming Bot Page"> <h2 hidden$="[[_signed_in]]">You must sign in to s ee anything useful.</h2> <div hidden$="[[_not(_signed_in)]]"> <bot-page-data id= "data" auth_headers="[[_auth_headers]]" bot_id="[[bot_id]]" bot="{{_bot}}" bot_e xists="{{_bot_exists}}" busy="{{_busy1}}" events="{{_events}}" tasks="{{_tasks}} " on-reload="_clearAndReload"> </bot-page-data> <div class="header horizontal la yout"> <paper-input class="id_input" label="Bot id" value="{{bot_id}}"></paper-i nput> <template is="dom-if" if="[[_ccLink(_bot)]]"> <div class="vertical layout" > <a href$="[[_ccLink(_bot)]]" class="cloud">Cloud Console</a> </div> </template > <button on-click="_refresh"> <iron-icon class="refresh" icon="icons:refresh">< /iron-icon> </button> </div> </div> <h2 hidden$="[[_bot_exists]]">Bot not found. </h2> <div hidden$="[[_not(_bot_exists)]]"> <div class="horizontal wrap layout"> <div class="flex"> <table> <tbody><tr class$="[[_isDead(_bot)]]" title="Last ti me the bot contacted the server."> <td>Last Seen</td> <td title="[[_bot.human_la st_seen_ts]]"> [[_timeDiffExact(_bot.last_seen_ts)]] ago</td> <td> <template is= "dom-if" if="[[_canShutdown(_bot,_permissions)]]"> <button class="raised" on-cli ck="_promptShutdown"> Shut Down Gracefully </button> </template> <template is="d om-if" if="[[_canDelete(_bot,_permissions)]]"> <button class="raised" on-click=" _promptDelete"> Delete </button> </template> </td> </tr> <template is="dom-if" i f="[[_bot.quarantined]]"> <tr class="quarantined"> <td>Quarantined</td> <td cols pan="2" class="message">[[_quarantineMessage(_bot)]]</td> </tr> </template> <tr> <td>Current Task</td> <td> <a target="_blank" rel="noopener" href$="[[_taskLink (_bot.task_id)]]"> [[_task(_bot)]] </a> </td> <td> </td> </tr> <tr> <td rowspan$ ="[[_numRows(_bot.dimensions)]]">Dimensions</td> </tr> <template is="dom-repeat" items="[[_bot.dimensions]]" as="dim"> <tr> <td>[[dim.key]]</td> <td>[[_concat(d im.value)]]</td> </tr> </template> <tr title="IP address that the server saw the connection from."> <td>External IP</td> <td><a href$="[[_bot.external_ip]]">[[_ bot.external_ip]]</a></td> <td></td> </tr> <tr class$="[[_classVersion(_server_d etails.bot_version,_bot.version)]]" title="Version is based on the content of sw arming_bot.zip which is the swarming bot code. The bot won't update if quarantin ed, dead, or busy."> <td>Bot Version</td> <td>[[_shorten(_bot.version,'8')]]</td > <td></td> </tr> <tr title="The version the server expects the bot to be using. "> <td>Expected Bot Version</td> <td>[[_shorten(_server_details.bot_version,'8') ]]</td> <td></td> </tr> <tr title="First time ever a bot with this id contacted the server."> <td>First seen</td> <td title="[[_bot.human_first_seen_ts]]"> [[_t imeDiffApprox(_bot.first_seen_ts)]] ago </td> <td></td> </tr> <tr title="How the bot is authenticated by the server."> <td>Authenticated as</td> <td colspan="2" >[[_bot.authenticated_as]]</td> </tr> <template is="dom-if" if="[[_bot.lease_id] ]"> <tr> <td>Machine Provider Lease ID</td> <td colspan="2"> <a href$="[[_mpLink (_bot,_server_details.machine_provider_template)]]"> [[_bot.lease_id]] </a> </td > </tr> <tr> <td>Machine Provider Lease Expires</td> <td colspan="2">[[_bot.huma n_lease_expiration_ts]]</td> </tr> </template> </tbody></table> <span class="tit le">State</span> <template is="dom-if" if="[[_not(_show_state)]]"> <button on-cl ick="_toggleState"> <iron-icon icon="icons:add-circle-outline"></iron-icon> </bu tton> </template> <template is="dom-if" if="[[_show_state]]"> <button on-click=" _toggleState"> <iron-icon icon="icons:remove-circle-outline"></iron-icon> </butt on> </template> <iron-collapse id="collapse" opened="[[_show_state]]"> <div clas s="bot_state">[[_prettyPrint(_bot.state)]]</div> </iron-collapse> </div> <div cl ass="stats flex"> <bot-page-summary tasks="[[_tasks]]"> </bot-page-summary> </di v> </div> <div class="tabs"> <paper-tabs selected="{{_selected}}" no-bar=""> <pa per-tab>Tasks</paper-tab> <paper-tab>Events</paper-tab> </paper-tabs> <template is="dom-if" if="[[_showEvents]]"> <paper-checkbox checked="{{_show_all}}"> Show all events </paper-checkbox> </template> </div> <template is="dom-if" if="[[_not (_showEvents)]]"> <table class="tasks_table"> <thead> <tr> <th>Task</th> <th>Sta rted</th> <th>Duration</th> <th>Result</th> </tr> </thead> <tbody> <template is= "dom-repeat" items="{{_tasks}}" as="task"> <tr class$="[[_taskClass(task)]]"> <t d> <a target="_blank" rel="noopener" href$="[[_taskLink(task.task_id)]]"> [[task .name]] </a> </td> <td>[[task.human_started_ts]]</td> <td title="[[task.human_co mpleted_ts]]">[[task.human_duration]]</td> <td>[[task.state]]</td> </tr> </templ ate> </tbody> </table> </template> <template is="dom-if" if="[[_showEvents]]"> < table class="events_table"> <thead> <tr> <th>Message</th> <th>Type</th> <th>Time stamp</th> <th>Task ID</th> <th>Version</th> </tr> </thead> <tbody> <template is ="dom-repeat" items="{{_eventList(_show_all,_events.*)}}" as="event"> <tr> <td c lass="message">[[event.message]]</td> <td>[[event.event_type]]</td> <td>[[event. human_ts]]</td> <td> <a target="_blank" rel="noopener" href$="[[_taskLink(event. task_id)]]"> [[event.task_id]] </a> </td> <td class$="[[_classVersion(_server_de tails.bot_version,event.version)]]"> [[_shorten(event.version,'8')]] </td> </tr> </template> </tbody> </table> </template> <pageable-data id="page_tasks" hidden $="[[_showEvents]]" busy="{{_busy2}}" label="Show more tasks" output="{{_tasks}} " parse="[[_parseTasks]]"> </pageable-data> <pageable-data id="page_events" hidd en$="[[_not(_showEvents)]]" busy="{{_busy3}}" label="Show more events" output="{ {_events}}" parse="[[_parseEvents]]"> </pageable-data> </div> </swarming-app> <p aper-dialog id="prompt" modal="" on-iron-overlay-closed="_promptClosed"> <h2>Are you sure?</h2> <div>Are you sure you want to [[_dialogPrompt]]?</div> <div clas s="buttons"> <paper-button dialog-dismiss="" autofocus="">No</paper-button> <pap er-button dialog-confirm="">Yes</paper-button> </div> </paper-dialog> </template > <script> (function(){
742 738
743 Polymer({ 739 Polymer({
744 is: 'bot-page', 740 is: 'bot-page',
745 741
746 behaviors: [ 742 behaviors: [
747 SwarmingBehaviors.BotPageBehavior, 743 SwarmingBehaviors.BotPageBehavior,
748 ], 744 ],
749 745
750 properties: { 746 properties: {
751 bot_id: { 747 bot_id: {
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
960 } 956 }
961 return ""; 957 return "";
962 }, 958 },
963 959
964 _toggleState: function() { 960 _toggleState: function() {
965 this.set("_show_state", !this._show_state); 961 this.set("_show_state", !this._show_state);
966 } 962 }
967 963
968 }); 964 });
969 })(); </script> </dom-module><dom-module id="interval-timer" assetpath="/res/i mp/common/"> <script>!function(){Polymer({is:"interval-timer",properties:{period :{type:Number,value:-1,observer:"_periodChanged"}},_periodChanged:function(e){th is._timeout&&window.clearTimeout(this._timeout),e>0&&(this._timeout=window.setTi meout(function(){this.fire("trigger"),this._periodChanged(e)}.bind(this),1e3*e)) }})}()</script> </dom-module> <dom-module id="task-page-data" assetpath="/res/im p/taskpage/"> <script>!function(){var t,e=400,s=["abandoned_ts","completed_ts"," created_ts","modified_ts","started_ts"];Polymer({is:"task-page-data",behaviors:[ SwarmingBehaviors.CommonBehavior,SwarmingBehaviors.TaskBehavior],properties:{aut h_headers:{type:Object},task_id:{type:String},busy:{type:Boolean,computed:"_or(_ busy1,_busy2,_busy3)",notify:!0},request:{type:Object,computed:"_parseRequest(_r equest)",notify:!0},result:{type:Object,computed:"_parseResult(_result)",notify: !0},stdout:{type:String,computed:"_parseStdout(_stdout)",notify:!0},task_exists: {type:Boolean,value:!0,notify:!0},_busy1:{type:Boolean,value:!1},_busy2:{type:Bo olean,value:!1},_busy3:{type:Boolean,value:!1},_request:{type:Object},_result:{t ype:Object},_stdout:{type:Object}},observers:["reload(auth_headers,task_id)"],re load:function(){if(!this.task_id||!this.auth_headers)return void console.log("ta sk_id and auth_headers can't be empty");t&&this.cancelAsync(t);var s="/api/swarm ing/v1/task/"+this.task_id;t=this.async(function(){t=void 0;var e=this._getJsonA sync("_request",s+"/request","_busy1",this.auth_headers);e.then(function(){this. set("task_exists",!0)}.bind(this)).catch(function(t){404===t.status?this.set("ta sk_exists",!1):sk.errorMessage("Http response: "+(t.status||" ")+" "+t.response) }.bind(this)),this._getJsonAsync("_result",s+"/result?include_performance_stats= true","_busy2",this.auth_headers),this.reloadStdout()},e)},_parseRequest:functio n(t){return t?(t.tagMap={},t.tags=t.tags||[],t.tags.forEach(function(e){var s=e. split(":",1),a=s[0],u=e.substring(a.length+1);t.tagMap[a]=u}),s.forEach(function (e){t[e]&&(t[e]=new Date(t[e]),t["human_"+e]=sk.human.localeTime(t[e]))}),t):{}} ,_parseResult:function(t){if(!t)return{};var e=new Date;return s.forEach(functio n(e){t[e]&&(t[e]=new Date(t[e]),t["human_"+e]=sk.human.localeTime(t[e]))}),!t.du ration&&t.state===this.RUNNING&&t.started_ts&&(t.duration=(e-t.started_ts)/1e3), t.duration&&(t.human_duration=this._humanDuration(t.duration)),t},_parseStdout:f unction(t){return t&&t.output?t.output:""},reloadStdout:function(){this._getJson Async("_stdout","/api/swarming/v1/task/"+this.task_id+"/stdout","_busy3",this.au th_headers)}})}()</script> </dom-module><dom-module id="task-disambiguation" ass etpath="/res/imp/taskpage/"> <template> <style include="swarming-app-style singl e-page-style task-style"></style> <table> <thead> <tr> <th>Try ID</th> <th>Bot I D</th> <th>Status</th> </tr> </thead> <tbody> <template id="result_list" is="dom -repeat" items="[[_results]]" as="result" observe="task_id bot_id state"> <tr> < td> <a href$="[[_taskLink(result.task_id,'true')]]"> [[result.task_id]] </a> </t d> <td> <a href$="[[_botLink(result.bot_id)]]"> [[result.bot_id]] </a> </td> <td class$="[[_stateClass(result)]]">[[state(result)]]</td> </tr> </template> </tbo dy> </table> </template> <script>Polymer({is:"task-disambiguation",behaviors:[Sw armingBehaviors.CommonBehavior,SwarmingBehaviors.TaskBehavior],properties:{auth_ headers:{type:Object},summary_result:{type:Object},task_id:{type:String},busy:{t ype:Boolean,value:!1,notify:!0},_busyArr:{type:Array,value:function(){return[]}} ,_results:{type:Array,value:function(){return[]}}},observers:["_fetchRest(auth_h eaders,task_id,summary_result)","_computeBusy(_busyArr.*)"],_computeBusy:functio n(){for(var s=0;s<this._busyArr.length;s++)if(this._busyArr[s].status)return!0;r eturn!1},_fetchRest:function(s,r,t){if(s&&r&&t){var e=t.try_number;this.set("_bu syArr",[]),this.set("_results",[]);for(var u=r.substring(0,r.length-1),i="/api/s warming/v1/task/",a=0;a<e-1;a++){var n=u+(a+1);this.splice("_busyArr",a,0,{}),th is.splice("_results",a,0,{task_id:n}),this._getJsonAsyncArr(a,"_results",i+n+"/r esult","_busyArr",s)}t.task_id=u+e,this.splice("_results",e-1,1,t)}}})</script> </dom-module><dom-module id="task-page" assetpath="/res/imp/taskpage/"> <templat e> <style include="iron-flex iron-flex-alignment swarming-app-style single-page- style task-style">.milo{width:calc(100% - 11px);height:2000px}.left{min-width:55 0px}.right{min-width:500px;margin-top:8px}.expand{min-width:3em;vertical-align:m iddle;padding:.5em}.code{font-family:monospace}.stdout{white-space:pre-line;padd ing:2px}.refresh_input{padding:0 5px}.reproduce{margin-left:5px}.tabbed{border:3 px solid #1F78B4;margin-left:5px;min-height:80vh}</style> <url-param name="id" v alue="{{task_id}}"> </url-param> <url-param name="try_detail" value="{{_try_deta il}}"> </url-param> <url-param name="request_detail" value="{{_request_detail}}" > </url-param> <url-param name="show_raw" value="{{_show_raw}}"> </url-param> <u rl-param name="refresh" value="{{_refresh_interval}}" default_value="10"> </url- param> <swarming-app client_id="[[client_id]]" auth_headers="{{_auth_headers}}" permissions="{{_permissions}}" profile="{{_profile}}" server_details="{{_server_ details}}" signed_in="{{_signed_in}}" busy="[[_or(_busy1,busy2)]]" name="Swarmin g Task Page"> <h2 hidden$="[[_signed_in]]">You must sign in to see anything usef ul.</h2> <div hidden$="[[_not(_signed_in)]]"> <task-page-data id="data" auth_hea ders="[[_auth_headers]]" task_id="[[task_id]]" busy="{{_busy1}}" request="{{_req uest}}" result="{{_result}}" stdout="{{_stdout}}" task_exists="{{_task_exists}}" > </task-page-data> <div class="horizontal layout wrap"> <div class="left flex"> <div class="horizontal layout"> <paper-input class="id_input" label="Task id" v alue="{{task_id}}"></paper-input> <button on-click="_refresh"> <iron-icon class= "refresh" icon="icons:refresh"></iron-icon> </button> <button on-click="_promptR etry">Retry</button> <template is="dom-if" if="[[_canCancelTask(_result,_permiss ions)]]"> <button on-click="_promptCancel">Cancel</button> </template> </div> <h 2 hidden$="[[_task_exists]]">Task not found.</h2> <template is="dom-if" if="[[_d isambiguate(task_id,_result)]]"> <h2>Displaying a summary for a task with multip le tries</h2> <task-disambiguation busy="{{busy2}}" auth_headers="[[_auth_header s]]" task_id="[[task_id]]" summary_result="[[_result]]"> </task-disambiguation> </template> <table hidden$="[[_not(_task_exists)]]"> <tbody><tr> <td>Name</td> < td>[[_request.name]]</td> </tr> <tr> <td>State</td> <td class$="[[_stateClass(_r esult)]]">[[state(_result)]]</td> </tr> <tr> <td>Created</td> <td title$="[[_req uest.created_ts]]">[[_request.human_created_ts]]</td> </tr> <template is="dom-if " if="[[_wasPickedUp(_result)]]"> <tr> <td>Started</td> <td title$="[[_result.st arted_ts]]">[[_result.human_started_ts]]</td> </tr> </template> <template is="do m-if" if="[[_wasNotPickedUp(_result)]]"> <tr> <td>Expires</td> <td>[[_expires(_r equest)]]</td> </tr> </template> <template is="dom-if" if="[[_result.human_compl eted_ts]]"> <tr> <td>Completed</td> <td title$="[[_result.completed_ts]]">[[_res ult.human_completed_ts]]</td> </tr> </template> <template is="dom-if" if="[[_res ult.human_abandoned_ts]]"> <tr> <td>Abandoned</td> <td title$="[[_result.abandon ed_ts]]">[[_result.human_abandoned_ts]]</td> </tr> </template> <tr> <td>Last Upd ated</td> <td title$="[[_result.modified_ts]]">[[_result.human_modified_ts]]</td > </tr> <template is="dom-if" if="[[_result.deduped_from]]"> <tr> <td><b>Deduped from</b></td> <td> <a href$="[[_taskLink(_result.deduped_from)]]"> [[_result.de duped_from]] </a> </td> </tr> </template> <tr> <td>Pending Time</td> <td>[[_pend ing(_result)]]</td> </tr> <tr> <td>Duration</td> <td>[[_result.human_duration]]< /td> </tr> <tr> <td>Priority</td> <td>[[_request.priority]]</td> </tr> <tr> <td> User</td> <td>[[_request.user]]</td> </tr> <tr> <td>Authenticated</td> <td>[[_re quest.authenticated]]</td> </tr> <template is="dom-if" if="[[_request.service_ac count]]"> <tr> <td>Service Account</td> <td>[[_request.service_account]]</td> </ tr> </template> <template is="dom-if" if="[[_request.properties.secret_bytes]]"> <tr> <td>Secret Bytes</td> <td>[[_request.properties.secret_bytes]]</td> </tr> </template> <template is="dom-if" if="[[_request.parent_task_id]]"> <tr> <td>Par ent Task</td> <td> <a href$="[[_taskLink(_request.parent_task_id)]]">[[_request. parent_task_id]]</a> </td> </tr> </template> <tr> <td rowspan$="[[_rowspan(_requ est.properties.dimensions)]]"> <a title="The list of bots that matches the list of dimensions" href$="[[_botListLink(_request.properties.dimensions)]]"> Request ed Dimensions </a> </td> </tr> <template is="dom-repeat" items="{{_request.prope rties.dimensions}}" as="dimension"> <tr> <td><b>[[dimension.key]]:</b> [[_alias( dimension)]]</td> </tr> </template> <tr> <td>Isolated Inputs</td> <td> <a href$= "[[_isolateLink(_request.properties.inputs_ref)]]"> [[_request.properties.inputs _ref.isolated]] </a> </td> </tr> <template is="dom-if" if="[[_request.properties .outputs.length]]"> <tr> <td rowspan$="[[_rowspan(_request.properties.outputs)]] ">Expected outputs</td> </tr> <template is="dom-repeat" items="{{_request.proper ties.outputs}}" as="output"> <tr> <td>[[output]]</td> </tr> </template> </templa te> <template is="dom-if" if="[[_not(_request_detail)]]"> <tr> <td>More Details< /td> <td> <button on-click="_toggleDetails"> <iron-icon icon="icons:add-circle-o utline"></iron-icon> </button> </td> </tr> </template> <template is="dom-if" if= "[[_request_detail]]"> <tr> <td>Hide Details</td> <td> <button on-click="_toggle Details"> <iron-icon icon="icons:remove-circle-outline"></iron-icon> </button> < /td> </tr> </template> <template is="dom-if" if="[[_request_detail]]"> <tr> <td> Extra Args</td> <td class="code">[[_extraArgs(_request)]]</td> </tr> <tr> <td ro wspan$="[[_rowspan(_request.tags)]]">Tags</td> </tr> <template is="dom-repeat" i tems="{{_request.tags}}" as="tag"> <tr> <td>[[tag]]</td> </tr> </template> <tr> <td>Execution timeout</td> <td>[[_humanDuration(_request.properties.execution_ti meout_secs)]]</td> </tr> <tr> <td>I/O timeout</td> <td>[[_humanDuration(_request .properties.io_timeout_secs)]]</td> </tr> <tr> <td>Grace period</td> <td>[[_huma nDuration(_request.properties.grace_period_secs)]]</td> </tr> <tr> <td>CIPD serv er</td> <td> <a href$="[[_request.properties.cipd_input.server]]"> [[_request.pr operties.cipd_input.server]] </a> </td> </tr> <tr> <td>CIPD version</td> <td>[[_ request.properties.cipd_input.client_package.version]]</td> </tr> <template is=" dom-if" if="[[_wasPickedUp(_result)]]"> <tr> <td>CIPD package name</td> <td>[[_r esult.cipd_pins.client_package.package_name]]</td> </tr> </template> <tr hidden$ ="[[_not(_request.properties.cipd_input)]]"> <td rowspan$="[[_cipdRowspan(_reque st,_result)]]">CIPD packages</td> </tr> <template is="dom-repeat" items="[[_cipd Packages(_request,_result)]]" as="cipd"> <tr> <td>[[cipd.path]]/</td> </tr> <tr> <td><b>Requested:</b>[[cipd.requested]]</td> </tr> <tr hidden$="[[_wasNotPicked Up(_result)]]"> <td><b>Actual:</b>[[cipd.actual]]</td> </tr> </template> <tr hid den$="[[_empty(_request.properties.caches)]]"> <td rowspan$="[[_rowspan(_request .properties.caches)]]">Named caches</td> </tr> <template is="dom-repeat" items=" [[_request.properties.caches]]" as="cache"> <tr> <td><span>[[cache.name]]</span> :<span>[[cache.path]]</span></td> </tr> </template> </template> </tbody></table> <div class="title" hidden$="[[_not(_task_exists)]]">Task Execution</div> <templ ate is="dom-if" if="[[_wasPickedUp(_result)]]"> <table hidden$="[[_not(_task_exi sts)]]"> <tbody><tr> <td>Bot assigned to task</td> <td><a href$="[[_botLink(_res ult.bot_id)]]">[[_result.bot_id]]</a></td> </tr> <tr> <td rowspan$="[[_rowspan(_ result.bot_dimensions)]]"> <a>Bot Dimensions</a> </td> </tr> <template is="dom-r epeat" items="[[_result.bot_dimensions]]" as="dimension"> <tr> <td><b>[[dimensio n.key]]:</b> [[_alias(dimension)]]</td> </tr> </template> <tr> <td>Exit code</td > <td>[[_result.exit_code]]</td> </tr> <tr> <td>Try number</td> <td>[[_result.tr y_number]]</td> </tr> <tr> <td>Failure</td> <td class$="[[_failureClass(_result. failure)]]">[[_result.failure]]</td> </tr> <tr> <td>Internal Failure</td> <td cl ass$="[[_internalClass(_result.internal_failure)]]">[[_result.internal_failure]] </td> </tr> <tr> <td>Isolated Outputs</td> <td> <a href$="[[_isolateLink(_result .outputs_ref)]]"> [[_result.outputs_ref.isolated]] </a> </td> </tr> <tr> <td>Bot version</td> <td>[[_result.bot_version]]</td> </tr> <tr> <td>Server version</td > <td>[[_result.server_versions]]</td> </tr> </tbody></table> </template> <templ ate is="dom-if" if="[[_wasNotPickedUp(_result)]]"> This space left blank until a bot is assigned to the task. </template> <template is="dom-if" if="[[_result.pe rformance_stats]]"> <div class="title">Performance Stats</div> <table> <tbody><t r> <td title="This includes time taken to download inputs, isolate outputs, and setup CIPD">Total Overhead</td> <td>[[_humanDuration(_result.performance_stats.b ot_overhead)]]</td> </tr> <tr> <td>Downloading Inputs From Isolate</td> <td>[[_h umanDuration(_result.performance_stats.isolated_download.duration)]]</td> </tr> <tr> <td>Uploading Outputs To Isolate</td> <td>[[_humanDuration(_result.performa nce_stats.isolated_upload.duration)]]</td> </tr> <tr> <td>Initial bot cache</td> <td>[[_result.performance_stats.isolated_download.initial_number_items]] items; [[_bytes(_result.performance_stats.isolated_download.initial_size)]]</td> </tr> </tbody></table> </template> <div class="title">Reproducing the task locally</d iv> <div class="reproduce"> <div>Download inputs files into directory <i>foo</i> :</div> <div class="code"> python isolateserver.py download -I [[_request.proper ties.inputs_ref.isolatedserver]] --namespace [[_request.properties.inputs_ref.na mespace]] -s [[_request.properties.inputs_ref.isolated]] --target foo</div> <br> <div>Run this task locally:</div> <div class="code"> python swarming.py reprodu ce -S [[_host_url]] [[task_id]]</div> <br> <div>Download output results into dir ectory <i>foo</i>:</div> <div class="code"> python swarming.py collect -S [[_hos t_url]] --task-output-dir=foo [[task_id]]</div> <br> <div>Looking for <i>swarmin g.py</i>?</div> <div class="code"> git clone https://github.com/luci/client-py</ div> </div> </div> <div class="flex right" hidden$="[[_not(_task_exists)]]"> <di v class="horizontal layout"> <div class="tabs"> <paper-tabs selected="{{_show_ra w}}" no-bar=""> <paper-tab disabled$="[[_noMilo(_request)]]">Milo Output</paper- tab> <paper-tab>Raw Output</paper-tab> </paper-tabs> </div> <paper-input class=" refresh_input" label="Refresh Interval (seconds)" value="{{_refresh_interval}}" title="How often to refresh all information about the task" auto-validate="" min ="1" max="1000" pattern="[0-9]+"> </paper-input> </div> <template is="dom-if" if ="[[_supportsMilo(_request,_show_raw)]]"> <div class="milo tabbed" hidden$="[[_i sSummaryLink(task_id)]]"> Milo results are only generated for task summaires, th at is, tasks whose ids end in 0. Tasks ending in 1 or 2 represent possible retri es of tasks. See <a href="//goo.gl/LE4rwV">the docs</a> for more. </div> <iframe id="miloFrame" class="milo tabbed" src$="[[_getDisplayServerLink(_server_detail s.display_server_url_template,task_id)]]"></iframe> </template> <template is="do m-if" if="[[_show_raw]]"> <div class="code stdout tabbed">[[_rawOutput(_stdout,_ result)]]</div> </template> </div> </div> </div> </swarming-app> <paper-dialog i d="prompt" modal="" on-iron-overlay-closed="_promptClosed"> <h2>Are you sure?</h 2> <div>Are you sure you want to [[_dialog_prompt]]?</div> <div class="buttons"> <paper-button dialog-dismiss="" autofocus="">No</paper-button> <paper-button di alog-confirm="">Yes</paper-button> </div> </paper-dialog> <interval-timer period ="[[_refresh_interval]]" on-trigger="_softRefresh"> </interval-timer> </template > <script>!function(){Polymer({is:"task-page",behaviors:[SwarmingBehaviors.Commo nBehavior,SwarmingBehaviors.TaskBehavior],properties:{task_id:{type:String},clie nt_id:{type:String},_dialog_prompt:{type:String,value:""},_host_url:{type:String ,value:function(){return window.location.hostname}},_refresh_interval:{type:Numb er},_request:{type:Object,observer:"_requestUpdated"},_request_detail:{type:Bool ean},_result:{type:Object},_server_details:{type:Object},_stdout:{type:String}}, _alias:function(t){var e=t.value;return Array.isArray(e)||(e=[e]),swarming.alias .has(t.key)&&e.forEach(function(i,s){e[s]=swarming.alias.apply(i,t.key)}),e.join (" | ")},_bytes:function(t){return sk.human.bytes(t)},_canCancelTask:function(t, e){return t&&"PENDING"===t.state&&e.cancel_task},_cancelTask:function(){var t="/ api/swarming/v1/task/"+this.task_id+"/cancel";swarming.postWithToast(t,"Cancelin g task "+this.task_id,this._auth_headers)},_cipdRowspan:function(t,e){if(!t||!t. properties||!t.properties.cipd_input)return 0;var i=(t.properties.cipd_input.pac kages||[]).length;return i*=e&&e.cipd_pins&&e.cipd_pins.packages?3:2,i+1},_cipdP ackages:function(t,e){if(!t||!t.properties||!t.properties.cipd_input)return[];va r i=t.properties.cipd_input.packages||[],s=e&&e.cipd_pins&&e.cipd_pins.packages| |[];return i.forEach(function(t){t.requested=t.package_name+":"+t.version,s.forE ach(function(e){e.path===t.path&&(t.actual=e.package_name+":"+e.version)})}),i}, _disambiguate:function(t,e){return!(!t.endsWith("0")||!e)&&e.try_number>1},_empt y:function(t){return!t||0==t.length},_expires:function(t){var e=parseInt(t.expir ation_secs);return e?sk.human.localeTime(new Date(t.created_ts.getTime()+1e3*e)) :t.expiration_secs+" seconds from created time"},_extraArgs:function(t){if(!t||! t.properties)return"";var e=t.properties.extra_args||[];return e.join(" ")},_fai lureClass:function(t){return t?"failed_task":""},_getDisplayServerLink:function( t,e){if(t)return t.replace("%s",e)},_internalClass:function(t){return t?"excepti on":""},_isolateLink:function(t){if(t&&t.isolatedserver)return t.isolatedserver+ "/browse?namespace="+t.namespace+"&hash="+t.isolated},_isSummaryLink:function(t) {return t&&t.endsWith(0)},_noMilo:function(t){return!this._tag(t,"allow_milo")}, _pending:function(t){if(!t.created_ts)return"";var e=t.started_ts||t.abandoned_t s||new Date;return e<=t.created_ts?"0s":this._timeDiffExact(t.created_ts,e)},_pr omptClosed:function(t){t.detail.confirmed&&(this._dialog_prompt.startsWith("canc el")?this._cancelTask():this._retryTask())},_promptCancel:function(){this.set("_ dialog_prompt","cancel task "+this.task_id),this.$.prompt.open()},_promptRetry:f unction(){this.set("_dialog_prompt","retry task "+this.task_id),this.$.prompt.op en()},_rawOutput:function(t,e){return t?t:"PENDING"===e.state||"RUNNING"===e.sta te?"[No output yet]":"[No output received]"},_refresh:function(){this.$.data.rel oad()},_requestUpdated:function(t){this._noMilo(t)&&this.set("_show_raw",1)},_so ftRefresh:function(){if(!this._result||"RUNNING"===this._result.state||"PENDING" ===this._result.state){this.$.data.reload();var t=this.$$("iframe");t&&(t.src=th is._getDisplayServerLink(this._server_details.display_server_url_template,this.t ask_id))}},_retryTask:function(){if(!this._request)return void sk.errorMessage(" Task not yet loaded",3e3);var t={expiration_secs:this._request.expiration_secs,n ame:this._request.name+" (retry)",parent_task_id:this._request.parent_task_id,pr iority:this._request.priority,properties:this._request.properties,tags:this._req uest.tags,user:this._profile.email,service_account:this._request.service_account };swarming.postWithToast("/api/swarming/v1/tasks/new","Retrying task "+this.task _id,this._auth_headers,t).then(function(t){t=JSON.parse(t),t&&t.task_id&&this.se t("task_id",t.task_id)}.bind(this),function(t){console.log("Task could not be re tried",t)})},_rowspan:function(t){return t=t||[],t.length+1},_supportsMilo:funct ion(t,e){return!e&&t&&this._tag(t,"allow_milo")},_toggleDetails:function(){this. set("_request_detail",!this._request_detail)},_tag:function(t,e){if(t&&t.tagMap) return t.tagMap[e]},_wasPickedUp:function(t){return t&&t.state!==this.PENDING&&t .state!==this.CANCELED&&t.state!=this.EXPIRED},_wasNotPickedUp:function(t){retur n t&&!this._wasPickedUp(t)}})}()</script> </dom-module> </div></body></html> 965 })(); </script> </dom-module><dom-module id="interval-timer" assetpath="/res/i mp/common/"> <script>!function(){Polymer({is:"interval-timer",properties:{period :{type:Number,value:-1,observer:"_periodChanged"}},_periodChanged:function(e){th is._timeout&&window.clearTimeout(this._timeout),e>0&&(this._timeout=window.setTi meout(function(){this.fire("trigger"),this._periodChanged(e)}.bind(this),1e3*e)) }})}()</script> </dom-module> <dom-module id="task-page-data" assetpath="/res/im p/taskpage/"> <script>!function(){var t,e=400,s=["abandoned_ts","completed_ts"," created_ts","modified_ts","started_ts"];Polymer({is:"task-page-data",behaviors:[ SwarmingBehaviors.CommonBehavior,SwarmingBehaviors.TaskBehavior],properties:{aut h_headers:{type:Object},task_id:{type:String},busy:{type:Boolean,computed:"_or(_ busy1,_busy2,_busy3)",notify:!0},request:{type:Object,computed:"_parseRequest(_r equest)",notify:!0},result:{type:Object,computed:"_parseResult(_result)",notify: !0},stdout:{type:String,computed:"_parseStdout(_stdout)",notify:!0},task_exists: {type:Boolean,value:!0,notify:!0},_busy1:{type:Boolean,value:!1},_busy2:{type:Bo olean,value:!1},_busy3:{type:Boolean,value:!1},_request:{type:Object},_result:{t ype:Object},_stdout:{type:Object}},observers:["reload(auth_headers,task_id)"],re load:function(){if(!this.task_id||!this.auth_headers)return void console.log("ta sk_id and auth_headers can't be empty");t&&this.cancelAsync(t);var s="/api/swarm ing/v1/task/"+this.task_id;t=this.async(function(){t=void 0;var e=this._getJsonA sync("_request",s+"/request","_busy1",this.auth_headers);e.then(function(){this. set("task_exists",!0)}.bind(this)).catch(function(t){404===t.status?this.set("ta sk_exists",!1):sk.errorMessage("Http response: "+(t.status||" ")+" "+t.response) }.bind(this)),this._getJsonAsync("_result",s+"/result?include_performance_stats= true","_busy2",this.auth_headers),this.reloadStdout()},e)},_parseRequest:functio n(t){return t?(t.tagMap={},t.tags=t.tags||[],t.tags.forEach(function(e){var s=e. split(":",1),a=s[0],u=e.substring(a.length+1);t.tagMap[a]=u}),s.forEach(function (e){t[e]&&(t[e]=new Date(t[e]),t["human_"+e]=sk.human.localeTime(t[e]))}),t):{}} ,_parseResult:function(t){if(!t)return{};var e=new Date;return s.forEach(functio n(e){t[e]&&(t[e]=new Date(t[e]),t["human_"+e]=sk.human.localeTime(t[e]))}),!t.du ration&&t.state===this.RUNNING&&t.started_ts&&(t.duration=(e-t.started_ts)/1e3), t.duration&&(t.human_duration=this._humanDuration(t.duration)),t},_parseStdout:f unction(t){return t&&t.output?t.output:""},reloadStdout:function(){this._getJson Async("_stdout","/api/swarming/v1/task/"+this.task_id+"/stdout","_busy3",this.au th_headers)}})}()</script> </dom-module><dom-module id="task-disambiguation" ass etpath="/res/imp/taskpage/"> <template> <style include="swarming-app-style singl e-page-style task-style"></style> <table> <thead> <tr> <th>Try ID</th> <th>Bot I D</th> <th>Status</th> </tr> </thead> <tbody> <template id="result_list" is="dom -repeat" items="[[_results]]" as="result" observe="task_id bot_id state"> <tr> < td> <a href$="[[_taskLink(result.task_id,'true')]]"> [[result.task_id]] </a> </t d> <td> <a href$="[[_botLink(result.bot_id)]]"> [[result.bot_id]] </a> </td> <td class$="[[_stateClass(result)]]">[[state(result)]]</td> </tr> </template> </tbo dy> </table> </template> <script>Polymer({is:"task-disambiguation",behaviors:[Sw armingBehaviors.CommonBehavior,SwarmingBehaviors.TaskBehavior],properties:{auth_ headers:{type:Object},summary_result:{type:Object},task_id:{type:String},busy:{t ype:Boolean,value:!1,notify:!0},_busyArr:{type:Array,value:function(){return[]}} ,_results:{type:Array,value:function(){return[]}}},observers:["_fetchRest(auth_h eaders,task_id,summary_result)","_computeBusy(_busyArr.*)"],_computeBusy:functio n(){for(var s=0;s<this._busyArr.length;s++)if(this._busyArr[s].status)return!0;r eturn!1},_fetchRest:function(s,r,t){if(s&&r&&t){var e=t.try_number;this.set("_bu syArr",[]),this.set("_results",[]);for(var u=r.substring(0,r.length-1),i="/api/s warming/v1/task/",a=0;a<e-1;a++){var n=u+(a+1);this.splice("_busyArr",a,0,{}),th is.splice("_results",a,0,{task_id:n}),this._getJsonAsyncArr(a,"_results",i+n+"/r esult","_busyArr",s)}t.task_id=u+e,this.splice("_results",e-1,1,t)}}})</script> </dom-module><dom-module id="task-page" assetpath="/res/imp/taskpage/"> <templat e> <style include="iron-flex iron-flex-alignment swarming-app-style single-page- style task-style">.milo{width:calc(100% - 11px);height:2000px}.left{min-width:55 0px}.right{min-width:500px;margin-top:8px}.expand{min-width:3em;vertical-align:m iddle;padding:.5em}.code{font-family:monospace}.stdout{white-space:pre-line;padd ing:2px}.refresh_input{padding:0 5px}.reproduce{margin-left:5px}.tabbed{border:3 px solid #1F78B4;margin-left:5px;min-height:80vh}</style> <url-param name="id" v alue="{{task_id}}"> </url-param> <url-param name="try_detail" value="{{_try_deta il}}"> </url-param> <url-param name="request_detail" value="{{_request_detail}}" > </url-param> <url-param name="show_raw" value="{{_show_raw}}"> </url-param> <u rl-param name="refresh" value="{{_refresh_interval}}" default_value="10"> </url- param> <swarming-app client_id="[[client_id]]" auth_headers="{{_auth_headers}}" permissions="{{_permissions}}" profile="{{_profile}}" server_details="{{_server_ details}}" signed_in="{{_signed_in}}" busy="[[_or(_busy1,busy2)]]" name="Swarmin g Task Page"> <h2 hidden$="[[_signed_in]]">You must sign in to see anything usef ul.</h2> <div hidden$="[[_not(_signed_in)]]"> <task-page-data id="data" auth_hea ders="[[_auth_headers]]" task_id="[[task_id]]" busy="{{_busy1}}" request="{{_req uest}}" result="{{_result}}" stdout="{{_stdout}}" task_exists="{{_task_exists}}" > </task-page-data> <div class="horizontal layout wrap"> <div class="left flex"> <div class="horizontal layout"> <paper-input class="id_input" label="Task id" v alue="{{task_id}}"></paper-input> <button on-click="_refresh"> <iron-icon class= "refresh" icon="icons:refresh"></iron-icon> </button> <button on-click="_promptR etry">Retry</button> <template is="dom-if" if="[[_canCancelTask(_result,_permiss ions)]]"> <button on-click="_promptCancel">Cancel</button> </template> </div> <h 2 hidden$="[[_task_exists]]">Task not found.</h2> <template is="dom-if" if="[[_d isambiguate(task_id,_result)]]"> <h2>Displaying a summary for a task with multip le tries</h2> <task-disambiguation busy="{{busy2}}" auth_headers="[[_auth_header s]]" task_id="[[task_id]]" summary_result="[[_result]]"> </task-disambiguation> </template> <table hidden$="[[_not(_task_exists)]]"> <tbody><tr> <td>Name</td> < td>[[_request.name]]</td> </tr> <tr> <td>State</td> <td class$="[[_stateClass(_r esult)]]">[[state(_result)]]</td> </tr> <tr> <td>Created</td> <td title$="[[_req uest.created_ts]]">[[_request.human_created_ts]]</td> </tr> <template is="dom-if " if="[[_wasPickedUp(_result)]]"> <tr> <td>Started</td> <td title$="[[_result.st arted_ts]]">[[_result.human_started_ts]]</td> </tr> </template> <template is="do m-if" if="[[_wasNotPickedUp(_result)]]"> <tr> <td>Expires</td> <td>[[_expires(_r equest)]]</td> </tr> </template> <template is="dom-if" if="[[_result.human_compl eted_ts]]"> <tr> <td>Completed</td> <td title$="[[_result.completed_ts]]">[[_res ult.human_completed_ts]]</td> </tr> </template> <template is="dom-if" if="[[_res ult.human_abandoned_ts]]"> <tr> <td>Abandoned</td> <td title$="[[_result.abandon ed_ts]]">[[_result.human_abandoned_ts]]</td> </tr> </template> <tr> <td>Last Upd ated</td> <td title$="[[_result.modified_ts]]">[[_result.human_modified_ts]]</td > </tr> <template is="dom-if" if="[[_result.deduped_from]]"> <tr> <td><b>Deduped from</b></td> <td> <a href$="[[_taskLink(_result.deduped_from)]]"> [[_result.de duped_from]] </a> </td> </tr> </template> <tr> <td>Pending Time</td> <td>[[_pend ing(_result)]]</td> </tr> <tr> <td>Duration</td> <td>[[_result.human_duration]]< /td> </tr> <tr> <td>Priority</td> <td>[[_request.priority]]</td> </tr> <tr> <td> User</td> <td>[[_request.user]]</td> </tr> <tr> <td>Authenticated</td> <td>[[_re quest.authenticated]]</td> </tr> <template is="dom-if" if="[[_request.service_ac count]]"> <tr> <td>Service Account</td> <td>[[_request.service_account]]</td> </ tr> </template> <template is="dom-if" if="[[_request.properties.secret_bytes]]"> <tr> <td>Secret Bytes</td> <td>[[_request.properties.secret_bytes]]</td> </tr> </template> <template is="dom-if" if="[[_request.parent_task_id]]"> <tr> <td>Par ent Task</td> <td> <a href$="[[_taskLink(_request.parent_task_id)]]">[[_request. parent_task_id]]</a> </td> </tr> </template> <tr> <td rowspan$="[[_rowspan(_requ est.properties.dimensions)]]"> <a title="The list of bots that matches the list of dimensions" href$="[[_botListLink(_request.properties.dimensions)]]"> Request ed Dimensions </a> </td> </tr> <template is="dom-repeat" items="{{_request.prope rties.dimensions}}" as="dimension"> <tr> <td><b>[[dimension.key]]:</b> [[_alias( dimension)]]</td> </tr> </template> <tr> <td>Isolated Inputs</td> <td> <a href$= "[[_isolateLink(_request.properties.inputs_ref)]]"> [[_request.properties.inputs _ref.isolated]] </a> </td> </tr> <template is="dom-if" if="[[_request.properties .outputs.length]]"> <tr> <td rowspan$="[[_rowspan(_request.properties.outputs)]] ">Expected outputs</td> </tr> <template is="dom-repeat" items="{{_request.proper ties.outputs}}" as="output"> <tr> <td>[[output]]</td> </tr> </template> </templa te> <template is="dom-if" if="[[_not(_request_detail)]]"> <tr> <td>More Details< /td> <td> <button on-click="_toggleDetails"> <iron-icon icon="icons:add-circle-o utline"></iron-icon> </button> </td> </tr> </template> <template is="dom-if" if= "[[_request_detail]]"> <tr> <td>Hide Details</td> <td> <button on-click="_toggle Details"> <iron-icon icon="icons:remove-circle-outline"></iron-icon> </button> < /td> </tr> </template> <template is="dom-if" if="[[_request_detail]]"> <tr> <td> Extra Args</td> <td class="code">[[_extraArgs(_request)]]</td> </tr> <tr> <td ro wspan$="[[_rowspan(_request.tags)]]">Tags</td> </tr> <template is="dom-repeat" i tems="{{_request.tags}}" as="tag"> <tr> <td>[[tag]]</td> </tr> </template> <tr> <td>Execution timeout</td> <td>[[_humanDuration(_request.properties.execution_ti meout_secs)]]</td> </tr> <tr> <td>I/O timeout</td> <td>[[_humanDuration(_request .properties.io_timeout_secs)]]</td> </tr> <tr> <td>Grace period</td> <td>[[_huma nDuration(_request.properties.grace_period_secs)]]</td> </tr> <tr> <td>CIPD serv er</td> <td> <a href$="[[_request.properties.cipd_input.server]]"> [[_request.pr operties.cipd_input.server]] </a> </td> </tr> <tr> <td>CIPD version</td> <td>[[_ request.properties.cipd_input.client_package.version]]</td> </tr> <template is=" dom-if" if="[[_wasPickedUp(_result)]]"> <tr> <td>CIPD package name</td> <td>[[_r esult.cipd_pins.client_package.package_name]]</td> </tr> </template> <tr hidden$ ="[[_not(_request.properties.cipd_input)]]"> <td rowspan$="[[_cipdRowspan(_reque st,_result)]]">CIPD packages</td> </tr> <template is="dom-repeat" items="[[_cipd Packages(_request,_result)]]" as="cipd"> <tr> <td>[[cipd.path]]/</td> </tr> <tr> <td><b>Requested:</b>[[cipd.requested]]</td> </tr> <tr hidden$="[[_wasNotPicked Up(_result)]]"> <td><b>Actual:</b>[[cipd.actual]]</td> </tr> </template> <tr hid den$="[[_empty(_request.properties.caches)]]"> <td rowspan$="[[_rowspan(_request .properties.caches)]]">Named caches</td> </tr> <template is="dom-repeat" items=" [[_request.properties.caches]]" as="cache"> <tr> <td><span>[[cache.name]]</span> :<span>[[cache.path]]</span></td> </tr> </template> </template> </tbody></table> <div class="title" hidden$="[[_not(_task_exists)]]">Task Execution</div> <templ ate is="dom-if" if="[[_wasPickedUp(_result)]]"> <table hidden$="[[_not(_task_exi sts)]]"> <tbody><tr> <td>Bot assigned to task</td> <td><a href$="[[_botLink(_res ult.bot_id)]]">[[_result.bot_id]]</a></td> </tr> <tr> <td rowspan$="[[_rowspan(_ result.bot_dimensions)]]"> <a>Bot Dimensions</a> </td> </tr> <template is="dom-r epeat" items="[[_result.bot_dimensions]]" as="dimension"> <tr> <td><b>[[dimensio n.key]]:</b> [[_alias(dimension)]]</td> </tr> </template> <tr> <td>Exit code</td > <td>[[_result.exit_code]]</td> </tr> <tr> <td>Try number</td> <td>[[_result.tr y_number]]</td> </tr> <tr> <td>Failure</td> <td class$="[[_failureClass(_result. failure)]]">[[_result.failure]]</td> </tr> <tr> <td>Internal Failure</td> <td cl ass$="[[_internalClass(_result.internal_failure)]]">[[_result.internal_failure]] </td> </tr> <tr> <td>Isolated Outputs</td> <td> <a href$="[[_isolateLink(_result .outputs_ref)]]"> [[_result.outputs_ref.isolated]] </a> </td> </tr> <tr> <td>Bot version</td> <td>[[_result.bot_version]]</td> </tr> <tr> <td>Server version</td > <td>[[_result.server_versions]]</td> </tr> </tbody></table> </template> <templ ate is="dom-if" if="[[_wasNotPickedUp(_result)]]"> This space left blank until a bot is assigned to the task. </template> <template is="dom-if" if="[[_result.pe rformance_stats]]"> <div class="title">Performance Stats</div> <table> <tbody><t r> <td title="This includes time taken to download inputs, isolate outputs, and setup CIPD">Total Overhead</td> <td>[[_humanDuration(_result.performance_stats.b ot_overhead)]]</td> </tr> <tr> <td>Downloading Inputs From Isolate</td> <td>[[_h umanDuration(_result.performance_stats.isolated_download.duration)]]</td> </tr> <tr> <td>Uploading Outputs To Isolate</td> <td>[[_humanDuration(_result.performa nce_stats.isolated_upload.duration)]]</td> </tr> <tr> <td>Initial bot cache</td> <td>[[_result.performance_stats.isolated_download.initial_number_items]] items; [[_bytes(_result.performance_stats.isolated_download.initial_size)]]</td> </tr> </tbody></table> </template> <div class="title">Reproducing the task locally</d iv> <div class="reproduce"> <div>Download inputs files into directory <i>foo</i> :</div> <div class="code"> python isolateserver.py download -I [[_request.proper ties.inputs_ref.isolatedserver]] --namespace [[_request.properties.inputs_ref.na mespace]] -s [[_request.properties.inputs_ref.isolated]] --target foo</div> <br> <div>Run this task locally:</div> <div class="code"> python swarming.py reprodu ce -S [[_host_url]] [[task_id]]</div> <br> <div>Download output results into dir ectory <i>foo</i>:</div> <div class="code"> python swarming.py collect -S [[_hos t_url]] --task-output-dir=foo [[task_id]]</div> <br> <div>Looking for <i>swarmin g.py</i>?</div> <div class="code"> git clone https://github.com/luci/client-py</ div> </div> </div> <div class="flex right" hidden$="[[_not(_task_exists)]]"> <di v class="horizontal layout"> <div class="tabs"> <paper-tabs selected="{{_show_ra w}}" no-bar=""> <paper-tab disabled$="[[_noMilo(_request)]]">Milo Output</paper- tab> <paper-tab>Raw Output</paper-tab> </paper-tabs> </div> <paper-input class=" refresh_input" label="Refresh Interval (seconds)" value="{{_refresh_interval}}" title="How often to refresh all information about the task" auto-validate="" min ="1" max="1000" pattern="[0-9]+"> </paper-input> </div> <template is="dom-if" if ="[[_supportsMilo(_request,_show_raw)]]"> <div class="milo tabbed" hidden$="[[_i sSummaryLink(task_id)]]"> Milo results are only generated for task summaires, th at is, tasks whose ids end in 0. Tasks ending in 1 or 2 represent possible retri es of tasks. See <a href="//goo.gl/LE4rwV">the docs</a> for more. </div> <iframe id="miloFrame" class="milo tabbed" src$="[[_getDisplayServerLink(_server_detail s.display_server_url_template,task_id)]]"></iframe> </template> <template is="do m-if" if="[[_show_raw]]"> <div class="code stdout tabbed">[[_rawOutput(_stdout,_ result)]]</div> </template> </div> </div> </div> </swarming-app> <paper-dialog i d="prompt" modal="" on-iron-overlay-closed="_promptClosed"> <h2>Are you sure?</h 2> <div>Are you sure you want to [[_dialog_prompt]]?</div> <div class="buttons"> <paper-button dialog-dismiss="" autofocus="">No</paper-button> <paper-button di alog-confirm="">Yes</paper-button> </div> </paper-dialog> <interval-timer period ="[[_refresh_interval]]" on-trigger="_softRefresh"> </interval-timer> </template > <script>!function(){Polymer({is:"task-page",behaviors:[SwarmingBehaviors.Commo nBehavior,SwarmingBehaviors.TaskBehavior],properties:{task_id:{type:String},clie nt_id:{type:String},_dialog_prompt:{type:String,value:""},_host_url:{type:String ,value:function(){return window.location.hostname}},_refresh_interval:{type:Numb er},_request:{type:Object,observer:"_requestUpdated"},_request_detail:{type:Bool ean},_result:{type:Object},_server_details:{type:Object},_stdout:{type:String}}, _alias:function(t){var e=t.value;return Array.isArray(e)||(e=[e]),swarming.alias .has(t.key)&&e.forEach(function(i,s){e[s]=swarming.alias.apply(i,t.key)}),e.join (" | ")},_bytes:function(t){return sk.human.bytes(t)},_canCancelTask:function(t, e){return t&&"PENDING"===t.state&&e.cancel_task},_cancelTask:function(){var t="/ api/swarming/v1/task/"+this.task_id+"/cancel";swarming.postWithToast(t,"Cancelin g task "+this.task_id,this._auth_headers)},_cipdRowspan:function(t,e){if(!t||!t. properties||!t.properties.cipd_input)return 0;var i=(t.properties.cipd_input.pac kages||[]).length;return i*=e&&e.cipd_pins&&e.cipd_pins.packages?3:2,i+1},_cipdP ackages:function(t,e){if(!t||!t.properties||!t.properties.cipd_input)return[];va r i=t.properties.cipd_input.packages||[],s=e&&e.cipd_pins&&e.cipd_pins.packages| |[];return i.forEach(function(t){t.requested=t.package_name+":"+t.version,s.forE ach(function(e){e.path===t.path&&(t.actual=e.package_name+":"+e.version)})}),i}, _disambiguate:function(t,e){return!(!t.endsWith("0")||!e)&&e.try_number>1},_empt y:function(t){return!t||0==t.length},_expires:function(t){var e=parseInt(t.expir ation_secs);return e?sk.human.localeTime(new Date(t.created_ts.getTime()+1e3*e)) :t.expiration_secs+" seconds from created time"},_extraArgs:function(t){if(!t||! t.properties)return"";var e=t.properties.extra_args||[];return e.join(" ")},_fai lureClass:function(t){return t?"failed_task":""},_getDisplayServerLink:function( t,e){if(t)return t.replace("%s",e)},_internalClass:function(t){return t?"excepti on":""},_isolateLink:function(t){if(t&&t.isolatedserver)return t.isolatedserver+ "/browse?namespace="+t.namespace+"&hash="+t.isolated},_isSummaryLink:function(t) {return t&&t.endsWith(0)},_noMilo:function(t){return!this._tag(t,"allow_milo")}, _pending:function(t){if(!t.created_ts)return"";var e=t.started_ts||t.abandoned_t s||new Date;return e<=t.created_ts?"0s":this._timeDiffExact(t.created_ts,e)},_pr omptClosed:function(t){t.detail.confirmed&&(this._dialog_prompt.startsWith("canc el")?this._cancelTask():this._retryTask())},_promptCancel:function(){this.set("_ dialog_prompt","cancel task "+this.task_id),this.$.prompt.open()},_promptRetry:f unction(){this.set("_dialog_prompt","retry task "+this.task_id),this.$.prompt.op en()},_rawOutput:function(t,e){return t?t:"PENDING"===e.state||"RUNNING"===e.sta te?"[No output yet]":"[No output received]"},_refresh:function(){this.$.data.rel oad()},_requestUpdated:function(t){this._noMilo(t)&&this.set("_show_raw",1)},_so ftRefresh:function(){if(!this._result||"RUNNING"===this._result.state||"PENDING" ===this._result.state){this.$.data.reload();var t=this.$$("iframe");t&&(t.src=th is._getDisplayServerLink(this._server_details.display_server_url_template,this.t ask_id))}},_retryTask:function(){if(!this._request)return void sk.errorMessage(" Task not yet loaded",3e3);var t={expiration_secs:this._request.expiration_secs,n ame:this._request.name+" (retry)",parent_task_id:this._request.parent_task_id,pr iority:this._request.priority,properties:this._request.properties,tags:this._req uest.tags,user:this._profile.email,service_account:this._request.service_account };swarming.postWithToast("/api/swarming/v1/tasks/new","Retrying task "+this.task _id,this._auth_headers,t).then(function(t){t=JSON.parse(t),t&&t.task_id&&this.se t("task_id",t.task_id)}.bind(this),function(t){console.log("Task could not be re tried",t)})},_rowspan:function(t){return t=t||[],t.length+1},_supportsMilo:funct ion(t,e){return!e&&t&&this._tag(t,"allow_milo")},_toggleDetails:function(){this. set("_request_detail",!this._request_detail)},_tag:function(t,e){if(t&&t.tagMap) return t.tagMap[e]},_wasPickedUp:function(t){return t&&t.state!==this.PENDING&&t .state!==this.CANCELED&&t.state!=this.EXPIRED},_wasNotPickedUp:function(t){retur n t&&!this._wasPickedUp(t)}})}()</script> </dom-module> </div></body></html>
OLDNEW
« no previous file with comments | « no previous file | appengine/swarming/ui/res/imp/botlist/bot-filters.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698