6 technologies4 categories
thrivepatientportal.com uses Moment.js, Microsoft 365, and Underscore.js and 3 other technologies.
Tech Stack Highlights
Frameworks & Languages1
Exhibit
JavaScript graphics
75%
1 evidence signal
Script
data:text/javascript;charset=utf-8,%0A(function%20()%20%7B%0A%20%20'use%20strict'%3B%0A%0A%20%20var%20Utility%20%3D%20%7B%0A%20%20%20%20distance%3A%20function%20distance(x1%2C%20y1%2C%20x2%2C%20y2)%20%7B%0A%20%20%20%20%20%20var%20xDelta%20%3D%20x1%20-%20x2%3B%0A%20%20%20%20%20%20var%20yDelta%20%3D%20y1%20-%20y2%3B%0A%0A%20%20%20%20%20%20return%20Math.sqrt(xDelta%20*%20xDelta%20%2B%20yDelta%20*%20yDelta)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20now%3A%20window.performance%20%26%26%20window.performance.now%20%3F%20window.performance.now.bind(window.performance)%20%3A%20Date.now%0A%20%20%7D%3B%0A%0A%20%20%2F**%0A%20%20%20*%20%40param%20%7BHTMLElement%7D%20element%0A%20%20%20*%20%40constructor%0A%20%20%20*%2F%0A%20%20function%20ElementMetrics(element)%20%7B%0A%20%20%20%20this.element%20%3D%20element%3B%0A%20%20%20%20this.width%20%3D%20this.boundingRect.width%3B%0A%20%20%20%20this.height%20%3D%20this.boundingRect.height%3B%0A%0A%20%20%20%20this.size%20%3D%20Math.max(this.width%2C%20this.height)%3B%0A%20%20%7D%0A%0A%20%20ElementMetrics.prototype%20%3D%20%7B%0A%20%20%20%20get%20boundingRect()%20%7B%0A%20%20%20%20%20%20return%20this.element.getBoundingClientRect()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20furthestCornerDistanceFrom%3A%20function%20furthestCornerDistanceFrom(x%2C%20y)%20%7B%0A%20%20%20%20%20%20var%20topLeft%20%3D%20Utility.distance(x%2C%20y%2C%200%2C%200)%3B%0A%20%20%20%20%20%20var%20topRight%20%3D%20Utility.distance(x%2C%20y%2C%20this.width%2C%200)%3B%0A%20%20%20%20%20%20var%20bottomLeft%20%3D%20Utility.distance(x%2C%20y%2C%200%2C%20this.height)%3B%0A%20%20%20%20%20%20var%20bottomRight%20%3D%20Utility.distance(x%2C%20y%2C%20this.width%2C%20this.height)%3B%0A%0A%20%20%20%20%20%20return%20Math.max(topLeft%2C%20topRight%2C%20bottomLeft%2C%20bottomRight)%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20%2F**%0A%20%20%20*%20%40param%20%7BHTMLElement%7D%20element%0A%20%20%20*%20%40constructor%0A%20%20%20*%2F%0A%20%20function%20Ripple(element)%20%7B%0A%20%20%20%20this.element%20%3D%20element%3B%0A%20%20%20%20this.color%20%3D%20window.getComputedStyle(element).color%3B%0A%0A%20%20%20%20this.wave%20%3D%20document.createElement('div')%3B%0A%20%20%20%20this.waveContainer%20%3D%20document.createElement('div')%3B%0A%20%20%20%20this.wave.style.backgroundColor%20%3D%20this.color%3B%0A%20%20%20%20this.wave.classList.add('wave')%3B%0A%20%20%20%20this.waveContainer.classList.add('wave-container')%3B%0A%20%20%20%20Polymer.dom(this.waveContainer).appendChild(this.wave)%3B%0A%0A%20%20%20%20this.resetInteractionState()%3B%0A%20%20%7D%0A%0A%20%20Ripple.MAX_RADIUS%20%3D%20300%3B%0A%0A%20%20Ripple.prototype%20%3D%20%7B%0A%20%20%20%20get%20recenters()%20%7B%0A%20%20%20%20%20%20return%20this.element.recenters%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20center()%20%7B%0A%20%20%20%20%20%20return%20this.element.center%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20mouseDownElapsed()%20%7B%0A%20%20%20%20%20%20var%20elapsed%3B%0A%0A%20%20%20%20%20%20if%20(!this.mouseDownStart)%20%7B%0A%20%20%20%20%20%20%20%20return%200%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20elapsed%20%3D%20Utility.now()%20-%20this.mouseDownStart%3B%0A%0A%20%20%20%20%20%20if%20(this.mouseUpStart)%20%7B%0A%20%20%20%20%20%20%20%20elapsed%20-%3D%20this.mouseUpElapsed%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20elapsed%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20mouseUpElapsed()%20%7B%0A%20%20%20%20%20%20return%20this.mouseUpStart%20%3F%20Utility.now()%20-%20this.mouseUpStart%20%3A%200%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20mouseDownElapsedSeconds()%20%7B%0A%20%20%20%20%20%20return%20this.mouseDownElapsed%20%2F%201000%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20mouseUpElapsedSeconds()%20%7B%0A%20%20%20%20%20%20return%20this.mouseUpElapsed%20%2F%201000%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20mouseInteractionSeconds()%20%7B%0A%20%20%20%20%20%20return%20this.mouseDownElapsedSeconds%20%2B%20this.mouseUpElapsedSeconds%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20initialOpacity()%20%7B%0A%20%20%20%20%20%20return%20this.element.initialOpacity%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20opacityDecayVelocity()%20%7B%0A%20%20%20%20%20%20return%20this.element.opacityDecayVelocity%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20radius()%20%7B%0A%20%20%20%20%20%20var%20width2%20%3D%20this.containerMetrics.width%20*%20this.containerMetrics.width%3B%0A%20%20%20%20%20%20var%20height2%20%3D%20this.containerMetrics.height%20*%20this.containerMetrics.height%3B%0A%20%20%20%20%20%20var%20waveRadius%20%3D%20Math.min(Math.sqrt(width2%20%2B%20height2)%2C%20Ripple.MAX_RADIUS)%20*%201.1%20%2B%205%3B%0A%0A%20%20%20%20%20%20var%20duration%20%3D%201.1%20-%200.2%20*%20(waveRadius%20%2F%20Ripple.MAX_RADIUS)%3B%0A%20%20%20%20%20%20var%20timeNow%20%3D%20this.mouseInteractionSeconds%20%2F%20duration%3B%0A%20%20%20%20%20%20var%20size%20%3D%20waveRadius%20*%20(1%20-%20Math.pow(80%2C%20-timeNow))%3B%0A%0A%20%20%20%20%20%20return%20Math.abs(size)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20opacity()%20%7B%0A%20%20%20%20%20%20if%20(!this.mouseUpStart)%20%7B%0A%20%20%20%20%20%20%20%20return%20this.initialOpacity%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20Math.max(0%2C%20this.initialOpacity%20-%20this.mouseUpElapsedSeconds%20*%20this.opacityDecayVelocity)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20outerOpacity()%20%7B%0A%20%20%20%20%20%20%2F%2F%20Linear%20increase%20in%20background%20opacity%2C%20capped%20at%20the%20opacity%0A%20%20%20%20%20%20%2F%2F%20of%20the%20wavefront%20(waveOpacity).%0A%20%20%20%20%20%20var%20outerOpacity%20%3D%20this.mouseUpElapsedSeconds%20*%200.3%3B%0A%20%20%20%20%20%20var%20waveOpacity%20%3D%20this.opacity%3B%0A%0A%20%20%20%20%20%20return%20Math.max(0%2C%20Math.min(outerOpacity%2C%20waveOpacity))%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20isOpacityFullyDecayed()%20%7B%0A%20%20%20%20%20%20return%20this.opacity%20%3C%200.01%20%26%26%20this.radius%20%3E%3D%20Math.min(this.maxRadius%2C%20Ripple.MAX_RADIUS)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20isRestingAtMaxRadius()%20%7B%0A%20%20%20%20%20%20return%20this.opacity%20%3E%3D%20this.initialOpacity%20%26%26%20this.radius%20%3E%3D%20Math.min(this.maxRadius%2C%20Ripple.MAX_RADIUS)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20isAnimationComplete()%20%7B%0A%20%20%20%20%20%20return%20this.mouseUpStart%20%3F%20this.isOpacityFullyDecayed%20%3A%20this.isRestingAtMaxRadius%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20translationFraction()%20%7B%0A%20%20%20%20%20%20return%20Math.min(1%2C%20this.radius%20%2F%20this.containerMetrics.size%20*%202%20%2F%20Math.sqrt(2))%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20xNow()%20%7B%0A%20%20%20%20%20%20if%20(this.xEnd)%20%7B%0A%20%20%20%20%20%20%20%20return%20this.xStart%20%2B%20this.translationFraction%20*%20(this.xEnd%20-%20this.xStart)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20this.xStart%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20yNow()%20%7B%0A%20%20%20%20%20%20if%20(this.yEnd)%20%7B%0A%20%20%20%20%20%20%20%20return%20this.yStart%20%2B%20this.translationFraction%20*%20(this.yEnd%20-%20this.yStart)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20this.yStart%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20isMouseDown()%20%7B%0A%20%20%20%20%20%20return%20this.mouseDownStart%20%26%26%20!this.mouseUpStart%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20resetInteractionState%3A%20function%20resetInteractionState()%20%7B%0A%20%20%20%20%20%20this.maxRadius%20%3D%200%3B%0A%20%20%20%20%20%20this.mouseDownStart%20%3D%200%3B%0A%20%20%20%20%20%20this.mouseUpStart%20%3D%200%3B%0A%0A%20%20%20%20%20%20this.xStart%20%3D%200%3B%0A%20%20%20%20%20%20this.yStart%20%3D%200%3B%0A%20%20%20%20%20%20this.xEnd%20%3D%200%3B%0A%20%20%20%20%20%20this.yEnd%20%3D%200%3B%0A%20%20%20%20%20%20this.slideDistance%20%3D%200%3B%0A%0A%20%20%20%20%20%20this.containerMetrics%20%3D%20new%20ElementMetrics(this.element)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20draw%3A%20function%20draw()%20%7B%0A%20%20%20%20%20%20var%20scale%3B%0A%20%20%20%20%20%20var%20dx%3B%0A%20%20%20%20%20%20var%20dy%3B%0A%0A%20%20%20%20%20%20this.wave.style.opacity%20%3D%20this.opacity%3B%0A%0A%20%20%20%20%20%20scale%20%3D%20this.radius%20%2F%20(this.containerMetrics.size%20%2F%202)%3B%0A%20%20%20%20%20%20dx%20%3D%20this.xNow%20-%20this.containerMetrics.width%20%2F%202%3B%0A%20%20%20%20%20%20dy%20%3D%20this.yNow%20-%20this.containerMetrics.height%20%2F%202%3B%0A%0A%20%20%20%20%20%20%2F%2F%202d%20transform%20for%20safari%20because%20of%20border-radius%20and%20overflow%3Ahidden%0A%20%20%20%20%20%20%2F%2F%20clipping%20bug.%20https%3A%2F%2Fbugs.webkit.org%2Fshow_bug.cgi%3Fid%3D98538%0A%20%20%20%20%20%20this.waveContainer.style.webkitTransform%20%3D%20'translate('%20%2B%20dx%20%2B%20'px%2C%20'%20%2B%20dy%20%2B%20'px)'%3B%0A%20%20%20%20%20%20this.waveContainer.style.transform%20%3D%20'translate3d('%20%2B%20dx%20%2B%20'px%2C%20'%20%2B%20dy%20%2B%20'px%2C%200)'%3B%0A%20%20%20%20%20%20this.wave.style.webkitTransform%20%3D%20'scale('%20%2B%20scale%20%2B%20'%2C'%20%2B%20scale%20%2B%20')'%3B%0A%20%20%20%20%20%20this.wave.style.transform%20%3D%20'scale3d('%20%2B%20scale%20%2B%20'%2C'%20%2B%20scale%20%2B%20'%2C1)'%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%20%40param%20%7BEvent%3D%7D%20event%20*%2F%0A%20%20%20%20downAction%3A%20function%20downAction(event)%20%7B%0A%20%20%20%20%20%20var%20xCenter%20%3D%20this.containerMetrics.width%20%2F%202%3B%0A%20%20%20%20%20%20var%20yCenter%20%3D%20this.containerMetrics.height%20%2F%202%3B%0A%0A%20%20%20%20%20%20this.resetInteractionState()%3B%0A%20%20%20%20%20%20this.mouseDownStart%20%3D%20Utility.now()%3B%0A%0A%20%20%20%20%20%20if%20(this.center)%20%7B%0A%20%20%20%20%20%20%20%20this.xStart%20%3D%20xCenter%3B%0A%20%20%20%20%20%20%20%20this.yStart%20%3D%20yCenter%3B%0A%20%20%20%20%20%20%20%20this.slideDistance%20%3D%20Utility.distance(this.xStart%2C%20this.yStart%2C%20this.xEnd%2C%20this.yEnd)%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20this.xStart%20%3D%20event%20%3F%20event.detail.x%20-%20this.containerMetrics.boundingRect.left%20%3A%20this.containerMetrics.width%20%2F%202%3B%0A%20%20%20%20%20%20%20%20this.yStart%20%3D%20event%20%3F%20event.detail.y%20-%20this.containerMetrics.boundingRect.top%20%3A%20this.containerMetrics.height%20%2F%202%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20(this.recenters)%20%7B%0A%20%20%20%20%20%20%20%20this.xEnd%20%3D%20xCenter%3B%0A%20%20%20%20%20%20%20%20this.yEnd%20%3D%20yCenter%3B%0A%20%20%20%20%20%20%20%20this.slideDistance%20%3D%20Utility.distance(this.xStart%2C%20this.yStart%2C%20this.xEnd%2C%20this.yEnd)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20this.maxRadius%20%3D%20this.containerMetrics.furthestCornerDistanceFrom(this.xStart%2C%20this.yStart)%3B%0A%0A%20%20%20%20%20%20this.waveContainer.style.top%20%3D%20(this.containerMetrics.height%20-%20this.containerMetrics.size)%20%2F%202%20%2B%20'px'%3B%0A%20%20%20%20%20%20this.waveContainer.style.left%20%3D%20(this.containerMetrics.width%20-%20this.containerMetrics.size)%20%2F%202%20%2B%20'px'%3B%0A%0A%20%20%20%20%20%20this.waveContainer.style.width%20%3D%20this.containerMetrics.size%20%2B%20'px'%3B%0A%20%20%20%20%20%20this.waveContainer.style.height%20%3D%20this.containerMetrics.size%20%2B%20'px'%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%20%40param%20%7BEvent%3D%7D%20event%20*%2F%0A%20%20%20%20upAction%3A%20function%20upAction(event)%20%7B%0A%20%20%20%20%20%20if%20(!this.isMouseDown)%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20this.mouseUpStart%20%3D%20Utility.now()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20remove%3A%20function%20remove()%20%7B%0A%20%20%20%20%20%20Polymer.dom(this.waveContainer.parentNode).removeChild(this.waveContainer)%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20Polymer(%7B%0A%20%20%20%20is%3A%20'paper-ripple'%2C%0A%0A%20%20%20%20behaviors%3A%20%5BPolymer.IronA11yKeysBehavior%5D%2C%0A%0A%20%20%20%20properties%3A%20%7B%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20The%20initial%20opacity%20set%20on%20the%20wave.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20initialOpacity%0A%20%20%20%20%20%20%20*%20%40type%20number%0A%20%20%20%20%20%20%20*%20%40default%200.25%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20initialOpacity%3A%20%7B%20type%3A%20Number%2C%20value%3A%200.25%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20How%20fast%20(opacity%20per%20second)%20the%20wave%20fades%20out.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20opacityDecayVelocity%0A%20%20%20%20%20%20%20*%20%40type%20number%0A%20%20%20%20%20%20%20*%20%40default%200.8%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20opacityDecayVelocity%3A%20%7B%20type%3A%20Number%2C%20value%3A%200.8%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20ripples%20will%20exhibit%20a%20gravitational%20pull%20towards%0A%20%20%20%20%20%20%20*%20the%20center%20of%20their%20container%20as%20they%20fade%20away.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20recenters%0A%20%20%20%20%20%20%20*%20%40type%20boolean%0A%20%20%20%20%20%20%20*%20%40default%20false%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20recenters%3A%20%7B%20type%3A%20Boolean%2C%20value%3A%20false%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20ripples%20will%20center%20inside%20its%20container%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20recenters%0A%20%20%20%20%20%20%20*%20%40type%20boolean%0A%20%20%20%20%20%20%20*%20%40default%20false%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20center%3A%20%7B%20type%3A%20Boolean%2C%20value%3A%20false%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20A%20list%20of%20the%20visual%20ripples.%0A%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20*%20%40attribute%20ripples%0A%20%20%20%20%20%20%20*%20%40type%20Array%0A%20%20%20%20%20%20%20*%20%40default%20%5B%5D%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20ripples%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Array%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20value()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20True%20when%20there%20are%20visible%20ripples%20animating%20within%20the%0A%20%20%20%20%20%20%20*%20element.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20animating%3A%20%7B%20type%3A%20Boolean%2C%20readOnly%3A%20true%2C%20reflectToAttribute%3A%20true%2C%20value%3A%20false%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20the%20ripple%20will%20remain%20in%20the%20%22down%22%20state%20until%20%60holdDown%60%0A%20%20%20%20%20%20%20*%20is%20set%20to%20false%20again.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20holdDown%3A%20%7B%20type%3A%20Boolean%2C%20value%3A%20false%2C%20observer%3A%20'_holdDownChanged'%20%7D%2C%0A%0A%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20*%20If%20true%2C%20the%20ripple%20will%20not%20generate%20a%20ripple%20effect%0A%20%20%20%20%20%20%20*%20via%20pointer%20interaction.%0A%20%20%20%20%20%20%20*%20Calling%20ripple's%20imperative%20api%20like%20%60simulatedRipple%60%20will%0A%20%20%20%20%20%20%20*%20still%20generate%20the%20ripple%20effect.%0A%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20noink%3A%20%7B%20type%3A%20Boolean%2C%20value%3A%20false%20%7D%2C%0A%0A%20%20%20%20%20%20_animating%3A%20%7B%20type%3A%20Boolean%20%7D%2C%0A%0A%20%20%20%20%20%20_boundAnimate%3A%20%7B%0A%20%20%20%20%20%20%20%20type%3A%20Function%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20value()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this.animate.bind(this)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20target()%20%7B%0A%20%20%20%20%20%20return%20this.keyEventTarget%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40type%20%7B!Object%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20keyBindings%3A%20%7B%0A%20%20%20%20%20%20'enter%3Akeydown'%3A%20'_onEnterKeydown'%2C%0A%20%20%20%20%20%20'space%3Akeydown'%3A%20'_onSpaceKeydown'%2C%0A%20%20%20%20%20%20'space%3Akeyup'%3A%20'_onSpaceKeyup'%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20attached%3A%20function%20attached()%20%7B%0A%20%20%20%20%20%20%2F%2F%20Set%20up%20a11yKeysBehavior%20to%20listen%20to%20key%20events%20on%20the%20target%2C%0A%20%20%20%20%20%20%2F%2F%20so%20that%20space%20and%20enter%20activate%20the%20ripple%20even%20if%20the%20target%20doesn't%0A%20%20%20%20%20%20%2F%2F%20handle%20key%20events.%20The%20key%20handlers%20deal%20with%20%60noink%60%20themselves.%0A%20%20%20%20%20%20if%20(this.parentNode.nodeType%20%3D%3D%2011)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20DOCUMENT_FRAGMENT_NODE%0A%20%20%20%20%20%20%20%20this.keyEventTarget%20%3D%20Polymer.dom(this).getOwnerRoot().host%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20this.keyEventTarget%20%3D%20this.parentNode%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20keyEventTarget%20%3D%20%2F**%20%40type%20%7B!EventTarget%7D%20*%2Fthis.keyEventTarget%3B%0A%20%20%20%20%20%20this.listen(keyEventTarget%2C%20'up'%2C%20'uiUpAction')%3B%0A%20%20%20%20%20%20this.listen(keyEventTarget%2C%20'down'%2C%20'uiDownAction')%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20detached%3A%20function%20detached()%20%7B%0A%20%20%20%20%20%20this.unlisten(this.keyEventTarget%2C%20'up'%2C%20'uiUpAction')%3B%0A%20%20%20%20%20%20this.unlisten(this.keyEventTarget%2C%20'down'%2C%20'uiDownAction')%3B%0A%20%20%20%20%20%20this.keyEventTarget%20%3D%20null%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20get%20shouldKeepAnimating()%20%7B%0A%20%20%20%20%20%20for%20(var%20index%20%3D%200%3B%20index%20%3C%20this.ripples.length%3B%20%2B%2Bindex)%20%7B%0A%20%20%20%20%20%20%20%20if%20(!this.ripples%5Bindex%5D.isAnimationComplete)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20simulatedRipple%3A%20function%20simulatedRipple()%20%7B%0A%20%20%20%20%20%20this.downAction(null)%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Please%20see%20polymer%2Fpolymer%231305%0A%20%20%20%20%20%20this.async(function%20()%20%7B%0A%20%20%20%20%20%20%20%20this.upAction()%3B%0A%20%20%20%20%20%20%7D%2C%201)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Provokes%20a%20ripple%20down%20effect%20via%20a%20UI%20event%2C%0A%20%20%20%20%20*%20respecting%20the%20%60noink%60%20property.%0A%20%20%20%20%20*%20%40param%20%7BEvent%3D%7D%20event%0A%20%20%20%20%20*%2F%0A%20%20%20%20uiDownAction%3A%20function%20uiDownAction(event)%20%7B%0A%20%20%20%20%20%20if%20(!this.noink)%20%7B%0A%20%20%20%20%20%20%20%20this.downAction(event)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Provokes%20a%20ripple%20down%20effect%20via%20a%20UI%20event%2C%0A%20%20%20%20%20*%20*not*%20respecting%20the%20%60noink%60%20property.%0A%20%20%20%20%20*%20%40param%20%7BEvent%3D%7D%20event%0A%20%20%20%20%20*%2F%0A%20%20%20%20downAction%3A%20function%20downAction(event)%20%7B%0A%20%20%20%20%20%20if%20(this.holdDown%20%26%26%20this.ripples.length%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20var%20ripple%20%3D%20this.addRipple()%3B%0A%0A%20%20%20%20%20%20ripple.downAction(event)%3B%0A%0A%20%20%20%20%20%20if%20(!this._animating)%20%7B%0A%20%20%20%20%20%20%20%20this._animating%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20this.animate()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Provokes%20a%20ripple%20up%20effect%20via%20a%20UI%20event%2C%0A%20%20%20%20%20*%20respecting%20the%20%60noink%60%20property.%0A%20%20%20%20%20*%20%40param%20%7BEvent%3D%7D%20event%0A%20%20%20%20%20*%2F%0A%20%20%20%20uiUpAction%3A%20function%20uiUpAction(event)%20%7B%0A%20%20%20%20%20%20if%20(!this.noink)%20%7B%0A%20%20%20%20%20%20%20%20this.upAction(event)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20Provokes%20a%20ripple%20up%20effect%20via%20a%20UI%20event%2C%0A%20%20%20%20%20*%20*not*%20respecting%20the%20%60noink%60%20property.%0A%20%20%20%20%20*%20%40param%20%7BEvent%3D%7D%20event%0A%20%20%20%20%20*%2F%0A%20%20%20%20upAction%3A%20function%20upAction(event)%20%7B%0A%20%20%20%20%20%20if%20(this.holdDown)%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20this.ripples.forEach(function%20(ripple)%20%7B%0A%20%20%20%20%20%20%20%20ripple.upAction(event)%3B%0A%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20this._animating%20%3D%20true%3B%0A%20%20%20%20%20%20this.animate()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20onAnimationComplete%3A%20function%20onAnimationComplete()%20%7B%0A%20%20%20%20%20%20this._animating%20%3D%20false%3B%0A%20%20%20%20%20%20this.%24.background.style.backgroundColor%20%3D%20null%3B%0A%20%20%20%20%20%20this.fire('transitionend')%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20addRipple%3A%20function%20addRipple()%20%7B%0A%20%20%20%20%20%20var%20ripple%20%3D%20new%20Ripple(this)%3B%0A%0A%20%20%20%20%20%20Polymer.dom(this.%24.waves).appendChild(ripple.waveContainer)%3B%0A%20%20%20%20%20%20this.%24.background.style.backgroundColor%20%3D%20ripple.color%3B%0A%20%20%20%20%20%20this.ripples.push(ripple)%3B%0A%0A%20%20%20%20%20%20this._setAnimating(true)%3B%0A%0A%20%20%20%20%20%20return%20ripple%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20removeRipple%3A%20function%20removeRipple(ripple)%20%7B%0A%20%20%20%20%20%20var%20rippleIndex%20%3D%20this.ripples.indexOf(ripple)%3B%0A%0A%20%20%20%20%20%20if%20(rippleIndex%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20this.ripples.splice(rippleIndex%2C%201)%3B%0A%0A%20%20%20%20%20%20ripple.remove()%3B%0A%0A%20%20%20%20%20%20if%20(!this.ripples.length)%20%7B%0A%20%20%20%20%20%20%20%20this._setAnimating(false)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20This%20conflicts%20with%20Element%23antimate().%0A%20%20%20%20%20*%20https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FAPI%2FElement%2Fanimate%0A%20%20%20%20%20*%20%40suppress%20%7BcheckTypes%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20animate%3A%20function%20animate()%20%7B%0A%20%20%20%20%20%20if%20(!this._animating)%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20index%3B%0A%20%20%20%20%20%20var%20ripple%3B%0A%0A%20%20%20%20%20%20for%20(index%20%3D%200%3B%20index%20%3C%20this.ripples.length%3B%20%2B%2Bindex)%20%7B%0A%20%20%20%20%20%20%20%20ripple%20%3D%20this.ripples%5Bindex%5D%3B%0A%0A%20%20%20%20%20%20%20%20ripple.draw()%3B%0A%0A%20%20%20%20%20%20%20%20this.%24.background.style.opacity%20%3D%20ripple.outerOpacity%3B%0A%0A%20%20%20%20%20%20%20%20if%20(ripple.isOpacityFullyDecayed%20%26%26%20!ripple.isRestingAtMaxRadius)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.removeRipple(ripple)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20(!this.shouldKeepAnimating%20%26%26%20this.ripples.length%20%3D%3D%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20this.onAnimationComplete()%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20window.requestAnimationFrame(this._boundAnimate)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onEnterKeydown%3A%20function%20_onEnterKeydown()%20%7B%0A%20%20%20%20%20%20this.uiDownAction()%3B%0A%20%20%20%20%20%20this.async(this.uiUpAction%2C%201)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onSpaceKeydown%3A%20function%20_onSpaceKeydown()%20%7B%0A%20%20%20%20%20%20this.uiDownAction()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20_onSpaceKeyup%3A%20function%20_onSpaceKeyup()%20%7B%0A%20%20%20%20%20%20this.uiUpAction()%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20%2F%2F%20note%3A%20holdDown%20does%20not%20respect%20noink%20since%20it%20can%20be%20a%20focus%20based%0A%20%20%20%20%2F%2F%20effect.%0A%20%20%20%20_holdDownChanged%3A%20function%20_holdDownChanged(newVal%2C%20oldVal)%20%7B%0A%20%20%20%20%20%20if%20(oldVal%20%3D%3D%3D%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(newVal)%20%7B%0A%20%20%20%20%20%20%20%20this.downAction()%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20this.upAction()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F**%0A%20%20%20%20Fired%20when%20the%20animation%20finishes.%0A%20%20%20%20This%20is%20useful%20if%20you%20want%20to%20wait%20until%0A%20%20%20%20the%20ripple%20animation%20finishes%20to%20perform%20some%20action.%0A%20%20%20%20%20%40event%20transitionend%0A%20%20%20%20%40param%20%7B%7Bnode%3A%20Object%7D%7D%20detail%20Contains%20the%20animated%20node.%0A%20%20%20%20*%2F%0A%20%20%7D)%3B%0A%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fthrivepatientportal.com%2Fsrc%2Fportal-app%2Fportal-app.html-83.js%0AAnalytics & Marketing1
M
Microsoft 365
Email
100%
1 evidence signal
dns
MX: thrivepatientportal-com.mail.protection.outlook.comInfrastructure & Security2
HSTS
Security
75%
1 evidence signal
Header
max-age=63072000; includeSubDomains; preloadNginxv1.26.1
Web servers
75%
1 evidence signal
Header
nginx(?:/([\d.]+))?\;version:\1: nginx/1.26.1Libraries & Utilities2
Moment.jsv2.14.2
JavaScript libraries
100%
5 evidence signals
Script
data:text/javascript;charset=utf-8,%2F%2F!%20moment.js%0A%2F%2F!%20version%20%3A%202.14.2%0A%2F%2F!%20authors%20%3A%20Tim%20Wood%2C%20Iskren%20Chernev%2C%20Moment.js%20contributors%0A%2F%2F!%20license%20%3A%20MIT%0A%2F%2F!%20momentjs.com%0A!function%20(a%2C%20b)%20%7B%0A%20%20%22object%22%20%3D%3D%20(typeof%20exports%20%3D%3D%3D%20%22undefined%22%20%3F%20%22undefined%22%20%3A%20babelHelpers.typeof(exports))%20%26%26%20%22undefined%22%20!%3D%20typeof%20module%20%3F%20module.exports%20%3D%20b()%20%3A%20%22function%22%20%3D%3D%20typeof%20define%20%26%26%20define.amd%20%3F%20define(b)%20%3A%20a.moment%20%3D%20b()%3B%0A%7D(this%2C%20function%20()%20%7B%0A%20%20%22use%20strict%22%3B%0A%20%20function%20a()%20%7B%0A%20%20%20%20return%20md.apply(null%2C%20arguments)%3B%0A%20%20%7D%0A%20%20%2F%2F%20This%20is%20done%20to%20register%20the%20method%20called%20with%20moment()%0A%20%20%2F%2F%20without%20creating%20circular%20dependencies.%0A%20%20function%20b(a)%20%7B%0A%20%20%20%20md%20%3D%20a%3B%0A%20%20%7Dfunction%20c(a)%20%7B%0A%20%20%20%20return%20a%20instanceof%20Array%20%7C%7C%20%22%5Bobject%20Array%5D%22%20%3D%3D%3D%20Object.prototype.toString.call(a)%3B%0A%20%20%7Dfunction%20d(a)%20%7B%0A%20%20%20%20return%20%22%5Bobject%20Object%5D%22%20%3D%3D%3D%20Object.prototype.toString.call(a)%3B%0A%20%20%7Dfunction%20e(a)%20%7B%0A%20%20%20%20var%20b%3Bfor%20(b%20in%20a)%20%7B%0A%20%20%20%20%20%20%2F%2F%20even%20if%20its%20not%20own%20property%20I'd%20still%20call%20it%20non-empty%0A%20%20%20%20%20%20return%20!1%3B%0A%20%20%20%20%7Dreturn%20!0%3B%0A%20%20%7Dfunction%20f(a)%20%7B%0A%20%20%20%20return%20a%20instanceof%20Date%20%7C%7C%20%22%5Bobject%20Date%5D%22%20%3D%3D%3D%20Object.prototype.toString.call(a)%3B%0A%20%20%7Dfunction%20g(a%2C%20b)%20%7B%0A%20%20%20%20var%20c%2C%0A%20%20%20%20%20%20%20%20d%20%3D%20%5B%5D%3Bfor%20(c%20%3D%200%3B%20c%20%3C%20a.length%3B%20%2B%2Bc)%20%7B%0A%20%20%20%20%20%20d.push(b(a%5Bc%5D%2C%20c))%3B%0A%20%20%20%20%7Dreturn%20d%3B%0A%20%20%7Dfunction%20h(a%2C%20b)%20%7B%0A%20%20%20%20return%20Object.prototype.hasOwnProperty.call(a%2C%20b)%3B%0A%20%20%7Dfunction%20i(a%2C%20b)%20%7B%0A%20%20%20%20for%20(var%20c%20in%20b)%20%7B%0A%20%20%20%20%20%20h(b%2C%20c)%20%26%26%20(a%5Bc%5D%20%3D%20b%5Bc%5D)%3B%0A%20%20%20%20%7Dreturn%20h(b%2C%20%22toString%22)%20%26%26%20(a.toString%20%3D%20b.toString)%2C%20h(b%2C%20%22valueOf%22)%20%26%26%20(a.valueOf%20%3D%20b.valueOf)%2C%20a%3B%0A%20%20%7Dfunction%20j(a%2C%20b%2C%20c%2C%20d)%20%7B%0A%20%20%20%20return%20qb(a%2C%20b%2C%20c%2C%20d%2C%20!0).utc()%3B%0A%20%20%7Dfunction%20k()%20%7B%0A%20%20%20%20%2F%2F%20We%20need%20to%20deep%20clone%20this%20object.%0A%20%20%20%20return%20%7B%20empty%3A%20!1%2C%20unusedTokens%3A%20%5B%5D%2C%20unusedInput%3A%20%5B%5D%2C%20overflow%3A%20-2%2C%20charsLeftOver%3A%200%2C%20nullInput%3A%20!1%2C%20invalidMonth%3A%20null%2C%20invalidFormat%3A%20!1%2C%20userInvalidated%3A%20!1%2C%20iso%3A%20!1%2C%20parsedDateParts%3A%20%5B%5D%2C%20meridiem%3A%20null%20%7D%3B%0A%20%20%7Dfunction%20l(a)%20%7B%0A%20%20%20%20return%20null%20%3D%3D%20a._pf%20%26%26%20(a._pf%20%3D%20k())%2C%20a._pf%3B%0A%20%20%7Dfunction%20m(a)%20%7B%0A%20%20%20%20if%20(null%20%3D%3D%20a._isValid)%20%7B%0A%20%20%20%20%20%20var%20b%20%3D%20l(a)%2C%0A%20%20%20%20%20%20%20%20%20%20c%20%3D%20nd.call(b.parsedDateParts%2C%20function%20(a)%20%7B%0A%20%20%20%20%20%20%20%20return%20null%20!%3D%20a%3B%0A%20%20%20%20%20%20%7D)%3Ba._isValid%20%3D%20!isNaN(a._d.getTime())%20%26%26%20b.overflow%20%3C%200%20%26%26%20!b.empty%20%26%26%20!b.invalidMonth%20%26%26%20!b.invalidWeekday%20%26%26%20!b.nullInput%20%26%26%20!b.invalidFormat%20%26%26%20!b.userInvalidated%20%26%26%20(!b.meridiem%20%7C%7C%20b.meridiem%20%26%26%20c)%2C%20a._strict%20%26%26%20(a._isValid%20%3D%20a._isValid%20%26%26%200%20%3D%3D%3D%20b.charsLeftOver%20%26%26%200%20%3D%3D%3D%20b.unusedTokens.length%20%26%26%20void%200%20%3D%3D%3D%20b.bigHour)%3B%0A%20%20%20%20%7Dreturn%20a._isValid%3B%0A%20%20%7Dfunction%20n(a)%20%7B%0A%20%20%20%20var%20b%20%3D%20j(NaN)%3Breturn%20null%20!%3D%20a%20%3F%20i(l(b)%2C%20a)%20%3A%20l(b).userInvalidated%20%3D%20!0%2C%20b%3B%0A%20%20%7Dfunction%20o(a)%20%7B%0A%20%20%20%20return%20void%200%20%3D%3D%3D%20a%3B%0A%20%20%7Dfunction%20p(a%2C%20b)%20%7B%0A%20%20%20%20var%20c%2C%20d%2C%20e%3Bif%20(o(b._isAMomentObject)%20%7C%7C%20(a._isAMomentObject%20%3D%20b._isAMomentObject)%2C%20o(b._i)%20%7C%7C%20(a._i%20%3D%20b._i)%2C%20o(b._f)%20%7C%7C%20(a._f%20%3D%20b._f)%2C%20o(b._l)%20%7C%7C%20(a._l%20%3D%20b._l)%2C%20o(b._strict)%20%7C%7C%20(a._strict%20%3D%20b._strict)%2C%20o(b._tzm)%20%7C%7C%20(a._tzm%20%3D%20b._tzm)%2C%20o(b._isUTC)%20%7C%7C%20(a._isUTC%20%3D%20b._isUTC)%2C%20o(b._offset)%20%7C%7C%20(a._offset%20%3D%20b._offset)%2C%20o(b._pf)%20%7C%7C%20(a._pf%20%3D%20l(b))%2C%20o(b._locale)%20%7C%7C%20(a._locale%20%3D%20b._locale)%2C%20od.length%20%3E%200)%20for%20(c%20in%20od)%20%7B%0A%20%20%20%20%20%20d%20%3D%20od%5Bc%5D%2C%20e%20%3D%20b%5Bd%5D%2C%20o(e)%20%7C%7C%20(a%5Bd%5D%20%3D%20e)%3B%0A%20%20%20%20%7Dreturn%20a%3B%0A%20%20%7D%0A%20%20%2F%2F%20Moment%20prototype%20object%0A%20%20function%20q(b)%20%7B%0A%20%20%20%20p(this%2C%20b)%2C%20this._d%20%3D%20new%20Date(null%20!%3D%20b._d%20%3F%20b._d.getTime()%20%3A%20NaN)%2C%20pd%20%3D%3D%3D%20!1%20%26%26%20(pd%20%3D%20!0%2C%20a.updateOffset(this)%2C%20pd%20%3D%20!1)%3B%0A%20%20%7Dfunction%20r(a)%20%7B%0A%20%20%20%20return%20a%20instanceof%20q%20%7C%7C%20null%20!%3D%20a%20%26%26%20null%20!%3D%20a._isAMomentObject%3B%0A%20%20%7Dfunction%20s(a)%20%7B%0A%20%20%20%20return%200%20%3E%20a%20%3F%20Math.ceil(a)%20%7C%7C%200%20%3A%20Math.floor(a)%3B%0A%20%20%7Dfunction%20t(a)%20%7B%0A%20%20%20%20var%20b%20%3D%20%2Ba%2C%0A%20%20%20%20%20%20%20%20c%20%3D%200%3Breturn%200%20!%3D%3D%20b%20%26%26%20isFinite(b)%20%26%26%20(c%20%3D%20s(b))%2C%20c%3B%0A%20%20%7D%0A%20%20%2F%2F%20compare%20two%20arrays%2C%20return%20the%20number%20of%20differences%0A%20%20function%20u(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20d%2C%0A%20%20%20%20%20%20%20%20e%20%3D%20Math.min(a.length%2C%20b.length)%2C%0A%20%20%20%20%20%20%20%20f%20%3D%20Math.abs(a.length%20-%20b.length)%2C%0A%20%20%20%20%20%20%20%20g%20%3D%200%3Bfor%20(d%20%3D%200%3B%20e%20%3E%20d%3B%20d%2B%2B)%20%7B%0A%20%20%20%20%20%20(c%20%26%26%20a%5Bd%5D%20!%3D%3D%20b%5Bd%5D%20%7C%7C%20!c%20%26%26%20t(a%5Bd%5D)%20!%3D%3D%20t(b%5Bd%5D))%20%26%26%20g%2B%2B%3B%0A%20%20%20%20%7Dreturn%20g%20%2B%20f%3B%0A%20%20%7Dfunction%20v(b)%20%7B%0A%20%20%20%20a.suppressDeprecationWarnings%20%3D%3D%3D%20!1%20%26%26%20%22undefined%22%20!%3D%20typeof%20console%20%26%26%20console.warn%20%26%26%20console.warn(%22Deprecation%20warning%3A%20%22%20%2B%20b)%3B%0A%20%20%7Dfunction%20w(b%2C%20c)%20%7B%0A%20%20%20%20var%20d%20%3D%20!0%3Breturn%20i(function%20()%20%7B%0A%20%20%20%20%20%20return%20null%20!%3D%20a.deprecationHandler%20%26%26%20a.deprecationHandler(null%2C%20b)%2C%20d%20%26%26%20(v(b%20%2B%20%22%5CnArguments%3A%20%22%20%2B%20Array.prototype.slice.call(arguments).join(%22%2C%20%22)%20%2B%20%22%5Cn%22%20%2B%20new%20Error().stack)%2C%20d%20%3D%20!1)%2C%20c.apply(this%2C%20arguments)%3B%0A%20%20%20%20%7D%2C%20c)%3B%0A%20%20%7Dfunction%20x(b%2C%20c)%20%7B%0A%20%20%20%20null%20!%3D%20a.deprecationHandler%20%26%26%20a.deprecationHandler(b%2C%20c)%2C%20qd%5Bb%5D%20%7C%7C%20(v(c)%2C%20qd%5Bb%5D%20%3D%20!0)%3B%0A%20%20%7Dfunction%20y(a)%20%7B%0A%20%20%20%20return%20a%20instanceof%20Function%20%7C%7C%20%22%5Bobject%20Function%5D%22%20%3D%3D%3D%20Object.prototype.toString.call(a)%3B%0A%20%20%7Dfunction%20z(a)%20%7B%0A%20%20%20%20var%20b%2C%20c%3Bfor%20(c%20in%20a)%20%7B%0A%20%20%20%20%20%20b%20%3D%20a%5Bc%5D%2C%20y(b)%20%3F%20this%5Bc%5D%20%3D%20b%20%3A%20this%5B%22_%22%20%2B%20c%5D%20%3D%20b%3B%0A%20%20%20%20%7Dthis._config%20%3D%20a%2C%0A%20%20%20%20%2F%2F%20Lenient%20ordinal%20parsing%20accepts%20just%20a%20number%20in%20addition%20to%0A%20%20%20%20%2F%2F%20number%20%2B%20(possibly)%20stuff%20coming%20from%20_ordinalParseLenient.%0A%20%20%20%20this._ordinalParseLenient%20%3D%20new%20RegExp(this._ordinalParse.source%20%2B%20%22%7C%22%20%2B%20%2F%5Cd%7B1%2C2%7D%2F.source)%3B%0A%20%20%7Dfunction%20A(a%2C%20b)%20%7B%0A%20%20%20%20var%20c%2C%0A%20%20%20%20%20%20%20%20e%20%3D%20i(%7B%7D%2C%20a)%3Bfor%20(c%20in%20b)%20%7B%0A%20%20%20%20%20%20h(b%2C%20c)%20%26%26%20(d(a%5Bc%5D)%20%26%26%20d(b%5Bc%5D)%20%3F%20(e%5Bc%5D%20%3D%20%7B%7D%2C%20i(e%5Bc%5D%2C%20a%5Bc%5D)%2C%20i(e%5Bc%5D%2C%20b%5Bc%5D))%20%3A%20null%20!%3D%20b%5Bc%5D%20%3F%20e%5Bc%5D%20%3D%20b%5Bc%5D%20%3A%20delete%20e%5Bc%5D)%3B%0A%20%20%20%20%7Dfor%20(c%20in%20a)%20%7B%0A%20%20%20%20%20%20h(a%2C%20c)%20%26%26%20!h(b%2C%20c)%20%26%26%20d(a%5Bc%5D)%20%26%26%20(%0A%20%20%20%20%20%20%2F%2F%20make%20sure%20changes%20to%20properties%20don't%20modify%20parent%20config%0A%20%20%20%20%20%20e%5Bc%5D%20%3D%20i(%7B%7D%2C%20e%5Bc%5D))%3B%0A%20%20%20%20%7Dreturn%20e%3B%0A%20%20%7Dfunction%20B(a)%20%7B%0A%20%20%20%20null%20!%3D%20a%20%26%26%20this.set(a)%3B%0A%20%20%7Dfunction%20C(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20d%20%3D%20this._calendar%5Ba%5D%20%7C%7C%20this._calendar.sameElse%3Breturn%20y(d)%20%3F%20d.call(b%2C%20c)%20%3A%20d%3B%0A%20%20%7Dfunction%20D(a)%20%7B%0A%20%20%20%20var%20b%20%3D%20this._longDateFormat%5Ba%5D%2C%0A%20%20%20%20%20%20%20%20c%20%3D%20this._longDateFormat%5Ba.toUpperCase()%5D%3Breturn%20b%20%7C%7C%20!c%20%3F%20b%20%3A%20(this._longDateFormat%5Ba%5D%20%3D%20c.replace(%2FMMMM%7CMM%7CDD%7Cdddd%2Fg%2C%20function%20(a)%20%7B%0A%20%20%20%20%20%20return%20a.slice(1)%3B%0A%20%20%20%20%7D)%2C%20this._longDateFormat%5Ba%5D)%3B%0A%20%20%7Dfunction%20E()%20%7B%0A%20%20%20%20return%20this._invalidDate%3B%0A%20%20%7Dfunction%20F(a)%20%7B%0A%20%20%20%20return%20this._ordinal.replace(%22%25d%22%2C%20a)%3B%0A%20%20%7Dfunction%20G(a%2C%20b%2C%20c%2C%20d)%20%7B%0A%20%20%20%20var%20e%20%3D%20this._relativeTime%5Bc%5D%3Breturn%20y(e)%20%3F%20e(a%2C%20b%2C%20c%2C%20d)%20%3A%20e.replace(%2F%25d%2Fi%2C%20a)%3B%0A%20%20%7Dfunction%20H(a%2C%20b)%20%7B%0A%20%20%20%20var%20c%20%3D%20this._relativeTime%5Ba%20%3E%200%20%3F%20%22future%22%20%3A%20%22past%22%5D%3Breturn%20y(c)%20%3F%20c(b)%20%3A%20c.replace(%2F%25s%2Fi%2C%20b)%3B%0A%20%20%7Dfunction%20I(a%2C%20b)%20%7B%0A%20%20%20%20var%20c%20%3D%20a.toLowerCase()%3Bzd%5Bc%5D%20%3D%20zd%5Bc%20%2B%20%22s%22%5D%20%3D%20zd%5Bb%5D%20%3D%20a%3B%0A%20%20%7Dfunction%20J(a)%20%7B%0A%20%20%20%20return%20%22string%22%20%3D%3D%20typeof%20a%20%3F%20zd%5Ba%5D%20%7C%7C%20zd%5Ba.toLowerCase()%5D%20%3A%20void%200%3B%0A%20%20%7Dfunction%20K(a)%20%7B%0A%20%20%20%20var%20b%2C%0A%20%20%20%20%20%20%20%20c%2C%0A%20%20%20%20%20%20%20%20d%20%3D%20%7B%7D%3Bfor%20(c%20in%20a)%20%7B%0A%20%20%20%20%20%20h(a%2C%20c)%20%26%26%20(b%20%3D%20J(c)%2C%20b%20%26%26%20(d%5Bb%5D%20%3D%20a%5Bc%5D))%3B%0A%20%20%20%20%7Dreturn%20d%3B%0A%20%20%7Dfunction%20L(a%2C%20b)%20%7B%0A%20%20%20%20Ad%5Ba%5D%20%3D%20b%3B%0A%20%20%7Dfunction%20M(a)%20%7B%0A%20%20%20%20var%20b%20%3D%20%5B%5D%3Bfor%20(var%20c%20in%20a)%20%7B%0A%20%20%20%20%20%20b.push(%7B%20unit%3A%20c%2C%20priority%3A%20Ad%5Bc%5D%20%7D)%3B%0A%20%20%20%20%7Dreturn%20b.sort(function%20(a%2C%20b)%20%7B%0A%20%20%20%20%20%20return%20a.priority%20-%20b.priority%3B%0A%20%20%20%20%7D)%2C%20b%3B%0A%20%20%7Dfunction%20N(b%2C%20c)%20%7B%0A%20%20%20%20return%20function%20(d)%20%7B%0A%20%20%20%20%20%20return%20null%20!%3D%20d%20%3F%20(P(this%2C%20b%2C%20d)%2C%20a.updateOffset(this%2C%20c)%2C%20this)%20%3A%20O(this%2C%20b)%3B%0A%20%20%20%20%7D%3B%0A%20%20%7Dfunction%20O(a%2C%20b)%20%7B%0A%20%20%20%20return%20a.isValid()%20%3F%20a._d%5B%22get%22%20%2B%20(a._isUTC%20%3F%20%22UTC%22%20%3A%20%22%22)%20%2B%20b%5D()%20%3A%20NaN%3B%0A%20%20%7Dfunction%20P(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20a.isValid()%20%26%26%20a._d%5B%22set%22%20%2B%20(a._isUTC%20%3F%20%22UTC%22%20%3A%20%22%22)%20%2B%20b%5D(c)%3B%0A%20%20%7D%0A%20%20%2F%2F%20MOMENTS%0A%20%20function%20Q(a)%20%7B%0A%20%20%20%20return%20a%20%3D%20J(a)%2C%20y(this%5Ba%5D)%20%3F%20this%5Ba%5D()%20%3A%20this%3B%0A%20%20%7Dfunction%20R(a%2C%20b)%20%7B%0A%20%20%20%20if%20(%22object%22%20%3D%3D%20(typeof%20a%20%3D%3D%3D%20%22undefined%22%20%3F%20%22undefined%22%20%3A%20babelHelpers.typeof(a)))%20%7B%0A%20%20%20%20%20%20a%20%3D%20K(a)%3Bfor%20(var%20c%20%3D%20M(a)%2C%20d%20%3D%200%3B%20d%20%3C%20c.length%3B%20d%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20this%5Bc%5Bd%5D.unit%5D(a%5Bc%5Bd%5D.unit%5D)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20if%20(a%20%3D%20J(a)%2C%20y(this%5Ba%5D))%20return%20this%5Ba%5D(b)%3Breturn%20this%3B%0A%20%20%7Dfunction%20S(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20d%20%3D%20%22%22%20%2B%20Math.abs(a)%2C%0A%20%20%20%20%20%20%20%20e%20%3D%20b%20-%20d.length%2C%0A%20%20%20%20%20%20%20%20f%20%3D%20a%20%3E%3D%200%3Breturn%20(f%20%3F%20c%20%3F%20%22%2B%22%20%3A%20%22%22%20%3A%20%22-%22)%20%2B%20Math.pow(10%2C%20Math.max(0%2C%20e)).toString().substr(1)%20%2B%20d%3B%0A%20%20%7D%0A%20%20%2F%2F%20token%3A%20%20%20%20'M'%0A%20%20%2F%2F%20padded%3A%20%20%20%5B'MM'%2C%202%5D%0A%20%20%2F%2F%20ordinal%3A%20%20'Mo'%0A%20%20%2F%2F%20callback%3A%20function%20()%20%7B%20this.month()%20%2B%201%20%7D%0A%20%20function%20T(a%2C%20b%2C%20c%2C%20d)%20%7B%0A%20%20%20%20var%20e%20%3D%20d%3B%22string%22%20%3D%3D%20typeof%20d%20%26%26%20(e%20%3D%20function%20e()%20%7B%0A%20%20%20%20%20%20return%20this%5Bd%5D()%3B%0A%20%20%20%20%7D)%2C%20a%20%26%26%20(Ed%5Ba%5D%20%3D%20e)%2C%20b%20%26%26%20(Ed%5Bb%5B0%5D%5D%20%3D%20function%20()%20%7B%0A%20%20%20%20%20%20return%20S(e.apply(this%2C%20arguments)%2C%20b%5B1%5D%2C%20b%5B2%5D)%3B%0A%20%20%20%20%7D)%2C%20c%20%26%26%20(Ed%5Bc%5D%20%3D%20function%20()%20%7B%0A%20%20%20%20%20%20return%20this.localeData().ordinal(e.apply(this%2C%20arguments)%2C%20a)%3B%0A%20%20%20%20%7D)%3B%0A%20%20%7Dfunction%20U(a)%20%7B%0A%20%20%20%20return%20a.match(%2F%5C%5B%5B%5Cs%5CS%5D%2F)%20%3F%20a.replace(%2F%5E%5C%5B%7C%5C%5D%24%2Fg%2C%20%22%22)%20%3A%20a.replace(%2F%5C%5C%2Fg%2C%20%22%22)%3B%0A%20%20%7Dfunction%20V(a)%20%7B%0A%20%20%20%20var%20b%2C%0A%20%20%20%20%20%20%20%20c%2C%0A%20%20%20%20%20%20%20%20d%20%3D%20a.match(Bd)%3Bfor%20(b%20%3D%200%2C%20c%20%3D%20d.length%3B%20c%20%3E%20b%3B%20b%2B%2B)%20%7B%0A%20%20%20%20%20%20Ed%5Bd%5Bb%5D%5D%20%3F%20d%5Bb%5D%20%3D%20Ed%5Bd%5Bb%5D%5D%20%3A%20d%5Bb%5D%20%3D%20U(d%5Bb%5D)%3B%0A%20%20%20%20%7Dreturn%20function%20(b)%20%7B%0A%20%20%20%20%20%20var%20e%2C%0A%20%20%20%20%20%20%20%20%20%20f%20%3D%20%22%22%3Bfor%20(e%20%3D%200%3B%20c%20%3E%20e%3B%20e%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20f%20%2B%3D%20d%5Be%5D%20instanceof%20Function%20%3F%20d%5Be%5D.call(b%2C%20a)%20%3A%20d%5Be%5D%3B%0A%20%20%20%20%20%20%7Dreturn%20f%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%0A%20%20%2F%2F%20format%20date%20using%20native%20date%20object%0A%20%20function%20W(a%2C%20b)%20%7B%0A%20%20%20%20return%20a.isValid()%20%3F%20(b%20%3D%20X(b%2C%20a.localeData())%2C%20Dd%5Bb%5D%20%3D%20Dd%5Bb%5D%20%7C%7C%20V(b)%2C%20Dd%5Bb%5D(a))%20%3A%20a.localeData().invalidDate()%3B%0A%20%20%7Dfunction%20X(a%2C%20b)%20%7B%0A%20%20%20%20function%20c(a)%20%7B%0A%20%20%20%20%20%20return%20b.longDateFormat(a)%20%7C%7C%20a%3B%0A%20%20%20%20%7Dvar%20d%20%3D%205%3Bfor%20(Cd.lastIndex%20%3D%200%3B%20d%20%3E%3D%200%20%26%26%20Cd.test(a)%3B)%20%7B%0A%20%20%20%20%20%20a%20%3D%20a.replace(Cd%2C%20c)%2C%20Cd.lastIndex%20%3D%200%2C%20d%20-%3D%201%3B%0A%20%20%20%20%7Dreturn%20a%3B%0A%20%20%7Dfunction%20Y(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20Wd%5Ba%5D%20%3D%20y(b)%20%3F%20b%20%3A%20function%20(a%2C%20d)%20%7B%0A%20%20%20%20%20%20return%20a%20%26%26%20c%20%3F%20c%20%3A%20b%3B%0A%20%20%20%20%7D%3B%0A%20%20%7Dfunction%20Z(a%2C%20b)%20%7B%0A%20%20%20%20return%20h(Wd%2C%20a)%20%3F%20Wd%5Ba%5D(b._strict%2C%20b._locale)%20%3A%20new%20RegExp(%24(a))%3B%0A%20%20%7D%0A%20%20%2F%2F%20Code%20from%20http%3A%2F%2Fstackoverflow.com%2Fquestions%2F3561493%2Fis-there-a-regexp-escape-function-in-javascript%0A%20%20function%20%24(a)%20%7B%0A%20%20%20%20return%20_(a.replace(%22%5C%5C%22%2C%20%22%22).replace(%2F%5C%5C(%5C%5B)%7C%5C%5C(%5C%5D)%7C%5C%5B(%5B%5E%5C%5D%5C%5B%5D*)%5C%5D%7C%5C%5C(.)%2Fg%2C%20function%20(a%2C%20b%2C%20c%2C%20d%2C%20e)%20%7B%0A%20%20%20%20%20%20return%20b%20%7C%7C%20c%20%7C%7C%20d%20%7C%7C%20e%3B%0A%20%20%20%20%7D))%3B%0A%20%20%7Dfunction%20_(a)%20%7B%0A%20%20%20%20return%20a.replace(%2F%5B-%5C%2F%5C%5C%5E%24*%2B%3F.()%7C%5B%5C%5D%7B%7D%5D%2Fg%2C%20%22%5C%5C%24%26%22)%3B%0A%20%20%7Dfunction%20aa(a%2C%20b)%20%7B%0A%20%20%20%20var%20c%2C%0A%20%20%20%20%20%20%20%20d%20%3D%20b%3Bfor%20(%22string%22%20%3D%3D%20typeof%20a%20%26%26%20(a%20%3D%20%5Ba%5D)%2C%20%22number%22%20%3D%3D%20typeof%20b%20%26%26%20(d%20%3D%20function%20d(a%2C%20c)%20%7B%0A%20%20%20%20%20%20c%5Bb%5D%20%3D%20t(a)%3B%0A%20%20%20%20%7D)%2C%20c%20%3D%200%3B%20c%20%3C%20a.length%3B%20c%2B%2B)%20%7B%0A%20%20%20%20%20%20Xd%5Ba%5Bc%5D%5D%20%3D%20d%3B%0A%20%20%20%20%7D%0A%20%20%7Dfunction%20ba(a%2C%20b)%20%7B%0A%20%20%20%20aa(a%2C%20function%20(a%2C%20c%2C%20d%2C%20e)%20%7B%0A%20%20%20%20%20%20d._w%20%3D%20d._w%20%7C%7C%20%7B%7D%2C%20b(a%2C%20d._w%2C%20d%2C%20e)%3B%0A%20%20%20%20%7D)%3B%0A%20%20%7Dfunction%20ca(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20null%20!%3D%20b%20%26%26%20h(Xd%2C%20a)%20%26%26%20Xd%5Ba%5D(b%2C%20c._a%2C%20c%2C%20a)%3B%0A%20%20%7Dfunction%20da(a%2C%20b)%20%7B%0A%20%20%20%20return%20new%20Date(Date.UTC(a%2C%20b%20%2B%201%2C%200)).getUTCDate()%3B%0A%20%20%7Dfunction%20ea(a%2C%20b)%20%7B%0A%20%20%20%20return%20c(this._months)%20%3F%20this._months%5Ba.month()%5D%20%3A%20this._months%5B(this._months.isFormat%20%7C%7C%20fe).test(b)%20%3F%20%22format%22%20%3A%20%22standalone%22%5D%5Ba.month()%5D%3B%0A%20%20%7Dfunction%20fa(a%2C%20b)%20%7B%0A%20%20%20%20return%20c(this._monthsShort)%20%3F%20this._monthsShort%5Ba.month()%5D%20%3A%20this._monthsShort%5Bfe.test(b)%20%3F%20%22format%22%20%3A%20%22standalone%22%5D%5Ba.month()%5D%3B%0A%20%20%7Dfunction%20ga(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20d%2C%0A%20%20%20%20%20%20%20%20e%2C%0A%20%20%20%20%20%20%20%20f%2C%0A%20%20%20%20%20%20%20%20g%20%3D%20a.toLocaleLowerCase()%3Bif%20(!this._monthsParse)%20for%20(%0A%20%20%20%20%2F%2F%20this%20is%20not%20used%0A%20%20%20%20this._monthsParse%20%3D%20%5B%5D%2C%20this._longMonthsParse%20%3D%20%5B%5D%2C%20this._shortMonthsParse%20%3D%20%5B%5D%2C%20d%20%3D%200%3B%2012%20%3E%20d%3B%20%2B%2Bd)%20%7B%0A%20%20%20%20%20%20f%20%3D%20j(%5B2e3%2C%20d%5D)%2C%20this._shortMonthsParse%5Bd%5D%20%3D%20this.monthsShort(f%2C%20%22%22).toLocaleLowerCase()%2C%20this._longMonthsParse%5Bd%5D%20%3D%20this.months(f%2C%20%22%22).toLocaleLowerCase()%3B%0A%20%20%20%20%7Dreturn%20c%20%3F%20%22MMM%22%20%3D%3D%3D%20b%20%3F%20(e%20%3D%20sd.call(this._shortMonthsParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20null)%20%3A%20(e%20%3D%20sd.call(this._longMonthsParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20null)%20%3A%20%22MMM%22%20%3D%3D%3D%20b%20%3F%20(e%20%3D%20sd.call(this._shortMonthsParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20(e%20%3D%20sd.call(this._longMonthsParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20null))%20%3A%20(e%20%3D%20sd.call(this._longMonthsParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20(e%20%3D%20sd.call(this._shortMonthsParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20null))%3B%0A%20%20%7Dfunction%20ha(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20d%2C%20e%2C%20f%3Bif%20(this._monthsParseExact)%20return%20ga.call(this%2C%20a%2C%20b%2C%20c)%3B%0A%20%20%20%20%2F%2F%20TODO%3A%20add%20sorting%0A%20%20%20%20%2F%2F%20Sorting%20makes%20sure%20if%20one%20month%20(or%20abbr)%20is%20a%20prefix%20of%20another%0A%20%20%20%20%2F%2F%20see%20sorting%20in%20computeMonthsParse%0A%20%20%20%20for%20(this._monthsParse%20%7C%7C%20(this._monthsParse%20%3D%20%5B%5D%2C%20this._longMonthsParse%20%3D%20%5B%5D%2C%20this._shortMonthsParse%20%3D%20%5B%5D)%2C%20d%20%3D%200%3B%2012%20%3E%20d%3B%20d%2B%2B)%20%7B%0A%20%20%20%20%20%20%2F%2F%20test%20the%20regex%0A%20%20%20%20%20%20if%20(e%20%3D%20j(%5B2e3%2C%20d%5D)%2C%20c%20%26%26%20!this._longMonthsParse%5Bd%5D%20%26%26%20(this._longMonthsParse%5Bd%5D%20%3D%20new%20RegExp(%22%5E%22%20%2B%20this.months(e%2C%20%22%22).replace(%22.%22%2C%20%22%22)%20%2B%20%22%24%22%2C%20%22i%22)%2C%20this._shortMonthsParse%5Bd%5D%20%3D%20new%20RegExp(%22%5E%22%20%2B%20this.monthsShort(e%2C%20%22%22).replace(%22.%22%2C%20%22%22)%20%2B%20%22%24%22%2C%20%22i%22))%2C%20c%20%7C%7C%20this._monthsParse%5Bd%5D%20%7C%7C%20(f%20%3D%20%22%5E%22%20%2B%20this.months(e%2C%20%22%22)%20%2B%20%22%7C%5E%22%20%2B%20this.monthsShort(e%2C%20%22%22)%2C%20this._monthsParse%5Bd%5D%20%3D%20new%20RegExp(f.replace(%22.%22%2C%20%22%22)%2C%20%22i%22))%2C%20c%20%26%26%20%22MMMM%22%20%3D%3D%3D%20b%20%26%26%20this._longMonthsParse%5Bd%5D.test(a))%20return%20d%3Bif%20(c%20%26%26%20%22MMM%22%20%3D%3D%3D%20b%20%26%26%20this._shortMonthsParse%5Bd%5D.test(a))%20return%20d%3Bif%20(!c%20%26%26%20this._monthsParse%5Bd%5D.test(a))%20return%20d%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20%2F%2F%20MOMENTS%0A%20%20function%20ia(a%2C%20b)%20%7B%0A%20%20%20%20var%20c%3Bif%20(!a.isValid())%0A%20%20%20%20%20%20%2F%2F%20No%20op%0A%20%20%20%20%20%20return%20a%3Bif%20(%22string%22%20%3D%3D%20typeof%20b)%20if%20(%2F%5E%5Cd%2B%24%2F.test(b))%20b%20%3D%20t(b)%3Belse%0A%20%20%20%20%20%20%2F%2F%20TODO%3A%20Another%20silent%20failure%3F%0A%20%20%20%20%20%20if%20(b%20%3D%20a.localeData().monthsParse(b)%2C%20%22number%22%20!%3D%20typeof%20b)%20return%20a%3Breturn%20c%20%3D%20Math.min(a.date()%2C%20da(a.year()%2C%20b))%2C%20a._d%5B%22set%22%20%2B%20(a._isUTC%20%3F%20%22UTC%22%20%3A%20%22%22)%20%2B%20%22Month%22%5D(b%2C%20c)%2C%20a%3B%0A%20%20%7Dfunction%20ja(b)%20%7B%0A%20%20%20%20return%20null%20!%3D%20b%20%3F%20(ia(this%2C%20b)%2C%20a.updateOffset(this%2C%20!0)%2C%20this)%20%3A%20O(this%2C%20%22Month%22)%3B%0A%20%20%7Dfunction%20ka()%20%7B%0A%20%20%20%20return%20da(this.year()%2C%20this.month())%3B%0A%20%20%7Dfunction%20la(a)%20%7B%0A%20%20%20%20return%20this._monthsParseExact%20%3F%20(h(this%2C%20%22_monthsRegex%22)%20%7C%7C%20na.call(this)%2C%20a%20%3F%20this._monthsShortStrictRegex%20%3A%20this._monthsShortRegex)%20%3A%20(h(this%2C%20%22_monthsShortRegex%22)%20%7C%7C%20(this._monthsShortRegex%20%3D%20ie)%2C%20this._monthsShortStrictRegex%20%26%26%20a%20%3F%20this._monthsShortStrictRegex%20%3A%20this._monthsShortRegex)%3B%0A%20%20%7Dfunction%20ma(a)%20%7B%0A%20%20%20%20return%20this._monthsParseExact%20%3F%20(h(this%2C%20%22_monthsRegex%22)%20%7C%7C%20na.call(this)%2C%20a%20%3F%20this._monthsStrictRegex%20%3A%20this._monthsRegex)%20%3A%20(h(this%2C%20%22_monthsRegex%22)%20%7C%7C%20(this._monthsRegex%20%3D%20je)%2C%20this._monthsStrictRegex%20%26%26%20a%20%3F%20this._monthsStrictRegex%20%3A%20this._monthsRegex)%3B%0A%20%20%7Dfunction%20na()%20%7B%0A%20%20%20%20function%20a(a%2C%20b)%20%7B%0A%20%20%20%20%20%20return%20b.length%20-%20a.length%3B%0A%20%20%20%20%7Dvar%20b%2C%0A%20%20%20%20%20%20%20%20c%2C%0A%20%20%20%20%20%20%20%20d%20%3D%20%5B%5D%2C%0A%20%20%20%20%20%20%20%20e%20%3D%20%5B%5D%2C%0A%20%20%20%20%20%20%20%20f%20%3D%20%5B%5D%3Bfor%20(b%20%3D%200%3B%2012%20%3E%20b%3B%20b%2B%2B)%20%7B%0A%20%20%20%20%20%20c%20%3D%20j(%5B2e3%2C%20b%5D)%2C%20d.push(this.monthsShort(c%2C%20%22%22))%2C%20e.push(this.months(c%2C%20%22%22))%2C%20f.push(this.months(c%2C%20%22%22))%2C%20f.push(this.monthsShort(c%2C%20%22%22))%3B%0A%20%20%20%20%7Dfor%20(%0A%20%20%20%20%2F%2F%20Sorting%20makes%20sure%20if%20one%20month%20(or%20abbr)%20is%20a%20prefix%20of%20another%20it%0A%20%20%20%20%2F%2F%20will%20match%20the%20longer%20piece.%0A%20%20%20%20d.sort(a)%2C%20e.sort(a)%2C%20f.sort(a)%2C%20b%20%3D%200%3B%2012%20%3E%20b%3B%20b%2B%2B)%20%7B%0A%20%20%20%20%20%20d%5Bb%5D%20%3D%20_(d%5Bb%5D)%2C%20e%5Bb%5D%20%3D%20_(e%5Bb%5D)%3B%0A%20%20%20%20%7Dfor%20(b%20%3D%200%3B%2024%20%3E%20b%3B%20b%2B%2B)%20%7B%0A%20%20%20%20%20%20f%5Bb%5D%20%3D%20_(f%5Bb%5D)%3B%0A%20%20%20%20%7Dthis._monthsRegex%20%3D%20new%20RegExp(%22%5E(%22%20%2B%20f.join(%22%7C%22)%20%2B%20%22)%22%2C%20%22i%22)%2C%20this._monthsShortRegex%20%3D%20this._monthsRegex%2C%20this._monthsStrictRegex%20%3D%20new%20RegExp(%22%5E(%22%20%2B%20e.join(%22%7C%22)%20%2B%20%22)%22%2C%20%22i%22)%2C%20this._monthsShortStrictRegex%20%3D%20new%20RegExp(%22%5E(%22%20%2B%20d.join(%22%7C%22)%20%2B%20%22)%22%2C%20%22i%22)%3B%0A%20%20%7D%0A%20%20%2F%2F%20HELPERS%0A%20%20function%20oa(a)%20%7B%0A%20%20%20%20return%20pa(a)%20%3F%20366%20%3A%20365%3B%0A%20%20%7Dfunction%20pa(a)%20%7B%0A%20%20%20%20return%20a%20%25%204%20%3D%3D%3D%200%20%26%26%20a%20%25%20100%20!%3D%3D%200%20%7C%7C%20a%20%25%20400%20%3D%3D%3D%200%3B%0A%20%20%7Dfunction%20qa()%20%7B%0A%20%20%20%20return%20pa(this.year())%3B%0A%20%20%7Dfunction%20ra(a%2C%20b%2C%20c%2C%20d%2C%20e%2C%20f%2C%20g)%20%7B%0A%20%20%20%20%2F%2Fcan't%20just%20apply()%20to%20create%20a%20date%3A%0A%20%20%20%20%2F%2Fhttp%3A%2F%2Fstackoverflow.com%2Fquestions%2F181348%2Finstantiating-a-javascript-object-by-calling-prototype-constructor-apply%0A%20%20%20%20var%20h%20%3D%20new%20Date(a%2C%20b%2C%20c%2C%20d%2C%20e%2C%20f%2C%20g)%3B%0A%20%20%20%20%2F%2Fthe%20date%20constructor%20remaps%20years%200-99%20to%201900-1999%0A%20%20%20%20return%20100%20%3E%20a%20%26%26%20a%20%3E%3D%200%20%26%26%20isFinite(h.getFullYear())%20%26%26%20h.setFullYear(a)%2C%20h%3B%0A%20%20%7Dfunction%20sa(a)%20%7B%0A%20%20%20%20var%20b%20%3D%20new%20Date(Date.UTC.apply(null%2C%20arguments))%3B%0A%20%20%20%20%2F%2Fthe%20Date.UTC%20function%20remaps%20years%200-99%20to%201900-1999%0A%20%20%20%20return%20100%20%3E%20a%20%26%26%20a%20%3E%3D%200%20%26%26%20isFinite(b.getUTCFullYear())%20%26%26%20b.setUTCFullYear(a)%2C%20b%3B%0A%20%20%7D%0A%20%20%2F%2F%20start-of-first-week%20-%20start-of-year%0A%20%20function%20ta(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20%2F%2F%20first-week%20day%20--%20which%20january%20is%20always%20in%20the%20first%20week%20(4%20for%20iso%2C%201%20for%20other)%0A%20%20%20%20d%20%3D%207%20%2B%20b%20-%20c%2C%0A%0A%20%20%20%20%2F%2F%20first-week%20day%20local%20weekday%20--%20which%20local%20weekday%20is%20fwd%0A%20%20%20%20e%20%3D%20(7%20%2B%20sa(a%2C%200%2C%20d).getUTCDay()%20-%20b)%20%25%207%3Breturn%20-e%20%2B%20d%20-%201%3B%0A%20%20%7D%0A%20%20%2F%2Fhttp%3A%2F%2Fen.wikipedia.org%2Fwiki%2FISO_week_date%23Calculating_a_date_given_the_year.2C_week_number_and_weekday%0A%20%20function%20ua(a%2C%20b%2C%20c%2C%20d%2C%20e)%20%7B%0A%20%20%20%20var%20f%2C%0A%20%20%20%20%20%20%20%20g%2C%0A%20%20%20%20%20%20%20%20h%20%3D%20(7%20%2B%20c%20-%20d)%20%25%207%2C%0A%20%20%20%20%20%20%20%20i%20%3D%20ta(a%2C%20d%2C%20e)%2C%0A%20%20%20%20%20%20%20%20j%20%3D%201%20%2B%207%20*%20(b%20-%201)%20%2B%20h%20%2B%20i%3Breturn%200%20%3E%3D%20j%20%3F%20(f%20%3D%20a%20-%201%2C%20g%20%3D%20oa(f)%20%2B%20j)%20%3A%20j%20%3E%20oa(a)%20%3F%20(f%20%3D%20a%20%2B%201%2C%20g%20%3D%20j%20-%20oa(a))%20%3A%20(f%20%3D%20a%2C%20g%20%3D%20j)%2C%20%7B%20year%3A%20f%2C%20dayOfYear%3A%20g%20%7D%3B%0A%20%20%7Dfunction%20va(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20d%2C%0A%20%20%20%20%20%20%20%20e%2C%0A%20%20%20%20%20%20%20%20f%20%3D%20ta(a.year()%2C%20b%2C%20c)%2C%0A%20%20%20%20%20%20%20%20g%20%3D%20Math.floor((a.dayOfYear()%20-%20f%20-%201)%20%2F%207)%20%2B%201%3Breturn%201%20%3E%20g%20%3F%20(e%20%3D%20a.year()%20-%201%2C%20d%20%3D%20g%20%2B%20wa(e%2C%20b%2C%20c))%20%3A%20g%20%3E%20wa(a.year()%2C%20b%2C%20c)%20%3F%20(d%20%3D%20g%20-%20wa(a.year()%2C%20b%2C%20c)%2C%20e%20%3D%20a.year()%20%2B%201)%20%3A%20(e%20%3D%20a.year()%2C%20d%20%3D%20g)%2C%20%7B%20week%3A%20d%2C%20year%3A%20e%20%7D%3B%0A%20%20%7Dfunction%20wa(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20d%20%3D%20ta(a%2C%20b%2C%20c)%2C%0A%20%20%20%20%20%20%20%20e%20%3D%20ta(a%20%2B%201%2C%20b%2C%20c)%3Breturn%20(oa(a)%20-%20d%20%2B%20e)%20%2F%207%3B%0A%20%20%7D%0A%20%20%2F%2F%20HELPERS%0A%20%20%2F%2F%20LOCALES%0A%20%20function%20xa(a)%20%7B%0A%20%20%20%20return%20va(a%2C%20this._week.dow%2C%20this._week.doy).week%3B%0A%20%20%7Dfunction%20ya()%20%7B%0A%20%20%20%20return%20this._week.dow%3B%0A%20%20%7Dfunction%20za()%20%7B%0A%20%20%20%20return%20this._week.doy%3B%0A%20%20%7D%0A%20%20%2F%2F%20MOMENTS%0A%20%20function%20Aa(a)%20%7B%0A%20%20%20%20var%20b%20%3D%20this.localeData().week(this)%3Breturn%20null%20%3D%3D%20a%20%3F%20b%20%3A%20this.add(7%20*%20(a%20-%20b)%2C%20%22d%22)%3B%0A%20%20%7Dfunction%20Ba(a)%20%7B%0A%20%20%20%20var%20b%20%3D%20va(this%2C%201%2C%204).week%3Breturn%20null%20%3D%3D%20a%20%3F%20b%20%3A%20this.add(7%20*%20(a%20-%20b)%2C%20%22d%22)%3B%0A%20%20%7D%0A%20%20%2F%2F%20HELPERS%0A%20%20function%20Ca(a%2C%20b)%20%7B%0A%20%20%20%20return%20%22string%22%20!%3D%20typeof%20a%20%3F%20a%20%3A%20isNaN(a)%20%3F%20(a%20%3D%20b.weekdaysParse(a)%2C%20%22number%22%20%3D%3D%20typeof%20a%20%3F%20a%20%3A%20null)%20%3A%20parseInt(a%2C%2010)%3B%0A%20%20%7Dfunction%20Da(a%2C%20b)%20%7B%0A%20%20%20%20return%20%22string%22%20%3D%3D%20typeof%20a%20%3F%20b.weekdaysParse(a)%20%25%207%20%7C%7C%207%20%3A%20isNaN(a)%20%3F%20null%20%3A%20a%3B%0A%20%20%7Dfunction%20Ea(a%2C%20b)%20%7B%0A%20%20%20%20return%20c(this._weekdays)%20%3F%20this._weekdays%5Ba.day()%5D%20%3A%20this._weekdays%5Bthis._weekdays.isFormat.test(b)%20%3F%20%22format%22%20%3A%20%22standalone%22%5D%5Ba.day()%5D%3B%0A%20%20%7Dfunction%20Fa(a)%20%7B%0A%20%20%20%20return%20this._weekdaysShort%5Ba.day()%5D%3B%0A%20%20%7Dfunction%20Ga(a)%20%7B%0A%20%20%20%20return%20this._weekdaysMin%5Ba.day()%5D%3B%0A%20%20%7Dfunction%20Ha(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20d%2C%0A%20%20%20%20%20%20%20%20e%2C%0A%20%20%20%20%20%20%20%20f%2C%0A%20%20%20%20%20%20%20%20g%20%3D%20a.toLocaleLowerCase()%3Bif%20(!this._weekdaysParse)%20for%20(this._weekdaysParse%20%3D%20%5B%5D%2C%20this._shortWeekdaysParse%20%3D%20%5B%5D%2C%20this._minWeekdaysParse%20%3D%20%5B%5D%2C%20d%20%3D%200%3B%207%20%3E%20d%3B%20%2B%2Bd)%20%7B%0A%20%20%20%20%20%20f%20%3D%20j(%5B2e3%2C%201%5D).day(d)%2C%20this._minWeekdaysParse%5Bd%5D%20%3D%20this.weekdaysMin(f%2C%20%22%22).toLocaleLowerCase()%2C%20this._shortWeekdaysParse%5Bd%5D%20%3D%20this.weekdaysShort(f%2C%20%22%22).toLocaleLowerCase()%2C%20this._weekdaysParse%5Bd%5D%20%3D%20this.weekdays(f%2C%20%22%22).toLocaleLowerCase()%3B%0A%20%20%20%20%7Dreturn%20c%20%3F%20%22dddd%22%20%3D%3D%3D%20b%20%3F%20(e%20%3D%20sd.call(this._weekdaysParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20null)%20%3A%20%22ddd%22%20%3D%3D%3D%20b%20%3F%20(e%20%3D%20sd.call(this._shortWeekdaysParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20null)%20%3A%20(e%20%3D%20sd.call(this._minWeekdaysParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20null)%20%3A%20%22dddd%22%20%3D%3D%3D%20b%20%3F%20(e%20%3D%20sd.call(this._weekdaysParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20(e%20%3D%20sd.call(this._shortWeekdaysParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20(e%20%3D%20sd.call(this._minWeekdaysParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20null)))%20%3A%20%22ddd%22%20%3D%3D%3D%20b%20%3F%20(e%20%3D%20sd.call(this._shortWeekdaysParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20(e%20%3D%20sd.call(this._weekdaysParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20(e%20%3D%20sd.call(this._minWeekdaysParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20null)))%20%3A%20(e%20%3D%20sd.call(this._minWeekdaysParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20(e%20%3D%20sd.call(this._weekdaysParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20(e%20%3D%20sd.call(this._shortWeekdaysParse%2C%20g)%2C%20-1%20!%3D%3D%20e%20%3F%20e%20%3A%20null)))%3B%0A%20%20%7Dfunction%20Ia(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20d%2C%20e%2C%20f%3Bif%20(this._weekdaysParseExact)%20return%20Ha.call(this%2C%20a%2C%20b%2C%20c)%3Bfor%20(this._weekdaysParse%20%7C%7C%20(this._weekdaysParse%20%3D%20%5B%5D%2C%20this._minWeekdaysParse%20%3D%20%5B%5D%2C%20this._shortWeekdaysParse%20%3D%20%5B%5D%2C%20this._fullWeekdaysParse%20%3D%20%5B%5D)%2C%20d%20%3D%200%3B%207%20%3E%20d%3B%20d%2B%2B)%20%7B%0A%20%20%20%20%20%20%2F%2F%20test%20the%20regex%0A%20%20%20%20%20%20if%20(e%20%3D%20j(%5B2e3%2C%201%5D).day(d)%2C%20c%20%26%26%20!this._fullWeekdaysParse%5Bd%5D%20%26%26%20(this._fullWeekdaysParse%5Bd%5D%20%3D%20new%20RegExp(%22%5E%22%20%2B%20this.weekdays(e%2C%20%22%22).replace(%22.%22%2C%20%22.%3F%22)%20%2B%20%22%24%22%2C%20%22i%22)%2C%20this._shortWeekdaysParse%5Bd%5D%20%3D%20new%20RegExp(%22%5E%22%20%2B%20this.weekdaysShort(e%2C%20%22%22).replace(%22.%22%2C%20%22.%3F%22)%20%2B%20%22%24%22%2C%20%22i%22)%2C%20this._minWeekdaysParse%5Bd%5D%20%3D%20new%20RegExp(%22%5E%22%20%2B%20this.weekdaysMin(e%2C%20%22%22).replace(%22.%22%2C%20%22.%3F%22)%20%2B%20%22%24%22%2C%20%22i%22))%2C%20this._weekdaysParse%5Bd%5D%20%7C%7C%20(f%20%3D%20%22%5E%22%20%2B%20this.weekdays(e%2C%20%22%22)%20%2B%20%22%7C%5E%22%20%2B%20this.weekdaysShort(e%2C%20%22%22)%20%2B%20%22%7C%5E%22%20%2B%20this.weekdaysMin(e%2C%20%22%22)%2C%20this._weekdaysParse%5Bd%5D%20%3D%20new%20RegExp(f.replace(%22.%22%2C%20%22%22)%2C%20%22i%22))%2C%20c%20%26%26%20%22dddd%22%20%3D%3D%3D%20b%20%26%26%20this._fullWeekdaysParse%5Bd%5D.test(a))%20return%20d%3Bif%20(c%20%26%26%20%22ddd%22%20%3D%3D%3D%20b%20%26%26%20this._shortWeekdaysParse%5Bd%5D.test(a))%20return%20d%3Bif%20(c%20%26%26%20%22dd%22%20%3D%3D%3D%20b%20%26%26%20this._minWeekdaysParse%5Bd%5D.test(a))%20return%20d%3Bif%20(!c%20%26%26%20this._weekdaysParse%5Bd%5D.test(a))%20return%20d%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20%2F%2F%20MOMENTS%0A%20%20function%20Ja(a)%20%7B%0A%20%20%20%20if%20(!this.isValid())%20return%20null%20!%3D%20a%20%3F%20this%20%3A%20NaN%3Bvar%20b%20%3D%20this._isUTC%20%3F%20this._d.getUTCDay()%20%3A%20this._d.getDay()%3Breturn%20null%20!%3D%20a%20%3F%20(a%20%3D%20Ca(a%2C%20this.localeData())%2C%20this.add(a%20-%20b%2C%20%22d%22))%20%3A%20b%3B%0A%20%20%7Dfunction%20Ka(a)%20%7B%0A%20%20%20%20if%20(!this.isValid())%20return%20null%20!%3D%20a%20%3F%20this%20%3A%20NaN%3Bvar%20b%20%3D%20(this.day()%20%2B%207%20-%20this.localeData()._week.dow)%20%25%207%3Breturn%20null%20%3D%3D%20a%20%3F%20b%20%3A%20this.add(a%20-%20b%2C%20%22d%22)%3B%0A%20%20%7Dfunction%20La(a)%20%7B%0A%20%20%20%20if%20(!this.isValid())%20return%20null%20!%3D%20a%20%3F%20this%20%3A%20NaN%3B%0A%20%20%20%20%2F%2F%20behaves%20the%20same%20as%20moment%23day%20except%0A%20%20%20%20%2F%2F%20as%20a%20getter%2C%20returns%207%20instead%20of%200%20(1-7%20range%20instead%20of%200-6)%0A%20%20%20%20%2F%2F%20as%20a%20setter%2C%20sunday%20should%20belong%20to%20the%20previous%20week.%0A%20%20%20%20if%20(null%20!%3D%20a)%20%7B%0A%20%20%20%20%20%20var%20b%20%3D%20Da(a%2C%20this.localeData())%3Breturn%20this.day(this.day()%20%25%207%20%3F%20b%20%3A%20b%20-%207)%3B%0A%20%20%20%20%7Dreturn%20this.day()%20%7C%7C%207%3B%0A%20%20%7Dfunction%20Ma(a)%20%7B%0A%20%20%20%20return%20this._weekdaysParseExact%20%3F%20(h(this%2C%20%22_weekdaysRegex%22)%20%7C%7C%20Pa.call(this)%2C%20a%20%3F%20this._weekdaysStrictRegex%20%3A%20this._weekdaysRegex)%20%3A%20(h(this%2C%20%22_weekdaysRegex%22)%20%7C%7C%20(this._weekdaysRegex%20%3D%20pe)%2C%20this._weekdaysStrictRegex%20%26%26%20a%20%3F%20this._weekdaysStrictRegex%20%3A%20this._weekdaysRegex)%3B%0A%20%20%7Dfunction%20Na(a)%20%7B%0A%20%20%20%20return%20this._weekdaysParseExact%20%3F%20(h(this%2C%20%22_weekdaysRegex%22)%20%7C%7C%20Pa.call(this)%2C%20a%20%3F%20this._weekdaysShortStrictRegex%20%3A%20this._weekdaysShortRegex)%20%3A%20(h(this%2C%20%22_weekdaysShortRegex%22)%20%7C%7C%20(this._weekdaysShortRegex%20%3D%20qe)%2C%20this._weekdaysShortStrictRegex%20%26%26%20a%20%3F%20this._weekdaysShortStrictRegex%20%3A%20this._weekdaysShortRegex)%3B%0A%20%20%7Dfunction%20Oa(a)%20%7B%0A%20%20%20%20return%20this._weekdaysParseExact%20%3F%20(h(this%2C%20%22_weekdaysRegex%22)%20%7C%7C%20Pa.call(this)%2C%20a%20%3F%20this._weekdaysMinStrictRegex%20%3A%20this._weekdaysMinRegex)%20%3A%20(h(this%2C%20%22_weekdaysMinRegex%22)%20%7C%7C%20(this._weekdaysMinRegex%20%3D%20re)%2C%20this._weekdaysMinStrictRegex%20%26%26%20a%20%3F%20this._weekdaysMinStrictRegex%20%3A%20this._weekdaysMinRegex)%3B%0A%20%20%7Dfunction%20Pa()%20%7B%0A%20%20%20%20function%20a(a%2C%20b)%20%7B%0A%20%20%20%20%20%20return%20b.length%20-%20a.length%3B%0A%20%20%20%20%7Dvar%20b%2C%0A%20%20%20%20%20%20%20%20c%2C%0A%20%20%20%20%20%20%20%20d%2C%0A%20%20%20%20%20%20%20%20e%2C%0A%20%20%20%20%20%20%20%20f%2C%0A%20%20%20%20%20%20%20%20g%20%3D%20%5B%5D%2C%0A%20%20%20%20%20%20%20%20h%20%3D%20%5B%5D%2C%0A%20%20%20%20%20%20%20%20i%20%3D%20%5B%5D%2C%0A%20%20%20%20%20%20%20%20k%20%3D%20%5B%5D%3Bfor%20(b%20%3D%200%3B%207%20%3E%20b%3B%20b%2B%2B)%20%7B%0A%20%20%20%20%20%20c%20%3D%20j(%5B2e3%2C%201%5D).day(b)%2C%20d%20%3D%20this.weekdaysMin(c%2C%20%22%22)%2C%20e%20%3D%20this.weekdaysShort(c%2C%20%22%22)%2C%20f%20%3D%20this.weekdays(c%2C%20%22%22)%2C%20g.push(d)%2C%20h.push(e)%2C%20i.push(f)%2C%20k.push(d)%2C%20k.push(e)%2C%20k.push(f)%3B%0A%20%20%20%20%7Dfor%20(%0A%20%20%20%20%2F%2F%20Sorting%20makes%20sure%20if%20one%20weekday%20(or%20abbr)%20is%20a%20prefix%20of%20another%20it%0A%20%20%20%20%2F%2F%20will%20match%20the%20longer%20piece.%0A%20%20%20%20g.sort(a)%2C%20h.sort(a)%2C%20i.sort(a)%2C%20k.sort(a)%2C%20b%20%3D%200%3B%207%20%3E%20b%3B%20b%2B%2B)%20%7B%0A%20%20%20%20%20%20h%5Bb%5D%20%3D%20_(h%5Bb%5D)%2C%20i%5Bb%5D%20%3D%20_(i%5Bb%5D)%2C%20k%5Bb%5D%20%3D%20_(k%5Bb%5D)%3B%0A%20%20%20%20%7Dthis._weekdaysRegex%20%3D%20new%20RegExp(%22%5E(%22%20%2B%20k.join(%22%7C%22)%20%2B%20%22)%22%2C%20%22i%22)%2C%20this._weekdaysShortRegex%20%3D%20this._weekdaysRegex%2C%20this._weekdaysMinRegex%20%3D%20this._weekdaysRegex%2C%20this._weekdaysStrictRegex%20%3D%20new%20RegExp(%22%5E(%22%20%2B%20i.join(%22%7C%22)%20%2B%20%22)%22%2C%20%22i%22)%2C%20this._weekdaysShortStrictRegex%20%3D%20new%20RegExp(%22%5E(%22%20%2B%20h.join(%22%7C%22)%20%2B%20%22)%22%2C%20%22i%22)%2C%20this._weekdaysMinStrictRegex%20%3D%20new%20RegExp(%22%5E(%22%20%2B%20g.join(%22%7C%22)%20%2B%20%22)%22%2C%20%22i%22)%3B%0A%20%20%7D%0A%20%20%2F%2F%20FORMATTING%0A%20%20function%20Qa()%20%7B%0A%20%20%20%20return%20this.hours()%20%25%2012%20%7C%7C%2012%3B%0A%20%20%7Dfunction%20Ra()%20%7B%0A%20%20%20%20return%20this.hours()%20%7C%7C%2024%3B%0A%20%20%7Dfunction%20Sa(a%2C%20b)%20%7B%0A%20%20%20%20T(a%2C%200%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20%20%20return%20this.localeData().meridiem(this.hours()%2C%20this.minutes()%2C%20b)%3B%0A%20%20%20%20%7D)%3B%0A%20%20%7D%0A%20%20%2F%2F%20PARSING%0A%20%20function%20Ta(a%2C%20b)%20%7B%0A%20%20%20%20return%20b._meridiemParse%3B%0A%20%20%7D%0A%20%20%2F%2F%20LOCALES%0A%20%20function%20Ua(a)%20%7B%0A%20%20%20%20%2F%2F%20IE8%20Quirks%20Mode%20%26%20IE7%20Standards%20Mode%20do%20not%20allow%20accessing%20strings%20like%20arrays%0A%20%20%20%20%2F%2F%20Using%20charAt%20should%20be%20more%20compatible.%0A%20%20%20%20return%20%22p%22%20%3D%3D%3D%20(a%20%2B%20%22%22).toLowerCase().charAt(0)%3B%0A%20%20%7Dfunction%20Va(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20return%20a%20%3E%2011%20%3F%20c%20%3F%20%22pm%22%20%3A%20%22PM%22%20%3A%20c%20%3F%20%22am%22%20%3A%20%22AM%22%3B%0A%20%20%7Dfunction%20Wa(a)%20%7B%0A%20%20%20%20return%20a%20%3F%20a.toLowerCase().replace(%22_%22%2C%20%22-%22)%20%3A%20a%3B%0A%20%20%7D%0A%20%20%2F%2F%20pick%20the%20locale%20from%20the%20array%0A%20%20%2F%2F%20try%20%5B'en-au'%2C%20'en-gb'%5D%20as%20'en-au'%2C%20'en-gb'%2C%20'en'%2C%20as%20in%20move%20through%20the%20list%20trying%20each%0A%20%20%2F%2F%20substring%20from%20most%20specific%20to%20least%2C%20but%20move%20to%20the%20next%20array%20item%20if%20it's%20a%20more%20specific%20variant%20than%20the%20current%20root%0A%20%20function%20Xa(a)%20%7B%0A%20%20%20%20for%20(var%20b%2C%20c%2C%20d%2C%20e%2C%20f%20%3D%200%3B%20f%20%3C%20a.length%3B)%20%7B%0A%20%20%20%20%20%20for%20(e%20%3D%20Wa(a%5Bf%5D).split(%22-%22)%2C%20b%20%3D%20e.length%2C%20c%20%3D%20Wa(a%5Bf%20%2B%201%5D)%2C%20c%20%3D%20c%20%3F%20c.split(%22-%22)%20%3A%20null%3B%20b%20%3E%200%3B)%20%7B%0A%20%20%20%20%20%20%20%20if%20(d%20%3D%20Ya(e.slice(0%2C%20b).join(%22-%22)))%20return%20d%3Bif%20(c%20%26%26%20c.length%20%3E%3D%20b%20%26%26%20u(e%2C%20c%2C%20!0)%20%3E%3D%20b%20-%201)%0A%20%20%20%20%20%20%20%20%20%20%2F%2Fthe%20next%20array%20item%20is%20better%20than%20a%20shallower%20substring%20of%20this%20one%0A%20%20%20%20%20%20%20%20%20%20break%3Bb--%3B%0A%20%20%20%20%20%20%7Df%2B%2B%3B%0A%20%20%20%20%7Dreturn%20null%3B%0A%20%20%7Dfunction%20Ya(a)%20%7B%0A%20%20%20%20var%20b%20%3D%20null%3B%0A%20%20%20%20%2F%2F%20TODO%3A%20Find%20a%20better%20way%20to%20register%20and%20load%20all%20the%20locales%20in%20Node%0A%20%20%20%20if%20(!we%5Ba%5D%20%26%26%20%22undefined%22%20!%3D%20typeof%20module%20%26%26%20module%20%26%26%20module.exports)%20try%20%7B%0A%20%20%20%20%20%20b%20%3D%20se._abbr%2C%20require(%22.%2Flocale%2F%22%20%2B%20a)%2C%0A%20%20%20%20%20%20%2F%2F%20because%20defineLocale%20currently%20also%20sets%20the%20global%20locale%2C%20we%0A%20%20%20%20%20%20%2F%2F%20want%20to%20undo%20that%20for%20lazy%20loaded%20locales%0A%20%20%20%20%20%20Za(b)%3B%0A%20%20%20%20%7D%20catch%20(c)%20%7B%7Dreturn%20we%5Ba%5D%3B%0A%20%20%7D%0A%20%20%2F%2F%20This%20function%20will%20load%20locale%20and%20then%20set%20the%20global%20locale.%20%20If%0A%20%20%2F%2F%20no%20arguments%20are%20passed%20in%2C%20it%20will%20simply%20return%20the%20current%20global%0A%20%20%2F%2F%20locale%20key.%0A%20%20function%20Za(a%2C%20b)%20%7B%0A%20%20%20%20var%20c%3B%0A%20%20%20%20%2F%2F%20moment.duration._locale%20%3D%20moment._locale%20%3D%20data%3B%0A%20%20%20%20return%20a%20%26%26%20(c%20%3D%20o(b)%20%3F%20ab(a)%20%3A%20%24a(a%2C%20b)%2C%20c%20%26%26%20(se%20%3D%20c))%2C%20se._abbr%3B%0A%20%20%7Dfunction%20%24a(a%2C%20b)%20%7B%0A%20%20%20%20if%20(null%20!%3D%3D%20b)%20%7B%0A%20%20%20%20%20%20var%20c%20%3D%20ve%3B%0A%20%20%20%20%20%20%2F%2F%20treat%20as%20if%20there%20is%20no%20base%20config%0A%20%20%20%20%20%20%2F%2F%20backwards%20compat%20for%20now%3A%20also%20set%20the%20locale%0A%20%20%20%20%20%20return%20b.abbr%20%3D%20a%2C%20null%20!%3D%20we%5Ba%5D%20%3F%20(x(%22defineLocaleOverride%22%2C%20%22use%20moment.updateLocale(localeName%2C%20config)%20to%20change%20an%20existing%20locale.%20moment.defineLocale(localeName%2C%20config)%20should%20only%20be%20used%20for%20creating%20a%20new%20locale%20See%20http%3A%2F%2Fmomentjs.com%2Fguides%2F%23%2Fwarnings%2Fdefine-locale%2F%20for%20more%20info.%22)%2C%20c%20%3D%20we%5Ba%5D._config)%20%3A%20null%20!%3D%20b.parentLocale%20%26%26%20(null%20!%3D%20we%5Bb.parentLocale%5D%20%3F%20c%20%3D%20we%5Bb.parentLocale%5D._config%20%3A%20x(%22parentLocaleUndefined%22%2C%20%22specified%20parentLocale%20is%20not%20defined%20yet.%20See%20http%3A%2F%2Fmomentjs.com%2Fguides%2F%23%2Fwarnings%2Fparent-locale%2F%22))%2C%20we%5Ba%5D%20%3D%20new%20B(A(c%2C%20b))%2C%20Za(a)%2C%20we%5Ba%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%20useful%20for%20testing%0A%20%20%20%20return%20delete%20we%5Ba%5D%2C%20null%3B%0A%20%20%7Dfunction%20_a(a%2C%20b)%20%7B%0A%20%20%20%20if%20(null%20!%3D%20b)%20%7B%0A%20%20%20%20%20%20var%20c%2C%0A%20%20%20%20%20%20%20%20%20%20d%20%3D%20ve%3B%0A%20%20%20%20%20%20%2F%2F%20MERGE%0A%20%20%20%20%20%20null%20!%3D%20we%5Ba%5D%20%26%26%20(d%20%3D%20we%5Ba%5D._config)%2C%20b%20%3D%20A(d%2C%20b)%2C%20c%20%3D%20new%20B(b)%2C%20c.parentLocale%20%3D%20we%5Ba%5D%2C%20we%5Ba%5D%20%3D%20c%2C%0A%20%20%20%20%20%20%2F%2F%20backwards%20compat%20for%20now%3A%20also%20set%20the%20locale%0A%20%20%20%20%20%20Za(a)%3B%0A%20%20%20%20%7D%20else%0A%20%20%20%20%20%20%2F%2F%20pass%20null%20for%20config%20to%20unupdate%2C%20useful%20for%20tests%0A%20%20%20%20%20%20null%20!%3D%20we%5Ba%5D%20%26%26%20(null%20!%3D%20we%5Ba%5D.parentLocale%20%3F%20we%5Ba%5D%20%3D%20we%5Ba%5D.parentLocale%20%3A%20null%20!%3D%20we%5Ba%5D%20%26%26%20delete%20we%5Ba%5D)%3Breturn%20we%5Ba%5D%3B%0A%20%20%7D%0A%20%20%2F%2F%20returns%20locale%20data%0A%20%20function%20ab(a)%20%7B%0A%20%20%20%20var%20b%3Bif%20(a%20%26%26%20a._locale%20%26%26%20a._locale._abbr%20%26%26%20(a%20%3D%20a._locale._abbr)%2C%20!a)%20return%20se%3Bif%20(!c(a))%20%7B%0A%20%20%20%20%20%20if%20(b%20%3D%20Ya(a))%20return%20b%3Ba%20%3D%20%5Ba%5D%3B%0A%20%20%20%20%7Dreturn%20Xa(a)%3B%0A%20%20%7Dfunction%20bb()%20%7B%0A%20%20%20%20return%20rd(we)%3B%0A%20%20%7Dfunction%20cb(a)%20%7B%0A%20%20%20%20var%20b%2C%0A%20%20%20%20%20%20%20%20c%20%3D%20a._a%3Breturn%20c%20%26%26%20-2%20%3D%3D%3D%20l(a).overflow%20%26%26%20(b%20%3D%20c%5BZd%5D%20%3C%200%20%7C%7C%20c%5BZd%5D%20%3E%2011%20%3F%20Zd%20%3A%20c%5B%24d%5D%20%3C%201%20%7C%7C%20c%5B%24d%5D%20%3E%20da(c%5BYd%5D%2C%20c%5BZd%5D)%20%3F%20%24d%20%3A%20c%5B_d%5D%20%3C%200%20%7C%7C%20c%5B_d%5D%20%3E%2024%20%7C%7C%2024%20%3D%3D%3D%20c%5B_d%5D%20%26%26%20(0%20!%3D%3D%20c%5Bae%5D%20%7C%7C%200%20!%3D%3D%20c%5Bbe%5D%20%7C%7C%200%20!%3D%3D%20c%5Bce%5D)%20%3F%20_d%20%3A%20c%5Bae%5D%20%3C%200%20%7C%7C%20c%5Bae%5D%20%3E%2059%20%3F%20ae%20%3A%20c%5Bbe%5D%20%3C%200%20%7C%7C%20c%5Bbe%5D%20%3E%2059%20%3F%20be%20%3A%20c%5Bce%5D%20%3C%200%20%7C%7C%20c%5Bce%5D%20%3E%20999%20%3F%20ce%20%3A%20-1%2C%20l(a)._overflowDayOfYear%20%26%26%20(Yd%20%3E%20b%20%7C%7C%20b%20%3E%20%24d)%20%26%26%20(b%20%3D%20%24d)%2C%20l(a)._overflowWeeks%20%26%26%20-1%20%3D%3D%3D%20b%20%26%26%20(b%20%3D%20de)%2C%20l(a)._overflowWeekday%20%26%26%20-1%20%3D%3D%3D%20b%20%26%26%20(b%20%3D%20ee)%2C%20l(a).overflow%20%3D%20b)%2C%20a%3B%0A%20%20%7D%0A%20%20%2F%2F%20date%20from%20iso%20format%0A%20%20function%20db(a)%20%7B%0A%20%20%20%20var%20b%2C%0A%20%20%20%20%20%20%20%20c%2C%0A%20%20%20%20%20%20%20%20d%2C%0A%20%20%20%20%20%20%20%20e%2C%0A%20%20%20%20%20%20%20%20f%2C%0A%20%20%20%20%20%20%20%20g%2C%0A%20%20%20%20%20%20%20%20h%20%3D%20a._i%2C%0A%20%20%20%20%20%20%20%20i%20%3D%20xe.exec(h)%20%7C%7C%20ye.exec(h)%3Bif%20(i)%20%7B%0A%20%20%20%20%20%20for%20(l(a).iso%20%3D%20!0%2C%20b%20%3D%200%2C%20c%20%3D%20Ae.length%3B%20c%20%3E%20b%3B%20b%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20if%20(Ae%5Bb%5D%5B1%5D.exec(i%5B1%5D))%20%7B%0A%20%20%20%20%20%20%20%20%20%20e%20%3D%20Ae%5Bb%5D%5B0%5D%2C%20d%20%3D%20Ae%5Bb%5D%5B2%5D%20!%3D%3D%20!1%3Bbreak%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7Dif%20(null%20%3D%3D%20e)%20return%20void%20(a._isValid%20%3D%20!1)%3Bif%20(i%5B3%5D)%20%7B%0A%20%20%20%20%20%20%20%20for%20(b%20%3D%200%2C%20c%20%3D%20Be.length%3B%20c%20%3E%20b%3B%20b%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(Be%5Bb%5D%5B1%5D.exec(i%5B3%5D))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20match%5B2%5D%20should%20be%20'T'%20or%20space%0A%20%20%20%20%20%20%20%20%20%20%20%20f%20%3D%20(i%5B2%5D%20%7C%7C%20%22%20%22)%20%2B%20Be%5Bb%5D%5B0%5D%3Bbreak%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7Dif%20(null%20%3D%3D%20f)%20return%20void%20(a._isValid%20%3D%20!1)%3B%0A%20%20%20%20%20%20%7Dif%20(!d%20%26%26%20null%20!%3D%20f)%20return%20void%20(a._isValid%20%3D%20!1)%3Bif%20(i%5B4%5D)%20%7B%0A%20%20%20%20%20%20%20%20if%20(!ze.exec(i%5B4%5D))%20return%20void%20(a._isValid%20%3D%20!1)%3Bg%20%3D%20%22Z%22%3B%0A%20%20%20%20%20%20%7Da._f%20%3D%20e%20%2B%20(f%20%7C%7C%20%22%22)%20%2B%20(g%20%7C%7C%20%22%22)%2C%20jb(a)%3B%0A%20%20%20%20%7D%20else%20a._isValid%20%3D%20!1%3B%0A%20%20%7D%0A%20%20%2F%2F%20date%20from%20iso%20format%20or%20fallback%0A%20%20function%20eb(b)%20%7B%0A%20%20%20%20var%20c%20%3D%20Ce.exec(b._i)%3Breturn%20null%20!%3D%3D%20c%20%3F%20void%20(b._d%20%3D%20new%20Date(%2Bc%5B1%5D))%20%3A%20(db(b)%2C%20void%20(b._isValid%20%3D%3D%3D%20!1%20%26%26%20(delete%20b._isValid%2C%20a.createFromInputFallback(b))))%3B%0A%20%20%7D%0A%20%20%2F%2F%20Pick%20the%20first%20defined%20of%20two%20or%20three%20arguments.%0A%20%20function%20fb(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20return%20null%20!%3D%20a%20%3F%20a%20%3A%20null%20!%3D%20b%20%3F%20b%20%3A%20c%3B%0A%20%20%7Dfunction%20gb(b)%20%7B%0A%20%20%20%20%2F%2F%20hooks%20is%20actually%20the%20exported%20moment%20object%0A%20%20%20%20var%20c%20%3D%20new%20Date(a.now())%3Breturn%20b._useUTC%20%3F%20%5Bc.getUTCFullYear()%2C%20c.getUTCMonth()%2C%20c.getUTCDate()%5D%20%3A%20%5Bc.getFullYear()%2C%20c.getMonth()%2C%20c.getDate()%5D%3B%0A%20%20%7D%0A%20%20%2F%2F%20convert%20an%20array%20to%20a%20date.%0A%20%20%2F%2F%20the%20array%20should%20mirror%20the%20parameters%20below%0A%20%20%2F%2F%20note%3A%20all%20values%20past%20the%20year%20are%20optional%20and%20will%20default%20to%20the%20lowest%20possible%20value.%0A%20%20%2F%2F%20%5Byear%2C%20month%2C%20day%20%2C%20hour%2C%20minute%2C%20second%2C%20millisecond%5D%0A%20%20function%20hb(a)%20%7B%0A%20%20%20%20var%20b%2C%0A%20%20%20%20%20%20%20%20c%2C%0A%20%20%20%20%20%20%20%20d%2C%0A%20%20%20%20%20%20%20%20e%2C%0A%20%20%20%20%20%20%20%20f%20%3D%20%5B%5D%3Bif%20(!a._d)%20%7B%0A%20%20%20%20%20%20%2F%2F%20Default%20to%20current%20date.%0A%20%20%20%20%20%20%2F%2F%20*%20if%20no%20year%2C%20month%2C%20day%20of%20month%20are%20given%2C%20default%20to%20today%0A%20%20%20%20%20%20%2F%2F%20*%20if%20day%20of%20month%20is%20given%2C%20default%20month%20and%20year%0A%20%20%20%20%20%20%2F%2F%20*%20if%20month%20is%20given%2C%20default%20only%20year%0A%20%20%20%20%20%20%2F%2F%20*%20if%20year%20is%20given%2C%20don't%20default%20anything%0A%20%20%20%20%20%20for%20(d%20%3D%20gb(a)%2C%20a._w%20%26%26%20null%20%3D%3D%20a._a%5B%24d%5D%20%26%26%20null%20%3D%3D%20a._a%5BZd%5D%20%26%26%20ib(a)%2C%20a._dayOfYear%20%26%26%20(e%20%3D%20fb(a._a%5BYd%5D%2C%20d%5BYd%5D)%2C%20a._dayOfYear%20%3E%20oa(e)%20%26%26%20(l(a)._overflowDayOfYear%20%3D%20!0)%2C%20c%20%3D%20sa(e%2C%200%2C%20a._dayOfYear)%2C%20a._a%5BZd%5D%20%3D%20c.getUTCMonth()%2C%20a._a%5B%24d%5D%20%3D%20c.getUTCDate())%2C%20b%20%3D%200%3B%203%20%3E%20b%20%26%26%20null%20%3D%3D%20a._a%5Bb%5D%3B%20%2B%2Bb)%20%7B%0A%20%20%20%20%20%20%20%20a._a%5Bb%5D%20%3D%20f%5Bb%5D%20%3D%20d%5Bb%5D%3B%0A%20%20%20%20%20%20%7D%20%2F%2F%20Zero%20out%20whatever%20was%20not%20defaulted%2C%20including%20time%0A%20%20%20%20%20%20for%20(%3B%207%20%3E%20b%3B%20b%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20a._a%5Bb%5D%20%3D%20f%5Bb%5D%20%3D%20null%20%3D%3D%20a._a%5Bb%5D%20%3F%202%20%3D%3D%3D%20b%20%3F%201%20%3A%200%20%3A%20a._a%5Bb%5D%3B%0A%20%20%20%20%20%20%7D%20%2F%2F%20Check%20for%2024%3A00%3A00.000%0A%20%20%20%20%20%2024%20%3D%3D%3D%20a._a%5B_d%5D%20%26%26%200%20%3D%3D%3D%20a._a%5Bae%5D%20%26%26%200%20%3D%3D%3D%20a._a%5Bbe%5D%20%26%26%200%20%3D%3D%3D%20a._a%5Bce%5D%20%26%26%20(a._nextDay%20%3D%20!0%2C%20a._a%5B_d%5D%20%3D%200)%2C%20a._d%20%3D%20(a._useUTC%20%3F%20sa%20%3A%20ra).apply(null%2C%20f)%2C%0A%20%20%20%20%20%20%2F%2F%20Apply%20timezone%20offset%20from%20input.%20The%20actual%20utcOffset%20can%20be%20changed%0A%20%20%20%20%20%20%2F%2F%20with%20parseZone.%0A%20%20%20%20%20%20null%20!%3D%20a._tzm%20%26%26%20a._d.setUTCMinutes(a._d.getUTCMinutes()%20-%20a._tzm)%2C%20a._nextDay%20%26%26%20(a._a%5B_d%5D%20%3D%2024)%3B%0A%20%20%20%20%7D%0A%20%20%7Dfunction%20ib(a)%20%7B%0A%20%20%20%20var%20b%2C%20c%2C%20d%2C%20e%2C%20f%2C%20g%2C%20h%2C%20i%3Bb%20%3D%20a._w%2C%20null%20!%3D%20b.GG%20%7C%7C%20null%20!%3D%20b.W%20%7C%7C%20null%20!%3D%20b.E%20%3F%20(f%20%3D%201%2C%20g%20%3D%204%2C%20c%20%3D%20fb(b.GG%2C%20a._a%5BYd%5D%2C%20va(rb()%2C%201%2C%204).year)%2C%20d%20%3D%20fb(b.W%2C%201)%2C%20e%20%3D%20fb(b.E%2C%201)%2C%20(1%20%3E%20e%20%7C%7C%20e%20%3E%207)%20%26%26%20(i%20%3D%20!0))%20%3A%20(f%20%3D%20a._locale._week.dow%2C%20g%20%3D%20a._locale._week.doy%2C%20c%20%3D%20fb(b.gg%2C%20a._a%5BYd%5D%2C%20va(rb()%2C%20f%2C%20g).year)%2C%20d%20%3D%20fb(b.w%2C%201)%2C%20null%20!%3D%20b.d%20%3F%20(e%20%3D%20b.d%2C%20(0%20%3E%20e%20%7C%7C%20e%20%3E%206)%20%26%26%20(i%20%3D%20!0))%20%3A%20null%20!%3D%20b.e%20%3F%20(e%20%3D%20b.e%20%2B%20f%2C%20(b.e%20%3C%200%20%7C%7C%20b.e%20%3E%206)%20%26%26%20(i%20%3D%20!0))%20%3A%20e%20%3D%20f)%2C%201%20%3E%20d%20%7C%7C%20d%20%3E%20wa(c%2C%20f%2C%20g)%20%3F%20l(a)._overflowWeeks%20%3D%20!0%20%3A%20null%20!%3D%20i%20%3F%20l(a)._overflowWeekday%20%3D%20!0%20%3A%20(h%20%3D%20ua(c%2C%20d%2C%20e%2C%20f%2C%20g)%2C%20a._a%5BYd%5D%20%3D%20h.year%2C%20a._dayOfYear%20%3D%20h.dayOfYear)%3B%0A%20%20%7D%0A%20%20%2F%2F%20date%20from%20string%20and%20format%20string%0A%20%20function%20jb(b)%20%7B%0A%20%20%20%20%2F%2F%20TODO%3A%20Move%20this%20to%20another%20part%20of%20the%20creation%20flow%20to%20prevent%20circular%20deps%0A%20%20%20%20if%20(b._f%20%3D%3D%3D%20a.ISO_8601)%20return%20void%20db(b)%3Bb._a%20%3D%20%5B%5D%2C%20l(b).empty%20%3D%20!0%3B%0A%20%20%20%20%2F%2F%20This%20array%20is%20used%20to%20make%20a%20Date%2C%20either%20with%20%60new%20Date%60%20or%20%60Date.UTC%60%0A%20%20%20%20var%20c%2C%0A%20%20%20%20%20%20%20%20d%2C%0A%20%20%20%20%20%20%20%20e%2C%0A%20%20%20%20%20%20%20%20f%2C%0A%20%20%20%20%20%20%20%20g%2C%0A%20%20%20%20%20%20%20%20h%20%3D%20%22%22%20%2B%20b._i%2C%0A%20%20%20%20%20%20%20%20i%20%3D%20h.length%2C%0A%20%20%20%20%20%20%20%20j%20%3D%200%3Bfor%20(e%20%3D%20X(b._f%2C%20b._locale).match(Bd)%20%7C%7C%20%5B%5D%2C%20c%20%3D%200%3B%20c%20%3C%20e.length%3B%20c%2B%2B)%20%7B%0A%20%20%20%20%20%20f%20%3D%20e%5Bc%5D%2C%20d%20%3D%20(h.match(Z(f%2C%20b))%20%7C%7C%20%5B%5D)%5B0%5D%2C%20d%20%26%26%20(g%20%3D%20h.substr(0%2C%20h.indexOf(d))%2C%20g.length%20%3E%200%20%26%26%20l(b).unusedInput.push(g)%2C%20h%20%3D%20h.slice(h.indexOf(d)%20%2B%20d.length)%2C%20j%20%2B%3D%20d.length)%2C%20Ed%5Bf%5D%20%3F%20(d%20%3F%20l(b).empty%20%3D%20!1%20%3A%20l(b).unusedTokens.push(f)%2C%20ca(f%2C%20d%2C%20b))%20%3A%20b._strict%20%26%26%20!d%20%26%26%20l(b).unusedTokens.push(f)%3B%0A%20%20%20%20%7D%20%2F%2F%20add%20remaining%20unparsed%20input%20length%20to%20the%20string%0A%20%20%20%20l(b).charsLeftOver%20%3D%20i%20-%20j%2C%20h.length%20%3E%200%20%26%26%20l(b).unusedInput.push(h)%2C%0A%20%20%20%20%2F%2F%20clear%20_12h%20flag%20if%20hour%20is%20%3C%3D%2012%0A%20%20%20%20b._a%5B_d%5D%20%3C%3D%2012%20%26%26%20l(b).bigHour%20%3D%3D%3D%20!0%20%26%26%20b._a%5B_d%5D%20%3E%200%20%26%26%20(l(b).bigHour%20%3D%20void%200)%2C%20l(b).parsedDateParts%20%3D%20b._a.slice(0)%2C%20l(b).meridiem%20%3D%20b._meridiem%2C%0A%20%20%20%20%2F%2F%20handle%20meridiem%0A%20%20%20%20b._a%5B_d%5D%20%3D%20kb(b._locale%2C%20b._a%5B_d%5D%2C%20b._meridiem)%2C%20hb(b)%2C%20cb(b)%3B%0A%20%20%7Dfunction%20kb(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20d%3B%0A%20%20%20%20%2F%2F%20Fallback%0A%20%20%20%20return%20null%20%3D%3D%20c%20%3F%20b%20%3A%20null%20!%3D%20a.meridiemHour%20%3F%20a.meridiemHour(b%2C%20c)%20%3A%20null%20!%3D%20a.isPM%20%3F%20(d%20%3D%20a.isPM(c)%2C%20d%20%26%26%2012%20%3E%20b%20%26%26%20(b%20%2B%3D%2012)%2C%20d%20%7C%7C%2012%20!%3D%3D%20b%20%7C%7C%20(b%20%3D%200)%2C%20b)%20%3A%20b%3B%0A%20%20%7D%0A%20%20%2F%2F%20date%20from%20string%20and%20array%20of%20format%20strings%0A%20%20function%20lb(a)%20%7B%0A%20%20%20%20var%20b%2C%20c%2C%20d%2C%20e%2C%20f%3Bif%20(0%20%3D%3D%3D%20a._f.length)%20return%20l(a).invalidFormat%20%3D%20!0%2C%20void%20(a._d%20%3D%20new%20Date(NaN))%3Bfor%20(e%20%3D%200%3B%20e%20%3C%20a._f.length%3B%20e%2B%2B)%20%7B%0A%20%20%20%20%20%20f%20%3D%200%2C%20b%20%3D%20p(%7B%7D%2C%20a)%2C%20null%20!%3D%20a._useUTC%20%26%26%20(b._useUTC%20%3D%20a._useUTC)%2C%20b._f%20%3D%20a._f%5Be%5D%2C%20jb(b)%2C%20m(b)%20%26%26%20(f%20%2B%3D%20l(b).charsLeftOver%2C%20f%20%2B%3D%2010%20*%20l(b).unusedTokens.length%2C%20l(b).score%20%3D%20f%2C%20(null%20%3D%3D%20d%20%7C%7C%20d%20%3E%20f)%20%26%26%20(d%20%3D%20f%2C%20c%20%3D%20b))%3B%0A%20%20%20%20%7Di(a%2C%20c%20%7C%7C%20b)%3B%0A%20%20%7Dfunction%20mb(a)%20%7B%0A%20%20%20%20if%20(!a._d)%20%7B%0A%20%20%20%20%20%20var%20b%20%3D%20K(a._i)%3Ba._a%20%3D%20g(%5Bb.year%2C%20b.month%2C%20b.day%20%7C%7C%20b.date%2C%20b.hour%2C%20b.minute%2C%20b.second%2C%20b.millisecond%5D%2C%20function%20(a)%20%7B%0A%20%20%20%20%20%20%20%20return%20a%20%26%26%20parseInt(a%2C%2010)%3B%0A%20%20%20%20%20%20%7D)%2C%20hb(a)%3B%0A%20%20%20%20%7D%0A%20%20%7Dfunction%20nb(a)%20%7B%0A%20%20%20%20var%20b%20%3D%20new%20q(cb(ob(a)))%3B%0A%20%20%20%20%2F%2F%20Adding%20is%20smart%20enough%20around%20DST%0A%20%20%20%20return%20b._nextDay%20%26%26%20(b.add(1%2C%20%22d%22)%2C%20b._nextDay%20%3D%20void%200)%2C%20b%3B%0A%20%20%7Dfunction%20ob(a)%20%7B%0A%20%20%20%20var%20b%20%3D%20a._i%2C%0A%20%20%20%20%20%20%20%20d%20%3D%20a._f%3Breturn%20a._locale%20%3D%20a._locale%20%7C%7C%20ab(a._l)%2C%20null%20%3D%3D%3D%20b%20%7C%7C%20void%200%20%3D%3D%3D%20d%20%26%26%20%22%22%20%3D%3D%3D%20b%20%3F%20n(%7B%20nullInput%3A%20!0%20%7D)%20%3A%20(%22string%22%20%3D%3D%20typeof%20b%20%26%26%20(a._i%20%3D%20b%20%3D%20a._locale.preparse(b))%2C%20r(b)%20%3F%20new%20q(cb(b))%20%3A%20(c(d)%20%3F%20lb(a)%20%3A%20f(b)%20%3F%20a._d%20%3D%20b%20%3A%20d%20%3F%20jb(a)%20%3A%20pb(a)%2C%20m(a)%20%7C%7C%20(a._d%20%3D%20null)%2C%20a))%3B%0A%20%20%7Dfunction%20pb(b)%20%7B%0A%20%20%20%20var%20d%20%3D%20b._i%3Bvoid%200%20%3D%3D%3D%20d%20%3F%20b._d%20%3D%20new%20Date(a.now())%20%3A%20f(d)%20%3F%20b._d%20%3D%20new%20Date(d.valueOf())%20%3A%20%22string%22%20%3D%3D%20typeof%20d%20%3F%20eb(b)%20%3A%20c(d)%20%3F%20(b._a%20%3D%20g(d.slice(0)%2C%20function%20(a)%20%7B%0A%20%20%20%20%20%20return%20parseInt(a%2C%2010)%3B%0A%20%20%20%20%7D)%2C%20hb(b))%20%3A%20%22object%22%20%3D%3D%20(typeof%20d%20%3D%3D%3D%20%22undefined%22%20%3F%20%22undefined%22%20%3A%20babelHelpers.typeof(d))%20%3F%20mb(b)%20%3A%20%22number%22%20%3D%3D%20typeof%20d%20%3F%0A%20%20%20%20%2F%2F%20from%20milliseconds%0A%20%20%20%20b._d%20%3D%20new%20Date(d)%20%3A%20a.createFromInputFallback(b)%3B%0A%20%20%7Dfunction%20qb(a%2C%20b%2C%20f%2C%20g%2C%20h)%20%7B%0A%20%20%20%20var%20i%20%3D%20%7B%7D%3B%0A%20%20%20%20%2F%2F%20object%20construction%20must%20be%20done%20this%20way.%0A%20%20%20%20%2F%2F%20https%3A%2F%2Fgithub.com%2Fmoment%2Fmoment%2Fissues%2F1423%0A%20%20%20%20return%20%22boolean%22%20%3D%3D%20typeof%20f%20%26%26%20(g%20%3D%20f%2C%20f%20%3D%20void%200)%2C%20(d(a)%20%26%26%20e(a)%20%7C%7C%20c(a)%20%26%26%200%20%3D%3D%3D%20a.length)%20%26%26%20(a%20%3D%20void%200)%2C%20i._isAMomentObject%20%3D%20!0%2C%20i._useUTC%20%3D%20i._isUTC%20%3D%20h%2C%20i._l%20%3D%20f%2C%20i._i%20%3D%20a%2C%20i._f%20%3D%20b%2C%20i._strict%20%3D%20g%2C%20nb(i)%3B%0A%20%20%7Dfunction%20rb(a%2C%20b%2C%20c%2C%20d)%20%7B%0A%20%20%20%20return%20qb(a%2C%20b%2C%20c%2C%20d%2C%20!1)%3B%0A%20%20%7D%0A%20%20%2F%2F%20Pick%20a%20moment%20m%20from%20moments%20so%20that%20m%5Bfn%5D(other)%20is%20true%20for%20all%0A%20%20%2F%2F%20other.%20This%20relies%20on%20the%20function%20fn%20to%20be%20transitive.%0A%20%20%2F%2F%0A%20%20%2F%2F%20moments%20should%20either%20be%20an%20array%20of%20moment%20objects%20or%20an%20array%2C%20whose%0A%20%20%2F%2F%20first%20element%20is%20an%20array%20of%20moment%20objects.%0A%20%20function%20sb(a%2C%20b)%20%7B%0A%20%20%20%20var%20d%2C%20e%3Bif%20(1%20%3D%3D%3D%20b.length%20%26%26%20c(b%5B0%5D)%20%26%26%20(b%20%3D%20b%5B0%5D)%2C%20!b.length)%20return%20rb()%3Bfor%20(d%20%3D%20b%5B0%5D%2C%20e%20%3D%201%3B%20e%20%3C%20b.length%3B%20%2B%2Be)%20%7B%0A%20%20%20%20%20%20b%5Be%5D.isValid()%20%26%26%20!b%5Be%5D%5Ba%5D(d)%20%7C%7C%20(d%20%3D%20b%5Be%5D)%3B%0A%20%20%20%20%7Dreturn%20d%3B%0A%20%20%7D%0A%20%20%2F%2F%20TODO%3A%20Use%20%5B%5D.sort%20instead%3F%0A%20%20function%20tb()%20%7B%0A%20%20%20%20var%20a%20%3D%20%5B%5D.slice.call(arguments%2C%200)%3Breturn%20sb(%22isBefore%22%2C%20a)%3B%0A%20%20%7Dfunction%20ub()%20%7B%0A%20%20%20%20var%20a%20%3D%20%5B%5D.slice.call(arguments%2C%200)%3Breturn%20sb(%22isAfter%22%2C%20a)%3B%0A%20%20%7Dfunction%20vb(a)%20%7B%0A%20%20%20%20var%20b%20%3D%20K(a)%2C%0A%20%20%20%20%20%20%20%20c%20%3D%20b.year%20%7C%7C%200%2C%0A%20%20%20%20%20%20%20%20d%20%3D%20b.quarter%20%7C%7C%200%2C%0A%20%20%20%20%20%20%20%20e%20%3D%20b.month%20%7C%7C%200%2C%0A%20%20%20%20%20%20%20%20f%20%3D%20b.week%20%7C%7C%200%2C%0A%20%20%20%20%20%20%20%20g%20%3D%20b.day%20%7C%7C%200%2C%0A%20%20%20%20%20%20%20%20h%20%3D%20b.hour%20%7C%7C%200%2C%0A%20%20%20%20%20%20%20%20i%20%3D%20b.minute%20%7C%7C%200%2C%0A%20%20%20%20%20%20%20%20j%20%3D%20b.second%20%7C%7C%200%2C%0A%20%20%20%20%20%20%20%20k%20%3D%20b.millisecond%20%7C%7C%200%3B%0A%20%20%20%20%2F%2F%20representation%20for%20dateAddRemove%0A%20%20%20%20this._milliseconds%20%3D%20%2Bk%20%2B%201e3%20*%20j%20%2B%20%2F%2F%201000%0A%20%20%20%206e4%20*%20i%20%2B%20%2F%2F%201000%20*%2060%0A%20%20%20%201e3%20*%20h%20*%2060%20*%2060%2C%20%2F%2Fusing%201000%20*%2060%20*%2060%20instead%20of%2036e5%20to%20avoid%20floating%20point%20rounding%20errors%20https%3A%2F%2Fgithub.com%2Fmoment%2Fmoment%2Fissues%2F2978%0A%20%20%20%20%2F%2F%20Because%20of%20dateAddRemove%20treats%2024%20hours%20as%20different%20from%20a%0A%20%20%20%20%2F%2F%20day%20when%20working%20around%20DST%2C%20we%20need%20to%20store%20them%20separately%0A%20%20%20%20this._days%20%3D%20%2Bg%20%2B%207%20*%20f%2C%0A%20%20%20%20%2F%2F%20It%20is%20impossible%20translate%20months%20into%20days%20without%20knowing%0A%20%20%20%20%2F%2F%20which%20months%20you%20are%20are%20talking%20about%2C%20so%20we%20have%20to%20store%0A%20%20%20%20%2F%2F%20it%20separately.%0A%20%20%20%20this._months%20%3D%20%2Be%20%2B%203%20*%20d%20%2B%2012%20*%20c%2C%20this._data%20%3D%20%7B%7D%2C%20this._locale%20%3D%20ab()%2C%20this._bubble()%3B%0A%20%20%7Dfunction%20wb(a)%20%7B%0A%20%20%20%20return%20a%20instanceof%20vb%3B%0A%20%20%7D%0A%20%20%2F%2F%20FORMATTING%0A%20%20function%20xb(a%2C%20b)%20%7B%0A%20%20%20%20T(a%2C%200%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20%20%20var%20a%20%3D%20this.utcOffset()%2C%0A%20%20%20%20%20%20%20%20%20%20c%20%3D%20%22%2B%22%3Breturn%200%20%3E%20a%20%26%26%20(a%20%3D%20-a%2C%20c%20%3D%20%22-%22)%2C%20c%20%2B%20S(~~(a%20%2F%2060)%2C%202)%20%2B%20b%20%2B%20S(~~a%20%25%2060%2C%202)%3B%0A%20%20%20%20%7D)%3B%0A%20%20%7Dfunction%20yb(a%2C%20b)%20%7B%0A%20%20%20%20var%20c%20%3D%20(b%20%7C%7C%20%22%22).match(a)%20%7C%7C%20%5B%5D%2C%0A%20%20%20%20%20%20%20%20d%20%3D%20c%5Bc.length%20-%201%5D%20%7C%7C%20%5B%5D%2C%0A%20%20%20%20%20%20%20%20e%20%3D%20(d%20%2B%20%22%22).match(Ge)%20%7C%7C%20%5B%22-%22%2C%200%2C%200%5D%2C%0A%20%20%20%20%20%20%20%20f%20%3D%20%2B(60%20*%20e%5B1%5D)%20%2B%20t(e%5B2%5D)%3Breturn%20%22%2B%22%20%3D%3D%3D%20e%5B0%5D%20%3F%20f%20%3A%20-f%3B%0A%20%20%7D%0A%20%20%2F%2F%20Return%20a%20moment%20from%20input%2C%20that%20is%20local%2Futc%2Fzone%20equivalent%20to%20model.%0A%20%20function%20zb(b%2C%20c)%20%7B%0A%20%20%20%20var%20d%2C%20e%3B%0A%20%20%20%20%2F%2F%20Use%20low-level%20api%2C%20because%20this%20fn%20is%20low-level%20api.%0A%20%20%20%20return%20c._isUTC%20%3F%20(d%20%3D%20c.clone()%2C%20e%20%3D%20(r(b)%20%7C%7C%20f(b)%20%3F%20b.valueOf()%20%3A%20rb(b).valueOf())%20-%20d.valueOf()%2C%20d._d.setTime(d._d.valueOf()%20%2B%20e)%2C%20a.updateOffset(d%2C%20!1)%2C%20d)%20%3A%20rb(b).local()%3B%0A%20%20%7Dfunction%20Ab(a)%20%7B%0A%20%20%20%20%2F%2F%20On%20Firefox.24%20Date%23getTimezoneOffset%20returns%20a%20floating%20point.%0A%20%20%20%20%2F%2F%20https%3A%2F%2Fgithub.com%2Fmoment%2Fmoment%2Fpull%2F1871%0A%20%20%20%20return%2015%20*%20-Math.round(a._d.getTimezoneOffset()%20%2F%2015)%3B%0A%20%20%7D%0A%20%20%2F%2F%20MOMENTS%0A%20%20%2F%2F%20keepLocalTime%20%3D%20true%20means%20only%20change%20the%20timezone%2C%20without%0A%20%20%2F%2F%20affecting%20the%20local%20hour.%20So%205%3A31%3A26%20%2B0300%20--%5ButcOffset(2%2C%20true)%5D--%5Cx3e%0A%20%20%2F%2F%205%3A31%3A26%20%2B0200%20It%20is%20possible%20that%205%3A31%3A26%20doesn't%20exist%20with%20offset%0A%20%20%2F%2F%20%2B0200%2C%20so%20we%20adjust%20the%20time%20as%20needed%2C%20to%20be%20valid.%0A%20%20%2F%2F%0A%20%20%2F%2F%20Keeping%20the%20time%20actually%20adds%2Fsubtracts%20(one%20hour)%0A%20%20%2F%2F%20from%20the%20actual%20represented%20time.%20That%20is%20why%20we%20call%20updateOffset%0A%20%20%2F%2F%20a%20second%20time.%20In%20case%20it%20wants%20us%20to%20change%20the%20offset%20again%0A%20%20%2F%2F%20_changeInProgress%20%3D%3D%20true%20case%2C%20then%20we%20have%20to%20adjust%2C%20because%0A%20%20%2F%2F%20there%20is%20no%20such%20time%20in%20the%20given%20timezone.%0A%20%20function%20Bb(b%2C%20c)%20%7B%0A%20%20%20%20var%20d%2C%0A%20%20%20%20%20%20%20%20e%20%3D%20this._offset%20%7C%7C%200%3Breturn%20this.isValid()%20%3F%20null%20!%3D%20b%20%3F%20(%22string%22%20%3D%3D%20typeof%20b%20%3F%20b%20%3D%20yb(Td%2C%20b)%20%3A%20Math.abs(b)%20%3C%2016%20%26%26%20(b%20%3D%2060%20*%20b)%2C%20!this._isUTC%20%26%26%20c%20%26%26%20(d%20%3D%20Ab(this))%2C%20this._offset%20%3D%20b%2C%20this._isUTC%20%3D%20!0%2C%20null%20!%3D%20d%20%26%26%20this.add(d%2C%20%22m%22)%2C%20e%20!%3D%3D%20b%20%26%26%20(!c%20%7C%7C%20this._changeInProgress%20%3F%20Sb(this%2C%20Mb(b%20-%20e%2C%20%22m%22)%2C%201%2C%20!1)%20%3A%20this._changeInProgress%20%7C%7C%20(this._changeInProgress%20%3D%20!0%2C%20a.updateOffset(this%2C%20!0)%2C%20this._changeInProgress%20%3D%20null))%2C%20this)%20%3A%20this._isUTC%20%3F%20e%20%3A%20Ab(this)%20%3A%20null%20!%3D%20b%20%3F%20this%20%3A%20NaN%3B%0A%20%20%7Dfunction%20Cb(a%2C%20b)%20%7B%0A%20%20%20%20return%20null%20!%3D%20a%20%3F%20(%22string%22%20!%3D%20typeof%20a%20%26%26%20(a%20%3D%20-a)%2C%20this.utcOffset(a%2C%20b)%2C%20this)%20%3A%20-this.utcOffset()%3B%0A%20%20%7Dfunction%20Db(a)%20%7B%0A%20%20%20%20return%20this.utcOffset(0%2C%20a)%3B%0A%20%20%7Dfunction%20Eb(a)%20%7B%0A%20%20%20%20return%20this._isUTC%20%26%26%20(this.utcOffset(0%2C%20a)%2C%20this._isUTC%20%3D%20!1%2C%20a%20%26%26%20this.subtract(Ab(this)%2C%20%22m%22))%2C%20this%3B%0A%20%20%7Dfunction%20Fb()%20%7B%0A%20%20%20%20return%20this._tzm%20%3F%20this.utcOffset(this._tzm)%20%3A%20%22string%22%20%3D%3D%20typeof%20this._i%20%26%26%20this.utcOffset(yb(Sd%2C%20this._i))%2C%20this%3B%0A%20%20%7Dfunction%20Gb(a)%20%7B%0A%20%20%20%20return%20this.isValid()%20%3F%20(a%20%3D%20a%20%3F%20rb(a).utcOffset()%20%3A%200%2C%20(this.utcOffset()%20-%20a)%20%25%2060%20%3D%3D%3D%200)%20%3A%20!1%3B%0A%20%20%7Dfunction%20Hb()%20%7B%0A%20%20%20%20return%20this.utcOffset()%20%3E%20this.clone().month(0).utcOffset()%20%7C%7C%20this.utcOffset()%20%3E%20this.clone().month(5).utcOffset()%3B%0A%20%20%7Dfunction%20Ib()%20%7B%0A%20%20%20%20if%20(!o(this._isDSTShifted))%20return%20this._isDSTShifted%3Bvar%20a%20%3D%20%7B%7D%3Bif%20(p(a%2C%20this)%2C%20a%20%3D%20ob(a)%2C%20a._a)%20%7B%0A%20%20%20%20%20%20var%20b%20%3D%20a._isUTC%20%3F%20j(a._a)%20%3A%20rb(a._a)%3Bthis._isDSTShifted%20%3D%20this.isValid()%20%26%26%20u(a._a%2C%20b.toArray())%20%3E%200%3B%0A%20%20%20%20%7D%20else%20this._isDSTShifted%20%3D%20!1%3Breturn%20this._isDSTShifted%3B%0A%20%20%7Dfunction%20Jb()%20%7B%0A%20%20%20%20return%20this.isValid()%20%3F%20!this._isUTC%20%3A%20!1%3B%0A%20%20%7Dfunction%20Kb()%20%7B%0A%20%20%20%20return%20this.isValid()%20%3F%20this._isUTC%20%3A%20!1%3B%0A%20%20%7Dfunction%20Lb()%20%7B%0A%20%20%20%20return%20this.isValid()%20%3F%20this._isUTC%20%26%26%200%20%3D%3D%3D%20this._offset%20%3A%20!1%3B%0A%20%20%7Dfunction%20Mb(a%2C%20b)%20%7B%0A%20%20%20%20var%20c%2C%0A%20%20%20%20%20%20%20%20d%2C%0A%20%20%20%20%20%20%20%20e%2C%0A%20%20%20%20%20%20%20%20f%20%3D%20a%2C%0A%0A%20%20%20%20%2F%2F%20matching%20against%20regexp%20is%20expensive%2C%20do%20it%20on%20demand%0A%20%20%20%20g%20%3D%20null%3B%20%2F%2F%20checks%20for%20null%20or%20undefined%0A%20%20%20%20return%20wb(a)%20%3F%20f%20%3D%20%7B%20ms%3A%20a._milliseconds%2C%20d%3A%20a._days%2C%20M%3A%20a._months%20%7D%20%3A%20%22number%22%20%3D%3D%20typeof%20a%20%3F%20(f%20%3D%20%7B%7D%2C%20b%20%3F%20f%5Bb%5D%20%3D%20a%20%3A%20f.milliseconds%20%3D%20a)%20%3A%20(g%20%3D%20He.exec(a))%20%3F%20(c%20%3D%20%22-%22%20%3D%3D%3D%20g%5B1%5D%20%3F%20-1%20%3A%201%2C%20f%20%3D%20%7B%20y%3A%200%2C%20d%3A%20t(g%5B%24d%5D)%20*%20c%2C%20h%3A%20t(g%5B_d%5D)%20*%20c%2C%20m%3A%20t(g%5Bae%5D)%20*%20c%2C%20s%3A%20t(g%5Bbe%5D)%20*%20c%2C%20ms%3A%20t(g%5Bce%5D)%20*%20c%20%7D)%20%3A%20(g%20%3D%20Ie.exec(a))%20%3F%20(c%20%3D%20%22-%22%20%3D%3D%3D%20g%5B1%5D%20%3F%20-1%20%3A%201%2C%20f%20%3D%20%7B%20y%3A%20Nb(g%5B2%5D%2C%20c)%2C%20M%3A%20Nb(g%5B3%5D%2C%20c)%2C%20w%3A%20Nb(g%5B4%5D%2C%20c)%2C%20d%3A%20Nb(g%5B5%5D%2C%20c)%2C%20h%3A%20Nb(g%5B6%5D%2C%20c)%2C%20m%3A%20Nb(g%5B7%5D%2C%20c)%2C%20s%3A%20Nb(g%5B8%5D%2C%20c)%20%7D)%20%3A%20null%20%3D%3D%20f%20%3F%20f%20%3D%20%7B%7D%20%3A%20%22object%22%20%3D%3D%20(typeof%20f%20%3D%3D%3D%20%22undefined%22%20%3F%20%22undefined%22%20%3A%20babelHelpers.typeof(f))%20%26%26%20(%22from%22%20in%20f%20%7C%7C%20%22to%22%20in%20f)%20%26%26%20(e%20%3D%20Pb(rb(f.from)%2C%20rb(f.to))%2C%20f%20%3D%20%7B%7D%2C%20f.ms%20%3D%20e.milliseconds%2C%20f.M%20%3D%20e.months)%2C%20d%20%3D%20new%20vb(f)%2C%20wb(a)%20%26%26%20h(a%2C%20%22_locale%22)%20%26%26%20(d._locale%20%3D%20a._locale)%2C%20d%3B%0A%20%20%7Dfunction%20Nb(a%2C%20b)%20%7B%0A%20%20%20%20%2F%2F%20We'd%20normally%20use%20~~inp%20for%20this%2C%20but%20unfortunately%20it%20also%0A%20%20%20%20%2F%2F%20converts%20floats%20to%20ints.%0A%20%20%20%20%2F%2F%20inp%20may%20be%20undefined%2C%20so%20careful%20calling%20replace%20on%20it.%0A%20%20%20%20var%20c%20%3D%20a%20%26%26%20parseFloat(a.replace(%22%2C%22%2C%20%22.%22))%3B%0A%20%20%20%20%2F%2F%20apply%20sign%20while%20we're%20at%20it%0A%20%20%20%20return%20(isNaN(c)%20%3F%200%20%3A%20c)%20*%20b%3B%0A%20%20%7Dfunction%20Ob(a%2C%20b)%20%7B%0A%20%20%20%20var%20c%20%3D%20%7B%20milliseconds%3A%200%2C%20months%3A%200%20%7D%3Breturn%20c.months%20%3D%20b.month()%20-%20a.month()%20%2B%2012%20*%20(b.year()%20-%20a.year())%2C%20a.clone().add(c.months%2C%20%22M%22).isAfter(b)%20%26%26%20--c.months%2C%20c.milliseconds%20%3D%20%2Bb%20-%20%2Ba.clone().add(c.months%2C%20%22M%22)%2C%20c%3B%0A%20%20%7Dfunction%20Pb(a%2C%20b)%20%7B%0A%20%20%20%20var%20c%3Breturn%20a.isValid()%20%26%26%20b.isValid()%20%3F%20(b%20%3D%20zb(b%2C%20a)%2C%20a.isBefore(b)%20%3F%20c%20%3D%20Ob(a%2C%20b)%20%3A%20(c%20%3D%20Ob(b%2C%20a)%2C%20c.milliseconds%20%3D%20-c.milliseconds%2C%20c.months%20%3D%20-c.months)%2C%20c)%20%3A%20%7B%20milliseconds%3A%200%2C%20months%3A%200%20%7D%3B%0A%20%20%7Dfunction%20Qb(a)%20%7B%0A%20%20%20%20return%200%20%3E%20a%20%3F%20-1%20*%20Math.round(-1%20*%20a)%20%3A%20Math.round(a)%3B%0A%20%20%7D%0A%20%20%2F%2F%20TODO%3A%20remove%20'name'%20arg%20after%20deprecation%20is%20removed%0A%20%20function%20Rb(a%2C%20b)%20%7B%0A%20%20%20%20return%20function%20(c%2C%20d)%20%7B%0A%20%20%20%20%20%20var%20e%2C%20f%3B%0A%20%20%20%20%20%20%2F%2Finvert%20the%20arguments%2C%20but%20complain%20about%20it%0A%20%20%20%20%20%20return%20null%20%3D%3D%3D%20d%20%7C%7C%20isNaN(%2Bd)%20%7C%7C%20(x(b%2C%20%22moment().%22%20%2B%20b%20%2B%20%22(period%2C%20number)%20is%20deprecated.%20Please%20use%20moment().%22%20%2B%20b%20%2B%20%22(number%2C%20period).%20See%20http%3A%2F%2Fmomentjs.com%2Fguides%2F%23%2Fwarnings%2Fadd-inverted-param%2F%20for%20more%20info.%22)%2C%20f%20%3D%20c%2C%20c%20%3D%20d%2C%20d%20%3D%20f)%2C%20c%20%3D%20%22string%22%20%3D%3D%20typeof%20c%20%3F%20%2Bc%20%3A%20c%2C%20e%20%3D%20Mb(c%2C%20d)%2C%20Sb(this%2C%20e%2C%20a)%2C%20this%3B%0A%20%20%20%20%7D%3B%0A%20%20%7Dfunction%20Sb(b%2C%20c%2C%20d%2C%20e)%20%7B%0A%20%20%20%20var%20f%20%3D%20c._milliseconds%2C%0A%20%20%20%20%20%20%20%20g%20%3D%20Qb(c._days)%2C%0A%20%20%20%20%20%20%20%20h%20%3D%20Qb(c._months)%3Bb.isValid()%20%26%26%20(e%20%3D%20null%20%3D%3D%20e%20%3F%20!0%20%3A%20e%2C%20f%20%26%26%20b._d.setTime(b._d.valueOf()%20%2B%20f%20*%20d)%2C%20g%20%26%26%20P(b%2C%20%22Date%22%2C%20O(b%2C%20%22Date%22)%20%2B%20g%20*%20d)%2C%20h%20%26%26%20ia(b%2C%20O(b%2C%20%22Month%22)%20%2B%20h%20*%20d)%2C%20e%20%26%26%20a.updateOffset(b%2C%20g%20%7C%7C%20h))%3B%0A%20%20%7Dfunction%20Tb(a%2C%20b)%20%7B%0A%20%20%20%20var%20c%20%3D%20a.diff(b%2C%20%22days%22%2C%20!0)%3Breturn%20-6%20%3E%20c%20%3F%20%22sameElse%22%20%3A%20-1%20%3E%20c%20%3F%20%22lastWeek%22%20%3A%200%20%3E%20c%20%3F%20%22lastDay%22%20%3A%201%20%3E%20c%20%3F%20%22sameDay%22%20%3A%202%20%3E%20c%20%3F%20%22nextDay%22%20%3A%207%20%3E%20c%20%3F%20%22nextWeek%22%20%3A%20%22sameElse%22%3B%0A%20%20%7Dfunction%20Ub(b%2C%20c)%20%7B%0A%20%20%20%20%2F%2F%20We%20want%20to%20compare%20the%20start%20of%20today%2C%20vs%20this.%0A%20%20%20%20%2F%2F%20Getting%20start-of-today%20depends%20on%20whether%20we're%20local%2Futc%2Foffset%20or%20not.%0A%20%20%20%20var%20d%20%3D%20b%20%7C%7C%20rb()%2C%0A%20%20%20%20%20%20%20%20e%20%3D%20zb(d%2C%20this).startOf(%22day%22)%2C%0A%20%20%20%20%20%20%20%20f%20%3D%20a.calendarFormat(this%2C%20e)%20%7C%7C%20%22sameElse%22%2C%0A%20%20%20%20%20%20%20%20g%20%3D%20c%20%26%26%20(y(c%5Bf%5D)%20%3F%20c%5Bf%5D.call(this%2C%20d)%20%3A%20c%5Bf%5D)%3Breturn%20this.format(g%20%7C%7C%20this.localeData().calendar(f%2C%20this%2C%20rb(d)))%3B%0A%20%20%7Dfunction%20Vb()%20%7B%0A%20%20%20%20return%20new%20q(this)%3B%0A%20%20%7Dfunction%20Wb(a%2C%20b)%20%7B%0A%20%20%20%20var%20c%20%3D%20r(a)%20%3F%20a%20%3A%20rb(a)%3Breturn%20this.isValid()%20%26%26%20c.isValid()%20%3F%20(b%20%3D%20J(o(b)%20%3F%20%22millisecond%22%20%3A%20b)%2C%20%22millisecond%22%20%3D%3D%3D%20b%20%3F%20this.valueOf()%20%3E%20c.valueOf()%20%3A%20c.valueOf()%20%3C%20this.clone().startOf(b).valueOf())%20%3A%20!1%3B%0A%20%20%7Dfunction%20Xb(a%2C%20b)%20%7B%0A%20%20%20%20var%20c%20%3D%20r(a)%20%3F%20a%20%3A%20rb(a)%3Breturn%20this.isValid()%20%26%26%20c.isValid()%20%3F%20(b%20%3D%20J(o(b)%20%3F%20%22millisecond%22%20%3A%20b)%2C%20%22millisecond%22%20%3D%3D%3D%20b%20%3F%20this.valueOf()%20%3C%20c.valueOf()%20%3A%20this.clone().endOf(b).valueOf()%20%3C%20c.valueOf())%20%3A%20!1%3B%0A%20%20%7Dfunction%20Yb(a%2C%20b%2C%20c%2C%20d)%20%7B%0A%20%20%20%20return%20d%20%3D%20d%20%7C%7C%20%22()%22%2C%20(%22(%22%20%3D%3D%3D%20d%5B0%5D%20%3F%20this.isAfter(a%2C%20c)%20%3A%20!this.isBefore(a%2C%20c))%20%26%26%20(%22)%22%20%3D%3D%3D%20d%5B1%5D%20%3F%20this.isBefore(b%2C%20c)%20%3A%20!this.isAfter(b%2C%20c))%3B%0A%20%20%7Dfunction%20Zb(a%2C%20b)%20%7B%0A%20%20%20%20var%20c%2C%0A%20%20%20%20%20%20%20%20d%20%3D%20r(a)%20%3F%20a%20%3A%20rb(a)%3Breturn%20this.isValid()%20%26%26%20d.isValid()%20%3F%20(b%20%3D%20J(b%20%7C%7C%20%22millisecond%22)%2C%20%22millisecond%22%20%3D%3D%3D%20b%20%3F%20this.valueOf()%20%3D%3D%3D%20d.valueOf()%20%3A%20(c%20%3D%20d.valueOf()%2C%20this.clone().startOf(b).valueOf()%20%3C%3D%20c%20%26%26%20c%20%3C%3D%20this.clone().endOf(b).valueOf()))%20%3A%20!1%3B%0A%20%20%7Dfunction%20%24b(a%2C%20b)%20%7B%0A%20%20%20%20return%20this.isSame(a%2C%20b)%20%7C%7C%20this.isAfter(a%2C%20b)%3B%0A%20%20%7Dfunction%20_b(a%2C%20b)%20%7B%0A%20%20%20%20return%20this.isSame(a%2C%20b)%20%7C%7C%20this.isBefore(a%2C%20b)%3B%0A%20%20%7Dfunction%20ac(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20d%2C%20e%2C%20f%2C%20g%3B%20%2F%2F%201000%0A%20%20%20%20%2F%2F%201000%20*%2060%0A%20%20%20%20%2F%2F%201000%20*%2060%20*%2060%0A%20%20%20%20%2F%2F%201000%20*%2060%20*%2060%20*%2024%2C%20negate%20dst%0A%20%20%20%20%2F%2F%201000%20*%2060%20*%2060%20*%2024%20*%207%2C%20negate%20dst%0A%20%20%20%20return%20this.isValid()%20%3F%20(d%20%3D%20zb(a%2C%20this)%2C%20d.isValid()%20%3F%20(e%20%3D%206e4%20*%20(d.utcOffset()%20-%20this.utcOffset())%2C%20b%20%3D%20J(b)%2C%20%22year%22%20%3D%3D%3D%20b%20%7C%7C%20%22month%22%20%3D%3D%3D%20b%20%7C%7C%20%22quarter%22%20%3D%3D%3D%20b%20%3F%20(g%20%3D%20bc(this%2C%20d)%2C%20%22quarter%22%20%3D%3D%3D%20b%20%3F%20g%20%2F%3D%203%20%3A%20%22year%22%20%3D%3D%3D%20b%20%26%26%20(g%20%2F%3D%2012))%20%3A%20(f%20%3D%20this%20-%20d%2C%20g%20%3D%20%22second%22%20%3D%3D%3D%20b%20%3F%20f%20%2F%201e3%20%3A%20%22minute%22%20%3D%3D%3D%20b%20%3F%20f%20%2F%206e4%20%3A%20%22hour%22%20%3D%3D%3D%20b%20%3F%20f%20%2F%2036e5%20%3A%20%22day%22%20%3D%3D%3D%20b%20%3F%20(f%20-%20e)%20%2F%20864e5%20%3A%20%22week%22%20%3D%3D%3D%20b%20%3F%20(f%20-%20e)%20%2F%206048e5%20%3A%20f)%2C%20c%20%3F%20g%20%3A%20s(g))%20%3A%20NaN)%20%3A%20NaN%3B%0A%20%20%7Dfunction%20bc(a%2C%20b)%20%7B%0A%20%20%20%20%2F%2F%20difference%20in%20months%0A%20%20%20%20var%20c%2C%0A%20%20%20%20%20%20%20%20d%2C%0A%20%20%20%20%20%20%20%20e%20%3D%2012%20*%20(b.year()%20-%20a.year())%20%2B%20(b.month()%20-%20a.month())%2C%0A%0A%20%20%20%20%2F%2F%20b%20is%20in%20(anchor%20-%201%20month%2C%20anchor%20%2B%201%20month)%0A%20%20%20%20f%20%3D%20a.clone().add(e%2C%20%22months%22)%3B%0A%20%20%20%20%2F%2Fcheck%20for%20negative%20zero%2C%20return%20zero%20if%20negative%20zero%0A%20%20%20%20%2F%2F%20linear%20across%20the%20month%0A%20%20%20%20%2F%2F%20linear%20across%20the%20month%0A%20%20%20%20return%200%20%3E%20b%20-%20f%20%3F%20(c%20%3D%20a.clone().add(e%20-%201%2C%20%22months%22)%2C%20d%20%3D%20(b%20-%20f)%20%2F%20(f%20-%20c))%20%3A%20(c%20%3D%20a.clone().add(e%20%2B%201%2C%20%22months%22)%2C%20d%20%3D%20(b%20-%20f)%20%2F%20(c%20-%20f))%2C%20-(e%20%2B%20d)%20%7C%7C%200%3B%0A%20%20%7Dfunction%20cc()%20%7B%0A%20%20%20%20return%20this.clone().locale(%22en%22).format(%22ddd%20MMM%20DD%20YYYY%20HH%3Amm%3Ass%20%5BGMT%5DZZ%22)%3B%0A%20%20%7Dfunction%20dc()%20%7B%0A%20%20%20%20var%20a%20%3D%20this.clone().utc()%3Breturn%200%20%3C%20a.year()%20%26%26%20a.year()%20%3C%3D%209999%20%3F%20y(Date.prototype.toISOString)%20%3F%20this.toDate().toISOString()%20%3A%20W(a%2C%20%22YYYY-MM-DD%5BT%5DHH%3Amm%3Ass.SSS%5BZ%5D%22)%20%3A%20W(a%2C%20%22YYYYYY-MM-DD%5BT%5DHH%3Amm%3Ass.SSS%5BZ%5D%22)%3B%0A%20%20%7Dfunction%20ec(b)%20%7B%0A%20%20%20%20b%20%7C%7C%20(b%20%3D%20this.isUtc()%20%3F%20a.defaultFormatUtc%20%3A%20a.defaultFormat)%3Bvar%20c%20%3D%20W(this%2C%20b)%3Breturn%20this.localeData().postformat(c)%3B%0A%20%20%7Dfunction%20fc(a%2C%20b)%20%7B%0A%20%20%20%20return%20this.isValid()%20%26%26%20(r(a)%20%26%26%20a.isValid()%20%7C%7C%20rb(a).isValid())%20%3F%20Mb(%7B%20to%3A%20this%2C%20from%3A%20a%20%7D).locale(this.locale()).humanize(!b)%20%3A%20this.localeData().invalidDate()%3B%0A%20%20%7Dfunction%20gc(a)%20%7B%0A%20%20%20%20return%20this.from(rb()%2C%20a)%3B%0A%20%20%7Dfunction%20hc(a%2C%20b)%20%7B%0A%20%20%20%20return%20this.isValid()%20%26%26%20(r(a)%20%26%26%20a.isValid()%20%7C%7C%20rb(a).isValid())%20%3F%20Mb(%7B%20from%3A%20this%2C%20to%3A%20a%20%7D).locale(this.locale()).humanize(!b)%20%3A%20this.localeData().invalidDate()%3B%0A%20%20%7Dfunction%20ic(a)%20%7B%0A%20%20%20%20return%20this.to(rb()%2C%20a)%3B%0A%20%20%7D%0A%20%20%2F%2F%20If%20passed%20a%20locale%20key%2C%20it%20will%20set%20the%20locale%20for%20this%0A%20%20%2F%2F%20instance.%20%20Otherwise%2C%20it%20will%20return%20the%20locale%20configuration%0A%20%20%2F%2F%20variables%20for%20this%20instance.%0A%20%20function%20jc(a)%20%7B%0A%20%20%20%20var%20b%3Breturn%20void%200%20%3D%3D%3D%20a%20%3F%20this._locale._abbr%20%3A%20(b%20%3D%20ab(a)%2C%20null%20!%3D%20b%20%26%26%20(this._locale%20%3D%20b)%2C%20this)%3B%0A%20%20%7Dfunction%20kc()%20%7B%0A%20%20%20%20return%20this._locale%3B%0A%20%20%7Dfunction%20lc(a)%20%7B%0A%20%20%20%20%2F%2F%20the%20following%20switch%20intentionally%20omits%20break%20keywords%0A%20%20%20%20%2F%2F%20to%20utilize%20falling%20through%20the%20cases.%0A%20%20%20%20switch%20(a%20%3D%20J(a))%20%7Bcase%20%22year%22%3A%0A%20%20%20%20%20%20%20%20this.month(0)%3B%20%2F*%20falls%20through%20*%2F%0A%20%20%20%20%20%20case%20%22quarter%22%3Acase%20%22month%22%3A%0A%20%20%20%20%20%20%20%20this.date(1)%3B%20%2F*%20falls%20through%20*%2F%0A%20%20%20%20%20%20case%20%22week%22%3Acase%20%22isoWeek%22%3Acase%20%22day%22%3Acase%20%22date%22%3A%0A%20%20%20%20%20%20%20%20this.hours(0)%3B%20%2F*%20falls%20through%20*%2F%0A%20%20%20%20%20%20case%20%22hour%22%3A%0A%20%20%20%20%20%20%20%20this.minutes(0)%3B%20%2F*%20falls%20through%20*%2F%0A%20%20%20%20%20%20case%20%22minute%22%3A%0A%20%20%20%20%20%20%20%20this.seconds(0)%3B%20%2F*%20falls%20through%20*%2F%0A%20%20%20%20%20%20case%20%22second%22%3A%0A%20%20%20%20%20%20%20%20this.milliseconds(0)%3B%7D%0A%20%20%20%20%2F%2F%20weeks%20are%20a%20special%20case%0A%20%20%20%20%2F%2F%20quarters%20are%20also%20special%0A%20%20%20%20return%20%22week%22%20%3D%3D%3D%20a%20%26%26%20this.weekday(0)%2C%20%22isoWeek%22%20%3D%3D%3D%20a%20%26%26%20this.isoWeekday(1)%2C%20%22quarter%22%20%3D%3D%3D%20a%20%26%26%20this.month(3%20*%20Math.floor(this.month()%20%2F%203))%2C%20this%3B%0A%20%20%7Dfunction%20mc(a)%20%7B%0A%20%20%20%20%2F%2F%20'date'%20is%20an%20alias%20for%20'day'%2C%20so%20it%20should%20be%20considered%20as%20such.%0A%20%20%20%20return%20a%20%3D%20J(a)%2C%20void%200%20%3D%3D%3D%20a%20%7C%7C%20%22millisecond%22%20%3D%3D%3D%20a%20%3F%20this%20%3A%20(%22date%22%20%3D%3D%3D%20a%20%26%26%20(a%20%3D%20%22day%22)%2C%20this.startOf(a).add(1%2C%20%22isoWeek%22%20%3D%3D%3D%20a%20%3F%20%22week%22%20%3A%20a).subtract(1%2C%20%22ms%22))%3B%0A%20%20%7Dfunction%20nc()%20%7B%0A%20%20%20%20return%20this._d.valueOf()%20-%206e4%20*%20(this._offset%20%7C%7C%200)%3B%0A%20%20%7Dfunction%20oc()%20%7B%0A%20%20%20%20return%20Math.floor(this.valueOf()%20%2F%201e3)%3B%0A%20%20%7Dfunction%20pc()%20%7B%0A%20%20%20%20return%20new%20Date(this.valueOf())%3B%0A%20%20%7Dfunction%20qc()%20%7B%0A%20%20%20%20var%20a%20%3D%20this%3Breturn%20%5Ba.year()%2C%20a.month()%2C%20a.date()%2C%20a.hour()%2C%20a.minute()%2C%20a.second()%2C%20a.millisecond()%5D%3B%0A%20%20%7Dfunction%20rc()%20%7B%0A%20%20%20%20var%20a%20%3D%20this%3Breturn%20%7B%20years%3A%20a.year()%2C%20months%3A%20a.month()%2C%20date%3A%20a.date()%2C%20hours%3A%20a.hours()%2C%20minutes%3A%20a.minutes()%2C%20seconds%3A%20a.seconds()%2C%20milliseconds%3A%20a.milliseconds()%20%7D%3B%0A%20%20%7Dfunction%20sc()%20%7B%0A%20%20%20%20%2F%2F%20new%20Date(NaN).toJSON()%20%3D%3D%3D%20null%0A%20%20%20%20return%20this.isValid()%20%3F%20this.toISOString()%20%3A%20null%3B%0A%20%20%7Dfunction%20tc()%20%7B%0A%20%20%20%20return%20m(this)%3B%0A%20%20%7Dfunction%20uc()%20%7B%0A%20%20%20%20return%20i(%7B%7D%2C%20l(this))%3B%0A%20%20%7Dfunction%20vc()%20%7B%0A%20%20%20%20return%20l(this).overflow%3B%0A%20%20%7Dfunction%20wc()%20%7B%0A%20%20%20%20return%20%7B%20input%3A%20this._i%2C%20format%3A%20this._f%2C%20locale%3A%20this._locale%2C%20isUTC%3A%20this._isUTC%2C%20strict%3A%20this._strict%20%7D%3B%0A%20%20%7Dfunction%20xc(a%2C%20b)%20%7B%0A%20%20%20%20T(0%2C%20%5Ba%2C%20a.length%5D%2C%200%2C%20b)%3B%0A%20%20%7D%0A%20%20%2F%2F%20MOMENTS%0A%20%20function%20yc(a)%20%7B%0A%20%20%20%20return%20Cc.call(this%2C%20a%2C%20this.week()%2C%20this.weekday()%2C%20this.localeData()._week.dow%2C%20this.localeData()._week.doy)%3B%0A%20%20%7Dfunction%20zc(a)%20%7B%0A%20%20%20%20return%20Cc.call(this%2C%20a%2C%20this.isoWeek()%2C%20this.isoWeekday()%2C%201%2C%204)%3B%0A%20%20%7Dfunction%20Ac()%20%7B%0A%20%20%20%20return%20wa(this.year()%2C%201%2C%204)%3B%0A%20%20%7Dfunction%20Bc()%20%7B%0A%20%20%20%20var%20a%20%3D%20this.localeData()._week%3Breturn%20wa(this.year()%2C%20a.dow%2C%20a.doy)%3B%0A%20%20%7Dfunction%20Cc(a%2C%20b%2C%20c%2C%20d%2C%20e)%20%7B%0A%20%20%20%20var%20f%3Breturn%20null%20%3D%3D%20a%20%3F%20va(this%2C%20d%2C%20e).year%20%3A%20(f%20%3D%20wa(a%2C%20d%2C%20e)%2C%20b%20%3E%20f%20%26%26%20(b%20%3D%20f)%2C%20Dc.call(this%2C%20a%2C%20b%2C%20c%2C%20d%2C%20e))%3B%0A%20%20%7Dfunction%20Dc(a%2C%20b%2C%20c%2C%20d%2C%20e)%20%7B%0A%20%20%20%20var%20f%20%3D%20ua(a%2C%20b%2C%20c%2C%20d%2C%20e)%2C%0A%20%20%20%20%20%20%20%20g%20%3D%20sa(f.year%2C%200%2C%20f.dayOfYear)%3Breturn%20this.year(g.getUTCFullYear())%2C%20this.month(g.getUTCMonth())%2C%20this.date(g.getUTCDate())%2C%20this%3B%0A%20%20%7D%0A%20%20%2F%2F%20MOMENTS%0A%20%20function%20Ec(a)%20%7B%0A%20%20%20%20return%20null%20%3D%3D%20a%20%3F%20Math.ceil((this.month()%20%2B%201)%20%2F%203)%20%3A%20this.month(3%20*%20(a%20-%201)%20%2B%20this.month()%20%25%203)%3B%0A%20%20%7D%0A%20%20%2F%2F%20HELPERS%0A%20%20%2F%2F%20MOMENTS%0A%20%20function%20Fc(a)%20%7B%0A%20%20%20%20var%20b%20%3D%20Math.round((this.clone().startOf(%22day%22)%20-%20this.clone().startOf(%22year%22))%20%2F%20864e5)%20%2B%201%3Breturn%20null%20%3D%3D%20a%20%3F%20b%20%3A%20this.add(a%20-%20b%2C%20%22d%22)%3B%0A%20%20%7Dfunction%20Gc(a%2C%20b)%20%7B%0A%20%20%20%20b%5Bce%5D%20%3D%20t(1e3%20*%20(%220.%22%20%2B%20a))%3B%0A%20%20%7D%0A%20%20%2F%2F%20MOMENTS%0A%20%20function%20Hc()%20%7B%0A%20%20%20%20return%20this._isUTC%20%3F%20%22UTC%22%20%3A%20%22%22%3B%0A%20%20%7Dfunction%20Ic()%20%7B%0A%20%20%20%20return%20this._isUTC%20%3F%20%22Coordinated%20Universal%20Time%22%20%3A%20%22%22%3B%0A%20%20%7Dfunction%20Jc(a)%20%7B%0A%20%20%20%20return%20rb(1e3%20*%20a)%3B%0A%20%20%7Dfunction%20Kc()%20%7B%0A%20%20%20%20return%20rb.apply(null%2C%20arguments).parseZone()%3B%0A%20%20%7Dfunction%20Lc(a)%20%7B%0A%20%20%20%20return%20a%3B%0A%20%20%7Dfunction%20Mc(a%2C%20b%2C%20c%2C%20d)%20%7B%0A%20%20%20%20var%20e%20%3D%20ab()%2C%0A%20%20%20%20%20%20%20%20f%20%3D%20j().set(d%2C%20b)%3Breturn%20e%5Bc%5D(f%2C%20a)%3B%0A%20%20%7Dfunction%20Nc(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20if%20(%22number%22%20%3D%3D%20typeof%20a%20%26%26%20(b%20%3D%20a%2C%20a%20%3D%20void%200)%2C%20a%20%3D%20a%20%7C%7C%20%22%22%2C%20null%20!%3D%20b)%20return%20Mc(a%2C%20b%2C%20c%2C%20%22month%22)%3Bvar%20d%2C%0A%20%20%20%20%20%20%20%20e%20%3D%20%5B%5D%3Bfor%20(d%20%3D%200%3B%2012%20%3E%20d%3B%20d%2B%2B)%20%7B%0A%20%20%20%20%20%20e%5Bd%5D%20%3D%20Mc(a%2C%20d%2C%20c%2C%20%22month%22)%3B%0A%20%20%20%20%7Dreturn%20e%3B%0A%20%20%7D%0A%20%20%2F%2F%20()%0A%20%20%2F%2F%20(5)%0A%20%20%2F%2F%20(fmt%2C%205)%0A%20%20%2F%2F%20(fmt)%0A%20%20%2F%2F%20(true)%0A%20%20%2F%2F%20(true%2C%205)%0A%20%20%2F%2F%20(true%2C%20fmt%2C%205)%0A%20%20%2F%2F%20(true%2C%20fmt)%0A%20%20function%20Oc(a%2C%20b%2C%20c%2C%20d)%20%7B%0A%20%20%20%20%22boolean%22%20%3D%3D%20typeof%20a%20%3F%20(%22number%22%20%3D%3D%20typeof%20b%20%26%26%20(c%20%3D%20b%2C%20b%20%3D%20void%200)%2C%20b%20%3D%20b%20%7C%7C%20%22%22)%20%3A%20(b%20%3D%20a%2C%20c%20%3D%20b%2C%20a%20%3D%20!1%2C%20%22number%22%20%3D%3D%20typeof%20b%20%26%26%20(c%20%3D%20b%2C%20b%20%3D%20void%200)%2C%20b%20%3D%20b%20%7C%7C%20%22%22)%3Bvar%20e%20%3D%20ab()%2C%0A%20%20%20%20%20%20%20%20f%20%3D%20a%20%3F%20e._week.dow%20%3A%200%3Bif%20(null%20!%3D%20c)%20return%20Mc(b%2C%20(c%20%2B%20f)%20%25%207%2C%20d%2C%20%22day%22)%3Bvar%20g%2C%0A%20%20%20%20%20%20%20%20h%20%3D%20%5B%5D%3Bfor%20(g%20%3D%200%3B%207%20%3E%20g%3B%20g%2B%2B)%20%7B%0A%20%20%20%20%20%20h%5Bg%5D%20%3D%20Mc(b%2C%20(g%20%2B%20f)%20%25%207%2C%20d%2C%20%22day%22)%3B%0A%20%20%20%20%7Dreturn%20h%3B%0A%20%20%7Dfunction%20Pc(a%2C%20b)%20%7B%0A%20%20%20%20return%20Nc(a%2C%20b%2C%20%22months%22)%3B%0A%20%20%7Dfunction%20Qc(a%2C%20b)%20%7B%0A%20%20%20%20return%20Nc(a%2C%20b%2C%20%22monthsShort%22)%3B%0A%20%20%7Dfunction%20Rc(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20return%20Oc(a%2C%20b%2C%20c%2C%20%22weekdays%22)%3B%0A%20%20%7Dfunction%20Sc(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20return%20Oc(a%2C%20b%2C%20c%2C%20%22weekdaysShort%22)%3B%0A%20%20%7Dfunction%20Tc(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20return%20Oc(a%2C%20b%2C%20c%2C%20%22weekdaysMin%22)%3B%0A%20%20%7Dfunction%20Uc()%20%7B%0A%20%20%20%20var%20a%20%3D%20this._data%3Breturn%20this._milliseconds%20%3D%20Ue(this._milliseconds)%2C%20this._days%20%3D%20Ue(this._days)%2C%20this._months%20%3D%20Ue(this._months)%2C%20a.milliseconds%20%3D%20Ue(a.milliseconds)%2C%20a.seconds%20%3D%20Ue(a.seconds)%2C%20a.minutes%20%3D%20Ue(a.minutes)%2C%20a.hours%20%3D%20Ue(a.hours)%2C%20a.months%20%3D%20Ue(a.months)%2C%20a.years%20%3D%20Ue(a.years)%2C%20this%3B%0A%20%20%7Dfunction%20Vc(a%2C%20b%2C%20c%2C%20d)%20%7B%0A%20%20%20%20var%20e%20%3D%20Mb(b%2C%20c)%3Breturn%20a._milliseconds%20%2B%3D%20d%20*%20e._milliseconds%2C%20a._days%20%2B%3D%20d%20*%20e._days%2C%20a._months%20%2B%3D%20d%20*%20e._months%2C%20a._bubble()%3B%0A%20%20%7D%0A%20%20%2F%2F%20supports%20only%202.0-style%20add(1%2C%20's')%20or%20add(duration)%0A%20%20function%20Wc(a%2C%20b)%20%7B%0A%20%20%20%20return%20Vc(this%2C%20a%2C%20b%2C%201)%3B%0A%20%20%7D%0A%20%20%2F%2F%20supports%20only%202.0-style%20subtract(1%2C%20's')%20or%20subtract(duration)%0A%20%20function%20Xc(a%2C%20b)%20%7B%0A%20%20%20%20return%20Vc(this%2C%20a%2C%20b%2C%20-1)%3B%0A%20%20%7Dfunction%20Yc(a)%20%7B%0A%20%20%20%20return%200%20%3E%20a%20%3F%20Math.floor(a)%20%3A%20Math.ceil(a)%3B%0A%20%20%7Dfunction%20Zc()%20%7B%0A%20%20%20%20var%20a%2C%0A%20%20%20%20%20%20%20%20b%2C%0A%20%20%20%20%20%20%20%20c%2C%0A%20%20%20%20%20%20%20%20d%2C%0A%20%20%20%20%20%20%20%20e%2C%0A%20%20%20%20%20%20%20%20f%20%3D%20this._milliseconds%2C%0A%20%20%20%20%20%20%20%20g%20%3D%20this._days%2C%0A%20%20%20%20%20%20%20%20h%20%3D%20this._months%2C%0A%20%20%20%20%20%20%20%20i%20%3D%20this._data%3B%0A%20%20%20%20%2F%2F%20if%20we%20have%20a%20mix%20of%20positive%20and%20negative%20values%2C%20bubble%20down%20first%0A%20%20%20%20%2F%2F%20check%3A%20https%3A%2F%2Fgithub.com%2Fmoment%2Fmoment%2Fissues%2F2166%0A%20%20%20%20%2F%2F%20The%20following%20code%20bubbles%20up%20values%2C%20see%20the%20tests%20for%0A%20%20%20%20%2F%2F%20examples%20of%20what%20that%20means.%0A%20%20%20%20%2F%2F%20convert%20days%20to%20months%0A%20%20%20%20%2F%2F%2012%20months%20-%3E%201%20year%0A%20%20%20%20return%20f%20%3E%3D%200%20%26%26%20g%20%3E%3D%200%20%26%26%20h%20%3E%3D%200%20%7C%7C%200%20%3E%3D%20f%20%26%26%200%20%3E%3D%20g%20%26%26%200%20%3E%3D%20h%20%7C%7C%20(f%20%2B%3D%20864e5%20*%20Yc(_c(h)%20%2B%20g)%2C%20g%20%3D%200%2C%20h%20%3D%200)%2C%20i.milliseconds%20%3D%20f%20%25%201e3%2C%20a%20%3D%20s(f%20%2F%201e3)%2C%20i.seconds%20%3D%20a%20%25%2060%2C%20b%20%3D%20s(a%20%2F%2060)%2C%20i.minutes%20%3D%20b%20%25%2060%2C%20c%20%3D%20s(b%20%2F%2060)%2C%20i.hours%20%3D%20c%20%25%2024%2C%20g%20%2B%3D%20s(c%20%2F%2024)%2C%20e%20%3D%20s(%24c(g))%2C%20h%20%2B%3D%20e%2C%20g%20-%3D%20Yc(_c(e))%2C%20d%20%3D%20s(h%20%2F%2012)%2C%20h%20%25%3D%2012%2C%20i.days%20%3D%20g%2C%20i.months%20%3D%20h%2C%20i.years%20%3D%20d%2C%20this%3B%0A%20%20%7Dfunction%20%24c(a)%20%7B%0A%20%20%20%20%2F%2F%20400%20years%20have%20146097%20days%20(taking%20into%20account%20leap%20year%20rules)%0A%20%20%20%20%2F%2F%20400%20years%20have%2012%20months%20%3D%3D%3D%204800%0A%20%20%20%20return%204800%20*%20a%20%2F%20146097%3B%0A%20%20%7Dfunction%20_c(a)%20%7B%0A%20%20%20%20%2F%2F%20the%20reverse%20of%20daysToMonths%0A%20%20%20%20return%20146097%20*%20a%20%2F%204800%3B%0A%20%20%7Dfunction%20ad(a)%20%7B%0A%20%20%20%20var%20b%2C%0A%20%20%20%20%20%20%20%20c%2C%0A%20%20%20%20%20%20%20%20d%20%3D%20this._milliseconds%3Bif%20(a%20%3D%20J(a)%2C%20%22month%22%20%3D%3D%3D%20a%20%7C%7C%20%22year%22%20%3D%3D%3D%20a)%20return%20b%20%3D%20this._days%20%2B%20d%20%2F%20864e5%2C%20c%20%3D%20this._months%20%2B%20%24c(b)%2C%20%22month%22%20%3D%3D%3D%20a%20%3F%20c%20%3A%20c%20%2F%2012%3Bswitch%20(b%20%3D%20this._days%20%2B%20Math.round(_c(this._months))%2C%20a)%20%7Bcase%20%22week%22%3A%0A%20%20%20%20%20%20%20%20return%20b%20%2F%207%20%2B%20d%20%2F%206048e5%3Bcase%20%22day%22%3A%0A%20%20%20%20%20%20%20%20return%20b%20%2B%20d%20%2F%20864e5%3Bcase%20%22hour%22%3A%0A%20%20%20%20%20%20%20%20return%2024%20*%20b%20%2B%20d%20%2F%2036e5%3Bcase%20%22minute%22%3A%0A%20%20%20%20%20%20%20%20return%201440%20*%20b%20%2B%20d%20%2F%206e4%3Bcase%20%22second%22%3A%0A%20%20%20%20%20%20%20%20return%2086400%20*%20b%20%2B%20d%20%2F%201e3%3B%0A%20%20%20%20%20%20%2F%2F%20Math.floor%20prevents%20floating%20point%20math%20errors%20here%0A%20%20%20%20%20%20case%20%22millisecond%22%3A%0A%20%20%20%20%20%20%20%20return%20Math.floor(864e5%20*%20b)%20%2B%20d%3Bdefault%3A%0A%20%20%20%20%20%20%20%20throw%20new%20Error(%22Unknown%20unit%20%22%20%2B%20a)%3B%7D%0A%20%20%7D%0A%20%20%2F%2F%20TODO%3A%20Use%20this.as('ms')%3F%0A%20%20function%20bd()%20%7B%0A%20%20%20%20return%20this._milliseconds%20%2B%20864e5%20*%20this._days%20%2B%20this._months%20%25%2012%20*%202592e6%20%2B%2031536e6%20*%20t(this._months%20%2F%2012)%3B%0A%20%20%7Dfunction%20cd(a)%20%7B%0A%20%20%20%20return%20function%20()%20%7B%0A%20%20%20%20%20%20return%20this.as(a)%3B%0A%20%20%20%20%7D%3B%0A%20%20%7Dfunction%20dd(a)%20%7B%0A%20%20%20%20return%20a%20%3D%20J(a)%2C%20this%5Ba%20%2B%20%22s%22%5D()%3B%0A%20%20%7Dfunction%20ed(a)%20%7B%0A%20%20%20%20return%20function%20()%20%7B%0A%20%20%20%20%20%20return%20this._data%5Ba%5D%3B%0A%20%20%20%20%7D%3B%0A%20%20%7Dfunction%20fd()%20%7B%0A%20%20%20%20return%20s(this.days()%20%2F%207)%3B%0A%20%20%7D%0A%20%20%2F%2F%20helper%20function%20for%20moment.fn.from%2C%20moment.fn.fromNow%2C%20and%20moment.duration.fn.humanize%0A%20%20function%20gd(a%2C%20b%2C%20c%2C%20d%2C%20e)%20%7B%0A%20%20%20%20return%20e.relativeTime(b%20%7C%7C%201%2C%20!!c%2C%20a%2C%20d)%3B%0A%20%20%7Dfunction%20hd(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20d%20%3D%20Mb(a).abs()%2C%0A%20%20%20%20%20%20%20%20e%20%3D%20jf(d.as(%22s%22))%2C%0A%20%20%20%20%20%20%20%20f%20%3D%20jf(d.as(%22m%22))%2C%0A%20%20%20%20%20%20%20%20g%20%3D%20jf(d.as(%22h%22))%2C%0A%20%20%20%20%20%20%20%20h%20%3D%20jf(d.as(%22d%22))%2C%0A%20%20%20%20%20%20%20%20i%20%3D%20jf(d.as(%22M%22))%2C%0A%20%20%20%20%20%20%20%20j%20%3D%20jf(d.as(%22y%22))%2C%0A%20%20%20%20%20%20%20%20k%20%3D%20e%20%3C%20kf.s%20%26%26%20%5B%22s%22%2C%20e%5D%20%7C%7C%201%20%3E%3D%20f%20%26%26%20%5B%22m%22%5D%20%7C%7C%20f%20%3C%20kf.m%20%26%26%20%5B%22mm%22%2C%20f%5D%20%7C%7C%201%20%3E%3D%20g%20%26%26%20%5B%22h%22%5D%20%7C%7C%20g%20%3C%20kf.h%20%26%26%20%5B%22hh%22%2C%20g%5D%20%7C%7C%201%20%3E%3D%20h%20%26%26%20%5B%22d%22%5D%20%7C%7C%20h%20%3C%20kf.d%20%26%26%20%5B%22dd%22%2C%20h%5D%20%7C%7C%201%20%3E%3D%20i%20%26%26%20%5B%22M%22%5D%20%7C%7C%20i%20%3C%20kf.M%20%26%26%20%5B%22MM%22%2C%20i%5D%20%7C%7C%201%20%3E%3D%20j%20%26%26%20%5B%22y%22%5D%20%7C%7C%20%5B%22yy%22%2C%20j%5D%3Breturn%20k%5B2%5D%20%3D%20b%2C%20k%5B3%5D%20%3D%20%2Ba%20%3E%200%2C%20k%5B4%5D%20%3D%20c%2C%20gd.apply(null%2C%20k)%3B%0A%20%20%7D%0A%20%20%2F%2F%20This%20function%20allows%20you%20to%20set%20the%20rounding%20function%20for%20relative%20time%20strings%0A%20%20function%20id(a)%20%7B%0A%20%20%20%20return%20void%200%20%3D%3D%3D%20a%20%3F%20jf%20%3A%20%22function%22%20%3D%3D%20typeof%20a%20%3F%20(jf%20%3D%20a%2C%20!0)%20%3A%20!1%3B%0A%20%20%7D%0A%20%20%2F%2F%20This%20function%20allows%20you%20to%20set%20a%20threshold%20for%20relative%20time%20strings%0A%20%20function%20jd(a%2C%20b)%20%7B%0A%20%20%20%20return%20void%200%20%3D%3D%3D%20kf%5Ba%5D%20%3F%20!1%20%3A%20void%200%20%3D%3D%3D%20b%20%3F%20kf%5Ba%5D%20%3A%20(kf%5Ba%5D%20%3D%20b%2C%20!0)%3B%0A%20%20%7Dfunction%20kd(a)%20%7B%0A%20%20%20%20var%20b%20%3D%20this.localeData()%2C%0A%20%20%20%20%20%20%20%20c%20%3D%20hd(this%2C%20!a%2C%20b)%3Breturn%20a%20%26%26%20(c%20%3D%20b.pastFuture(%2Bthis%2C%20c))%2C%20b.postformat(c)%3B%0A%20%20%7Dfunction%20ld()%20%7B%0A%20%20%20%20%2F%2F%20for%20ISO%20strings%20we%20do%20not%20use%20the%20normal%20bubbling%20rules%3A%0A%20%20%20%20%2F%2F%20%20*%20milliseconds%20bubble%20up%20until%20they%20become%20hours%0A%20%20%20%20%2F%2F%20%20*%20days%20do%20not%20bubble%20at%20all%0A%20%20%20%20%2F%2F%20%20*%20months%20bubble%20up%20until%20they%20become%20years%0A%20%20%20%20%2F%2F%20This%20is%20because%20there%20is%20no%20context-free%20conversion%20between%20hours%20and%20days%0A%20%20%20%20%2F%2F%20(think%20of%20clock%20changes)%0A%20%20%20%20%2F%2F%20and%20also%20not%20between%20days%20and%20months%20(28-31%20days%20per%20month)%0A%20%20%20%20var%20a%2C%0A%20%20%20%20%20%20%20%20b%2C%0A%20%20%20%20%20%20%20%20c%2C%0A%20%20%20%20%20%20%20%20d%20%3D%20lf(this._milliseconds)%20%2F%201e3%2C%0A%20%20%20%20%20%20%20%20e%20%3D%20lf(this._days)%2C%0A%20%20%20%20%20%20%20%20f%20%3D%20lf(this._months)%3Ba%20%3D%20s(d%20%2F%2060)%2C%20b%20%3D%20s(a%20%2F%2060)%2C%20d%20%25%3D%2060%2C%20a%20%25%3D%2060%2C%20c%20%3D%20s(f%20%2F%2012)%2C%20f%20%25%3D%2012%3B%0A%20%20%20%20%2F%2F%20inspired%20by%20https%3A%2F%2Fgithub.com%2Fdordille%2Fmoment-isoduration%2Fblob%2Fmaster%2Fmoment.isoduration.js%0A%20%20%20%20var%20g%20%3D%20c%2C%0A%20%20%20%20%20%20%20%20h%20%3D%20f%2C%0A%20%20%20%20%20%20%20%20i%20%3D%20e%2C%0A%20%20%20%20%20%20%20%20j%20%3D%20b%2C%0A%20%20%20%20%20%20%20%20k%20%3D%20a%2C%0A%20%20%20%20%20%20%20%20l%20%3D%20d%2C%0A%20%20%20%20%20%20%20%20m%20%3D%20this.asSeconds()%3Breturn%20m%20%3F%20(0%20%3E%20m%20%3F%20%22-%22%20%3A%20%22%22)%20%2B%20%22P%22%20%2B%20(g%20%3F%20g%20%2B%20%22Y%22%20%3A%20%22%22)%20%2B%20(h%20%3F%20h%20%2B%20%22M%22%20%3A%20%22%22)%20%2B%20(i%20%3F%20i%20%2B%20%22D%22%20%3A%20%22%22)%20%2B%20(j%20%7C%7C%20k%20%7C%7C%20l%20%3F%20%22T%22%20%3A%20%22%22)%20%2B%20(j%20%3F%20j%20%2B%20%22H%22%20%3A%20%22%22)%20%2B%20(k%20%3F%20k%20%2B%20%22M%22%20%3A%20%22%22)%20%2B%20(l%20%3F%20l%20%2B%20%22S%22%20%3A%20%22%22)%20%3A%20%22P0D%22%3B%0A%20%20%7Dvar%20md%2C%20nd%3Bnd%20%3D%20Array.prototype.some%20%3F%20Array.prototype.some%20%3A%20function%20(a)%20%7B%0A%20%20%20%20for%20(var%20b%20%3D%20Object(this)%2C%20c%20%3D%20b.length%20%3E%3E%3E%200%2C%20d%20%3D%200%3B%20c%20%3E%20d%3B%20d%2B%2B)%20%7B%0A%20%20%20%20%20%20if%20(d%20in%20b%20%26%26%20a.call(this%2C%20b%5Bd%5D%2C%20d%2C%20b))%20return%20!0%3B%0A%20%20%20%20%7Dreturn%20!1%3B%0A%20%20%7D%3B%0A%20%20%2F%2F%20Plugins%20that%20add%20properties%20should%20also%20add%20the%20key%20here%20(null%20value)%2C%0A%20%20%2F%2F%20so%20we%20can%20properly%20clone%20ourselves.%0A%20%20var%20od%20%3D%20a.momentProperties%20%3D%20%5B%5D%2C%0A%20%20%20%20%20%20pd%20%3D%20!1%2C%0A%20%20%20%20%20%20qd%20%3D%20%7B%7D%3Ba.suppressDeprecationWarnings%20%3D%20!1%2C%20a.deprecationHandler%20%3D%20null%3Bvar%20rd%3Brd%20%3D%20Object.keys%20%3F%20Object.keys%20%3A%20function%20(a)%20%7B%0A%20%20%20%20var%20b%2C%0A%20%20%20%20%20%20%20%20c%20%3D%20%5B%5D%3Bfor%20(b%20in%20a)%20%7B%0A%20%20%20%20%20%20h(a%2C%20b)%20%26%26%20c.push(b)%3B%0A%20%20%20%20%7Dreturn%20c%3B%0A%20%20%7D%3Bvar%20sd%2C%0A%20%20%20%20%20%20td%20%3D%20%7B%20sameDay%3A%20%22%5BToday%20at%5D%20LT%22%2C%20nextDay%3A%20%22%5BTomorrow%20at%5D%20LT%22%2C%20nextWeek%3A%20%22dddd%20%5Bat%5D%20LT%22%2C%20lastDay%3A%20%22%5BYesterday%20at%5D%20LT%22%2C%20lastWeek%3A%20%22%5BLast%5D%20dddd%20%5Bat%5D%20LT%22%2C%20sameElse%3A%20%22L%22%20%7D%2C%0A%20%20%20%20%20%20ud%20%3D%20%7B%20LTS%3A%20%22h%3Amm%3Ass%20A%22%2C%20LT%3A%20%22h%3Amm%20A%22%2C%20L%3A%20%22MM%2FDD%2FYYYY%22%2C%20LL%3A%20%22MMMM%20D%2C%20YYYY%22%2C%20LLL%3A%20%22MMMM%20D%2C%20YYYY%20h%3Amm%20A%22%2C%20LLLL%3A%20%22dddd%2C%20MMMM%20D%2C%20YYYY%20h%3Amm%20A%22%20%7D%2C%0A%20%20%20%20%20%20vd%20%3D%20%22Invalid%20date%22%2C%0A%20%20%20%20%20%20wd%20%3D%20%22%25d%22%2C%0A%20%20%20%20%20%20xd%20%3D%20%2F%5Cd%7B1%2C2%7D%2F%2C%0A%20%20%20%20%20%20yd%20%3D%20%7B%20future%3A%20%22in%20%25s%22%2C%20past%3A%20%22%25s%20ago%22%2C%20s%3A%20%22a%20few%20seconds%22%2C%20m%3A%20%22a%20minute%22%2C%20mm%3A%20%22%25d%20minutes%22%2C%20h%3A%20%22an%20hour%22%2C%20hh%3A%20%22%25d%20hours%22%2C%20d%3A%20%22a%20day%22%2C%20dd%3A%20%22%25d%20days%22%2C%20M%3A%20%22a%20month%22%2C%20MM%3A%20%22%25d%20months%22%2C%20y%3A%20%22a%20year%22%2C%20yy%3A%20%22%25d%20years%22%20%7D%2C%0A%20%20%20%20%20%20zd%20%3D%20%7B%7D%2C%0A%20%20%20%20%20%20Ad%20%3D%20%7B%7D%2C%0A%20%20%20%20%20%20Bd%20%3D%20%2F(%5C%5B%5B%5E%5C%5B%5D*%5C%5D)%7C(%5C%5C)%3F(%5BHh%5Dmm(ss)%3F%7CMo%7CMM%3FM%3FM%3F%7CDo%7CDDDo%7CDD%3FD%3FD%3F%7Cddd%3Fd%3F%7Cdo%3F%7Cw%5Bo%7Cw%5D%3F%7CW%5Bo%7CW%5D%3F%7CQo%3F%7CYYYYYY%7CYYYYY%7CYYYY%7CYY%7Cgg(ggg%3F)%3F%7CGG(GGG%3F)%3F%7Ce%7CE%7Ca%7CA%7Chh%3F%7CHH%3F%7Ckk%3F%7Cmm%3F%7Css%3F%7CS%7B1%2C9%7D%7Cx%7CX%7Czz%3F%7CZZ%3F%7C.)%2Fg%2C%0A%20%20%20%20%20%20Cd%20%3D%20%2F(%5C%5B%5B%5E%5C%5B%5D*%5C%5D)%7C(%5C%5C)%3F(LTS%7CLT%7CLL%3FL%3FL%3F%7Cl%7B1%2C4%7D)%2Fg%2C%0A%20%20%20%20%20%20Dd%20%3D%20%7B%7D%2C%0A%20%20%20%20%20%20Ed%20%3D%20%7B%7D%2C%0A%20%20%20%20%20%20Fd%20%3D%20%2F%5Cd%2F%2C%0A%20%20%20%20%20%20Gd%20%3D%20%2F%5Cd%5Cd%2F%2C%0A%20%20%20%20%20%20Hd%20%3D%20%2F%5Cd%7B3%7D%2F%2C%0A%20%20%20%20%20%20Id%20%3D%20%2F%5Cd%7B4%7D%2F%2C%0A%20%20%20%20%20%20Jd%20%3D%20%2F%5B%2B-%5D%3F%5Cd%7B6%7D%2F%2C%0A%20%20%20%20%20%20Kd%20%3D%20%2F%5Cd%5Cd%3F%2F%2C%0A%20%20%20%20%20%20Ld%20%3D%20%2F%5Cd%5Cd%5Cd%5Cd%3F%2F%2C%0A%20%20%20%20%20%20Md%20%3D%20%2F%5Cd%5Cd%5Cd%5Cd%5Cd%5Cd%3F%2F%2C%0A%20%20%20%20%20%20Nd%20%3D%20%2F%5Cd%7B1%2C3%7D%2F%2C%0A%20%20%20%20%20%20Od%20%3D%20%2F%5Cd%7B1%2C4%7D%2F%2C%0A%20%20%20%20%20%20Pd%20%3D%20%2F%5B%2B-%5D%3F%5Cd%7B1%2C6%7D%2F%2C%0A%20%20%20%20%20%20Qd%20%3D%20%2F%5Cd%2B%2F%2C%0A%20%20%20%20%20%20Rd%20%3D%20%2F%5B%2B-%5D%3F%5Cd%2B%2F%2C%0A%20%20%20%20%20%20Sd%20%3D%20%2FZ%7C%5B%2B-%5D%5Cd%5Cd%3A%3F%5Cd%5Cd%2Fgi%2C%0A%20%20%20%20%20%20Td%20%3D%20%2FZ%7C%5B%2B-%5D%5Cd%5Cd(%3F%3A%3A%3F%5Cd%5Cd)%3F%2Fgi%2C%0A%20%20%20%20%20%20Ud%20%3D%20%2F%5B%2B-%5D%3F%5Cd%2B(%5C.%5Cd%7B1%2C3%7D)%3F%2F%2C%0A%20%20%20%20%20%20Vd%20%3D%20%2F%5B0-9%5D*%5B'a-z%5Cu00A0-%5Cu05FF%5Cu0700-%5CuD7FF%5CuF900-%5CuFDCF%5CuFDF0-%5CuFFEF%5D%2B%7C%5B%5Cu0600-%5Cu06FF%5C%2F%5D%2B(%5Cs*%3F%5B%5Cu0600-%5Cu06FF%5D%2B)%7B1%2C2%7D%2Fi%2C%0A%20%20%20%20%20%20Wd%20%3D%20%7B%7D%2C%0A%20%20%20%20%20%20Xd%20%3D%20%7B%7D%2C%0A%20%20%20%20%20%20Yd%20%3D%200%2C%0A%20%20%20%20%20%20Zd%20%3D%201%2C%0A%20%20%20%20%20%20%24d%20%3D%202%2C%0A%20%20%20%20%20%20_d%20%3D%203%2C%0A%20%20%20%20%20%20ae%20%3D%204%2C%0A%20%20%20%20%20%20be%20%3D%205%2C%0A%20%20%20%20%20%20ce%20%3D%206%2C%0A%20%20%20%20%20%20de%20%3D%207%2C%0A%20%20%20%20%20%20ee%20%3D%208%3Bsd%20%3D%20Array.prototype.indexOf%20%3F%20Array.prototype.indexOf%20%3A%20function%20(a)%20%7B%0A%20%20%20%20%2F%2F%20I%20know%0A%20%20%20%20var%20b%3Bfor%20(b%20%3D%200%3B%20b%20%3C%20this.length%3B%20%2B%2Bb)%20%7B%0A%20%20%20%20%20%20if%20(this%5Bb%5D%20%3D%3D%3D%20a)%20return%20b%3B%0A%20%20%20%20%7Dreturn%20-1%3B%0A%20%20%7D%2C%20T(%22M%22%2C%20%5B%22MM%22%2C%202%5D%2C%20%22Mo%22%2C%20function%20()%20%7B%0A%20%20%20%20return%20this.month()%20%2B%201%3B%0A%20%20%7D)%2C%20T(%22MMM%22%2C%200%2C%200%2C%20function%20(a)%20%7B%0A%20%20%20%20return%20this.localeData().monthsShort(this%2C%20a)%3B%0A%20%20%7D)%2C%20T(%22MMMM%22%2C%200%2C%200%2C%20function%20(a)%20%7B%0A%20%20%20%20return%20this.localeData().months(this%2C%20a)%3B%0A%20%20%7D)%2C%20I(%22month%22%2C%20%22M%22)%2C%20L(%22month%22%2C%208)%2C%20Y(%22M%22%2C%20Kd)%2C%20Y(%22MM%22%2C%20Kd%2C%20Gd)%2C%20Y(%22MMM%22%2C%20function%20(a%2C%20b)%20%7B%0A%20%20%20%20return%20b.monthsShortRegex(a)%3B%0A%20%20%7D)%2C%20Y(%22MMMM%22%2C%20function%20(a%2C%20b)%20%7B%0A%20%20%20%20return%20b.monthsRegex(a)%3B%0A%20%20%7D)%2C%20aa(%5B%22M%22%2C%20%22MM%22%5D%2C%20function%20(a%2C%20b)%20%7B%0A%20%20%20%20b%5BZd%5D%20%3D%20t(a)%20-%201%3B%0A%20%20%7D)%2C%20aa(%5B%22MMM%22%2C%20%22MMMM%22%5D%2C%20function%20(a%2C%20b%2C%20c%2C%20d)%20%7B%0A%20%20%20%20var%20e%20%3D%20c._locale.monthsParse(a%2C%20d%2C%20c._strict)%3Bnull%20!%3D%20e%20%3F%20b%5BZd%5D%20%3D%20e%20%3A%20l(c).invalidMonth%20%3D%20a%3B%0A%20%20%7D)%3B%0A%20%20%2F%2F%20LOCALES%0A%20%20var%20fe%20%3D%20%2FD%5BoD%5D%3F(%5C%5B%5B%5E%5C%5B%5C%5D%5D*%5C%5D%7C%5Cs%2B)%2BMMMM%3F%2F%2C%0A%20%20%20%20%20%20ge%20%3D%20%22January_February_March_April_May_June_July_August_September_October_November_December%22.split(%22_%22)%2C%0A%20%20%20%20%20%20he%20%3D%20%22Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec%22.split(%22_%22)%2C%0A%20%20%20%20%20%20ie%20%3D%20Vd%2C%0A%20%20%20%20%20%20je%20%3D%20Vd%3B%0A%20%20%2F%2F%20FORMATTING%0A%20%20T(%22Y%22%2C%200%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20var%20a%20%3D%20this.year()%3Breturn%209999%20%3E%3D%20a%20%3F%20%22%22%20%2B%20a%20%3A%20%22%2B%22%20%2B%20a%3B%0A%20%20%7D)%2C%20T(0%2C%20%5B%22YY%22%2C%202%5D%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20return%20this.year()%20%25%20100%3B%0A%20%20%7D)%2C%20T(0%2C%20%5B%22YYYY%22%2C%204%5D%2C%200%2C%20%22year%22)%2C%20T(0%2C%20%5B%22YYYYY%22%2C%205%5D%2C%200%2C%20%22year%22)%2C%20T(0%2C%20%5B%22YYYYYY%22%2C%206%2C%20!0%5D%2C%200%2C%20%22year%22)%2C%0A%20%20%2F%2F%20ALIASES%0A%20%20I(%22year%22%2C%20%22y%22)%2C%0A%20%20%2F%2F%20PRIORITIES%0A%20%20L(%22year%22%2C%201)%2C%0A%20%20%2F%2F%20PARSING%0A%20%20Y(%22Y%22%2C%20Rd)%2C%20Y(%22YY%22%2C%20Kd%2C%20Gd)%2C%20Y(%22YYYY%22%2C%20Od%2C%20Id)%2C%20Y(%22YYYYY%22%2C%20Pd%2C%20Jd)%2C%20Y(%22YYYYYY%22%2C%20Pd%2C%20Jd)%2C%20aa(%5B%22YYYYY%22%2C%20%22YYYYYY%22%5D%2C%20Yd)%2C%20aa(%22YYYY%22%2C%20function%20(b%2C%20c)%20%7B%0A%20%20%20%20c%5BYd%5D%20%3D%202%20%3D%3D%3D%20b.length%20%3F%20a.parseTwoDigitYear(b)%20%3A%20t(b)%3B%0A%20%20%7D)%2C%20aa(%22YY%22%2C%20function%20(b%2C%20c)%20%7B%0A%20%20%20%20c%5BYd%5D%20%3D%20a.parseTwoDigitYear(b)%3B%0A%20%20%7D)%2C%20aa(%22Y%22%2C%20function%20(a%2C%20b)%20%7B%0A%20%20%20%20b%5BYd%5D%20%3D%20parseInt(a%2C%2010)%3B%0A%20%20%7D)%2C%0A%20%20%2F%2F%20HOOKS%0A%20%20a.parseTwoDigitYear%20%3D%20function%20(a)%20%7B%0A%20%20%20%20return%20t(a)%20%2B%20(t(a)%20%3E%2068%20%3F%201900%20%3A%202e3)%3B%0A%20%20%7D%3B%0A%20%20%2F%2F%20MOMENTS%0A%20%20var%20ke%20%3D%20N(%22FullYear%22%2C%20!0)%3B%0A%20%20%2F%2F%20FORMATTING%0A%20%20T(%22w%22%2C%20%5B%22ww%22%2C%202%5D%2C%20%22wo%22%2C%20%22week%22)%2C%20T(%22W%22%2C%20%5B%22WW%22%2C%202%5D%2C%20%22Wo%22%2C%20%22isoWeek%22)%2C%0A%20%20%2F%2F%20ALIASES%0A%20%20I(%22week%22%2C%20%22w%22)%2C%20I(%22isoWeek%22%2C%20%22W%22)%2C%0A%20%20%2F%2F%20PRIORITIES%0A%20%20L(%22week%22%2C%205)%2C%20L(%22isoWeek%22%2C%205)%2C%0A%20%20%2F%2F%20PARSING%0A%20%20Y(%22w%22%2C%20Kd)%2C%20Y(%22ww%22%2C%20Kd%2C%20Gd)%2C%20Y(%22W%22%2C%20Kd)%2C%20Y(%22WW%22%2C%20Kd%2C%20Gd)%2C%20ba(%5B%22w%22%2C%20%22ww%22%2C%20%22W%22%2C%20%22WW%22%5D%2C%20function%20(a%2C%20b%2C%20c%2C%20d)%20%7B%0A%20%20%20%20b%5Bd.substr(0%2C%201)%5D%20%3D%20t(a)%3B%0A%20%20%7D)%3Bvar%20le%20%3D%20%7B%20dow%3A%200%2C%20%2F%2F%20Sunday%20is%20the%20first%20day%20of%20the%20week.%0A%20%20%20%20doy%3A%206%20%7D%3B%0A%20%20%2F%2F%20FORMATTING%0A%20%20T(%22d%22%2C%200%2C%20%22do%22%2C%20%22day%22)%2C%20T(%22dd%22%2C%200%2C%200%2C%20function%20(a)%20%7B%0A%20%20%20%20return%20this.localeData().weekdaysMin(this%2C%20a)%3B%0A%20%20%7D)%2C%20T(%22ddd%22%2C%200%2C%200%2C%20function%20(a)%20%7B%0A%20%20%20%20return%20this.localeData().weekdaysShort(this%2C%20a)%3B%0A%20%20%7D)%2C%20T(%22dddd%22%2C%200%2C%200%2C%20function%20(a)%20%7B%0A%20%20%20%20return%20this.localeData().weekdays(this%2C%20a)%3B%0A%20%20%7D)%2C%20T(%22e%22%2C%200%2C%200%2C%20%22weekday%22)%2C%20T(%22E%22%2C%200%2C%200%2C%20%22isoWeekday%22)%2C%0A%20%20%2F%2F%20ALIASES%0A%20%20I(%22day%22%2C%20%22d%22)%2C%20I(%22weekday%22%2C%20%22e%22)%2C%20I(%22isoWeekday%22%2C%20%22E%22)%2C%0A%20%20%2F%2F%20PRIORITY%0A%20%20L(%22day%22%2C%2011)%2C%20L(%22weekday%22%2C%2011)%2C%20L(%22isoWeekday%22%2C%2011)%2C%0A%20%20%2F%2F%20PARSING%0A%20%20Y(%22d%22%2C%20Kd)%2C%20Y(%22e%22%2C%20Kd)%2C%20Y(%22E%22%2C%20Kd)%2C%20Y(%22dd%22%2C%20function%20(a%2C%20b)%20%7B%0A%20%20%20%20return%20b.weekdaysMinRegex(a)%3B%0A%20%20%7D)%2C%20Y(%22ddd%22%2C%20function%20(a%2C%20b)%20%7B%0A%20%20%20%20return%20b.weekdaysShortRegex(a)%3B%0A%20%20%7D)%2C%20Y(%22dddd%22%2C%20function%20(a%2C%20b)%20%7B%0A%20%20%20%20return%20b.weekdaysRegex(a)%3B%0A%20%20%7D)%2C%20ba(%5B%22dd%22%2C%20%22ddd%22%2C%20%22dddd%22%5D%2C%20function%20(a%2C%20b%2C%20c%2C%20d)%20%7B%0A%20%20%20%20var%20e%20%3D%20c._locale.weekdaysParse(a%2C%20d%2C%20c._strict)%3B%0A%20%20%20%20%2F%2F%20if%20we%20didn't%20get%20a%20weekday%20name%2C%20mark%20the%20date%20as%20invalid%0A%20%20%20%20null%20!%3D%20e%20%3F%20b.d%20%3D%20e%20%3A%20l(c).invalidWeekday%20%3D%20a%3B%0A%20%20%7D)%2C%20ba(%5B%22d%22%2C%20%22e%22%2C%20%22E%22%5D%2C%20function%20(a%2C%20b%2C%20c%2C%20d)%20%7B%0A%20%20%20%20b%5Bd%5D%20%3D%20t(a)%3B%0A%20%20%7D)%3B%0A%20%20%2F%2F%20LOCALES%0A%20%20var%20me%20%3D%20%22Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday%22.split(%22_%22)%2C%0A%20%20%20%20%20%20ne%20%3D%20%22Sun_Mon_Tue_Wed_Thu_Fri_Sat%22.split(%22_%22)%2C%0A%20%20%20%20%20%20oe%20%3D%20%22Su_Mo_Tu_We_Th_Fr_Sa%22.split(%22_%22)%2C%0A%20%20%20%20%20%20pe%20%3D%20Vd%2C%0A%20%20%20%20%20%20qe%20%3D%20Vd%2C%0A%20%20%20%20%20%20re%20%3D%20Vd%3BT(%22H%22%2C%20%5B%22HH%22%2C%202%5D%2C%200%2C%20%22hour%22)%2C%20T(%22h%22%2C%20%5B%22hh%22%2C%202%5D%2C%200%2C%20Qa)%2C%20T(%22k%22%2C%20%5B%22kk%22%2C%202%5D%2C%200%2C%20Ra)%2C%20T(%22hmm%22%2C%200%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20return%20%22%22%20%2B%20Qa.apply(this)%20%2B%20S(this.minutes()%2C%202)%3B%0A%20%20%7D)%2C%20T(%22hmmss%22%2C%200%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20return%20%22%22%20%2B%20Qa.apply(this)%20%2B%20S(this.minutes()%2C%202)%20%2B%20S(this.seconds()%2C%202)%3B%0A%20%20%7D)%2C%20T(%22Hmm%22%2C%200%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20return%20%22%22%20%2B%20this.hours()%20%2B%20S(this.minutes()%2C%202)%3B%0A%20%20%7D)%2C%20T(%22Hmmss%22%2C%200%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20return%20%22%22%20%2B%20this.hours()%20%2B%20S(this.minutes()%2C%202)%20%2B%20S(this.seconds()%2C%202)%3B%0A%20%20%7D)%2C%20Sa(%22a%22%2C%20!0)%2C%20Sa(%22A%22%2C%20!1)%2C%0A%20%20%2F%2F%20ALIASES%0A%20%20I(%22hour%22%2C%20%22h%22)%2C%0A%20%20%2F%2F%20PRIORITY%0A%20%20L(%22hour%22%2C%2013)%2C%20Y(%22a%22%2C%20Ta)%2C%20Y(%22A%22%2C%20Ta)%2C%20Y(%22H%22%2C%20Kd)%2C%20Y(%22h%22%2C%20Kd)%2C%20Y(%22HH%22%2C%20Kd%2C%20Gd)%2C%20Y(%22hh%22%2C%20Kd%2C%20Gd)%2C%20Y(%22hmm%22%2C%20Ld)%2C%20Y(%22hmmss%22%2C%20Md)%2C%20Y(%22Hmm%22%2C%20Ld)%2C%20Y(%22Hmmss%22%2C%20Md)%2C%20aa(%5B%22H%22%2C%20%22HH%22%5D%2C%20_d)%2C%20aa(%5B%22a%22%2C%20%22A%22%5D%2C%20function%20(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20c._isPm%20%3D%20c._locale.isPM(a)%2C%20c._meridiem%20%3D%20a%3B%0A%20%20%7D)%2C%20aa(%5B%22h%22%2C%20%22hh%22%5D%2C%20function%20(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20b%5B_d%5D%20%3D%20t(a)%2C%20l(c).bigHour%20%3D%20!0%3B%0A%20%20%7D)%2C%20aa(%22hmm%22%2C%20function%20(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20d%20%3D%20a.length%20-%202%3Bb%5B_d%5D%20%3D%20t(a.substr(0%2C%20d))%2C%20b%5Bae%5D%20%3D%20t(a.substr(d))%2C%20l(c).bigHour%20%3D%20!0%3B%0A%20%20%7D)%2C%20aa(%22hmmss%22%2C%20function%20(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20d%20%3D%20a.length%20-%204%2C%0A%20%20%20%20%20%20%20%20e%20%3D%20a.length%20-%202%3Bb%5B_d%5D%20%3D%20t(a.substr(0%2C%20d))%2C%20b%5Bae%5D%20%3D%20t(a.substr(d%2C%202))%2C%20b%5Bbe%5D%20%3D%20t(a.substr(e))%2C%20l(c).bigHour%20%3D%20!0%3B%0A%20%20%7D)%2C%20aa(%22Hmm%22%2C%20function%20(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20d%20%3D%20a.length%20-%202%3Bb%5B_d%5D%20%3D%20t(a.substr(0%2C%20d))%2C%20b%5Bae%5D%20%3D%20t(a.substr(d))%3B%0A%20%20%7D)%2C%20aa(%22Hmmss%22%2C%20function%20(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20var%20d%20%3D%20a.length%20-%204%2C%0A%20%20%20%20%20%20%20%20e%20%3D%20a.length%20-%202%3Bb%5B_d%5D%20%3D%20t(a.substr(0%2C%20d))%2C%20b%5Bae%5D%20%3D%20t(a.substr(d%2C%202))%2C%20b%5Bbe%5D%20%3D%20t(a.substr(e))%3B%0A%20%20%7D)%3Bvar%20se%2C%0A%20%20%20%20%20%20te%20%3D%20%2F%5Bap%5D%5C.%3Fm%3F%5C.%3F%2Fi%2C%0A%20%20%20%20%20%20ue%20%3D%20N(%22Hours%22%2C%20!0)%2C%0A%20%20%20%20%20%20ve%20%3D%20%7B%20calendar%3A%20td%2C%20longDateFormat%3A%20ud%2C%20invalidDate%3A%20vd%2C%20ordinal%3A%20wd%2C%20ordinalParse%3A%20xd%2C%20relativeTime%3A%20yd%2C%20months%3A%20ge%2C%20monthsShort%3A%20he%2C%20week%3A%20le%2C%20weekdays%3A%20me%2C%20weekdaysMin%3A%20oe%2C%20weekdaysShort%3A%20ne%2C%20meridiemParse%3A%20te%20%7D%2C%0A%20%20%20%20%20%20we%20%3D%20%7B%7D%2C%0A%20%20%20%20%20%20xe%20%3D%20%2F%5E%5Cs*((%3F%3A%5B%2B-%5D%5Cd%7B6%7D%7C%5Cd%7B4%7D)-(%3F%3A%5Cd%5Cd-%5Cd%5Cd%7CW%5Cd%5Cd-%5Cd%7CW%5Cd%5Cd%7C%5Cd%5Cd%5Cd%7C%5Cd%5Cd))(%3F%3A(T%7C%20)(%5Cd%5Cd(%3F%3A%3A%5Cd%5Cd(%3F%3A%3A%5Cd%5Cd(%3F%3A%5B.%2C%5D%5Cd%2B)%3F)%3F)%3F)(%5B%5C%2B%5C-%5D%5Cd%5Cd(%3F%3A%3A%3F%5Cd%5Cd)%3F%7C%5Cs*Z)%3F)%3F%2F%2C%0A%20%20%20%20%20%20ye%20%3D%20%2F%5E%5Cs*((%3F%3A%5B%2B-%5D%5Cd%7B6%7D%7C%5Cd%7B4%7D)(%3F%3A%5Cd%5Cd%5Cd%5Cd%7CW%5Cd%5Cd%5Cd%7CW%5Cd%5Cd%7C%5Cd%5Cd%5Cd%7C%5Cd%5Cd))(%3F%3A(T%7C%20)(%5Cd%5Cd(%3F%3A%5Cd%5Cd(%3F%3A%5Cd%5Cd(%3F%3A%5B.%2C%5D%5Cd%2B)%3F)%3F)%3F)(%5B%5C%2B%5C-%5D%5Cd%5Cd(%3F%3A%3A%3F%5Cd%5Cd)%3F%7C%5Cs*Z)%3F)%3F%2F%2C%0A%20%20%20%20%20%20ze%20%3D%20%2FZ%7C%5B%2B-%5D%5Cd%5Cd(%3F%3A%3A%3F%5Cd%5Cd)%3F%2F%2C%0A%20%20%20%20%20%20Ae%20%3D%20%5B%5B%22YYYYYY-MM-DD%22%2C%20%2F%5B%2B-%5D%5Cd%7B6%7D-%5Cd%5Cd-%5Cd%5Cd%2F%5D%2C%20%5B%22YYYY-MM-DD%22%2C%20%2F%5Cd%7B4%7D-%5Cd%5Cd-%5Cd%5Cd%2F%5D%2C%20%5B%22GGGG-%5BW%5DWW-E%22%2C%20%2F%5Cd%7B4%7D-W%5Cd%5Cd-%5Cd%2F%5D%2C%20%5B%22GGGG-%5BW%5DWW%22%2C%20%2F%5Cd%7B4%7D-W%5Cd%5Cd%2F%2C%20!1%5D%2C%20%5B%22YYYY-DDD%22%2C%20%2F%5Cd%7B4%7D-%5Cd%7B3%7D%2F%5D%2C%20%5B%22YYYY-MM%22%2C%20%2F%5Cd%7B4%7D-%5Cd%5Cd%2F%2C%20!1%5D%2C%20%5B%22YYYYYYMMDD%22%2C%20%2F%5B%2B-%5D%5Cd%7B10%7D%2F%5D%2C%20%5B%22YYYYMMDD%22%2C%20%2F%5Cd%7B8%7D%2F%5D%2C%0A%20%20%2F%2F%20YYYYMM%20is%20NOT%20allowed%20by%20the%20standard%0A%20%20%5B%22GGGG%5BW%5DWWE%22%2C%20%2F%5Cd%7B4%7DW%5Cd%7B3%7D%2F%5D%2C%20%5B%22GGGG%5BW%5DWW%22%2C%20%2F%5Cd%7B4%7DW%5Cd%7B2%7D%2F%2C%20!1%5D%2C%20%5B%22YYYYDDD%22%2C%20%2F%5Cd%7B7%7D%2F%5D%5D%2C%0A%20%20%20%20%20%20Be%20%3D%20%5B%5B%22HH%3Amm%3Ass.SSSS%22%2C%20%2F%5Cd%5Cd%3A%5Cd%5Cd%3A%5Cd%5Cd%5C.%5Cd%2B%2F%5D%2C%20%5B%22HH%3Amm%3Ass%2CSSSS%22%2C%20%2F%5Cd%5Cd%3A%5Cd%5Cd%3A%5Cd%5Cd%2C%5Cd%2B%2F%5D%2C%20%5B%22HH%3Amm%3Ass%22%2C%20%2F%5Cd%5Cd%3A%5Cd%5Cd%3A%5Cd%5Cd%2F%5D%2C%20%5B%22HH%3Amm%22%2C%20%2F%5Cd%5Cd%3A%5Cd%5Cd%2F%5D%2C%20%5B%22HHmmss.SSSS%22%2C%20%2F%5Cd%5Cd%5Cd%5Cd%5Cd%5Cd%5C.%5Cd%2B%2F%5D%2C%20%5B%22HHmmss%2CSSSS%22%2C%20%2F%5Cd%5Cd%5Cd%5Cd%5Cd%5Cd%2C%5Cd%2B%2F%5D%2C%20%5B%22HHmmss%22%2C%20%2F%5Cd%5Cd%5Cd%5Cd%5Cd%5Cd%2F%5D%2C%20%5B%22HHmm%22%2C%20%2F%5Cd%5Cd%5Cd%5Cd%2F%5D%2C%20%5B%22HH%22%2C%20%2F%5Cd%5Cd%2F%5D%5D%2C%0A%20%20%20%20%20%20Ce%20%3D%20%2F%5E%5C%2F%3FDate%5C((%5C-%3F%5Cd%2B)%2Fi%3Ba.createFromInputFallback%20%3D%20w(%22moment%20construction%20falls%20back%20to%20js%20Date.%20This%20is%20discouraged%20and%20will%20be%20removed%20in%20upcoming%20major%20release.%20Please%20refer%20to%20http%3A%2F%2Fmomentjs.com%2Fguides%2F%23%2Fwarnings%2Fjs-date%2F%20for%20more%20info.%22%2C%20function%20(a)%20%7B%0A%20%20%20%20a._d%20%3D%20new%20Date(a._i%20%2B%20(a._useUTC%20%3F%20%22%20UTC%22%20%3A%20%22%22))%3B%0A%20%20%7D)%2C%0A%20%20%2F%2F%20constant%20that%20refers%20to%20the%20ISO%20standard%0A%20%20a.ISO_8601%20%3D%20function%20()%20%7B%7D%3Bvar%20De%20%3D%20w(%22moment().min%20is%20deprecated%2C%20use%20moment.max%20instead.%20http%3A%2F%2Fmomentjs.com%2Fguides%2F%23%2Fwarnings%2Fmin-max%2F%22%2C%20function%20()%20%7B%0A%20%20%20%20var%20a%20%3D%20rb.apply(null%2C%20arguments)%3Breturn%20this.isValid()%20%26%26%20a.isValid()%20%3F%20this%20%3E%20a%20%3F%20this%20%3A%20a%20%3A%20n()%3B%0A%20%20%7D)%2C%0A%20%20%20%20%20%20Ee%20%3D%20w(%22moment().max%20is%20deprecated%2C%20use%20moment.min%20instead.%20http%3A%2F%2Fmomentjs.com%2Fguides%2F%23%2Fwarnings%2Fmin-max%2F%22%2C%20function%20()%20%7B%0A%20%20%20%20var%20a%20%3D%20rb.apply(null%2C%20arguments)%3Breturn%20this.isValid()%20%26%26%20a.isValid()%20%3F%20a%20%3E%20this%20%3F%20this%20%3A%20a%20%3A%20n()%3B%0A%20%20%7D)%2C%0A%20%20%20%20%20%20Fe%20%3D%20function%20Fe()%20%7B%0A%20%20%20%20return%20Date.now%20%3F%20Date.now()%20%3A%20%2Bnew%20Date()%3B%0A%20%20%7D%3Bxb(%22Z%22%2C%20%22%3A%22)%2C%20xb(%22ZZ%22%2C%20%22%22)%2C%0A%20%20%2F%2F%20PARSING%0A%20%20Y(%22Z%22%2C%20Td)%2C%20Y(%22ZZ%22%2C%20Td)%2C%20aa(%5B%22Z%22%2C%20%22ZZ%22%5D%2C%20function%20(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20c._useUTC%20%3D%20!0%2C%20c._tzm%20%3D%20yb(Td%2C%20a)%3B%0A%20%20%7D)%3B%0A%20%20%2F%2F%20HELPERS%0A%20%20%2F%2F%20timezone%20chunker%0A%20%20%2F%2F%20'%2B10%3A00'%20%3E%20%5B'10'%2C%20%20'00'%5D%0A%20%20%2F%2F%20'-1530'%20%20%3E%20%5B'-15'%2C%20'30'%5D%0A%20%20var%20Ge%20%3D%20%2F(%5B%5C%2B%5C-%5D%7C%5Cd%5Cd)%2Fgi%3B%0A%20%20%2F%2F%20HOOKS%0A%20%20%2F%2F%20This%20function%20will%20be%20called%20whenever%20a%20moment%20is%20mutated.%0A%20%20%2F%2F%20It%20is%20intended%20to%20keep%20the%20offset%20in%20sync%20with%20the%20timezone.%0A%20%20a.updateOffset%20%3D%20function%20()%20%7B%7D%3B%0A%20%20%2F%2F%20ASP.NET%20json%20date%20format%20regex%0A%20%20var%20He%20%3D%20%2F%5E(%5C-)%3F(%3F%3A(%5Cd*)%5B.%20%5D)%3F(%5Cd%2B)%5C%3A(%5Cd%2B)(%3F%3A%5C%3A(%5Cd%2B)%5C.%3F(%5Cd%7B3%7D)%3F%5Cd*)%3F%24%2F%2C%0A%20%20%20%20%20%20Ie%20%3D%20%2F%5E(-)%3FP(%3F%3A(-%3F%5B0-9%2C.%5D*)Y)%3F(%3F%3A(-%3F%5B0-9%2C.%5D*)M)%3F(%3F%3A(-%3F%5B0-9%2C.%5D*)W)%3F(%3F%3A(-%3F%5B0-9%2C.%5D*)D)%3F(%3F%3AT(%3F%3A(-%3F%5B0-9%2C.%5D*)H)%3F(%3F%3A(-%3F%5B0-9%2C.%5D*)M)%3F(%3F%3A(-%3F%5B0-9%2C.%5D*)S)%3F)%3F%24%2F%3BMb.fn%20%3D%20vb.prototype%3Bvar%20Je%20%3D%20Rb(1%2C%20%22add%22)%2C%0A%20%20%20%20%20%20Ke%20%3D%20Rb(-1%2C%20%22subtract%22)%3Ba.defaultFormat%20%3D%20%22YYYY-MM-DDTHH%3Amm%3AssZ%22%2C%20a.defaultFormatUtc%20%3D%20%22YYYY-MM-DDTHH%3Amm%3Ass%5BZ%5D%22%3Bvar%20Le%20%3D%20w(%22moment().lang()%20is%20deprecated.%20Instead%2C%20use%20moment().localeData()%20to%20get%20the%20language%20configuration.%20Use%20moment().locale()%20to%20change%20languages.%22%2C%20function%20(a)%20%7B%0A%20%20%20%20return%20void%200%20%3D%3D%3D%20a%20%3F%20this.localeData()%20%3A%20this.locale(a)%3B%0A%20%20%7D)%3B%0A%20%20%2F%2F%20FORMATTING%0A%20%20T(0%2C%20%5B%22gg%22%2C%202%5D%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20return%20this.weekYear()%20%25%20100%3B%0A%20%20%7D)%2C%20T(0%2C%20%5B%22GG%22%2C%202%5D%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20return%20this.isoWeekYear()%20%25%20100%3B%0A%20%20%7D)%2C%20xc(%22gggg%22%2C%20%22weekYear%22)%2C%20xc(%22ggggg%22%2C%20%22weekYear%22)%2C%20xc(%22GGGG%22%2C%20%22isoWeekYear%22)%2C%20xc(%22GGGGG%22%2C%20%22isoWeekYear%22)%2C%0A%20%20%2F%2F%20ALIASES%0A%20%20I(%22weekYear%22%2C%20%22gg%22)%2C%20I(%22isoWeekYear%22%2C%20%22GG%22)%2C%0A%20%20%2F%2F%20PRIORITY%0A%20%20L(%22weekYear%22%2C%201)%2C%20L(%22isoWeekYear%22%2C%201)%2C%0A%20%20%2F%2F%20PARSING%0A%20%20Y(%22G%22%2C%20Rd)%2C%20Y(%22g%22%2C%20Rd)%2C%20Y(%22GG%22%2C%20Kd%2C%20Gd)%2C%20Y(%22gg%22%2C%20Kd%2C%20Gd)%2C%20Y(%22GGGG%22%2C%20Od%2C%20Id)%2C%20Y(%22gggg%22%2C%20Od%2C%20Id)%2C%20Y(%22GGGGG%22%2C%20Pd%2C%20Jd)%2C%20Y(%22ggggg%22%2C%20Pd%2C%20Jd)%2C%20ba(%5B%22gggg%22%2C%20%22ggggg%22%2C%20%22GGGG%22%2C%20%22GGGGG%22%5D%2C%20function%20(a%2C%20b%2C%20c%2C%20d)%20%7B%0A%20%20%20%20b%5Bd.substr(0%2C%202)%5D%20%3D%20t(a)%3B%0A%20%20%7D)%2C%20ba(%5B%22gg%22%2C%20%22GG%22%5D%2C%20function%20(b%2C%20c%2C%20d%2C%20e)%20%7B%0A%20%20%20%20c%5Be%5D%20%3D%20a.parseTwoDigitYear(b)%3B%0A%20%20%7D)%2C%0A%20%20%2F%2F%20FORMATTING%0A%20%20T(%22Q%22%2C%200%2C%20%22Qo%22%2C%20%22quarter%22)%2C%0A%20%20%2F%2F%20ALIASES%0A%20%20I(%22quarter%22%2C%20%22Q%22)%2C%0A%20%20%2F%2F%20PRIORITY%0A%20%20L(%22quarter%22%2C%207)%2C%0A%20%20%2F%2F%20PARSING%0A%20%20Y(%22Q%22%2C%20Fd)%2C%20aa(%22Q%22%2C%20function%20(a%2C%20b)%20%7B%0A%20%20%20%20b%5BZd%5D%20%3D%203%20*%20(t(a)%20-%201)%3B%0A%20%20%7D)%2C%0A%20%20%2F%2F%20FORMATTING%0A%20%20T(%22D%22%2C%20%5B%22DD%22%2C%202%5D%2C%20%22Do%22%2C%20%22date%22)%2C%0A%20%20%2F%2F%20ALIASES%0A%20%20I(%22date%22%2C%20%22D%22)%2C%0A%20%20%2F%2F%20PRIOROITY%0A%20%20L(%22date%22%2C%209)%2C%0A%20%20%2F%2F%20PARSING%0A%20%20Y(%22D%22%2C%20Kd)%2C%20Y(%22DD%22%2C%20Kd%2C%20Gd)%2C%20Y(%22Do%22%2C%20function%20(a%2C%20b)%20%7B%0A%20%20%20%20return%20a%20%3F%20b._ordinalParse%20%3A%20b._ordinalParseLenient%3B%0A%20%20%7D)%2C%20aa(%5B%22D%22%2C%20%22DD%22%5D%2C%20%24d)%2C%20aa(%22Do%22%2C%20function%20(a%2C%20b)%20%7B%0A%20%20%20%20b%5B%24d%5D%20%3D%20t(a.match(Kd)%5B0%5D%2C%2010)%3B%0A%20%20%7D)%3B%0A%20%20%2F%2F%20MOMENTS%0A%20%20var%20Me%20%3D%20N(%22Date%22%2C%20!0)%3B%0A%20%20%2F%2F%20FORMATTING%0A%20%20T(%22DDD%22%2C%20%5B%22DDDD%22%2C%203%5D%2C%20%22DDDo%22%2C%20%22dayOfYear%22)%2C%0A%20%20%2F%2F%20ALIASES%0A%20%20I(%22dayOfYear%22%2C%20%22DDD%22)%2C%0A%20%20%2F%2F%20PRIORITY%0A%20%20L(%22dayOfYear%22%2C%204)%2C%0A%20%20%2F%2F%20PARSING%0A%20%20Y(%22DDD%22%2C%20Nd)%2C%20Y(%22DDDD%22%2C%20Hd)%2C%20aa(%5B%22DDD%22%2C%20%22DDDD%22%5D%2C%20function%20(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20c._dayOfYear%20%3D%20t(a)%3B%0A%20%20%7D)%2C%0A%20%20%2F%2F%20FORMATTING%0A%20%20T(%22m%22%2C%20%5B%22mm%22%2C%202%5D%2C%200%2C%20%22minute%22)%2C%0A%20%20%2F%2F%20ALIASES%0A%20%20I(%22minute%22%2C%20%22m%22)%2C%0A%20%20%2F%2F%20PRIORITY%0A%20%20L(%22minute%22%2C%2014)%2C%0A%20%20%2F%2F%20PARSING%0A%20%20Y(%22m%22%2C%20Kd)%2C%20Y(%22mm%22%2C%20Kd%2C%20Gd)%2C%20aa(%5B%22m%22%2C%20%22mm%22%5D%2C%20ae)%3B%0A%20%20%2F%2F%20MOMENTS%0A%20%20var%20Ne%20%3D%20N(%22Minutes%22%2C%20!1)%3B%0A%20%20%2F%2F%20FORMATTING%0A%20%20T(%22s%22%2C%20%5B%22ss%22%2C%202%5D%2C%200%2C%20%22second%22)%2C%0A%20%20%2F%2F%20ALIASES%0A%20%20I(%22second%22%2C%20%22s%22)%2C%0A%20%20%2F%2F%20PRIORITY%0A%20%20L(%22second%22%2C%2015)%2C%0A%20%20%2F%2F%20PARSING%0A%20%20Y(%22s%22%2C%20Kd)%2C%20Y(%22ss%22%2C%20Kd%2C%20Gd)%2C%20aa(%5B%22s%22%2C%20%22ss%22%5D%2C%20be)%3B%0A%20%20%2F%2F%20MOMENTS%0A%20%20var%20Oe%20%3D%20N(%22Seconds%22%2C%20!1)%3B%0A%20%20%2F%2F%20FORMATTING%0A%20%20T(%22S%22%2C%200%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20return%20~~(this.millisecond()%20%2F%20100)%3B%0A%20%20%7D)%2C%20T(0%2C%20%5B%22SS%22%2C%202%5D%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20return%20~~(this.millisecond()%20%2F%2010)%3B%0A%20%20%7D)%2C%20T(0%2C%20%5B%22SSS%22%2C%203%5D%2C%200%2C%20%22millisecond%22)%2C%20T(0%2C%20%5B%22SSSS%22%2C%204%5D%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20return%2010%20*%20this.millisecond()%3B%0A%20%20%7D)%2C%20T(0%2C%20%5B%22SSSSS%22%2C%205%5D%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20return%20100%20*%20this.millisecond()%3B%0A%20%20%7D)%2C%20T(0%2C%20%5B%22SSSSSS%22%2C%206%5D%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20return%201e3%20*%20this.millisecond()%3B%0A%20%20%7D)%2C%20T(0%2C%20%5B%22SSSSSSS%22%2C%207%5D%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20return%201e4%20*%20this.millisecond()%3B%0A%20%20%7D)%2C%20T(0%2C%20%5B%22SSSSSSSS%22%2C%208%5D%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20return%201e5%20*%20this.millisecond()%3B%0A%20%20%7D)%2C%20T(0%2C%20%5B%22SSSSSSSSS%22%2C%209%5D%2C%200%2C%20function%20()%20%7B%0A%20%20%20%20return%201e6%20*%20this.millisecond()%3B%0A%20%20%7D)%2C%0A%20%20%2F%2F%20ALIASES%0A%20%20I(%22millisecond%22%2C%20%22ms%22)%2C%0A%20%20%2F%2F%20PRIORITY%0A%20%20L(%22millisecond%22%2C%2016)%2C%0A%20%20%2F%2F%20PARSING%0A%20%20Y(%22S%22%2C%20Nd%2C%20Fd)%2C%20Y(%22SS%22%2C%20Nd%2C%20Gd)%2C%20Y(%22SSS%22%2C%20Nd%2C%20Hd)%3Bvar%20Pe%3Bfor%20(Pe%20%3D%20%22SSSS%22%3B%20Pe.length%20%3C%3D%209%3B%20Pe%20%2B%3D%20%22S%22)%20%7B%0A%20%20%20%20Y(Pe%2C%20Qd)%3B%0A%20%20%7Dfor%20(Pe%20%3D%20%22S%22%3B%20Pe.length%20%3C%3D%209%3B%20Pe%20%2B%3D%20%22S%22)%20%7B%0A%20%20%20%20aa(Pe%2C%20Gc)%3B%0A%20%20%7D%20%2F%2F%20MOMENTS%0A%20%20var%20Qe%20%3D%20N(%22Milliseconds%22%2C%20!1)%3B%0A%20%20%2F%2F%20FORMATTING%0A%20%20T(%22z%22%2C%200%2C%200%2C%20%22zoneAbbr%22)%2C%20T(%22zz%22%2C%200%2C%200%2C%20%22zoneName%22)%3Bvar%20Re%20%3D%20q.prototype%3BRe.add%20%3D%20Je%2C%20Re.calendar%20%3D%20Ub%2C%20Re.clone%20%3D%20Vb%2C%20Re.diff%20%3D%20ac%2C%20Re.endOf%20%3D%20mc%2C%20Re.format%20%3D%20ec%2C%20Re.from%20%3D%20fc%2C%20Re.fromNow%20%3D%20gc%2C%20Re.to%20%3D%20hc%2C%20Re.toNow%20%3D%20ic%2C%20Re.get%20%3D%20Q%2C%20Re.invalidAt%20%3D%20vc%2C%20Re.isAfter%20%3D%20Wb%2C%20Re.isBefore%20%3D%20Xb%2C%20Re.isBetween%20%3D%20Yb%2C%20Re.isSame%20%3D%20Zb%2C%20Re.isSameOrAfter%20%3D%20%24b%2C%20Re.isSameOrBefore%20%3D%20_b%2C%20Re.isValid%20%3D%20tc%2C%20Re.lang%20%3D%20Le%2C%20Re.locale%20%3D%20jc%2C%20Re.localeData%20%3D%20kc%2C%20Re.max%20%3D%20Ee%2C%20Re.min%20%3D%20De%2C%20Re.parsingFlags%20%3D%20uc%2C%20Re.set%20%3D%20R%2C%20Re.startOf%20%3D%20lc%2C%20Re.subtract%20%3D%20Ke%2C%20Re.toArray%20%3D%20qc%2C%20Re.toObject%20%3D%20rc%2C%20Re.toDate%20%3D%20pc%2C%20Re.toISOString%20%3D%20dc%2C%20Re.toJSON%20%3D%20sc%2C%20Re.toString%20%3D%20cc%2C%20Re.unix%20%3D%20oc%2C%20Re.valueOf%20%3D%20nc%2C%20Re.creationData%20%3D%20wc%2C%0A%20%20%2F%2F%20Year%0A%20%20Re.year%20%3D%20ke%2C%20Re.isLeapYear%20%3D%20qa%2C%0A%20%20%2F%2F%20Week%20Year%0A%20%20Re.weekYear%20%3D%20yc%2C%20Re.isoWeekYear%20%3D%20zc%2C%0A%20%20%2F%2F%20Quarter%0A%20%20Re.quarter%20%3D%20Re.quarters%20%3D%20Ec%2C%0A%20%20%2F%2F%20Month%0A%20%20Re.month%20%3D%20ja%2C%20Re.daysInMonth%20%3D%20ka%2C%0A%20%20%2F%2F%20Week%0A%20%20Re.week%20%3D%20Re.weeks%20%3D%20Aa%2C%20Re.isoWeek%20%3D%20Re.isoWeeks%20%3D%20Ba%2C%20Re.weeksInYear%20%3D%20Bc%2C%20Re.isoWeeksInYear%20%3D%20Ac%2C%0A%20%20%2F%2F%20Day%0A%20%20Re.date%20%3D%20Me%2C%20Re.day%20%3D%20Re.days%20%3D%20Ja%2C%20Re.weekday%20%3D%20Ka%2C%20Re.isoWeekday%20%3D%20La%2C%20Re.dayOfYear%20%3D%20Fc%2C%0A%20%20%2F%2F%20Hour%0A%20%20Re.hour%20%3D%20Re.hours%20%3D%20ue%2C%0A%20%20%2F%2F%20Minute%0A%20%20Re.minute%20%3D%20Re.minutes%20%3D%20Ne%2C%0A%20%20%2F%2F%20Second%0A%20%20Re.second%20%3D%20Re.seconds%20%3D%20Oe%2C%0A%20%20%2F%2F%20Millisecond%0A%20%20Re.millisecond%20%3D%20Re.milliseconds%20%3D%20Qe%2C%0A%20%20%2F%2F%20Offset%0A%20%20Re.utcOffset%20%3D%20Bb%2C%20Re.utc%20%3D%20Db%2C%20Re.local%20%3D%20Eb%2C%20Re.parseZone%20%3D%20Fb%2C%20Re.hasAlignedHourOffset%20%3D%20Gb%2C%20Re.isDST%20%3D%20Hb%2C%20Re.isLocal%20%3D%20Jb%2C%20Re.isUtcOffset%20%3D%20Kb%2C%20Re.isUtc%20%3D%20Lb%2C%20Re.isUTC%20%3D%20Lb%2C%0A%20%20%2F%2F%20Timezone%0A%20%20Re.zoneAbbr%20%3D%20Hc%2C%20Re.zoneName%20%3D%20Ic%2C%0A%20%20%2F%2F%20Deprecations%0A%20%20Re.dates%20%3D%20w(%22dates%20accessor%20is%20deprecated.%20Use%20date%20instead.%22%2C%20Me)%2C%20Re.months%20%3D%20w(%22months%20accessor%20is%20deprecated.%20Use%20month%20instead%22%2C%20ja)%2C%20Re.years%20%3D%20w(%22years%20accessor%20is%20deprecated.%20Use%20year%20instead%22%2C%20ke)%2C%20Re.zone%20%3D%20w(%22moment().zone%20is%20deprecated%2C%20use%20moment().utcOffset%20instead.%20http%3A%2F%2Fmomentjs.com%2Fguides%2F%23%2Fwarnings%2Fzone%2F%22%2C%20Cb)%2C%20Re.isDSTShifted%20%3D%20w(%22isDSTShifted%20is%20deprecated.%20See%20http%3A%2F%2Fmomentjs.com%2Fguides%2F%23%2Fwarnings%2Fdst-shifted%2F%20for%20more%20information%22%2C%20Ib)%3Bvar%20Se%20%3D%20Re%2C%0A%20%20%20%20%20%20Te%20%3D%20B.prototype%3BTe.calendar%20%3D%20C%2C%20Te.longDateFormat%20%3D%20D%2C%20Te.invalidDate%20%3D%20E%2C%20Te.ordinal%20%3D%20F%2C%20Te.preparse%20%3D%20Lc%2C%20Te.postformat%20%3D%20Lc%2C%20Te.relativeTime%20%3D%20G%2C%20Te.pastFuture%20%3D%20H%2C%20Te.set%20%3D%20z%2C%0A%20%20%2F%2F%20Month%0A%20%20Te.months%20%3D%20ea%2C%20Te.monthsShort%20%3D%20fa%2C%20Te.monthsParse%20%3D%20ha%2C%20Te.monthsRegex%20%3D%20ma%2C%20Te.monthsShortRegex%20%3D%20la%2C%0A%20%20%2F%2F%20Week%0A%20%20Te.week%20%3D%20xa%2C%20Te.firstDayOfYear%20%3D%20za%2C%20Te.firstDayOfWeek%20%3D%20ya%2C%0A%20%20%2F%2F%20Day%20of%20Week%0A%20%20Te.weekdays%20%3D%20Ea%2C%20Te.weekdaysMin%20%3D%20Ga%2C%20Te.weekdaysShort%20%3D%20Fa%2C%20Te.weekdaysParse%20%3D%20Ia%2C%20Te.weekdaysRegex%20%3D%20Ma%2C%20Te.weekdaysShortRegex%20%3D%20Na%2C%20Te.weekdaysMinRegex%20%3D%20Oa%2C%0A%20%20%2F%2F%20Hours%0A%20%20Te.isPM%20%3D%20Ua%2C%20Te.meridiem%20%3D%20Va%2C%20Za(%22en%22%2C%20%7B%20ordinalParse%3A%20%2F%5Cd%7B1%2C2%7D(th%7Cst%7Cnd%7Crd)%2F%2C%20ordinal%3A%20function%20ordinal(a)%20%7B%0A%20%20%20%20%20%20var%20b%20%3D%20a%20%25%2010%2C%0A%20%20%20%20%20%20%20%20%20%20c%20%3D%201%20%3D%3D%3D%20t(a%20%25%20100%20%2F%2010)%20%3F%20%22th%22%20%3A%201%20%3D%3D%3D%20b%20%3F%20%22st%22%20%3A%202%20%3D%3D%3D%20b%20%3F%20%22nd%22%20%3A%203%20%3D%3D%3D%20b%20%3F%20%22rd%22%20%3A%20%22th%22%3Breturn%20a%20%2B%20c%3B%0A%20%20%20%20%7D%20%7D)%2C%0A%20%20%2F%2F%20Side%20effect%20imports%0A%20%20a.lang%20%3D%20w(%22moment.lang%20is%20deprecated.%20Use%20moment.locale%20instead.%22%2C%20Za)%2C%20a.langData%20%3D%20w(%22moment.langData%20is%20deprecated.%20Use%20moment.localeData%20instead.%22%2C%20ab)%3Bvar%20Ue%20%3D%20Math.abs%2C%0A%20%20%20%20%20%20Ve%20%3D%20cd(%22ms%22)%2C%0A%20%20%20%20%20%20We%20%3D%20cd(%22s%22)%2C%0A%20%20%20%20%20%20Xe%20%3D%20cd(%22m%22)%2C%0A%20%20%20%20%20%20Ye%20%3D%20cd(%22h%22)%2C%0A%20%20%20%20%20%20Ze%20%3D%20cd(%22d%22)%2C%0A%20%20%20%20%20%20%24e%20%3D%20cd(%22w%22)%2C%0A%20%20%20%20%20%20_e%20%3D%20cd(%22M%22)%2C%0A%20%20%20%20%20%20af%20%3D%20cd(%22y%22)%2C%0A%20%20%20%20%20%20bf%20%3D%20ed(%22milliseconds%22)%2C%0A%20%20%20%20%20%20cf%20%3D%20ed(%22seconds%22)%2C%0A%20%20%20%20%20%20df%20%3D%20ed(%22minutes%22)%2C%0A%20%20%20%20%20%20ef%20%3D%20ed(%22hours%22)%2C%0A%20%20%20%20%20%20ff%20%3D%20ed(%22days%22)%2C%0A%20%20%20%20%20%20gf%20%3D%20ed(%22months%22)%2C%0A%20%20%20%20%20%20hf%20%3D%20ed(%22years%22)%2C%0A%20%20%20%20%20%20jf%20%3D%20Math.round%2C%0A%20%20%20%20%20%20kf%20%3D%20%7B%20s%3A%2045%2C%20%2F%2F%20seconds%20to%20minute%0A%20%20%20%20m%3A%2045%2C%20%2F%2F%20minutes%20to%20hour%0A%20%20%20%20h%3A%2022%2C%20%2F%2F%20hours%20to%20day%0A%20%20%20%20d%3A%2026%2C%20%2F%2F%20days%20to%20month%0A%20%20%20%20M%3A%2011%20%7D%2C%0A%20%20%20%20%20%20lf%20%3D%20Math.abs%2C%0A%20%20%20%20%20%20mf%20%3D%20vb.prototype%3Bmf.abs%20%3D%20Uc%2C%20mf.add%20%3D%20Wc%2C%20mf.subtract%20%3D%20Xc%2C%20mf.as%20%3D%20ad%2C%20mf.asMilliseconds%20%3D%20Ve%2C%20mf.asSeconds%20%3D%20We%2C%20mf.asMinutes%20%3D%20Xe%2C%20mf.asHours%20%3D%20Ye%2C%20mf.asDays%20%3D%20Ze%2C%20mf.asWeeks%20%3D%20%24e%2C%20mf.asMonths%20%3D%20_e%2C%20mf.asYears%20%3D%20af%2C%20mf.valueOf%20%3D%20bd%2C%20mf._bubble%20%3D%20Zc%2C%20mf.get%20%3D%20dd%2C%20mf.milliseconds%20%3D%20bf%2C%20mf.seconds%20%3D%20cf%2C%20mf.minutes%20%3D%20df%2C%20mf.hours%20%3D%20ef%2C%20mf.days%20%3D%20ff%2C%20mf.weeks%20%3D%20fd%2C%20mf.months%20%3D%20gf%2C%20mf.years%20%3D%20hf%2C%20mf.humanize%20%3D%20kd%2C%20mf.toISOString%20%3D%20ld%2C%20mf.toString%20%3D%20ld%2C%20mf.toJSON%20%3D%20ld%2C%20mf.locale%20%3D%20jc%2C%20mf.localeData%20%3D%20kc%2C%0A%20%20%2F%2F%20Deprecations%0A%20%20mf.toIsoString%20%3D%20w(%22toIsoString()%20is%20deprecated.%20Please%20use%20toISOString()%20instead%20(notice%20the%20capitals)%22%2C%20ld)%2C%20mf.lang%20%3D%20Le%2C%0A%20%20%2F%2F%20Side%20effect%20imports%0A%20%20%2F%2F%20FORMATTING%0A%20%20T(%22X%22%2C%200%2C%200%2C%20%22unix%22)%2C%20T(%22x%22%2C%200%2C%200%2C%20%22valueOf%22)%2C%0A%20%20%2F%2F%20PARSING%0A%20%20Y(%22x%22%2C%20Rd)%2C%20Y(%22X%22%2C%20Ud)%2C%20aa(%22X%22%2C%20function%20(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20c._d%20%3D%20new%20Date(1e3%20*%20parseFloat(a%2C%2010))%3B%0A%20%20%7D)%2C%20aa(%22x%22%2C%20function%20(a%2C%20b%2C%20c)%20%7B%0A%20%20%20%20c._d%20%3D%20new%20Date(t(a))%3B%0A%20%20%7D)%2C%0A%20%20%2F%2F%20Side%20effect%20imports%0A%20%20a.version%20%3D%20%222.14.2%22%2C%20b(rb)%2C%20a.fn%20%3D%20Se%2C%20a.min%20%3D%20tb%2C%20a.max%20%3D%20ub%2C%20a.now%20%3D%20Fe%2C%20a.utc%20%3D%20j%2C%20a.unix%20%3D%20Jc%2C%20a.months%20%3D%20Pc%2C%20a.isDate%20%3D%20f%2C%20a.locale%20%3D%20Za%2C%20a.invalid%20%3D%20n%2C%20a.duration%20%3D%20Mb%2C%20a.isMoment%20%3D%20r%2C%20a.weekdays%20%3D%20Rc%2C%20a.parseZone%20%3D%20Kc%2C%20a.localeData%20%3D%20ab%2C%20a.isDuration%20%3D%20wb%2C%20a.monthsShort%20%3D%20Qc%2C%20a.weekdaysMin%20%3D%20Tc%2C%20a.defineLocale%20%3D%20%24a%2C%20a.updateLocale%20%3D%20_a%2C%20a.locales%20%3D%20bb%2C%20a.weekdaysShort%20%3D%20Sc%2C%20a.normalizeUnits%20%3D%20J%2C%20a.relativeTimeRounding%20%3D%20id%2C%20a.relativeTimeThreshold%20%3D%20jd%2C%20a.calendarFormat%20%3D%20Tb%2C%20a.prototype%20%3D%20Se%3Bvar%20nf%20%3D%20a%3Breturn%20nf%3B%0A%7D)%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fthrivepatientportal.com%2Fsrc%2Fportal-app%2Fportal-app.html-54.js%0AScript
data:text/javascript;charset=utf-8,%2F%2F!%20moment.js%20locale%20configuration%0A%2F%2F!%20locale%20%3A%20English%20(Canada)%20%5Ben-ca%5D%0A%2F%2F!%20author%20%3A%20Jonathan%20Abourbih%20%3A%20https%3A%2F%2Fgithub.com%2Fjonbca%0A%0A%3B(function%20(global%2C%20factory)%20%7B%0A%20%20%20%20(typeof%20exports%20%3D%3D%3D%20'undefined'%20%3F%20'undefined'%20%3A%20babelHelpers.typeof(exports))%20%3D%3D%3D%20'object'%20%26%26%20typeof%20module%20!%3D%3D%20'undefined'%20%26%26%20typeof%20require%20%3D%3D%3D%20'function'%20%3F%20factory(require('..%2Fmoment'))%20%3A%20typeof%20define%20%3D%3D%3D%20'function'%20%26%26%20define.amd%20%3F%20define(%5B'..%2Fmoment'%5D%2C%20factory)%20%3A%20factory(global.moment)%3B%0A%7D)(this%2C%20function%20(moment)%20%7B%0A%20%20%20%20'use%20strict'%3B%0A%0A%20%20%20%20var%20en_ca%20%3D%20moment.defineLocale('en-ca'%2C%20%7B%0A%20%20%20%20%20%20%20%20months%3A%20'January_February_March_April_May_June_July_August_September_October_November_December'.split('_')%2C%0A%20%20%20%20%20%20%20%20monthsShort%3A%20'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_')%2C%0A%20%20%20%20%20%20%20%20weekdays%3A%20'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_')%2C%0A%20%20%20%20%20%20%20%20weekdaysShort%3A%20'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_')%2C%0A%20%20%20%20%20%20%20%20weekdaysMin%3A%20'Su_Mo_Tu_We_Th_Fr_Sa'.split('_')%2C%0A%20%20%20%20%20%20%20%20longDateFormat%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20LT%3A%20'h%3Amm%20A'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20LTS%3A%20'h%3Amm%3Ass%20A'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20L%3A%20'YYYY-MM-DD'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20LL%3A%20'MMMM%20D%2C%20YYYY'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20LLL%3A%20'MMMM%20D%2C%20YYYY%20h%3Amm%20A'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20LLLL%3A%20'dddd%2C%20MMMM%20D%2C%20YYYY%20h%3Amm%20A'%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20calendar%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20sameDay%3A%20'%5BToday%20at%5D%20LT'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20nextDay%3A%20'%5BTomorrow%20at%5D%20LT'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20nextWeek%3A%20'dddd%20%5Bat%5D%20LT'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20lastDay%3A%20'%5BYesterday%20at%5D%20LT'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20lastWeek%3A%20'%5BLast%5D%20dddd%20%5Bat%5D%20LT'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sameElse%3A%20'L'%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20relativeTime%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20future%3A%20'in%20%25s'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20past%3A%20'%25s%20ago'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20s%3A%20'a%20few%20seconds'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20m%3A%20'a%20minute'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mm%3A%20'%25d%20minutes'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20h%3A%20'an%20hour'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20hh%3A%20'%25d%20hours'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20d%3A%20'a%20day'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20dd%3A%20'%25d%20days'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20M%3A%20'a%20month'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20MM%3A%20'%25d%20months'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3A%20'a%20year'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20yy%3A%20'%25d%20years'%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20ordinalParse%3A%20%2F%5Cd%7B1%2C2%7D(st%7Cnd%7Crd%7Cth)%2F%2C%0A%20%20%20%20%20%20%20%20ordinal%3A%20function%20ordinal(number)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20b%20%3D%20number%20%25%2010%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20output%20%3D%20~~(number%20%25%20100%20%2F%2010)%20%3D%3D%3D%201%20%3F%20'th'%20%3A%20b%20%3D%3D%3D%201%20%3F%20'st'%20%3A%20b%20%3D%3D%3D%202%20%3F%20'nd'%20%3A%20b%20%3D%3D%3D%203%20%3F%20'rd'%20%3A%20'th'%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20number%20%2B%20output%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%3B%0A%0A%20%20%20%20return%20en_ca%3B%0A%7D)%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fthrivepatientportal.com%2Fsrc%2Fportal-app%2Fportal-app.html-55.js%0AScript
data:text/javascript;charset=utf-8,%2F%2F!%20moment.js%20locale%20configuration%0A%2F%2F!%20locale%20%3A%20French%20%5Bfr%5D%0A%2F%2F!%20author%20%3A%20John%20Fischer%20%3A%20https%3A%2F%2Fgithub.com%2Fjfroffice%0A%0A%3B(function%20(global%2C%20factory)%20%7B%0A%20%20%20%20(typeof%20exports%20%3D%3D%3D%20'undefined'%20%3F%20'undefined'%20%3A%20babelHelpers.typeof(exports))%20%3D%3D%3D%20'object'%20%26%26%20typeof%20module%20!%3D%3D%20'undefined'%20%26%26%20typeof%20require%20%3D%3D%3D%20'function'%20%3F%20factory(require('..%2Fmoment'))%20%3A%20typeof%20define%20%3D%3D%3D%20'function'%20%26%26%20define.amd%20%3F%20define(%5B'..%2Fmoment'%5D%2C%20factory)%20%3A%20factory(global.moment)%3B%0A%7D)(this%2C%20function%20(moment)%20%7B%0A%20%20%20%20'use%20strict'%3B%0A%0A%20%20%20%20var%20fr%20%3D%20moment.defineLocale('fr'%2C%20%7B%0A%20%20%20%20%20%20%20%20months%3A%20'janvier_f%C3%A9vrier_mars_avril_mai_juin_juillet_ao%C3%BBt_septembre_octobre_novembre_d%C3%A9cembre'.split('_')%2C%0A%20%20%20%20%20%20%20%20monthsShort%3A%20'janv._f%C3%A9vr._mars_avr._mai_juin_juil._ao%C3%BBt_sept._oct._nov._d%C3%A9c.'.split('_')%2C%0A%20%20%20%20%20%20%20%20monthsParseExact%3A%20true%2C%0A%20%20%20%20%20%20%20%20weekdays%3A%20'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_')%2C%0A%20%20%20%20%20%20%20%20weekdaysShort%3A%20'dim._lun._mar._mer._jeu._ven._sam.'.split('_')%2C%0A%20%20%20%20%20%20%20%20weekdaysMin%3A%20'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_')%2C%0A%20%20%20%20%20%20%20%20weekdaysParseExact%3A%20true%2C%0A%20%20%20%20%20%20%20%20longDateFormat%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20LT%3A%20'HH%3Amm'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20LTS%3A%20'HH%3Amm%3Ass'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20L%3A%20'DD%2FMM%2FYYYY'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20LL%3A%20'D%20MMMM%20YYYY'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20LLL%3A%20'D%20MMMM%20YYYY%20HH%3Amm'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20LLLL%3A%20'dddd%20D%20MMMM%20YYYY%20HH%3Amm'%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20calendar%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20sameDay%3A%20'%5BAujourd%5C'hui%20%C3%A0%5D%20LT'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20nextDay%3A%20'%5BDemain%20%C3%A0%5D%20LT'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20nextWeek%3A%20'dddd%20%5B%C3%A0%5D%20LT'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20lastDay%3A%20'%5BHier%20%C3%A0%5D%20LT'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20lastWeek%3A%20'dddd%20%5Bdernier%20%C3%A0%5D%20LT'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sameElse%3A%20'L'%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20relativeTime%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20future%3A%20'dans%20%25s'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20past%3A%20'il%20y%20a%20%25s'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20s%3A%20'quelques%20secondes'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20m%3A%20'une%20minute'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mm%3A%20'%25d%20minutes'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20h%3A%20'une%20heure'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20hh%3A%20'%25d%20heures'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20d%3A%20'un%20jour'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20dd%3A%20'%25d%20jours'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20M%3A%20'un%20mois'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20MM%3A%20'%25d%20mois'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3A%20'un%20an'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20yy%3A%20'%25d%20ans'%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20ordinalParse%3A%20%2F%5Cd%7B1%2C2%7D(er%7C)%2F%2C%0A%20%20%20%20%20%20%20%20ordinal%3A%20function%20ordinal(number)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20number%20%2B%20(number%20%3D%3D%3D%201%20%3F%20'er'%20%3A%20'')%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20week%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20dow%3A%201%2C%20%2F%2F%20Monday%20is%20the%20first%20day%20of%20the%20week.%0A%20%20%20%20%20%20%20%20%20%20%20%20doy%3A%204%20%2F%2F%20The%20week%20that%20contains%20Jan%204th%20is%20the%20first%20week%20of%20the%20year.%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%3B%0A%0A%20%20%20%20return%20fr%3B%0A%7D)%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fthrivepatientportal.com%2Fsrc%2Fportal-app%2Fportal-app.html-56.js%0AScript
data:text/javascript;charset=utf-8,%2F%2F!%20moment.js%20locale%20configuration%0A%2F%2F!%20locale%20%3A%20French%20(Canada)%20%5Bfr-ca%5D%0A%2F%2F!%20author%20%3A%20Jonathan%20Abourbih%20%3A%20https%3A%2F%2Fgithub.com%2Fjonbca%0A%0A%3B(function%20(global%2C%20factory)%20%7B%0A%20%20%20%20(typeof%20exports%20%3D%3D%3D%20'undefined'%20%3F%20'undefined'%20%3A%20babelHelpers.typeof(exports))%20%3D%3D%3D%20'object'%20%26%26%20typeof%20module%20!%3D%3D%20'undefined'%20%26%26%20typeof%20require%20%3D%3D%3D%20'function'%20%3F%20factory(require('..%2Fmoment'))%20%3A%20typeof%20define%20%3D%3D%3D%20'function'%20%26%26%20define.amd%20%3F%20define(%5B'..%2Fmoment'%5D%2C%20factory)%20%3A%20factory(global.moment)%3B%0A%7D)(this%2C%20function%20(moment)%20%7B%0A%20%20%20%20'use%20strict'%3B%0A%0A%20%20%20%20var%20fr_ca%20%3D%20moment.defineLocale('fr-ca'%2C%20%7B%0A%20%20%20%20%20%20%20%20months%3A%20'janvier_f%C3%A9vrier_mars_avril_mai_juin_juillet_ao%C3%BBt_septembre_octobre_novembre_d%C3%A9cembre'.split('_')%2C%0A%20%20%20%20%20%20%20%20monthsShort%3A%20'janv._f%C3%A9vr._mars_avr._mai_juin_juil._ao%C3%BBt_sept._oct._nov._d%C3%A9c.'.split('_')%2C%0A%20%20%20%20%20%20%20%20monthsParseExact%3A%20true%2C%0A%20%20%20%20%20%20%20%20weekdays%3A%20'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_')%2C%0A%20%20%20%20%20%20%20%20weekdaysShort%3A%20'dim._lun._mar._mer._jeu._ven._sam.'.split('_')%2C%0A%20%20%20%20%20%20%20%20weekdaysMin%3A%20'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_')%2C%0A%20%20%20%20%20%20%20%20weekdaysParseExact%3A%20true%2C%0A%20%20%20%20%20%20%20%20longDateFormat%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20LT%3A%20'HH%3Amm'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20LTS%3A%20'HH%3Amm%3Ass'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20L%3A%20'YYYY-MM-DD'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20LL%3A%20'D%20MMMM%20YYYY'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20LLL%3A%20'D%20MMMM%20YYYY%20HH%3Amm'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20LLLL%3A%20'dddd%20D%20MMMM%20YYYY%20HH%3Amm'%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20calendar%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20sameDay%3A%20'%5BAujourd%5C'hui%20%C3%A0%5D%20LT'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20nextDay%3A%20'%5BDemain%20%C3%A0%5D%20LT'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20nextWeek%3A%20'dddd%20%5B%C3%A0%5D%20LT'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20lastDay%3A%20'%5BHier%20%C3%A0%5D%20LT'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20lastWeek%3A%20'dddd%20%5Bdernier%20%C3%A0%5D%20LT'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sameElse%3A%20'L'%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20relativeTime%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20future%3A%20'dans%20%25s'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20past%3A%20'il%20y%20a%20%25s'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20s%3A%20'quelques%20secondes'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20m%3A%20'une%20minute'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mm%3A%20'%25d%20minutes'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20h%3A%20'une%20heure'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20hh%3A%20'%25d%20heures'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20d%3A%20'un%20jour'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20dd%3A%20'%25d%20jours'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20M%3A%20'un%20mois'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20MM%3A%20'%25d%20mois'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3A%20'un%20an'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20yy%3A%20'%25d%20ans'%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20ordinalParse%3A%20%2F%5Cd%7B1%2C2%7D(er%7Ce)%2F%2C%0A%20%20%20%20%20%20%20%20ordinal%3A%20function%20ordinal(number)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20number%20%2B%20(number%20%3D%3D%3D%201%20%3F%20'er'%20%3A%20'e')%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%3B%0A%0A%20%20%20%20return%20fr_ca%3B%0A%7D)%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fthrivepatientportal.com%2Fsrc%2Fportal-app%2Fportal-app.html-57.js%0AJS Global
moment → function(v2.14.2)Underscore.js
JavaScript libraries
75%
1 evidence signal
Script
data:text/javascript;charset=utf-8,%0A(function%20()%20%7B%0A%0A%20%20'use%20strict'%3B%0A%0A%20%20%2F**%20%40const%20%7BObject%7D%20*%2F%0A%0A%20%20var%20CaseMap%20%3D%20Polymer.CaseMap%3B%0A%0A%20%20%2F%2F%20Monotonically%20increasing%20unique%20ID%20used%20for%20de-duping%20effects%20triggered%0A%20%20%2F%2F%20from%20multiple%20properties%20in%20the%20same%20turn%0A%20%20var%20dedupeId%20%3D%200%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Property%20effect%20types%3B%20effects%20are%20stored%20on%20the%20prototype%20using%20these%20keys%0A%20%20%20*%20%40enum%20%7Bstring%7D%0A%20%20%20*%2F%0A%20%20var%20TYPES%20%3D%20%7B%0A%20%20%20%20COMPUTE%3A%20'__computeEffects'%2C%0A%20%20%20%20REFLECT%3A%20'__reflectEffects'%2C%0A%20%20%20%20NOTIFY%3A%20'__notifyEffects'%2C%0A%20%20%20%20PROPAGATE%3A%20'__propagateEffects'%2C%0A%20%20%20%20OBSERVE%3A%20'__observeEffects'%2C%0A%20%20%20%20READ_ONLY%3A%20'__readOnly'%0A%20%20%7D%3B%0A%0A%20%20%2F**%20%40const%20%7BRegExp%7D%20*%2F%0A%20%20var%20capitalAttributeRegex%20%3D%20%2F%5BA-Z%5D%2F%3B%0A%0A%20%20%2F**%0A%20%20%20*%20%40typedef%20%7B%7B%0A%20%20%20*%20name%3A%20(string%20%7C%20undefined)%2C%0A%20%20%20*%20structured%3A%20(boolean%20%7C%20undefined)%2C%0A%20%20%20*%20wildcard%3A%20(boolean%20%7C%20undefined)%0A%20%20%20*%20%7D%7D%0A%20%20%20*%2F%0A%20%20var%20DataTrigger%20%3D%20void%200%3B%20%2F%2Feslint-disable-line%20no-unused-vars%0A%0A%20%20%2F**%0A%20%20%20*%20%40typedef%20%7B%7B%0A%20%20%20*%20info%3A%20%3F%2C%0A%20%20%20*%20trigger%3A%20(!DataTrigger%20%7C%20undefined)%2C%0A%20%20%20*%20fn%3A%20(!Function%20%7C%20undefined)%0A%20%20%20*%20%7D%7D%0A%20%20%20*%2F%0A%20%20var%20DataEffect%20%3D%20void%200%3B%20%2F%2Feslint-disable-line%20no-unused-vars%0A%0A%20%20var%20PropertyEffectsType%20%3D%20void%200%3B%20%2F%2Feslint-disable-line%20no-unused-vars%0A%0A%20%20%2F**%0A%20%20%20*%20Ensures%20that%20the%20model%20has%20an%20own-property%20map%20of%20effects%20for%20the%20given%20type.%0A%20%20%20*%20The%20model%20may%20be%20a%20prototype%20or%20an%20instance.%0A%20%20%20*%0A%20%20%20*%20Property%20effects%20are%20stored%20as%20arrays%20of%20effects%20by%20property%20in%20a%20map%2C%0A%20%20%20*%20by%20named%20type%20on%20the%20model.%20e.g.%0A%20%20%20*%0A%20%20%20*%20%20%20__computeEffects%3A%20%7B%0A%20%20%20*%20%20%20%20%20foo%3A%20%5B%20...%20%5D%2C%0A%20%20%20*%20%20%20%20%20bar%3A%20%5B%20...%20%5D%0A%20%20%20*%20%20%20%7D%0A%20%20%20*%0A%20%20%20*%20If%20the%20model%20does%20not%20yet%20have%20an%20effect%20map%20for%20the%20type%2C%20one%20is%20created%0A%20%20%20*%20and%20returned.%20%20If%20it%20does%2C%20but%20it%20is%20not%20an%20own%20property%20(i.e.%20the%0A%20%20%20*%20prototype%20had%20effects)%2C%20the%20the%20map%20is%20deeply%20cloned%20and%20the%20copy%20is%0A%20%20%20*%20set%20on%20the%20model%20and%20returned%2C%20ready%20for%20new%20effects%20to%20be%20added.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BObject%7D%20model%20Prototype%20or%20instance%0A%20%20%20*%20%40param%20%7Bstring%7D%20type%20Property%20effect%20type%0A%20%20%20*%20%40return%20%7BObject%7D%20The%20own-property%20map%20of%20effects%20for%20the%20given%20type%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20ensureOwnEffectMap(model%2C%20type)%20%7B%0A%20%20%20%20var%20effects%20%3D%20model%5Btype%5D%3B%0A%20%20%20%20if%20(!effects)%20%7B%0A%20%20%20%20%20%20effects%20%3D%20model%5Btype%5D%20%3D%20%7B%7D%3B%0A%20%20%20%20%7D%20else%20if%20(!model.hasOwnProperty(type))%20%7B%0A%20%20%20%20%20%20effects%20%3D%20model%5Btype%5D%20%3D%20Object.create(model%5Btype%5D)%3B%0A%20%20%20%20%20%20for%20(var%20p%20in%20effects)%20%7B%0A%20%20%20%20%20%20%20%20var%20protoFx%20%3D%20effects%5Bp%5D%3B%0A%20%20%20%20%20%20%20%20var%20instFx%20%3D%20effects%5Bp%5D%20%3D%20Array(protoFx.length)%3B%0A%20%20%20%20%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20protoFx.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20instFx%5Bi%5D%20%3D%20protoFx%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20effects%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20--%20effects%20----------------------------------------------%0A%0A%20%20%2F**%0A%20%20%20*%20Runs%20all%20effects%20of%20a%20given%20type%20for%20the%20given%20set%20of%20property%20changes%0A%20%20%20*%20on%20an%20instance.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20with%20effects%20to%20run%0A%20%20%20*%20%40param%20%7BObject%7D%20effects%20Object%20map%20of%20property-to-Array%20of%20effects%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%3D%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7Bboolean%3D%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40param%20%7B*%3D%7D%20extraArgs%20Additional%20metadata%20to%20pass%20to%20effect%20function%0A%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20an%20effect%20ran%20for%20this%20property%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20runEffects(inst%2C%20effects%2C%20props%2C%20oldProps%2C%20hasPaths%2C%20extraArgs)%20%7B%0A%20%20%20%20if%20(effects)%20%7B%0A%20%20%20%20%20%20var%20ran%20%3D%20false%3B%0A%20%20%20%20%20%20var%20id%20%3D%20dedupeId%2B%2B%3B%0A%20%20%20%20%20%20for%20(var%20prop%20in%20props)%20%7B%0A%20%20%20%20%20%20%20%20if%20(runEffectsForProperty(inst%2C%20effects%2C%20id%2C%20prop%2C%20props%2C%20oldProps%2C%20hasPaths%2C%20extraArgs))%20%7B%0A%20%20%20%20%20%20%20%20%20%20ran%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20ran%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20false%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Runs%20a%20list%20of%20effects%20for%20a%20given%20property.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20with%20effects%20to%20run%0A%20%20%20*%20%40param%20%7BObject%7D%20effects%20Object%20map%20of%20property-to-Array%20of%20effects%0A%20%20%20*%20%40param%20%7Bnumber%7D%20dedupeId%20Counter%20used%20for%20de-duping%20effects%0A%20%20%20*%20%40param%20%7Bstring%7D%20prop%20Name%20of%20changed%20property%0A%20%20%20*%20%40param%20%7B*%7D%20props%20Changed%20properties%0A%20%20%20*%20%40param%20%7B*%7D%20oldProps%20Old%20properties%0A%20%20%20*%20%40param%20%7Bboolean%3D%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40param%20%7B*%3D%7D%20extraArgs%20Additional%20metadata%20to%20pass%20to%20effect%20function%0A%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20an%20effect%20ran%20for%20this%20property%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20runEffectsForProperty(inst%2C%20effects%2C%20dedupeId%2C%20prop%2C%20props%2C%20oldProps%2C%20hasPaths%2C%20extraArgs)%20%7B%0A%20%20%20%20var%20ran%20%3D%20false%3B%0A%20%20%20%20var%20rootProperty%20%3D%20hasPaths%20%3F%20Polymer.Path.root(prop)%20%3A%20prop%3B%0A%20%20%20%20var%20fxs%20%3D%20effects%5BrootProperty%5D%3B%0A%20%20%20%20if%20(fxs)%20%7B%0A%20%20%20%20%20%20for%20(var%20i%20%3D%200%2C%20l%20%3D%20fxs.length%2C%20fx%3B%20i%20%3C%20l%20%26%26%20(fx%20%3D%20fxs%5Bi%5D)%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20if%20((!fx.info%20%7C%7C%20fx.info.lastRun%20!%3D%3D%20dedupeId)%20%26%26%20(!hasPaths%20%7C%7C%20pathMatchesTrigger(prop%2C%20fx.trigger)))%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(fx.info)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20fx.info.lastRun%20%3D%20dedupeId%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20fx.fn(inst%2C%20prop%2C%20props%2C%20oldProps%2C%20fx.info%2C%20hasPaths%2C%20extraArgs)%3B%0A%20%20%20%20%20%20%20%20%20%20ran%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20ran%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Determines%20whether%20a%20property%2Fpath%20that%20has%20changed%20matches%20the%20trigger%0A%20%20%20*%20criteria%20for%20an%20effect.%20%20A%20trigger%20is%20a%20descriptor%20with%20the%20following%0A%20%20%20*%20structure%2C%20which%20matches%20the%20descriptors%20returned%20from%20%60parseArg%60.%0A%20%20%20*%20e.g.%20for%20%60foo.bar.*%60%3A%0A%20%20%20*%20%60%60%60%0A%20%20%20*%20trigger%3A%20%7B%0A%20%20%20*%20%20%20name%3A%20'a.b'%2C%0A%20%20%20*%20%20%20structured%3A%20true%2C%0A%20%20%20*%20%20%20wildcard%3A%20true%0A%20%20%20*%20%7D%0A%20%20%20*%20%60%60%60%0A%20%20%20*%20If%20no%20trigger%20is%20given%2C%20the%20path%20is%20deemed%20to%20match.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20or%20property%20that%20changed%0A%20%20%20*%20%40param%20%7BDataTrigger%7D%20trigger%20Descriptor%0A%20%20%20*%20%40return%20%7Bboolean%7D%20Whether%20the%20path%20matched%20the%20trigger%0A%20%20%20*%2F%0A%20%20function%20pathMatchesTrigger(path%2C%20trigger)%20%7B%0A%20%20%20%20if%20(trigger)%20%7B%0A%20%20%20%20%20%20var%20triggerPath%20%3D%20trigger.name%3B%0A%20%20%20%20%20%20return%20triggerPath%20%3D%3D%20path%20%7C%7C%20trigger.structured%20%26%26%20Polymer.Path.isAncestor(triggerPath%2C%20path)%20%7C%7C%20trigger.wildcard%20%26%26%20Polymer.Path.isDescendant(triggerPath%2C%20path)%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Implements%20the%20%22observer%22%20effect.%0A%20%20%20*%0A%20%20%20*%20Calls%20the%20method%20with%20%60info.methodName%60%20on%20the%20instance%2C%20passing%20the%0A%20%20%20*%20new%20and%20old%20values.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20runObserverEffect(inst%2C%20property%2C%20props%2C%20oldProps%2C%20info)%20%7B%0A%20%20%20%20var%20fn%20%3D%20typeof%20info.method%20%3D%3D%3D%20%22string%22%20%3F%20inst%5Binfo.method%5D%20%3A%20info.method%3B%0A%20%20%20%20var%20changedProp%20%3D%20info.property%3B%0A%20%20%20%20if%20(fn)%20%7B%0A%20%20%20%20%20%20fn.call(inst%2C%20inst.__data%5BchangedProp%5D%2C%20oldProps%5BchangedProp%5D)%3B%0A%20%20%20%20%7D%20else%20if%20(!info.dynamicFn)%20%7B%0A%20%20%20%20%20%20console.warn('observer%20method%20%60'%20%2B%20info.method%20%2B%20'%60%20not%20defined')%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Runs%20%22notify%22%20effects%20for%20a%20set%20of%20changed%20properties.%0A%20%20%20*%0A%20%20%20*%20This%20method%20differs%20from%20the%20generic%20%60runEffects%60%20method%20in%20that%20it%0A%20%20%20*%20will%20dispatch%20path%20notification%20events%20in%20the%20case%20that%20the%20property%0A%20%20%20*%20changed%20was%20a%20path%20and%20the%20root%20property%20for%20that%20path%20didn't%20have%20a%0A%20%20%20*%20%22notify%22%20effect.%20%20This%20is%20to%20maintain%201.0%20behavior%20that%20did%20not%20require%0A%20%20%20*%20%60notify%3A%20true%60%20to%20ensure%20object%20sub-property%20notifications%20were%0A%20%20%20*%20sent.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20with%20effects%20to%20run%0A%20%20%20*%20%40param%20%7BObject%7D%20notifyProps%20Bag%20of%20properties%20to%20notify%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20runNotifyEffects(inst%2C%20notifyProps%2C%20props%2C%20oldProps%2C%20hasPaths)%20%7B%0A%20%20%20%20%2F%2F%20Notify%0A%20%20%20%20var%20fxs%20%3D%20inst%5BTYPES.NOTIFY%5D%3B%0A%20%20%20%20var%20notified%20%3D%20void%200%3B%0A%20%20%20%20var%20id%20%3D%20dedupeId%2B%2B%3B%0A%20%20%20%20%2F%2F%20Try%20normal%20notify%20effects%3B%20if%20none%2C%20fall%20back%20to%20try%20path%20notification%0A%20%20%20%20for%20(var%20prop%20in%20notifyProps)%20%7B%0A%20%20%20%20%20%20if%20(notifyProps%5Bprop%5D)%20%7B%0A%20%20%20%20%20%20%20%20if%20(fxs%20%26%26%20runEffectsForProperty(inst%2C%20fxs%2C%20id%2C%20prop%2C%20props%2C%20oldProps%2C%20hasPaths))%20%7B%0A%20%20%20%20%20%20%20%20%20%20notified%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20(hasPaths%20%26%26%20notifyPath(inst%2C%20prop%2C%20props))%20%7B%0A%20%20%20%20%20%20%20%20%20%20notified%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%20Flush%20host%20if%20we%20actually%20notified%20and%20host%20was%20batching%0A%20%20%20%20%2F%2F%20And%20the%20host%20has%20already%20initialized%20clients%3B%20this%20prevents%0A%20%20%20%20%2F%2F%20an%20issue%20with%20a%20host%20observing%20data%20changes%20before%20clients%20are%20ready.%0A%20%20%20%20var%20host%20%3D%20void%200%3B%0A%20%20%20%20if%20(notified%20%26%26%20(host%20%3D%20inst.__dataHost)%20%26%26%20host._invalidateProperties)%20%7B%0A%20%20%20%20%20%20host._invalidateProperties()%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Dispatches%20%7Bproperty%7D-changed%20events%20with%20path%20information%20in%20the%20detail%0A%20%20%20*%20object%20to%20indicate%20a%20sub-path%20of%20the%20property%20was%20changed.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20element%20from%20which%20to%20fire%20the%20event%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20The%20path%20that%20was%20changed%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20the%20path%20was%20notified%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20notifyPath(inst%2C%20path%2C%20props)%20%7B%0A%20%20%20%20var%20rootProperty%20%3D%20Polymer.Path.root(path)%3B%0A%20%20%20%20if%20(rootProperty%20!%3D%3D%20path)%20%7B%0A%20%20%20%20%20%20var%20eventName%20%3D%20Polymer.CaseMap.camelToDashCase(rootProperty)%20%2B%20'-changed'%3B%0A%20%20%20%20%20%20dispatchNotifyEvent(inst%2C%20eventName%2C%20props%5Bpath%5D%2C%20path)%3B%0A%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20false%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Dispatches%20%7Bproperty%7D-changed%20events%20to%20indicate%20a%20property%20(or%20path)%0A%20%20%20*%20changed.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20element%20from%20which%20to%20fire%20the%20event%0A%20%20%20*%20%40param%20%7Bstring%7D%20eventName%20The%20name%20of%20the%20event%20to%20send%20('%7Bproperty%7D-changed')%0A%20%20%20*%20%40param%20%7B*%7D%20value%20The%20value%20of%20the%20changed%20property%0A%20%20%20*%20%40param%20%7Bstring%20%7C%20null%20%7C%20undefined%7D%20path%20If%20a%20sub-path%20of%20this%20property%20changed%2C%20the%20path%0A%20%20%20*%20%20%20that%20changed%20(optional).%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%20%40suppress%20%7BinvalidCasts%7D%0A%20%20%20*%2F%0A%20%20function%20dispatchNotifyEvent(inst%2C%20eventName%2C%20value%2C%20path)%20%7B%0A%20%20%20%20var%20detail%20%3D%20%7B%0A%20%20%20%20%20%20value%3A%20value%2C%0A%20%20%20%20%20%20queueProperty%3A%20true%0A%20%20%20%20%7D%3B%0A%20%20%20%20if%20(path)%20%7B%0A%20%20%20%20%20%20detail.path%20%3D%20path%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F**%20%40type%20%7B!HTMLElement%7D%20*%2Finst.dispatchEvent(new%20CustomEvent(eventName%2C%20%7B%20detail%3A%20detail%20%7D))%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Implements%20the%20%22notify%22%20effect.%0A%20%20%20*%0A%20%20%20*%20Dispatches%20a%20non-bubbling%20event%20named%20%60info.eventName%60%20on%20the%20instance%0A%20%20%20*%20with%20a%20detail%20object%20containing%20the%20new%20%60value%60.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20runNotifyEffect(inst%2C%20property%2C%20props%2C%20oldProps%2C%20info%2C%20hasPaths)%20%7B%0A%20%20%20%20var%20rootProperty%20%3D%20hasPaths%20%3F%20Polymer.Path.root(property)%20%3A%20property%3B%0A%20%20%20%20var%20path%20%3D%20rootProperty%20!%3D%20property%20%3F%20property%20%3A%20null%3B%0A%20%20%20%20var%20value%20%3D%20path%20%3F%20Polymer.Path.get(inst%2C%20path)%20%3A%20inst.__data%5Bproperty%5D%3B%0A%20%20%20%20if%20(path%20%26%26%20value%20%3D%3D%3D%20undefined)%20%7B%0A%20%20%20%20%20%20value%20%3D%20props%5Bproperty%5D%3B%20%2F%2F%20specifically%20for%20.splices%0A%20%20%20%20%7D%0A%20%20%20%20dispatchNotifyEvent(inst%2C%20info.eventName%2C%20value%2C%20path)%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Handler%20function%20for%202-way%20notification%20events.%20Receives%20context%0A%20%20%20*%20information%20captured%20in%20the%20%60addNotifyListener%60%20closure%20from%20the%0A%20%20%20*%20%60__notifyListeners%60%20metadata.%0A%20%20%20*%0A%20%20%20*%20Sets%20the%20value%20of%20the%20notified%20property%20to%20the%20host%20property%20or%20path.%20%20If%0A%20%20%20*%20the%20event%20contained%20path%20information%2C%20translate%20that%20path%20to%20the%20host%0A%20%20%20*%20scope's%20name%20for%20that%20path%20first.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BCustomEvent%7D%20event%20Notification%20event%20(e.g.%20'%3Cproperty%3E-changed')%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20Host%20element%20instance%20handling%20the%20notification%20event%0A%20%20%20*%20%40param%20%7Bstring%7D%20fromProp%20Child%20element%20property%20that%20was%20bound%0A%20%20%20*%20%40param%20%7Bstring%7D%20toPath%20Host%20property%2Fpath%20that%20was%20bound%0A%20%20%20*%20%40param%20%7Bboolean%7D%20negate%20Whether%20the%20binding%20was%20negated%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20handleNotification(event%2C%20inst%2C%20fromProp%2C%20toPath%2C%20negate)%20%7B%0A%20%20%20%20var%20value%20%3D%20void%200%3B%0A%20%20%20%20var%20detail%20%3D%20%2F**%20%40type%20%7BObject%7D%20*%2Fevent.detail%3B%0A%20%20%20%20var%20fromPath%20%3D%20detail%20%26%26%20detail.path%3B%0A%20%20%20%20if%20(fromPath)%20%7B%0A%20%20%20%20%20%20toPath%20%3D%20Polymer.Path.translate(fromProp%2C%20toPath%2C%20fromPath)%3B%0A%20%20%20%20%20%20value%20%3D%20detail%20%26%26%20detail.value%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20value%20%3D%20event.currentTarget%5BfromProp%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20value%20%3D%20negate%20%3F%20!value%20%3A%20value%3B%0A%20%20%20%20if%20(!inst%5BTYPES.READ_ONLY%5D%20%7C%7C%20!inst%5BTYPES.READ_ONLY%5D%5BtoPath%5D)%20%7B%0A%20%20%20%20%20%20if%20(inst._setPendingPropertyOrPath(toPath%2C%20value%2C%20true%2C%20Boolean(fromPath))%20%26%26%20(!detail%20%7C%7C%20!detail.queueProperty))%20%7B%0A%20%20%20%20%20%20%20%20inst._invalidateProperties()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Implements%20the%20%22reflect%22%20effect.%0A%20%20%20*%0A%20%20%20*%20Sets%20the%20attribute%20named%20%60info.attrName%60%20to%20the%20given%20property%20value.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20runReflectEffect(inst%2C%20property%2C%20props%2C%20oldProps%2C%20info)%20%7B%0A%20%20%20%20var%20value%20%3D%20inst.__data%5Bproperty%5D%3B%0A%20%20%20%20if%20(Polymer.sanitizeDOMValue)%20%7B%0A%20%20%20%20%20%20value%20%3D%20Polymer.sanitizeDOMValue(value%2C%20info.attrName%2C%20'attribute'%2C%20%2F**%20%40type%20%7BNode%7D%20*%2Finst)%3B%0A%20%20%20%20%7D%0A%20%20%20%20inst._propertyToAttribute(property%2C%20info.attrName%2C%20value)%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Runs%20%22computed%22%20effects%20for%20a%20set%20of%20changed%20properties.%0A%20%20%20*%0A%20%20%20*%20This%20method%20differs%20from%20the%20generic%20%60runEffects%60%20method%20in%20that%20it%0A%20%20%20*%20continues%20to%20run%20computed%20effects%20based%20on%20the%20output%20of%20each%20pass%20until%0A%20%20%20*%20there%20are%20no%20more%20newly%20computed%20properties.%20%20This%20ensures%20that%20all%0A%20%20%20*%20properties%20that%20will%20be%20computed%20by%20the%20initial%20set%20of%20changes%20are%0A%20%20%20*%20computed%20before%20other%20effects%20(binding%20propagation%2C%20observers%2C%20and%20notify)%0A%20%20%20*%20run.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7B!Object%7D%20changedProps%20Bag%20of%20changed%20properties%0A%20%20%20*%20%40param%20%7B!Object%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20runComputedEffects(inst%2C%20changedProps%2C%20oldProps%2C%20hasPaths)%20%7B%0A%20%20%20%20var%20computeEffects%20%3D%20inst%5BTYPES.COMPUTE%5D%3B%0A%20%20%20%20if%20(computeEffects)%20%7B%0A%20%20%20%20%20%20var%20inputProps%20%3D%20changedProps%3B%0A%20%20%20%20%20%20while%20(runEffects(inst%2C%20computeEffects%2C%20inputProps%2C%20oldProps%2C%20hasPaths))%20%7B%0A%20%20%20%20%20%20%20%20Object.assign(oldProps%2C%20inst.__dataOld)%3B%0A%20%20%20%20%20%20%20%20Object.assign(changedProps%2C%20inst.__dataPending)%3B%0A%20%20%20%20%20%20%20%20inputProps%20%3D%20inst.__dataPending%3B%0A%20%20%20%20%20%20%20%20inst.__dataPending%20%3D%20null%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Implements%20the%20%22computed%20property%22%20effect%20by%20running%20the%20method%20with%20the%0A%20%20%20*%20values%20of%20the%20arguments%20specified%20in%20the%20%60info%60%20object%20and%20setting%20the%0A%20%20%20*%20return%20value%20to%20the%20computed%20property%20specified.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20runComputedEffect(inst%2C%20property%2C%20props%2C%20oldProps%2C%20info)%20%7B%0A%20%20%20%20var%20result%20%3D%20runMethodEffect(inst%2C%20property%2C%20props%2C%20oldProps%2C%20info)%3B%0A%20%20%20%20var%20computedProp%20%3D%20info.methodInfo%3B%0A%20%20%20%20if%20(inst.__dataHasAccessor%20%26%26%20inst.__dataHasAccessor%5BcomputedProp%5D)%20%7B%0A%20%20%20%20%20%20inst._setPendingProperty(computedProp%2C%20result%2C%20true)%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20inst%5BcomputedProp%5D%20%3D%20result%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Computes%20path%20changes%20based%20on%20path%20links%20set%20up%20using%20the%20%60linkPaths%60%0A%20%20%20*%20API.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20whose%20props%20are%20changing%0A%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3C(string%7Cnumber)%3E%7D%20path%20Path%20that%20has%20changed%0A%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20of%20changed%20path%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20computeLinkedPaths(inst%2C%20path%2C%20value)%20%7B%0A%20%20%20%20var%20links%20%3D%20inst.__dataLinkedPaths%3B%0A%20%20%20%20if%20(links)%20%7B%0A%20%20%20%20%20%20var%20link%20%3D%20void%200%3B%0A%20%20%20%20%20%20for%20(var%20a%20in%20links)%20%7B%0A%20%20%20%20%20%20%20%20var%20b%20%3D%20links%5Ba%5D%3B%0A%20%20%20%20%20%20%20%20if%20(Polymer.Path.isDescendant(a%2C%20path))%20%7B%0A%20%20%20%20%20%20%20%20%20%20link%20%3D%20Polymer.Path.translate(a%2C%20b%2C%20path)%3B%0A%20%20%20%20%20%20%20%20%20%20inst._setPendingPropertyOrPath(link%2C%20value%2C%20true%2C%20true)%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20(Polymer.Path.isDescendant(b%2C%20path))%20%7B%0A%20%20%20%20%20%20%20%20%20%20link%20%3D%20Polymer.Path.translate(b%2C%20a%2C%20path)%3B%0A%20%20%20%20%20%20%20%20%20%20inst._setPendingPropertyOrPath(link%2C%20value%2C%20true%2C%20true)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20--%20bindings%20----------------------------------------------%0A%0A%20%20%2F**%0A%20%20%20*%20Adds%20binding%20metadata%20to%20the%20current%20%60nodeInfo%60%2C%20and%20binding%20effects%0A%20%20%20*%20for%20all%20part%20dependencies%20to%20%60templateInfo%60.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BFunction%7D%20constructor%20Class%20that%20%60_parseTemplate%60%20is%20currently%0A%20%20%20*%20%20%20running%20on%0A%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20*%20%40param%20%7BNodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template%20node%0A%20%20%20*%20%40param%20%7Bstring%7D%20kind%20Binding%20kind%2C%20either%20'property'%2C%20'attribute'%2C%20or%20'text'%0A%20%20%20*%20%40param%20%7Bstring%7D%20target%20Target%20property%20name%0A%20%20%20*%20%40param%20%7B!Array%3C!BindingPart%3E%7D%20parts%20Array%20of%20binding%20part%20metadata%0A%20%20%20*%20%40param%20%7Bstring%3D%7D%20literal%20Literal%20text%20surrounding%20binding%20parts%20(specified%0A%20%20%20*%20%20%20only%20for%20'property'%20bindings%2C%20since%20these%20must%20be%20initialized%20as%20part%0A%20%20%20*%20%20%20of%20boot-up)%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20addBinding(constructor%2C%20templateInfo%2C%20nodeInfo%2C%20kind%2C%20target%2C%20parts%2C%20literal)%20%7B%0A%20%20%20%20%2F%2F%20Create%20binding%20metadata%20and%20add%20to%20nodeInfo%0A%20%20%20%20nodeInfo.bindings%20%3D%20nodeInfo.bindings%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20var%20%2F**%20Binding%20*%2Fbinding%20%3D%20%7B%20kind%3A%20kind%2C%20target%3A%20target%2C%20parts%3A%20parts%2C%20literal%3A%20literal%2C%20isCompound%3A%20parts.length%20!%3D%3D%201%20%7D%3B%0A%20%20%20%20nodeInfo.bindings.push(binding)%3B%0A%20%20%20%20%2F%2F%20Add%20listener%20info%20to%20binding%20metadata%0A%20%20%20%20if%20(shouldAddListener(binding))%20%7B%0A%20%20%20%20%20%20var%20_binding%24parts%24%20%3D%20binding.parts%5B0%5D%2C%0A%20%20%20%20%20%20%20%20%20%20event%20%3D%20_binding%24parts%24.event%2C%0A%20%20%20%20%20%20%20%20%20%20negate%20%3D%20_binding%24parts%24.negate%3B%0A%0A%20%20%20%20%20%20binding.listenerEvent%20%3D%20event%20%7C%7C%20CaseMap.camelToDashCase(target)%20%2B%20'-changed'%3B%0A%20%20%20%20%20%20binding.listenerNegate%20%3D%20negate%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%20Add%20%22propagate%22%20property%20effects%20to%20templateInfo%0A%20%20%20%20var%20index%20%3D%20templateInfo.nodeInfoList.length%3B%0A%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20binding.parts.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20var%20part%20%3D%20binding.parts%5Bi%5D%3B%0A%20%20%20%20%20%20part.compoundIndex%20%3D%20i%3B%0A%20%20%20%20%20%20addEffectForBindingPart(constructor%2C%20templateInfo%2C%20binding%2C%20part%2C%20index)%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Adds%20property%20effects%20to%20the%20given%20%60templateInfo%60%20for%20the%20given%20binding%0A%20%20%20*%20part.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BFunction%7D%20constructor%20Class%20that%20%60_parseTemplate%60%20is%20currently%0A%20%20%20*%20%20%20running%20on%0A%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20*%20%40param%20%7B!Binding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40param%20%7B!BindingPart%7D%20part%20Binding%20part%20metadata%0A%20%20%20*%20%40param%20%7Bnumber%7D%20index%20Index%20into%20%60nodeInfoList%60%20for%20this%20node%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%2F%0A%20%20function%20addEffectForBindingPart(constructor%2C%20templateInfo%2C%20binding%2C%20part%2C%20index)%20%7B%0A%20%20%20%20if%20(!part.literal)%20%7B%0A%20%20%20%20%20%20if%20(binding.kind%20%3D%3D%3D%20'attribute'%20%26%26%20binding.target%5B0%5D%20%3D%3D%3D%20'-')%20%7B%0A%20%20%20%20%20%20%20%20console.warn('Cannot%20set%20attribute%20'%20%2B%20binding.target%20%2B%20'%20because%20%22-%22%20is%20not%20a%20valid%20attribute%20starting%20character')%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20var%20dependencies%20%3D%20part.dependencies%3B%0A%20%20%20%20%20%20%20%20var%20info%20%3D%20%7B%20index%3A%20index%2C%20binding%3A%20binding%2C%20part%3A%20part%2C%20evaluator%3A%20constructor%20%7D%3B%0A%20%20%20%20%20%20%20%20for%20(var%20j%20%3D%200%3B%20j%20%3C%20dependencies.length%3B%20j%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20trigger%20%3D%20dependencies%5Bj%5D%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(typeof%20trigger%20%3D%3D%20'string')%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20trigger%20%3D%20parseArg(trigger)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20trigger.wildcard%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20constructor._addTemplatePropertyEffect(templateInfo%2C%20trigger.rootProperty%2C%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20fn%3A%20runBindingEffect%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20info%3A%20info%2C%20trigger%3A%20trigger%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Implements%20the%20%22binding%22%20(property%2Fpath%20binding)%20effect.%0A%20%20%20*%0A%20%20%20*%20Note%20that%20binding%20syntax%20is%20overridable%20via%20%60_parseBindings%60%20and%0A%20%20%20*%20%60_evaluateBinding%60.%20%20This%20method%20will%20call%20%60_evaluateBinding%60%20for%20any%0A%20%20%20*%20non-literal%20parts%20returned%20from%20%60_parseBindings%60.%20%20However%2C%0A%20%20%20*%20there%20is%20no%20support%20for%20_path_%20bindings%20via%20custom%20binding%20parts%2C%0A%20%20%20*%20as%20this%20is%20specific%20to%20Polymer's%20path%20binding%20syntax.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20*%20%40param%20%7BArray%7D%20nodeList%20List%20of%20nodes%20associated%20with%20%60nodeInfoList%60%20template%0A%20%20%20*%20%20%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20runBindingEffect(inst%2C%20path%2C%20props%2C%20oldProps%2C%20info%2C%20hasPaths%2C%20nodeList)%20%7B%0A%20%20%20%20var%20node%20%3D%20nodeList%5Binfo.index%5D%3B%0A%20%20%20%20var%20binding%20%3D%20info.binding%3B%0A%20%20%20%20var%20part%20%3D%20info.part%3B%0A%20%20%20%20%2F%2F%20Subpath%20notification%3A%20transform%20path%20and%20set%20to%20client%0A%20%20%20%20%2F%2F%20e.g.%3A%20foo%3D%22%7B%7Bobj.sub%7D%7D%22%2C%20path%3A%20'obj.sub.prop'%2C%20set%20'foo.prop'%3Dobj.sub.prop%0A%20%20%20%20if%20(hasPaths%20%26%26%20part.source%20%26%26%20path.length%20%3E%20part.source.length%20%26%26%20binding.kind%20%3D%3D%20'property'%20%26%26%20!binding.isCompound%20%26%26%20node.__isPropertyEffectsClient%20%26%26%20node.__dataHasAccessor%20%26%26%20node.__dataHasAccessor%5Bbinding.target%5D)%20%7B%0A%20%20%20%20%20%20var%20value%20%3D%20props%5Bpath%5D%3B%0A%20%20%20%20%20%20path%20%3D%20Polymer.Path.translate(part.source%2C%20binding.target%2C%20path)%3B%0A%20%20%20%20%20%20if%20(node._setPendingPropertyOrPath(path%2C%20value%2C%20false%2C%20true))%20%7B%0A%20%20%20%20%20%20%20%20inst._enqueueClient(node)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20var%20_value%20%3D%20info.evaluator._evaluateBinding(inst%2C%20part%2C%20path%2C%20props%2C%20oldProps%2C%20hasPaths)%3B%0A%20%20%20%20%20%20%2F%2F%20Propagate%20value%20to%20child%0A%20%20%20%20%20%20applyBindingValue(inst%2C%20node%2C%20binding%2C%20part%2C%20_value)%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Sets%20the%20value%20for%20an%20%22binding%22%20(binding)%20effect%20to%20a%20node%2C%0A%20%20%20*%20either%20as%20a%20property%20or%20attribute.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20owning%20the%20binding%20effect%0A%20%20%20*%20%40param%20%7BNode%7D%20node%20Target%20node%20for%20binding%0A%20%20%20*%20%40param%20%7B!Binding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40param%20%7B!BindingPart%7D%20part%20Binding%20part%20metadata%0A%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20applyBindingValue(inst%2C%20node%2C%20binding%2C%20part%2C%20value)%20%7B%0A%20%20%20%20value%20%3D%20computeBindingValue(node%2C%20value%2C%20binding%2C%20part)%3B%0A%20%20%20%20if%20(Polymer.sanitizeDOMValue)%20%7B%0A%20%20%20%20%20%20value%20%3D%20Polymer.sanitizeDOMValue(value%2C%20binding.target%2C%20binding.kind%2C%20node)%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(binding.kind%20%3D%3D%20'attribute')%20%7B%0A%20%20%20%20%20%20%2F%2F%20Attribute%20binding%0A%20%20%20%20%20%20inst._valueToNodeAttribute(%20%2F**%20%40type%20%7BElement%7D%20*%2Fnode%2C%20value%2C%20binding.target)%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%2F%2F%20Property%20binding%0A%20%20%20%20%20%20var%20prop%20%3D%20binding.target%3B%0A%20%20%20%20%20%20if%20(node.__isPropertyEffectsClient%20%26%26%20node.__dataHasAccessor%20%26%26%20node.__dataHasAccessor%5Bprop%5D)%20%7B%0A%20%20%20%20%20%20%20%20if%20(!node%5BTYPES.READ_ONLY%5D%20%7C%7C%20!node%5BTYPES.READ_ONLY%5D%5Bprop%5D)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(node._setPendingProperty(prop%2C%20value))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20inst._enqueueClient(node)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20inst._setUnmanagedPropertyToNode(node%2C%20prop%2C%20value)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Transforms%20an%20%22binding%22%20effect%20value%20based%20on%20compound%20%26%20negation%0A%20%20%20*%20effect%20metadata%2C%20as%20well%20as%20handling%20for%20special-case%20properties%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20the%20value%20will%20be%20set%20to%0A%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20*%20%40param%20%7B!Binding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40param%20%7B!BindingPart%7D%20part%20Binding%20part%20metadata%0A%20%20%20*%20%40return%20%7B*%7D%20Transformed%20value%20to%20set%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20computeBindingValue(node%2C%20value%2C%20binding%2C%20part)%20%7B%0A%20%20%20%20if%20(binding.isCompound)%20%7B%0A%20%20%20%20%20%20var%20storage%20%3D%20node.__dataCompoundStorage%5Bbinding.target%5D%3B%0A%20%20%20%20%20%20storage%5Bpart.compoundIndex%5D%20%3D%20value%3B%0A%20%20%20%20%20%20value%20%3D%20storage.join('')%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(binding.kind%20!%3D%3D%20'attribute')%20%7B%0A%20%20%20%20%20%20%2F%2F%20Some%20browsers%20serialize%20%60undefined%60%20to%20%60%22undefined%22%60%0A%20%20%20%20%20%20if%20(binding.target%20%3D%3D%3D%20'textContent'%20%7C%7C%20binding.target%20%3D%3D%3D%20'value'%20%26%26%20(node.localName%20%3D%3D%3D%20'input'%20%7C%7C%20node.localName%20%3D%3D%3D%20'textarea'))%20%7B%0A%20%20%20%20%20%20%20%20value%20%3D%20value%20%3D%3D%20undefined%20%3F%20''%20%3A%20value%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20value%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Returns%20true%20if%20a%20binding's%20metadata%20meets%20all%20the%20requirements%20to%20allow%0A%20%20%20*%202-way%20binding%2C%20and%20therefore%20a%20%60%3Cproperty%3E-changed%60%20event%20listener%20should%20be%0A%20%20%20*%20added%3A%0A%20%20%20*%20-%20used%20curly%20braces%0A%20%20%20*%20-%20is%20a%20property%20(not%20attribute)%20binding%0A%20%20%20*%20-%20is%20not%20a%20textContent%20binding%0A%20%20%20*%20-%20is%20not%20compound%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!Binding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%202-way%20listener%20should%20be%20added%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20shouldAddListener(binding)%20%7B%0A%20%20%20%20return%20Boolean(binding.target)%20%26%26%20binding.kind%20!%3D%20'attribute'%20%26%26%20binding.kind%20!%3D%20'text'%20%26%26%20!binding.isCompound%20%26%26%20binding.parts%5B0%5D.mode%20%3D%3D%3D%20'%7B'%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Setup%20compound%20binding%20storage%20structures%2C%20notify%20listeners%2C%20and%20dataHost%0A%20%20%20*%20references%20onto%20the%20bound%20nodeList.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20Instance%20that%20bas%20been%20previously%20bound%0A%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20setupBindings(inst%2C%20templateInfo)%20%7B%0A%20%20%20%20%2F%2F%20Setup%20compound%20storage%2C%20dataHost%2C%20and%20notify%20listeners%0A%20%20%20%20var%20nodeList%20%3D%20templateInfo.nodeList%2C%0A%20%20%20%20%20%20%20%20nodeInfoList%20%3D%20templateInfo.nodeInfoList%3B%0A%0A%20%20%20%20if%20(nodeInfoList.length)%20%7B%0A%20%20%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20nodeInfoList.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20var%20info%20%3D%20nodeInfoList%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20var%20node%20%3D%20nodeList%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20var%20bindings%20%3D%20info.bindings%3B%0A%20%20%20%20%20%20%20%20if%20(bindings)%20%7B%0A%20%20%20%20%20%20%20%20%20%20for%20(var%20_i%20%3D%200%3B%20_i%20%3C%20bindings.length%3B%20_i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20binding%20%3D%20bindings%5B_i%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20setupCompoundStorage(node%2C%20binding)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20addNotifyListener(node%2C%20inst%2C%20binding)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20node.__dataHost%20%3D%20inst%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Initializes%20%60__dataCompoundStorage%60%20local%20storage%20on%20a%20bound%20node%20with%0A%20%20%20*%20initial%20literal%20data%20for%20compound%20bindings%2C%20and%20sets%20the%20joined%0A%20%20%20*%20literal%20parts%20to%20the%20bound%20property.%0A%20%20%20*%0A%20%20%20*%20When%20changes%20to%20compound%20parts%20occur%2C%20they%20are%20first%20set%20into%20the%20compound%0A%20%20%20*%20storage%20array%20for%20that%20property%2C%20and%20then%20the%20array%20is%20joined%20to%20result%20in%0A%20%20%20*%20the%20final%20value%20set%20to%20the%20property%2Fattribute.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BNode%7D%20node%20Bound%20node%20to%20initialize%0A%20%20%20*%20%40param%20%7BBinding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20setupCompoundStorage(node%2C%20binding)%20%7B%0A%20%20%20%20if%20(binding.isCompound)%20%7B%0A%20%20%20%20%20%20%2F%2F%20Create%20compound%20storage%20map%0A%20%20%20%20%20%20var%20storage%20%3D%20node.__dataCompoundStorage%20%7C%7C%20(node.__dataCompoundStorage%20%3D%20%7B%7D)%3B%0A%20%20%20%20%20%20var%20parts%20%3D%20binding.parts%3B%0A%20%20%20%20%20%20%2F%2F%20Copy%20literals%20from%20parts%20into%20storage%20for%20this%20binding%0A%20%20%20%20%20%20var%20literals%20%3D%20new%20Array(parts.length)%3B%0A%20%20%20%20%20%20for%20(var%20j%20%3D%200%3B%20j%20%3C%20parts.length%3B%20j%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20literals%5Bj%5D%20%3D%20parts%5Bj%5D.literal%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20target%20%3D%20binding.target%3B%0A%20%20%20%20%20%20storage%5Btarget%5D%20%3D%20literals%3B%0A%20%20%20%20%20%20%2F%2F%20Configure%20properties%20with%20their%20literal%20parts%0A%20%20%20%20%20%20if%20(binding.literal%20%26%26%20binding.kind%20%3D%3D%20'property')%20%7B%0A%20%20%20%20%20%20%20%20node%5Btarget%5D%20%3D%20binding.literal%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Adds%20a%202-way%20binding%20notification%20event%20listener%20to%20the%20node%20specified%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BObject%7D%20node%20Child%20element%20to%20add%20listener%20to%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20Host%20element%20instance%20to%20handle%20notification%20event%0A%20%20%20*%20%40param%20%7BBinding%7D%20binding%20Binding%20metadata%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20addNotifyListener(node%2C%20inst%2C%20binding)%20%7B%0A%20%20%20%20if%20(binding.listenerEvent)%20%7B%0A%20%20%20%20%20%20var%20part%20%3D%20binding.parts%5B0%5D%3B%0A%20%20%20%20%20%20node.addEventListener(binding.listenerEvent%2C%20function%20(e)%20%7B%0A%20%20%20%20%20%20%20%20handleNotification(e%2C%20inst%2C%20binding.target%2C%20part.source%2C%20part.negate)%3B%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20--%20for%20method-based%20effects%20(complexObserver%20%26%20computed)%20--------------%0A%0A%20%20%2F**%0A%20%20%20*%20Adds%20property%20effects%20for%20each%20argument%20in%20the%20method%20signature%20(and%0A%20%20%20*%20optionally%2C%20for%20the%20method%20name%20if%20%60dynamic%60%20is%20true)%20that%20calls%20the%0A%20%20%20*%20provided%20effect%20function.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7BElement%20%7C%20Object%7D%20model%20Prototype%20or%20instance%0A%20%20%20*%20%40param%20%7B!MethodSignature%7D%20sig%20Method%20signature%20metadata%0A%20%20%20*%20%40param%20%7Bstring%7D%20type%20Type%20of%20property%20effect%20to%20add%0A%20%20%20*%20%40param%20%7BFunction%7D%20effectFn%20Function%20to%20run%20when%20arguments%20change%0A%20%20%20*%20%40param%20%7B*%3D%7D%20methodInfo%20Effect-specific%20information%20to%20be%20included%20in%0A%20%20%20*%20%20%20method%20effect%20metadata%0A%20%20%20*%20%40param%20%7Bboolean%7CObject%3D%7D%20dynamicFn%20Boolean%20or%20object%20map%20indicating%20whether%0A%20%20%20*%20%20%20method%20names%20should%20be%20included%20as%20a%20dependency%20to%20the%20effect.%20Note%2C%0A%20%20%20*%20%20%20defaults%20to%20true%20if%20the%20signature%20is%20static%20(sig.static%20is%20true).%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20createMethodEffect(model%2C%20sig%2C%20type%2C%20effectFn%2C%20methodInfo%2C%20dynamicFn)%20%7B%0A%20%20%20%20dynamicFn%20%3D%20sig.static%20%7C%7C%20dynamicFn%20%26%26%20((typeof%20dynamicFn%20%3D%3D%3D%20'undefined'%20%3F%20'undefined'%20%3A%20babelHelpers.typeof(dynamicFn))%20!%3D%3D%20'object'%20%7C%7C%20dynamicFn%5Bsig.methodName%5D)%3B%0A%20%20%20%20var%20info%20%3D%20%7B%0A%20%20%20%20%20%20methodName%3A%20sig.methodName%2C%0A%20%20%20%20%20%20args%3A%20sig.args%2C%0A%20%20%20%20%20%20methodInfo%3A%20methodInfo%2C%0A%20%20%20%20%20%20dynamicFn%3A%20dynamicFn%0A%20%20%20%20%7D%3B%0A%20%20%20%20for%20(var%20i%20%3D%200%2C%20arg%3B%20i%20%3C%20sig.args.length%20%26%26%20(arg%20%3D%20sig.args%5Bi%5D)%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20if%20(!arg.literal)%20%7B%0A%20%20%20%20%20%20%20%20model._addPropertyEffect(arg.rootProperty%2C%20type%2C%20%7B%0A%20%20%20%20%20%20%20%20%20%20fn%3A%20effectFn%2C%20info%3A%20info%2C%20trigger%3A%20arg%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20if%20(dynamicFn)%20%7B%0A%20%20%20%20%20%20model._addPropertyEffect(sig.methodName%2C%20type%2C%20%7B%0A%20%20%20%20%20%20%20%20fn%3A%20effectFn%2C%20info%3A%20info%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Calls%20a%20method%20with%20arguments%20marshaled%20from%20properties%20on%20the%20instance%0A%20%20%20*%20based%20on%20the%20method%20signature%20contained%20in%20the%20effect%20metadata.%0A%20%20%20*%0A%20%20%20*%20Multi-property%20observers%2C%20computed%20properties%2C%20and%20inline%20computing%0A%20%20%20*%20functions%20call%20this%20function%20to%20invoke%20the%20method%2C%20then%20use%20the%20return%0A%20%20%20*%20value%20accordingly.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20The%20instance%20the%20effect%20will%20be%20run%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20property%0A%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20*%20%40param%20%7B%3F%7D%20info%20Effect%20metadata%0A%20%20%20*%20%40return%20%7B*%7D%20Returns%20the%20return%20value%20from%20the%20method%20invocation%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20runMethodEffect(inst%2C%20property%2C%20props%2C%20oldProps%2C%20info)%20%7B%0A%20%20%20%20%2F%2F%20Instances%20can%20optionally%20have%20a%20_methodHost%20which%20allows%20redirecting%20where%0A%20%20%20%20%2F%2F%20to%20find%20methods.%20Currently%20used%20by%20%60templatize%60.%0A%20%20%20%20var%20context%20%3D%20inst._methodHost%20%7C%7C%20inst%3B%0A%20%20%20%20var%20fn%20%3D%20context%5Binfo.methodName%5D%3B%0A%20%20%20%20if%20(fn)%20%7B%0A%20%20%20%20%20%20var%20args%20%3D%20inst._marshalArgs(info.args%2C%20property%2C%20props)%3B%0A%20%20%20%20%20%20return%20fn.apply(context%2C%20args)%3B%0A%20%20%20%20%7D%20else%20if%20(!info.dynamicFn)%20%7B%0A%20%20%20%20%20%20console.warn('method%20%60'%20%2B%20info.methodName%20%2B%20'%60%20not%20defined')%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20var%20emptyArray%20%3D%20%5B%5D%3B%0A%0A%20%20%2F%2F%20Regular%20expressions%20used%20for%20binding%0A%20%20var%20IDENT%20%3D%20'(%3F%3A'%20%2B%20'%5Ba-zA-Z_%24%5D%5B%5C%5Cw.%3A%24%5C%5C-*%5D*'%20%2B%20')'%3B%0A%20%20var%20NUMBER%20%3D%20'(%3F%3A'%20%2B%20'%5B-%2B%5D%3F%5B0-9%5D*%5C%5C.%3F%5B0-9%5D%2B(%3F%3A%5BeE%5D%5B-%2B%5D%3F%5B0-9%5D%2B)%3F'%20%2B%20')'%3B%0A%20%20var%20SQUOTE_STRING%20%3D%20'(%3F%3A'%20%2B%20'%5C'(%3F%3A%5B%5E%5C'%5C%5C%5C%5C%5D%7C%5C%5C%5C%5C.)*%5C''%20%2B%20')'%3B%0A%20%20var%20DQUOTE_STRING%20%3D%20'(%3F%3A'%20%2B%20'%22(%3F%3A%5B%5E%22%5C%5C%5C%5C%5D%7C%5C%5C%5C%5C.)*%22'%20%2B%20')'%3B%0A%20%20var%20STRING%20%3D%20'(%3F%3A'%20%2B%20SQUOTE_STRING%20%2B%20'%7C'%20%2B%20DQUOTE_STRING%20%2B%20')'%3B%0A%20%20var%20ARGUMENT%20%3D%20'(%3F%3A('%20%2B%20IDENT%20%2B%20'%7C'%20%2B%20NUMBER%20%2B%20'%7C'%20%2B%20STRING%20%2B%20')%5C%5Cs*'%20%2B%20')'%3B%0A%20%20var%20ARGUMENTS%20%3D%20'(%3F%3A'%20%2B%20ARGUMENT%20%2B%20'(%3F%3A%2C%5C%5Cs*'%20%2B%20ARGUMENT%20%2B%20')*'%20%2B%20')'%3B%0A%20%20var%20ARGUMENT_LIST%20%3D%20'(%3F%3A'%20%2B%20'%5C%5C(%5C%5Cs*'%20%2B%20'(%3F%3A'%20%2B%20ARGUMENTS%20%2B%20'%3F'%20%2B%20')'%20%2B%20'%5C%5C)%5C%5Cs*'%20%2B%20')'%3B%0A%20%20var%20BINDING%20%3D%20'('%20%2B%20IDENT%20%2B%20'%5C%5Cs*'%20%2B%20ARGUMENT_LIST%20%2B%20'%3F'%20%2B%20')'%3B%20%2F%2F%20Group%203%0A%20%20var%20OPEN_BRACKET%20%3D%20'(%5C%5C%5B%5C%5C%5B%7C%7B%7B)'%20%2B%20'%5C%5Cs*'%3B%0A%20%20var%20CLOSE_BRACKET%20%3D%20'(%3F%3A%5D%5D%7C%7D%7D)'%3B%0A%20%20var%20NEGATE%20%3D%20'(%3F%3A(!)%5C%5Cs*)%3F'%3B%20%2F%2F%20Group%202%0A%20%20var%20EXPRESSION%20%3D%20OPEN_BRACKET%20%2B%20NEGATE%20%2B%20BINDING%20%2B%20CLOSE_BRACKET%3B%0A%20%20var%20bindingRegex%20%3D%20new%20RegExp(EXPRESSION%2C%20%22g%22)%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Create%20a%20string%20from%20binding%20parts%20of%20all%20the%20literal%20parts%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!Array%3CBindingPart%3E%7D%20parts%20All%20parts%20to%20stringify%0A%20%20%20*%20%40return%20%7Bstring%7D%20String%20made%20from%20the%20literal%20parts%0A%20%20%20*%2F%0A%20%20function%20literalFromParts(parts)%20%7B%0A%20%20%20%20var%20s%20%3D%20''%3B%0A%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20parts.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20var%20literal%20%3D%20parts%5Bi%5D.literal%3B%0A%20%20%20%20%20%20s%20%2B%3D%20literal%20%7C%7C%20''%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20s%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Parses%20an%20expression%20string%20for%20a%20method%20signature%2C%20and%20returns%20a%20metadata%0A%20%20%20*%20describing%20the%20method%20in%20terms%20of%20%60methodName%60%2C%20%60static%60%20(whether%20all%20the%0A%20%20%20*%20arguments%20are%20literals)%2C%20and%20an%20array%20of%20%60args%60%0A%20%20%20*%0A%20%20%20*%20%40param%20%7Bstring%7D%20expression%20The%20expression%20to%20parse%0A%20%20%20*%20%40return%20%7B%3FMethodSignature%7D%20The%20method%20metadata%20object%20if%20a%20method%20expression%20was%0A%20%20%20*%20%20%20found%2C%20otherwise%20%60undefined%60%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20parseMethod(expression)%20%7B%0A%20%20%20%20%2F%2F%20tries%20to%20match%20valid%20javascript%20property%20names%0A%20%20%20%20var%20m%20%3D%20expression.match(%2F(%5B%5E%5Cs%5D%2B%3F)%5C((%5B%5Cs%5CS%5D*)%5C)%2F)%3B%0A%20%20%20%20if%20(m)%20%7B%0A%20%20%20%20%20%20var%20methodName%20%3D%20m%5B1%5D%3B%0A%20%20%20%20%20%20var%20sig%20%3D%20%7B%20methodName%3A%20methodName%2C%20static%3A%20true%2C%20args%3A%20emptyArray%20%7D%3B%0A%20%20%20%20%20%20if%20(m%5B2%5D.trim())%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20replace%20escaped%20commas%20with%20comma%20entity%2C%20split%20on%20un-escaped%20commas%0A%20%20%20%20%20%20%20%20var%20args%20%3D%20m%5B2%5D.replace(%2F%5C%5C%2C%2Fg%2C%20'%26comma%3B').split('%2C')%3B%0A%20%20%20%20%20%20%20%20return%20parseArgs(args%2C%20sig)%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20return%20sig%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20null%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Parses%20an%20array%20of%20arguments%20and%20sets%20the%20%60args%60%20property%20of%20the%20supplied%0A%20%20%20*%20signature%20metadata%20object.%20Sets%20the%20%60static%60%20property%20to%20false%20if%20any%0A%20%20%20*%20argument%20is%20a%20non-literal.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!Array%3Cstring%3E%7D%20argList%20Array%20of%20argument%20names%0A%20%20%20*%20%40param%20%7B!MethodSignature%7D%20sig%20Method%20signature%20metadata%20object%0A%20%20%20*%20%40return%20%7B!MethodSignature%7D%20The%20updated%20signature%20metadata%20object%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20parseArgs(argList%2C%20sig)%20%7B%0A%20%20%20%20sig.args%20%3D%20argList.map(function%20(rawArg)%20%7B%0A%20%20%20%20%20%20var%20arg%20%3D%20parseArg(rawArg)%3B%0A%20%20%20%20%20%20if%20(!arg.literal)%20%7B%0A%20%20%20%20%20%20%20%20sig.static%20%3D%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20arg%3B%0A%20%20%20%20%7D%2C%20this)%3B%0A%20%20%20%20return%20sig%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Parses%20an%20individual%20argument%2C%20and%20returns%20an%20argument%20metadata%20object%0A%20%20%20*%20with%20the%20following%20fields%3A%0A%20%20%20*%0A%20%20%20*%20%20%20%7B%0A%20%20%20*%20%20%20%20%20value%3A%20'prop'%2C%20%20%20%20%20%20%20%20%2F%2F%20property%2Fpath%20or%20literal%20value%0A%20%20%20*%20%20%20%20%20literal%3A%20false%2C%20%20%20%20%20%20%20%2F%2F%20whether%20argument%20is%20a%20literal%0A%20%20%20*%20%20%20%20%20structured%3A%20false%2C%20%20%20%20%2F%2F%20whether%20the%20property%20is%20a%20path%0A%20%20%20*%20%20%20%20%20rootProperty%3A%20'prop'%2C%20%2F%2F%20the%20root%20property%20of%20the%20path%0A%20%20%20*%20%20%20%20%20wildcard%3A%20false%20%20%20%20%20%20%20%2F%2F%20whether%20the%20argument%20was%20a%20wildcard%20'.*'%20path%0A%20%20%20*%20%20%20%7D%0A%20%20%20*%0A%20%20%20*%20%40param%20%7Bstring%7D%20rawArg%20The%20string%20value%20of%20the%20argument%0A%20%20%20*%20%40return%20%7B!MethodArg%7D%20Argument%20metadata%20object%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20parseArg(rawArg)%20%7B%0A%20%20%20%20%2F%2F%20clean%20up%20whitespace%0A%20%20%20%20var%20arg%20%3D%20rawArg.trim()%0A%20%20%20%20%2F%2F%20replace%20comma%20entity%20with%20comma%0A%20%20%20%20.replace(%2F%26comma%3B%2Fg%2C%20'%2C')%0A%20%20%20%20%2F%2F%20repair%20extra%20escape%20sequences%3B%20note%20only%20commas%20strictly%20need%0A%20%20%20%20%2F%2F%20escaping%2C%20but%20we%20allow%20any%20other%20char%20to%20be%20escaped%20since%20its%0A%20%20%20%20%2F%2F%20likely%20users%20will%20do%20this%0A%20%20%20%20.replace(%2F%5C%5C(.)%2Fg%2C%20'%5C%241')%3B%0A%20%20%20%20%2F%2F%20basic%20argument%20descriptor%0A%20%20%20%20var%20a%20%3D%20%7B%0A%20%20%20%20%20%20name%3A%20arg%2C%0A%20%20%20%20%20%20value%3A%20''%2C%0A%20%20%20%20%20%20literal%3A%20false%0A%20%20%20%20%7D%3B%0A%20%20%20%20%2F%2F%20detect%20literal%20value%20(must%20be%20String%20or%20Number)%0A%20%20%20%20var%20fc%20%3D%20arg%5B0%5D%3B%0A%20%20%20%20if%20(fc%20%3D%3D%3D%20'-')%20%7B%0A%20%20%20%20%20%20fc%20%3D%20arg%5B1%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(fc%20%3E%3D%20'0'%20%26%26%20fc%20%3C%3D%20'9')%20%7B%0A%20%20%20%20%20%20fc%20%3D%20'%23'%3B%0A%20%20%20%20%7D%0A%20%20%20%20switch%20(fc)%20%7B%0A%20%20%20%20%20%20case%20%22'%22%3A%0A%20%20%20%20%20%20case%20'%22'%3A%0A%20%20%20%20%20%20%20%20a.value%20%3D%20arg.slice(1%2C%20-1)%3B%0A%20%20%20%20%20%20%20%20a.literal%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%20'%23'%3A%0A%20%20%20%20%20%20%20%20a.value%20%3D%20Number(arg)%3B%0A%20%20%20%20%20%20%20%20a.literal%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%20if%20not%20literal%2C%20look%20for%20structured%20path%0A%20%20%20%20if%20(!a.literal)%20%7B%0A%20%20%20%20%20%20a.rootProperty%20%3D%20Polymer.Path.root(arg)%3B%0A%20%20%20%20%20%20%2F%2F%20detect%20structured%20path%20(has%20dots)%0A%20%20%20%20%20%20a.structured%20%3D%20Polymer.Path.isPath(arg)%3B%0A%20%20%20%20%20%20if%20(a.structured)%20%7B%0A%20%20%20%20%20%20%20%20a.wildcard%20%3D%20arg.slice(-2)%20%3D%3D%20'.*'%3B%0A%20%20%20%20%20%20%20%20if%20(a.wildcard)%20%7B%0A%20%20%20%20%20%20%20%20%20%20a.name%20%3D%20arg.slice(0%2C%20-2)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20a%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20data%20api%0A%0A%20%20%2F**%0A%20%20%20*%20Sends%20array%20splice%20notifications%20(%60.splices%60%20and%20%60.length%60)%0A%20%20%20*%0A%20%20%20*%20Note%3A%20this%20implementation%20only%20accepts%20normalized%20paths%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20Instance%20to%20send%20notifications%20to%0A%20%20%20*%20%40param%20%7BArray%7D%20array%20The%20array%20the%20mutations%20occurred%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20The%20path%20to%20the%20array%20that%20was%20mutated%0A%20%20%20*%20%40param%20%7BArray%7D%20splices%20Array%20of%20splice%20records%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20_notifySplices(inst%2C%20array%2C%20path%2C%20splices)%20%7B%0A%20%20%20%20var%20splicesPath%20%3D%20path%20%2B%20'.splices'%3B%0A%20%20%20%20inst.notifyPath(splicesPath%2C%20%7B%20indexSplices%3A%20splices%20%7D)%3B%0A%20%20%20%20inst.notifyPath(path%20%2B%20'.length'%2C%20array.length)%3B%0A%20%20%20%20%2F%2F%20Null%20here%20to%20allow%20potentially%20large%20splice%20records%20to%20be%20GC'ed.%0A%20%20%20%20inst.__data%5BsplicesPath%5D%20%3D%20%7B%20indexSplices%3A%20null%20%7D%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Creates%20a%20splice%20record%20and%20sends%20an%20array%20splice%20notification%20for%0A%20%20%20*%20the%20described%20mutation%0A%20%20%20*%0A%20%20%20*%20Note%3A%20this%20implementation%20only%20accepts%20normalized%20paths%0A%20%20%20*%0A%20%20%20*%20%40param%20%7B!PropertyEffectsType%7D%20inst%20Instance%20to%20send%20notifications%20to%0A%20%20%20*%20%40param%20%7BArray%7D%20array%20The%20array%20the%20mutations%20occurred%20on%0A%20%20%20*%20%40param%20%7Bstring%7D%20path%20The%20path%20to%20the%20array%20that%20was%20mutated%0A%20%20%20*%20%40param%20%7Bnumber%7D%20index%20Index%20at%20which%20the%20array%20mutation%20occurred%0A%20%20%20*%20%40param%20%7Bnumber%7D%20addedCount%20Number%20of%20added%20items%0A%20%20%20*%20%40param%20%7BArray%7D%20removed%20Array%20of%20removed%20items%0A%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20notifySplice(inst%2C%20array%2C%20path%2C%20index%2C%20addedCount%2C%20removed)%20%7B%0A%20%20%20%20_notifySplices(inst%2C%20array%2C%20path%2C%20%5B%7B%0A%20%20%20%20%20%20index%3A%20index%2C%0A%20%20%20%20%20%20addedCount%3A%20addedCount%2C%0A%20%20%20%20%20%20removed%3A%20removed%2C%0A%20%20%20%20%20%20object%3A%20array%2C%0A%20%20%20%20%20%20type%3A%20'splice'%0A%20%20%20%20%7D%5D)%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Returns%20an%20upper-cased%20version%20of%20the%20string.%0A%20%20%20*%0A%20%20%20*%20%40param%20%7Bstring%7D%20name%20String%20to%20uppercase%0A%20%20%20*%20%40return%20%7Bstring%7D%20Uppercased%20string%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20function%20upper(name)%20%7B%0A%20%20%20%20return%20name%5B0%5D.toUpperCase()%20%2B%20name.substring(1)%3B%0A%20%20%7D%0A%0A%20%20%2F**%0A%20%20%20*%20Element%20class%20mixin%20that%20provides%20meta-programming%20for%20Polymer's%20template%0A%20%20%20*%20binding%20and%20data%20observation%20(collectively%2C%20%22property%20effects%22)%20system.%0A%20%20%20*%0A%20%20%20*%20This%20mixin%20uses%20provides%20the%20following%20key%20static%20methods%20for%20adding%0A%20%20%20*%20property%20effects%20to%20an%20element%20class%3A%0A%20%20%20*%20-%20%60addPropertyEffect%60%0A%20%20%20*%20-%20%60createPropertyObserver%60%0A%20%20%20*%20-%20%60createMethodObserver%60%0A%20%20%20*%20-%20%60createNotifyingProperty%60%0A%20%20%20*%20-%20%60createReadOnlyProperty%60%0A%20%20%20*%20-%20%60createReflectedProperty%60%0A%20%20%20*%20-%20%60createComputedProperty%60%0A%20%20%20*%20-%20%60bindTemplate%60%0A%20%20%20*%0A%20%20%20*%20Each%20method%20creates%20one%20or%20more%20property%20accessors%2C%20along%20with%20metadata%0A%20%20%20*%20used%20by%20this%20mixin's%20implementation%20of%20%60_propertiesChanged%60%20to%20perform%0A%20%20%20*%20the%20property%20effects.%0A%20%20%20*%0A%20%20%20*%20Underscored%20versions%20of%20the%20above%20methods%20also%20exist%20on%20the%20element%0A%20%20%20*%20prototype%20for%20adding%20property%20effects%20on%20instances%20at%20runtime.%0A%20%20%20*%0A%20%20%20*%20Note%20that%20this%20mixin%20overrides%20several%20%60PropertyAccessors%60%20methods%2C%20in%0A%20%20%20*%20many%20cases%20to%20maintain%20guarantees%20provided%20by%20the%20Polymer%201.x%20features%3B%0A%20%20%20*%20notably%20it%20changes%20property%20accessors%20to%20be%20synchronous%20by%20default%0A%20%20%20*%20whereas%20the%20default%20when%20using%20%60PropertyAccessors%60%20standalone%20is%20to%20be%0A%20%20%20*%20async%20by%20default.%0A%20%20%20*%0A%20%20%20*%20%40mixinFunction%0A%20%20%20*%20%40polymer%0A%20%20%20*%20%40appliesMixin%20Polymer.TemplateStamp%0A%20%20%20*%20%40appliesMixin%20Polymer.PropertyAccessors%0A%20%20%20*%20%40memberof%20Polymer%0A%20%20%20*%20%40summary%20Element%20class%20mixin%20that%20provides%20meta-programming%20for%20Polymer's%0A%20%20%20*%20template%20binding%20and%20data%20observation%20system.%0A%20%20%20*%2F%0A%20%20Polymer.PropertyEffects%20%3D%20Polymer.dedupingMixin(function%20(superClass)%20%7B%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40constructor%0A%20%20%20%20%20*%20%40extends%20%7BsuperClass%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyAccessors%7D%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_TemplateStamp%7D%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%20%40private%0A%20%20%20%20%20*%2F%0A%20%20%20%20var%20propertyEffectsBase%20%3D%20Polymer.TemplateStamp(Polymer.PropertyAccessors(superClass))%3B%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40polymer%0A%20%20%20%20%20*%20%40mixinClass%0A%20%20%20%20%20*%20%40implements%20%7BPolymer_PropertyEffects%7D%0A%20%20%20%20%20*%20%40extends%20%7BpropertyEffectsBase%7D%0A%20%20%20%20%20*%20%40unrestricted%0A%20%20%20%20%20*%2F%0A%0A%20%20%20%20var%20PropertyEffects%20%3D%20function%20(_propertyEffectsBase)%20%7B%0A%20%20%20%20%20%20babelHelpers.inherits(PropertyEffects%2C%20_propertyEffectsBase)%3B%0A%0A%20%20%20%20%20%20function%20PropertyEffects()%20%7B%0A%20%20%20%20%20%20%20%20babelHelpers.classCallCheck(this%2C%20PropertyEffects)%3B%0A%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7Bboolean%7D%20*%2F%0A%20%20%20%20%20%20%20%20%2F%2F%20Used%20to%20identify%20users%20of%20this%20mixin%2C%20ala%20instanceof%0A%20%20%20%20%20%20%20%20var%20_this%20%3D%20babelHelpers.possibleConstructorReturn(this%2C%20(PropertyEffects.__proto__%20%7C%7C%20Object.getPrototypeOf(PropertyEffects)).call(this))%3B%0A%0A%20%20%20%20%20%20%20%20_this.__isPropertyEffectsClient%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7Bnumber%7D%20*%2F%0A%20%20%20%20%20%20%20%20%2F%2F%20NOTE%3A%20used%20to%20track%20re-entrant%20calls%20to%20%60_flushProperties%60%0A%20%20%20%20%20%20%20%20%2F%2F%20path%20changes%20dirty%20check%20against%20%60__dataTemp%60%20only%20during%20one%20%22turn%22%0A%20%20%20%20%20%20%20%20%2F%2F%20and%20are%20cleared%20when%20%60__dataCounter%60%20returns%20to%200.%0A%20%20%20%20%20%20%20%20_this.__dataCounter%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7Bboolean%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__dataClientsReady%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7BArray%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__dataPendingClients%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7BObject%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__dataToNotify%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7BObject%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__dataLinkedPaths%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7Bboolean%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__dataHasPaths%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7BObject%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__dataCompoundStorage%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7BPolymer_PropertyEffects%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__dataHost%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7B!Object%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__dataTemp%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7Bboolean%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__dataClientsInitialized%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7B!Object%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__data%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7B!Object%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__dataPending%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7B!Object%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__dataOld%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7BObject%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__computeEffects%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7BObject%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__reflectEffects%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7BObject%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__notifyEffects%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7BObject%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__propagateEffects%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7BObject%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__observeEffects%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7BObject%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__readOnly%3B%0A%20%20%20%20%20%20%20%20%2F**%20%40type%20%7B!TemplateInfo%7D%20*%2F%0A%20%20%20%20%20%20%20%20_this.__templateInfo%3B%0A%20%20%20%20%20%20%20%20return%20_this%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20babelHelpers.createClass(PropertyEffects%2C%20%5B%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_initializeProperties'%2C%0A%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20value%3A%20function%20_initializeProperties()%20%7B%0A%20%20%20%20%20%20%20%20%20%20babelHelpers.get(PropertyEffects.prototype.__proto__%20%7C%7C%20Object.getPrototypeOf(PropertyEffects.prototype)%2C%20'_initializeProperties'%2C%20this).call(this)%3B%0A%20%20%20%20%20%20%20%20%20%20hostStack.registerHost(this)%3B%0A%20%20%20%20%20%20%20%20%20%20this.__dataClientsReady%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20this.__dataPendingClients%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%20%20this.__dataToNotify%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%20%20this.__dataLinkedPaths%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%20%20this.__dataHasPaths%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20May%20be%20set%20on%20instance%20prior%20to%20upgrade%0A%20%20%20%20%20%20%20%20%20%20this.__dataCompoundStorage%20%3D%20this.__dataCompoundStorage%20%7C%7C%20null%3B%0A%20%20%20%20%20%20%20%20%20%20this.__dataHost%20%3D%20this.__dataHost%20%7C%7C%20null%3B%0A%20%20%20%20%20%20%20%20%20%20this.__dataTemp%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20this.__dataClientsInitialized%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Overrides%20%60Polymer.PropertyAccessors%60%20implementation%20to%20provide%20a%0A%20%20%20%20%20%20%20%20%20*%20more%20efficient%20implementation%20of%20initializing%20properties%20from%0A%20%20%20%20%20%20%20%20%20*%20the%20prototype%20on%20the%20instance.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Properties%20to%20initialize%20on%20the%20prototype%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_initializeProtoProperties'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_initializeProtoProperties(props)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.__data%20%3D%20Object.create(props)%3B%0A%20%20%20%20%20%20%20%20%20%20this.__dataPending%20%3D%20Object.create(props)%3B%0A%20%20%20%20%20%20%20%20%20%20this.__dataOld%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Overrides%20%60Polymer.PropertyAccessors%60%20implementation%20to%20avoid%20setting%0A%20%20%20%20%20%20%20%20%20*%20%60_setProperty%60's%20%60shouldNotify%3A%20true%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Properties%20to%20initialize%20on%20the%20instance%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_initializeInstanceProperties'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_initializeInstanceProperties(props)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20readOnly%20%3D%20this%5BTYPES.READ_ONLY%5D%3B%0A%20%20%20%20%20%20%20%20%20%20for%20(var%20prop%20in%20props)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!readOnly%20%7C%7C%20!readOnly%5Bprop%5D)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.__dataPending%20%3D%20this.__dataPending%20%7C%7C%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.__dataOld%20%3D%20this.__dataOld%20%7C%7C%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.__data%5Bprop%5D%20%3D%20this.__dataPending%5Bprop%5D%20%3D%20props%5Bprop%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Prototype%20setup%20----------------------------------------%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60addPropertyEffect%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20that%20should%20trigger%20the%20effect%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20type%20Effect%20type%2C%20from%20this.PROPERTY_EFFECT_TYPES%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20effect%20Effect%20metadata%20object%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_addPropertyEffect'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_addPropertyEffect(property%2C%20type%2C%20effect)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this._createPropertyAccessor(property%2C%20type%20%3D%3D%20TYPES.READ_ONLY)%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20effects%20are%20accumulated%20into%20arrays%20per%20property%20based%20on%20type%0A%20%20%20%20%20%20%20%20%20%20var%20effects%20%3D%20ensureOwnEffectMap(this%2C%20type)%5Bproperty%5D%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(!effects)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20effects%20%3D%20this%5Btype%5D%5Bproperty%5D%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20effects.push(effect)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Removes%20the%20given%20property%20effect.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20the%20effect%20was%20associated%20with%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20type%20Effect%20type%2C%20from%20this.PROPERTY_EFFECT_TYPES%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20effect%20Effect%20metadata%20object%20to%20remove%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_removePropertyEffect'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_removePropertyEffect(property%2C%20type%2C%20effect)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20effects%20%3D%20ensureOwnEffectMap(this%2C%20type)%5Bproperty%5D%3B%0A%20%20%20%20%20%20%20%20%20%20var%20idx%20%3D%20effects.indexOf(effect)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(idx%20%3E%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20effects.splice(idx%2C%201)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20whether%20the%20current%20prototype%2Finstance%20has%20a%20property%20effect%0A%20%20%20%20%20%20%20%20%20*%20of%20a%20certain%20type.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%3D%7D%20type%20Effect%20type%2C%20from%20this.PROPERTY_EFFECT_TYPES%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20prototype%2Finstance%20has%20an%20effect%20of%20this%20type%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_hasPropertyEffect'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_hasPropertyEffect(property%2C%20type)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20effects%20%3D%20this%5Btype%5D%3B%0A%20%20%20%20%20%20%20%20%20%20return%20Boolean(effects%20%26%26%20effects%5Bproperty%5D)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20whether%20the%20current%20prototype%2Finstance%20has%20a%20%22read%20only%22%0A%20%20%20%20%20%20%20%20%20*%20accessor%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20prototype%2Finstance%20has%20an%20effect%20of%20this%20type%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_hasReadOnlyEffect'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_hasReadOnlyEffect(property)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this._hasPropertyEffect(property%2C%20TYPES.READ_ONLY)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20whether%20the%20current%20prototype%2Finstance%20has%20a%20%22notify%22%0A%20%20%20%20%20%20%20%20%20*%20property%20effect%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20prototype%2Finstance%20has%20an%20effect%20of%20this%20type%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_hasNotifyEffect'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_hasNotifyEffect(property)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this._hasPropertyEffect(property%2C%20TYPES.NOTIFY)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20whether%20the%20current%20prototype%2Finstance%20has%20a%20%22reflect%20to%20attribute%22%0A%20%20%20%20%20%20%20%20%20*%20property%20effect%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20prototype%2Finstance%20has%20an%20effect%20of%20this%20type%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_hasReflectEffect'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_hasReflectEffect(property)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this._hasPropertyEffect(property%2C%20TYPES.REFLECT)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Returns%20whether%20the%20current%20prototype%2Finstance%20has%20a%20%22computed%22%0A%20%20%20%20%20%20%20%20%20*%20property%20effect%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20True%20if%20the%20prototype%2Finstance%20has%20an%20effect%20of%20this%20type%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_hasComputedEffect'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_hasComputedEffect(property)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this._hasPropertyEffect(property%2C%20TYPES.COMPUTE)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Runtime%20----------------------------------------%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20a%20pending%20property%20or%20path.%20%20If%20the%20root%20property%20of%20the%20path%20in%0A%20%20%20%20%20%20%20%20%20*%20question%20had%20no%20accessor%2C%20the%20path%20is%20set%2C%20otherwise%20it%20is%20enqueued%0A%20%20%20%20%20%20%20%20%20*%20via%20%60_setPendingProperty%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20function%20isolates%20relatively%20expensive%20functionality%20necessary%0A%20%20%20%20%20%20%20%20%20*%20for%20the%20public%20API%20(%60set%60%2C%20%60setProperties%60%2C%20%60notifyPath%60%2C%20and%20property%0A%20%20%20%20%20%20%20%20%20*%20change%20listeners%20via%20%7B%7B...%7D%7D%20bindings)%2C%20such%20that%20it%20is%20only%20done%0A%20%20%20%20%20%20%20%20%20*%20when%20paths%20enter%20the%20system%2C%20and%20not%20at%20every%20propagation%20step.%20%20It%0A%20%20%20%20%20%20%20%20%20*%20also%20sets%20a%20%60__dataHasPaths%60%20flag%20on%20the%20instance%20which%20is%20used%20to%0A%20%20%20%20%20%20%20%20%20*%20fast-path%20slower%20path-matching%20code%20in%20the%20property%20effects%20host%20paths.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%60path%60%20can%20be%20a%20path%20string%20or%20array%20of%20path%20parts%20as%20accepted%20by%20the%0A%20%20%20%20%20%20%20%20%20*%20public%20API.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cnumber%7Cstring%3E%7D%20path%20Path%20to%20set%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20shouldNotify%20Set%20to%20true%20if%20this%20change%20should%0A%20%20%20%20%20%20%20%20%20*%20%20cause%20a%20property%20notification%20event%20dispatch%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20isPathNotification%20If%20the%20path%20being%20set%20is%20a%20path%0A%20%20%20%20%20%20%20%20%20*%20%20%20notification%20of%20an%20already%20changed%20value%2C%20as%20opposed%20to%20a%20request%0A%20%20%20%20%20%20%20%20%20*%20%20%20to%20set%20and%20notify%20the%20change.%20%20In%20the%20latter%20%60false%60%20case%2C%20a%20dirty%0A%20%20%20%20%20%20%20%20%20*%20%20%20check%20is%20performed%20and%20then%20the%20value%20is%20set%20to%20the%20path%20before%0A%20%20%20%20%20%20%20%20%20*%20%20%20enqueuing%20the%20pending%20property%20change.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20the%20property%2Fpath%20was%20enqueued%20in%0A%20%20%20%20%20%20%20%20%20*%20%20%20the%20pending%20changes%20bag.%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_setPendingPropertyOrPath'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_setPendingPropertyOrPath(path%2C%20value%2C%20shouldNotify%2C%20isPathNotification)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(isPathNotification%20%7C%7C%20Polymer.Path.root(Array.isArray(path)%20%3F%20path%5B0%5D%20%3A%20path)%20!%3D%3D%20path)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Dirty%20check%20changes%20being%20set%20to%20a%20path%20against%20the%20actual%20object%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20since%20this%20is%20the%20entry%20point%20for%20paths%20into%20the%20system%3B%20from%20here%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20the%20only%20dirty%20checks%20are%20against%20the%20%60__dataTemp%60%20cache%20to%20prevent%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20duplicate%20work%20in%20the%20same%20turn%20only.%20Note%2C%20if%20this%20was%20a%20notification%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20of%20a%20change%20already%20set%20to%20a%20path%20(isPathNotification%3A%20true)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20we%20always%20let%20the%20change%20through%20and%20skip%20the%20%60set%60%20since%20it%20was%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20already%20dirty%20checked%20at%20the%20point%20of%20entry%20and%20the%20underlying%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20object%20has%20already%20been%20updated%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!isPathNotification)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20old%20%3D%20Polymer.Path.get(this%2C%20path)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20path%20%3D%20%2F**%20%40type%20%7Bstring%7D%20*%2FPolymer.Path.set(this%2C%20path%2C%20value)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Use%20property-accessor's%20simpler%20dirty%20check%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!path%20%7C%7C%20!babelHelpers.get(PropertyEffects.prototype.__proto__%20%7C%7C%20Object.getPrototypeOf(PropertyEffects.prototype)%2C%20'_shouldPropertyChange'%2C%20this).call(this%2C%20path%2C%20value%2C%20old))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.__dataHasPaths%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this._setPendingProperty(%20%2F**%40type%7Bstring%7D*%2Fpath%2C%20value%2C%20shouldNotify))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20computeLinkedPaths(this%2C%20path%2C%20value)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.__dataHasAccessor%20%26%26%20this.__dataHasAccessor%5Bpath%5D)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20this._setPendingProperty(%20%2F**%40type%7Bstring%7D*%2Fpath%2C%20value%2C%20shouldNotify)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this%5Bpath%5D%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Applies%20a%20value%20to%20a%20non-Polymer%20element%2Fnode's%20property.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20The%20implementation%20makes%20a%20best-effort%20at%20binding%20interop%3A%0A%20%20%20%20%20%20%20%20%20*%20Some%20native%20element%20properties%20have%20side-effects%20when%0A%20%20%20%20%20%20%20%20%20*%20re-setting%20the%20same%20value%20(e.g.%20setting%20%60%3Cinput%3E.value%60%20resets%20the%0A%20%20%20%20%20%20%20%20%20*%20cursor%20position)%2C%20so%20we%20do%20a%20dirty-check%20before%20setting%20the%20value.%0A%20%20%20%20%20%20%20%20%20*%20However%2C%20for%20better%20interop%20with%20non-Polymer%20custom%20elements%20that%0A%20%20%20%20%20%20%20%20%20*%20accept%20objects%2C%20we%20explicitly%20re-set%20object%20changes%20coming%20from%20the%0A%20%20%20%20%20%20%20%20%20*%20Polymer%20world%20(which%20may%20include%20deep%20object%20changes%20without%20the%0A%20%20%20%20%20%20%20%20%20*%20top%20reference%20changing)%2C%20erring%20on%20the%20side%20of%20providing%20more%0A%20%20%20%20%20%20%20%20%20*%20information.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Users%20may%20override%20this%20method%20to%20provide%20alternate%20approaches.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Node%7D%20node%20The%20node%20to%20set%20a%20property%20on%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20The%20property%20to%20set%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20The%20value%20to%20set%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_setUnmanagedPropertyToNode'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_setUnmanagedPropertyToNode(node%2C%20prop%2C%20value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20It%20is%20a%20judgment%20call%20that%20resetting%20primitives%20is%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20%22bad%22%20and%20resettings%20objects%20is%20also%20%22good%22%3B%20alternatively%20we%20could%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20implement%20a%20whitelist%20of%20tag%20%26%20property%20values%20that%20should%20never%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20be%20reset%20(e.g.%20%3Cinput%3E.value%20%26%26%20%3Cselect%3E.value)%0A%20%20%20%20%20%20%20%20%20%20if%20(value%20!%3D%3D%20node%5Bprop%5D%20%7C%7C%20(typeof%20value%20%3D%3D%3D%20'undefined'%20%3F%20'undefined'%20%3A%20babelHelpers.typeof(value))%20%3D%3D%20'object')%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20node%5Bprop%5D%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Overrides%20the%20%60PropertiesChanged%60%20implementation%20to%20introduce%20special%0A%20%20%20%20%20%20%20%20%20*%20dirty%20check%20logic%20depending%20on%20the%20property%20%26%20value%20being%20set%3A%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%201.%20Any%20value%20set%20to%20a%20path%20(e.g.%20'obj.prop'%3A%2042%20or%20'obj.prop'%3A%20%7B...%7D)%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20Stored%20in%20%60__dataTemp%60%2C%20dirty%20checked%20against%20%60__dataTemp%60%0A%20%20%20%20%20%20%20%20%20*%202.%20Object%20set%20to%20simple%20property%20(e.g.%20'prop'%3A%20%7B...%7D)%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20Stored%20in%20%60__dataTemp%60%20and%20%60__data%60%2C%20dirty%20checked%20against%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%60__dataTemp%60%20by%20default%20implementation%20of%20%60_shouldPropertyChange%60%0A%20%20%20%20%20%20%20%20%20*%203.%20Primitive%20value%20set%20to%20simple%20property%20(e.g.%20'prop'%3A%2042)%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20Stored%20in%20%60__data%60%2C%20dirty%20checked%20against%20%60__data%60%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20The%20dirty-check%20is%20important%20to%20prevent%20cycles%20due%20to%20two-way%0A%20%20%20%20%20%20%20%20%20*%20notification%2C%20but%20paths%20and%20objects%20are%20only%20dirty%20checked%20against%20any%0A%20%20%20%20%20%20%20%20%20*%20previous%20value%20set%20during%20this%20turn%20via%20a%20%22temporary%20cache%22%20that%20is%0A%20%20%20%20%20%20%20%20%20*%20cleared%20when%20the%20last%20%60_propertiesChanged%60%20exits.%20This%20is%20so%3A%0A%20%20%20%20%20%20%20%20%20*%20a.%20any%20cached%20array%20paths%20(e.g.%20'array.3.prop')%20may%20be%20invalidated%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20due%20to%20array%20mutations%20like%20shift%2Funshift%2Fsplice%3B%20this%20is%20fine%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20since%20path%20changes%20are%20dirty-checked%20at%20user%20entry%20points%20like%20%60set%60%0A%20%20%20%20%20%20%20%20%20*%20b.%20dirty-checking%20for%20objects%20only%20lasts%20one%20turn%20to%20allow%20the%20user%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20to%20mutate%20the%20object%20in-place%20and%20re-set%20it%20with%20the%20same%20identity%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20and%20have%20all%20sub-properties%20re-propagated%20in%20a%20subsequent%20turn.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20The%20temp%20cache%20is%20not%20necessarily%20sufficient%20to%20prevent%20invalid%20array%0A%20%20%20%20%20%20%20%20%20*%20paths%2C%20since%20a%20splice%20can%20happen%20during%20the%20same%20turn%20(with%20pathological%0A%20%20%20%20%20%20%20%20%20*%20user%20code)%3B%20we%20could%20introduce%20a%20%22fixup%22%20for%20temporarily%20cached%20array%0A%20%20%20%20%20%20%20%20%20*%20paths%20if%20needed%3A%20https%3A%2F%2Fgithub.com%2FPolymer%2Fpolymer%2Fissues%2F4227%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20shouldNotify%20True%20if%20property%20should%20fire%20notification%0A%20%20%20%20%20%20%20%20%20*%20%20%20event%20(applies%20only%20for%20%60notify%3A%20true%60%20properties)%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20Returns%20true%20if%20the%20property%20changed%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_setPendingProperty'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_setPendingProperty(property%2C%20value%2C%20shouldNotify)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20isPath%20%3D%20this.__dataHasPaths%20%26%26%20Polymer.Path.isPath(property)%3B%0A%20%20%20%20%20%20%20%20%20%20var%20prevProps%20%3D%20isPath%20%3F%20this.__dataTemp%20%3A%20this.__data%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(this._shouldPropertyChange(property%2C%20value%2C%20prevProps%5Bproperty%5D))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!this.__dataPending)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.__dataPending%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.__dataOld%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Ensure%20old%20is%20captured%20from%20the%20last%20turn%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!(property%20in%20this.__dataOld))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.__dataOld%5Bproperty%5D%20%3D%20this.__data%5Bproperty%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Paths%20are%20stored%20in%20temporary%20cache%20(cleared%20at%20end%20of%20turn)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20which%20is%20used%20for%20dirty-checking%2C%20all%20others%20stored%20in%20__data%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(isPath)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.__dataTemp%5Bproperty%5D%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.__data%5Bproperty%5D%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20All%20changes%20go%20into%20pending%20property%20bag%2C%20passed%20to%20_propertiesChanged%0A%20%20%20%20%20%20%20%20%20%20%20%20this.__dataPending%5Bproperty%5D%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Track%20properties%20that%20should%20notify%20separately%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(isPath%20%7C%7C%20this%5BTYPES.NOTIFY%5D%20%26%26%20this%5BTYPES.NOTIFY%5D%5Bproperty%5D)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.__dataToNotify%20%3D%20this.__dataToNotify%20%7C%7C%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.__dataToNotify%5Bproperty%5D%20%3D%20shouldNotify%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Overrides%20base%20implementation%20to%20ensure%20all%20accessors%20set%20%60shouldNotify%60%0A%20%20%20%20%20%20%20%20%20*%20to%20true%2C%20for%20per-property%20notification%20tracking.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20the%20property%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_setProperty'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_setProperty(property%2C%20value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(this._setPendingProperty(property%2C%20value%2C%20true))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this._invalidateProperties()%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Overrides%20%60PropertyAccessor%60's%20default%20async%20queuing%20of%0A%20%20%20%20%20%20%20%20%20*%20%60_propertiesChanged%60%3A%20if%20%60__dataReady%60%20is%20false%20(has%20not%20yet%20been%0A%20%20%20%20%20%20%20%20%20*%20manually%20flushed)%2C%20the%20function%20no-ops%3B%20otherwise%20flushes%0A%20%20%20%20%20%20%20%20%20*%20%60_propertiesChanged%60%20synchronously.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_invalidateProperties'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_invalidateProperties()%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(this.__dataReady)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this._flushProperties()%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Enqueues%20the%20given%20client%20on%20a%20list%20of%20pending%20clients%2C%20whose%0A%20%20%20%20%20%20%20%20%20*%20pending%20property%20changes%20can%20later%20be%20flushed%20via%20a%20call%20to%0A%20%20%20%20%20%20%20%20%20*%20%60_flushClients%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20client%20PropertyEffects%20client%20to%20enqueue%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_enqueueClient'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_enqueueClient(client)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.__dataPendingClients%20%3D%20this.__dataPendingClients%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(client%20!%3D%3D%20this)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.__dataPendingClients.push(client)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Overrides%20superclass%20implementation.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_flushProperties'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_flushProperties()%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.__dataCounter%2B%2B%3B%0A%20%20%20%20%20%20%20%20%20%20babelHelpers.get(PropertyEffects.prototype.__proto__%20%7C%7C%20Object.getPrototypeOf(PropertyEffects.prototype)%2C%20'_flushProperties'%2C%20this).call(this)%3B%0A%20%20%20%20%20%20%20%20%20%20this.__dataCounter--%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Flushes%20any%20clients%20previously%20enqueued%20via%20%60_enqueueClient%60%2C%20causing%0A%20%20%20%20%20%20%20%20%20*%20their%20%60_flushProperties%60%20method%20to%20run.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_flushClients'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_flushClients()%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(!this.__dataClientsReady)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.__dataClientsReady%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this._readyClients()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Override%20point%20where%20accessors%20are%20turned%20on%3B%20importantly%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20this%20is%20after%20clients%20have%20fully%20readied%2C%20providing%20a%20guarantee%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20that%20any%20property%20effects%20occur%20only%20after%20all%20clients%20are%20ready.%0A%20%20%20%20%20%20%20%20%20%20%20%20this.__dataReady%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.__enableOrFlushClients()%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20NOTE%3A%20We%20ensure%20clients%20either%20enable%20or%20flush%20as%20appropriate.%20This%0A%20%20%20%20%20%20%20%20%2F%2F%20handles%20two%20corner%20cases%3A%0A%20%20%20%20%20%20%20%20%2F%2F%20(1)%20clients%20flush%20properly%20when%20connected%2Fenabled%20before%20the%20host%0A%20%20%20%20%20%20%20%20%2F%2F%20enables%3B%20e.g.%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20(a)%20Templatize%20stamps%20with%20no%20properties%20and%20does%20not%20flush%20and%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20(b)%20the%20instance%20is%20inserted%20into%20dom%20and%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20(c)%20then%20the%20instance%20flushes.%0A%20%20%20%20%20%20%20%20%2F%2F%20(2)%20clients%20enable%20properly%20when%20not%20connected%2Fenabled%20when%20the%20host%0A%20%20%20%20%20%20%20%20%2F%2F%20flushes%3B%20e.g.%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20(a)%20a%20template%20is%20runtime%20stamped%20and%20not%20yet%20connected%2Fenabled%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20(b)%20a%20host%20sets%20a%20property%2C%20causing%20stamped%20dom%20to%20flush%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20(c)%20the%20stamped%20dom%20enables.%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'__enableOrFlushClients'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20__enableOrFlushClients()%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20clients%20%3D%20this.__dataPendingClients%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(clients)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.__dataPendingClients%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20clients.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20client%20%3D%20clients%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!client.__dataEnabled)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20client._enableProperties()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(client.__dataPending)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20client._flushProperties()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Perform%20any%20initial%20setup%20on%20client%20dom.%20Called%20before%20the%20first%0A%20%20%20%20%20%20%20%20%20*%20%60_flushProperties%60%20call%20on%20client%20dom%20and%20before%20any%20element%0A%20%20%20%20%20%20%20%20%20*%20observers%20are%20called.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_readyClients'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_readyClients()%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.__enableOrFlushClients()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Sets%20a%20bag%20of%20property%20changes%20to%20this%20instance%2C%20and%0A%20%20%20%20%20%20%20%20%20*%20synchronously%20processes%20all%20effects%20of%20the%20properties%20as%20a%20batch.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Property%20names%20must%20be%20simple%20properties%2C%20not%20paths.%20%20Batched%0A%20%20%20%20%20%20%20%20%20*%20path%20propagation%20is%20not%20supported.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20one%20or%20more%20key-value%20pairs%20whose%20key%20is%0A%20%20%20%20%20%20%20%20%20*%20%20%20a%20property%20and%20value%20is%20the%20new%20value%20to%20set%20for%20that%20property.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20setReadOnly%20When%20true%2C%20any%20private%20values%20set%20in%0A%20%20%20%20%20%20%20%20%20*%20%20%20%60props%60%20will%20be%20set.%20By%20default%2C%20%60setProperties%60%20will%20not%20set%0A%20%20%20%20%20%20%20%20%20*%20%20%20%60readOnly%3A%20true%60%20root%20properties.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'setProperties'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20setProperties(props%2C%20setReadOnly)%20%7B%0A%20%20%20%20%20%20%20%20%20%20for%20(var%20path%20in%20props)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(setReadOnly%20%7C%7C%20!this%5BTYPES.READ_ONLY%5D%20%7C%7C%20!this%5BTYPES.READ_ONLY%5D%5Bpath%5D)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2FTODO(kschaaf)%3A%20explicitly%20disallow%20paths%20in%20setProperty%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20wildcard%20observers%20currently%20only%20pass%20the%20first%20changed%20path%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20in%20the%20%60info%60%20object%2C%20and%20you%20could%20do%20some%20odd%20things%20batching%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20paths%2C%20e.g.%20%7B'foo.bar'%3A%20%7B...%7D%2C%20'foo'%3A%20null%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._setPendingPropertyOrPath(path%2C%20props%5Bpath%5D%2C%20true)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20this._invalidateProperties()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Overrides%20%60PropertyAccessors%60%20so%20that%20property%20accessor%0A%20%20%20%20%20%20%20%20%20*%20side%20effects%20are%20not%20enabled%20until%20after%20client%20dom%20is%20fully%20ready.%0A%20%20%20%20%20%20%20%20%20*%20Also%20calls%20%60_flushClients%60%20callback%20to%20ensure%20client%20dom%20is%20enabled%0A%20%20%20%20%20%20%20%20%20*%20that%20was%20not%20enabled%20as%20a%20result%20of%20flushing%20properties.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'ready'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20ready()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20It%20is%20important%20that%20%60super.ready()%60%20is%20not%20called%20here%20as%20it%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20immediately%20turns%20on%20accessors.%20Instead%2C%20we%20wait%20until%20%60readyClients%60%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20to%20enable%20accessors%20to%20provide%20a%20guarantee%20that%20clients%20are%20ready%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20before%20processing%20any%20accessors%20side%20effects.%0A%20%20%20%20%20%20%20%20%20%20this._flushProperties()%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20If%20no%20data%20was%20pending%2C%20%60_flushProperties%60%20will%20not%20%60flushClients%60%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20so%20ensure%20this%20is%20done.%0A%20%20%20%20%20%20%20%20%20%20if%20(!this.__dataClientsReady)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this._flushClients()%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Before%20ready%2C%20client%20notifications%20do%20not%20trigger%20_flushProperties.%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Therefore%20a%20flush%20is%20necessary%20here%20if%20data%20has%20been%20set.%0A%20%20%20%20%20%20%20%20%20%20if%20(this.__dataPending)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this._flushProperties()%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Implements%20%60PropertyAccessors%60's%20properties%20changed%20callback.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Runs%20each%20class%20of%20effects%20for%20the%20batch%20of%20changed%20properties%20in%0A%20%20%20%20%20%20%20%20%20*%20a%20specific%20order%20(compute%2C%20propagate%2C%20reflect%2C%20observe%2C%20notify).%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20currentProps%20Bag%20of%20all%20current%20accessor%20values%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20changedProps%20Bag%20of%20properties%20changed%20since%20the%20last%0A%20%20%20%20%20%20%20%20%20*%20%20%20call%20to%20%60_propertiesChanged%60%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Object%7D%20oldProps%20Bag%20of%20previous%20values%20for%20each%20property%0A%20%20%20%20%20%20%20%20%20*%20%20%20in%20%60changedProps%60%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_propertiesChanged'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_propertiesChanged(currentProps%2C%20changedProps%2C%20oldProps)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20----------------------------%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20let%20c%20%3D%20Object.getOwnPropertyNames(changedProps%20%7C%7C%20%7B%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20window.debug%20%26%26%20console.group(this.localName%20%2B%20'%23'%20%2B%20this.id%20%2B%20'%3A%20'%20%2B%20c)%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20if%20(window.debug)%20%7B%20debugger%3B%20%7D%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20----------------------------%0A%20%20%20%20%20%20%20%20%20%20var%20hasPaths%20%3D%20this.__dataHasPaths%3B%0A%20%20%20%20%20%20%20%20%20%20this.__dataHasPaths%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Compute%20properties%0A%20%20%20%20%20%20%20%20%20%20runComputedEffects(this%2C%20changedProps%2C%20oldProps%2C%20hasPaths)%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Clear%20notify%20properties%20prior%20to%20possible%20reentry%20(propagate%2C%20observe)%2C%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20but%20after%20computing%20effects%20have%20a%20chance%20to%20add%20to%20them%0A%20%20%20%20%20%20%20%20%20%20var%20notifyProps%20%3D%20this.__dataToNotify%3B%0A%20%20%20%20%20%20%20%20%20%20this.__dataToNotify%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Propagate%20properties%20to%20clients%0A%20%20%20%20%20%20%20%20%20%20this._propagatePropertyChanges(changedProps%2C%20oldProps%2C%20hasPaths)%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Flush%20clients%0A%20%20%20%20%20%20%20%20%20%20this._flushClients()%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Reflect%20properties%0A%20%20%20%20%20%20%20%20%20%20runEffects(this%2C%20this%5BTYPES.REFLECT%5D%2C%20changedProps%2C%20oldProps%2C%20hasPaths)%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Observe%20properties%0A%20%20%20%20%20%20%20%20%20%20runEffects(this%2C%20this%5BTYPES.OBSERVE%5D%2C%20changedProps%2C%20oldProps%2C%20hasPaths)%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Notify%20properties%20to%20host%0A%20%20%20%20%20%20%20%20%20%20if%20(notifyProps)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20runNotifyEffects(this%2C%20notifyProps%2C%20changedProps%2C%20oldProps%2C%20hasPaths)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Clear%20temporary%20cache%20at%20end%20of%20turn%0A%20%20%20%20%20%20%20%20%20%20if%20(this.__dataCounter%20%3D%3D%201)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.__dataTemp%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20----------------------------%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20window.debug%20%26%26%20console.groupEnd(this.localName%20%2B%20'%23'%20%2B%20this.id%20%2B%20'%3A%20'%20%2B%20c)%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20----------------------------%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Called%20to%20propagate%20any%20property%20changes%20to%20stamped%20template%20nodes%0A%20%20%20%20%20%20%20%20%20*%20managed%20by%20this%20element.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20changedProps%20Bag%20of%20changed%20properties%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_propagatePropertyChanges'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_propagatePropertyChanges(changedProps%2C%20oldProps%2C%20hasPaths)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(this%5BTYPES.PROPAGATE%5D)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20runEffects(this%2C%20this%5BTYPES.PROPAGATE%5D%2C%20changedProps%2C%20oldProps%2C%20hasPaths)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20var%20templateInfo%20%3D%20this.__templateInfo%3B%0A%20%20%20%20%20%20%20%20%20%20while%20(templateInfo)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20runEffects(this%2C%20templateInfo.propertyEffects%2C%20changedProps%2C%20oldProps%2C%20hasPaths%2C%20templateInfo.nodeList)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20templateInfo%20%3D%20templateInfo.nextTemplateInfo%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Aliases%20one%20data%20path%20as%20another%2C%20such%20that%20path%20notifications%20from%20one%0A%20%20%20%20%20%20%20%20%20*%20are%20routed%20to%20the%20other.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20to%20Target%20path%20to%20link.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20from%20Source%20path%20to%20link.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'linkPaths'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20linkPaths(to%2C%20from)%20%7B%0A%20%20%20%20%20%20%20%20%20%20to%20%3D%20Polymer.Path.normalize(to)%3B%0A%20%20%20%20%20%20%20%20%20%20from%20%3D%20Polymer.Path.normalize(from)%3B%0A%20%20%20%20%20%20%20%20%20%20this.__dataLinkedPaths%20%3D%20this.__dataLinkedPaths%20%7C%7C%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20this.__dataLinkedPaths%5Bto%5D%20%3D%20from%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Removes%20a%20data%20path%20alias%20previously%20established%20with%20%60_linkPaths%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Note%2C%20the%20path%20to%20unlink%20should%20be%20the%20target%20(%60to%60)%20used%20when%0A%20%20%20%20%20%20%20%20%20*%20linking%20the%20paths.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Target%20path%20to%20unlink.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'unlinkPaths'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20unlinkPaths(path)%20%7B%0A%20%20%20%20%20%20%20%20%20%20path%20%3D%20Polymer.Path.normalize(path)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(this.__dataLinkedPaths)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20delete%20this.__dataLinkedPaths%5Bpath%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Notify%20that%20an%20array%20has%20changed.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20this.items%20%3D%20%5B%20%7Bname%3A%20'Jim'%7D%2C%20%7Bname%3A%20'Todd'%7D%2C%20%7Bname%3A%20'Bill'%7D%20%5D%3B%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20...%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20this.items.splice(1%2C%201%2C%20%7Bname%3A%20'Sam'%7D)%3B%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20this.items.push(%7Bname%3A%20'Bob'%7D)%3B%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20this.notifySplices('items'%2C%20%5B%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7B%20index%3A%201%2C%20removed%3A%20%5B%7Bname%3A%20'Todd'%7D%5D%2C%20addedCount%3A%201%2C%20object%3A%20this.items%2C%20type%3A%20'splice'%20%7D%2C%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7B%20index%3A%203%2C%20removed%3A%20%5B%5D%2C%20addedCount%3A%201%2C%20object%3A%20this.items%2C%20type%3A%20'splice'%7D%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20%5D)%3B%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20that%20should%20be%20notified.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BArray%7D%20splices%20Array%20of%20splice%20records%20indicating%20ordered%0A%20%20%20%20%20%20%20%20%20*%20%20%20changes%20that%20occurred%20to%20the%20array.%20Each%20record%20should%20have%20the%0A%20%20%20%20%20%20%20%20%20*%20%20%20following%20fields%3A%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20*%20index%3A%20index%20at%20which%20the%20change%20occurred%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20*%20removed%3A%20array%20of%20items%20that%20were%20removed%20from%20this%20index%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20*%20addedCount%3A%20number%20of%20new%20items%20added%20at%20this%20index%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20*%20object%3A%20a%20reference%20to%20the%20array%20in%20question%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20*%20type%3A%20the%20string%20literal%20'splice'%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%20%20Note%20that%20splice%20records%20_must_%20be%20normalized%20such%20that%20they%20are%0A%20%20%20%20%20%20%20%20%20*%20%20%20reported%20in%20index%20order%20(raw%20results%20from%20%60Object.observe%60%20are%20not%0A%20%20%20%20%20%20%20%20%20*%20%20%20ordered%20and%20must%20be%20normalized%2Fmerged%20before%20notifying).%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'notifySplices'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20notifySplices(path%2C%20splices)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20%7B%20path%3A%20''%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20var%20array%20%3D%20%2F**%20%40type%20%7BArray%7D%20*%2FPolymer.Path.get(this%2C%20path%2C%20info)%3B%0A%20%20%20%20%20%20%20%20%20%20_notifySplices(this%2C%20array%2C%20info.path%2C%20splices)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Convenience%20method%20for%20reading%20a%20value%20from%20a%20path.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Note%2C%20if%20any%20part%20in%20the%20path%20is%20undefined%2C%20this%20method%20returns%0A%20%20%20%20%20%20%20%20%20*%20%60undefined%60%20(this%20method%20does%20not%20throw%20when%20dereferencing%20undefined%0A%20%20%20%20%20%20%20%20%20*%20paths).%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B(string%7C!Array%3C(string%7Cnumber)%3E)%7D%20path%20Path%20to%20the%20value%0A%20%20%20%20%20%20%20%20%20*%20%20%20to%20read.%20%20The%20path%20may%20be%20specified%20as%20a%20string%20(e.g.%20%60foo.bar.baz%60)%0A%20%20%20%20%20%20%20%20%20*%20%20%20or%20an%20array%20of%20path%20parts%20(e.g.%20%60%5B'foo.bar'%2C%20'baz'%5D%60).%20%20Note%20that%0A%20%20%20%20%20%20%20%20%20*%20%20%20bracketed%20expressions%20are%20not%20supported%3B%20string-based%20path%20parts%0A%20%20%20%20%20%20%20%20%20*%20%20%20*must*%20be%20separated%20by%20dots.%20%20Note%20that%20when%20dereferencing%20array%0A%20%20%20%20%20%20%20%20%20*%20%20%20indices%2C%20the%20index%20may%20be%20used%20as%20a%20dotted%20part%20directly%0A%20%20%20%20%20%20%20%20%20*%20%20%20(e.g.%20%60users.12.name%60%20or%20%60%5B'users'%2C%2012%2C%20'name'%5D%60).%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20root%20Root%20object%20from%20which%20the%20path%20is%20evaluated.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Value%20at%20the%20path%2C%20or%20%60undefined%60%20if%20any%20part%20of%20the%20path%0A%20%20%20%20%20%20%20%20%20*%20%20%20is%20undefined.%0A%20%20%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'get'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20get(path%2C%20root)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20Polymer.Path.get(root%20%7C%7C%20this%2C%20path)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Convenience%20method%20for%20setting%20a%20value%20to%20a%20path%20and%20notifying%20any%0A%20%20%20%20%20%20%20%20%20*%20elements%20bound%20to%20the%20same%20path.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Note%2C%20if%20any%20part%20in%20the%20path%20except%20for%20the%20last%20is%20undefined%2C%0A%20%20%20%20%20%20%20%20%20*%20this%20method%20does%20nothing%20(this%20method%20does%20not%20throw%20when%0A%20%20%20%20%20%20%20%20%20*%20dereferencing%20undefined%20paths).%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B(string%7C!Array%3C(string%7Cnumber)%3E)%7D%20path%20Path%20to%20the%20value%0A%20%20%20%20%20%20%20%20%20*%20%20%20to%20write.%20%20The%20path%20may%20be%20specified%20as%20a%20string%20(e.g.%20%60'foo.bar.baz'%60)%0A%20%20%20%20%20%20%20%20%20*%20%20%20or%20an%20array%20of%20path%20parts%20(e.g.%20%60%5B'foo.bar'%2C%20'baz'%5D%60).%20%20Note%20that%0A%20%20%20%20%20%20%20%20%20*%20%20%20bracketed%20expressions%20are%20not%20supported%3B%20string-based%20path%20parts%0A%20%20%20%20%20%20%20%20%20*%20%20%20*must*%20be%20separated%20by%20dots.%20%20Note%20that%20when%20dereferencing%20array%0A%20%20%20%20%20%20%20%20%20*%20%20%20indices%2C%20the%20index%20may%20be%20used%20as%20a%20dotted%20part%20directly%0A%20%20%20%20%20%20%20%20%20*%20%20%20(e.g.%20%60'users.12.name'%60%20or%20%60%5B'users'%2C%2012%2C%20'name'%5D%60).%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%7D%20value%20Value%20to%20set%20at%20the%20specified%20path.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20root%20Root%20object%20from%20which%20the%20path%20is%20evaluated.%0A%20%20%20%20%20%20%20%20%20*%20%20%20When%20specified%2C%20no%20notification%20will%20occur.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'set'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20set(path%2C%20value%2C%20root)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(root)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Polymer.Path.set(root%2C%20path%2C%20value)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!this%5BTYPES.READ_ONLY%5D%20%7C%7C%20!this%5BTYPES.READ_ONLY%5D%5B%2F**%20%40type%20%7Bstring%7D%20*%2Fpath%5D)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(this._setPendingPropertyOrPath(path%2C%20value%2C%20true))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._invalidateProperties()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Adds%20items%20onto%20the%20end%20of%20the%20array%20at%20the%20path%20specified.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20The%20arguments%20after%20%60path%60%20and%20return%20value%20match%20that%20of%0A%20%20%20%20%20%20%20%20%20*%20%60Array.prototype.push%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20notifies%20other%20paths%20to%20the%20same%20array%20that%20a%0A%20%20%20%20%20%20%20%20%20*%20splice%20occurred%20to%20the%20array.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20array.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20items%20Items%20to%20push%20onto%20array%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bnumber%7D%20New%20length%20of%20the%20array.%0A%20%20%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'push'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20push(path)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20%7B%20path%3A%20''%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20var%20array%20%3D%20%2F**%20%40type%20%7BArray%7D*%2FPolymer.Path.get(this%2C%20path%2C%20info)%3B%0A%20%20%20%20%20%20%20%20%20%20var%20len%20%3D%20array.length%3B%0A%0A%20%20%20%20%20%20%20%20%20%20for%20(var%20_len%20%3D%20arguments.length%2C%20items%20%3D%20Array(_len%20%3E%201%20%3F%20_len%20-%201%20%3A%200)%2C%20_key%20%3D%201%3B%20_key%20%3C%20_len%3B%20_key%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20items%5B_key%20-%201%5D%20%3D%20arguments%5B_key%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20var%20ret%20%3D%20array.push.apply(array%2C%20items)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(items.length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20notifySplice(this%2C%20array%2C%20info.path%2C%20len%2C%20items.length%2C%20%5B%5D)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20return%20ret%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Removes%20an%20item%20from%20the%20end%20of%20array%20at%20the%20path%20specified.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20The%20arguments%20after%20%60path%60%20and%20return%20value%20match%20that%20of%0A%20%20%20%20%20%20%20%20%20*%20%60Array.prototype.pop%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20notifies%20other%20paths%20to%20the%20same%20array%20that%20a%0A%20%20%20%20%20%20%20%20%20*%20splice%20occurred%20to%20the%20array.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20array.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Item%20that%20was%20removed.%0A%20%20%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'pop'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20pop(path)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20%7B%20path%3A%20''%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20var%20array%20%3D%20%2F**%20%40type%20%7BArray%7D%20*%2FPolymer.Path.get(this%2C%20path%2C%20info)%3B%0A%20%20%20%20%20%20%20%20%20%20var%20hadLength%20%3D%20Boolean(array.length)%3B%0A%20%20%20%20%20%20%20%20%20%20var%20ret%20%3D%20array.pop()%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(hadLength)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20notifySplice(this%2C%20array%2C%20info.path%2C%20array.length%2C%200%2C%20%5Bret%5D)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20return%20ret%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Starting%20from%20the%20start%20index%20specified%2C%20removes%200%20or%20more%20items%0A%20%20%20%20%20%20%20%20%20*%20from%20the%20array%20and%20inserts%200%20or%20more%20new%20items%20in%20their%20place.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20The%20arguments%20after%20%60path%60%20and%20return%20value%20match%20that%20of%0A%20%20%20%20%20%20%20%20%20*%20%60Array.prototype.splice%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20notifies%20other%20paths%20to%20the%20same%20array%20that%20a%0A%20%20%20%20%20%20%20%20%20*%20splice%20occurred%20to%20the%20array.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20array.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20start%20Index%20from%20which%20to%20start%20removing%2Finserting.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bnumber%7D%20deleteCount%20Number%20of%20items%20to%20remove.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20items%20Items%20to%20insert%20into%20array.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%7D%20Array%20of%20removed%20items.%0A%20%20%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'splice'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20splice(path%2C%20start%2C%20deleteCount)%20%7B%0A%20%20%20%20%20%20%20%20%20%20for%20(var%20_len2%20%3D%20arguments.length%2C%20items%20%3D%20Array(_len2%20%3E%203%20%3F%20_len2%20-%203%20%3A%200)%2C%20_key2%20%3D%203%3B%20_key2%20%3C%20_len2%3B%20_key2%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20items%5B_key2%20-%203%5D%20%3D%20arguments%5B_key2%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20%7B%20path%3A%20''%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20var%20array%20%3D%20%2F**%20%40type%20%7BArray%7D%20*%2FPolymer.Path.get(this%2C%20path%2C%20info)%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Normalize%20fancy%20native%20splice%20handling%20of%20crazy%20start%20values%0A%20%20%20%20%20%20%20%20%20%20if%20(start%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20start%20%3D%20array.length%20-%20Math.floor(-start)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(start)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20start%20%3D%20Math.floor(start)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20array.splice%20does%20different%20things%20based%20on%20the%20number%20of%20arguments%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20you%20pass%20in.%20Therefore%2C%20array.splice(0)%20and%20array.splice(0%2C%20undefined)%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20do%20different%20things.%20In%20the%20former%2C%20the%20whole%20array%20is%20cleared.%20In%20the%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20latter%2C%20no%20items%20are%20removed.%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20This%20means%20that%20we%20need%20to%20detect%20whether%201.%20one%20of%20the%20arguments%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20is%20actually%20passed%20in%20and%20then%202.%20determine%20how%20many%20arguments%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20we%20should%20pass%20on%20to%20the%20native%20array.splice%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%0A%20%20%20%20%20%20%20%20%20%20var%20ret%20%3D%20void%200%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Omit%20any%20additional%20arguments%20if%20they%20were%20not%20passed%20in%0A%20%20%20%20%20%20%20%20%20%20if%20(arguments.length%20%3D%3D%3D%202)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20ret%20%3D%20array.splice(start)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Either%20start%20was%20undefined%20and%20the%20others%20were%20defined%2C%20but%20in%20this%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20case%20we%20can%20safely%20pass%20on%20all%20arguments%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Note%3A%20this%20includes%20the%20case%20where%20none%20of%20the%20arguments%20were%20passed%20in%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20e.g.%20this.splice('array').%20However%2C%20if%20both%20start%20and%20deleteCount%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20are%20undefined%2C%20array.splice%20will%20not%20modify%20the%20array%20(as%20expected)%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20ret%20%3D%20array.splice.apply(array%2C%20%5Bstart%2C%20deleteCount%5D.concat(items))%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20At%20the%20end%2C%20check%20whether%20any%20items%20were%20passed%20in%20(e.g.%20insertions)%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20or%20if%20the%20return%20array%20contains%20items%20(e.g.%20deletions).%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Only%20notify%20if%20items%20were%20added%20or%20deleted.%0A%20%20%20%20%20%20%20%20%20%20if%20(items.length%20%7C%7C%20ret.length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20notifySplice(this%2C%20array%2C%20info.path%2C%20start%2C%20items.length%2C%20ret)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20return%20ret%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Removes%20an%20item%20from%20the%20beginning%20of%20array%20at%20the%20path%20specified.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20The%20arguments%20after%20%60path%60%20and%20return%20value%20match%20that%20of%0A%20%20%20%20%20%20%20%20%20*%20%60Array.prototype.pop%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20notifies%20other%20paths%20to%20the%20same%20array%20that%20a%0A%20%20%20%20%20%20%20%20%20*%20splice%20occurred%20to%20the%20array.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20array.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Item%20that%20was%20removed.%0A%20%20%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'shift'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20shift(path)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20%7B%20path%3A%20''%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20var%20array%20%3D%20%2F**%20%40type%20%7BArray%7D%20*%2FPolymer.Path.get(this%2C%20path%2C%20info)%3B%0A%20%20%20%20%20%20%20%20%20%20var%20hadLength%20%3D%20Boolean(array.length)%3B%0A%20%20%20%20%20%20%20%20%20%20var%20ret%20%3D%20array.shift()%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(hadLength)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20notifySplice(this%2C%20array%2C%20info.path%2C%200%2C%200%2C%20%5Bret%5D)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20return%20ret%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Adds%20items%20onto%20the%20beginning%20of%20the%20array%20at%20the%20path%20specified.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20The%20arguments%20after%20%60path%60%20and%20return%20value%20match%20that%20of%0A%20%20%20%20%20%20%20%20%20*%20%60Array.prototype.push%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20notifies%20other%20paths%20to%20the%20same%20array%20that%20a%0A%20%20%20%20%20%20%20%20%20*%20splice%20occurred%20to%20the%20array.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%20%7C%20!Array%3Cstring%7Cnumber%3E%7D%20path%20Path%20to%20array.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B...*%7D%20items%20Items%20to%20insert%20info%20array%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bnumber%7D%20New%20length%20of%20the%20array.%0A%20%20%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'unshift'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20unshift(path)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20%7B%20path%3A%20''%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20var%20array%20%3D%20%2F**%20%40type%20%7BArray%7D%20*%2FPolymer.Path.get(this%2C%20path%2C%20info)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20for%20(var%20_len3%20%3D%20arguments.length%2C%20items%20%3D%20Array(_len3%20%3E%201%20%3F%20_len3%20-%201%20%3A%200)%2C%20_key3%20%3D%201%3B%20_key3%20%3C%20_len3%3B%20_key3%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20items%5B_key3%20-%201%5D%20%3D%20arguments%5B_key3%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20var%20ret%20%3D%20array.unshift.apply(array%2C%20items)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(items.length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20notifySplice(this%2C%20array%2C%20info.path%2C%200%2C%20items.length%2C%20%5B%5D)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20return%20ret%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Notify%20that%20a%20path%20has%20changed.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Example%3A%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20this.item.user.name%20%3D%20'Bob'%3B%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20this.notifyPath('item.user.name')%3B%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Path%20that%20should%20be%20notified.%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B*%3D%7D%20value%20Value%20at%20the%20path%20(optional).%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40public%0A%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'notifyPath'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20notifyPath(path%2C%20value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F**%20%40type%20%7Bstring%7D%20*%2F%0A%20%20%20%20%20%20%20%20%20%20var%20propPath%20%3D%20void%200%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(arguments.length%20%3D%3D%201)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Get%20value%20if%20not%20supplied%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20%7B%20path%3A%20''%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20value%20%3D%20Polymer.Path.get(this%2C%20path%2C%20info)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20propPath%20%3D%20info.path%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(Array.isArray(path))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Normalize%20path%20if%20needed%0A%20%20%20%20%20%20%20%20%20%20%20%20propPath%20%3D%20Polymer.Path.normalize(path)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20propPath%20%3D%20%2F**%20%40type%7Bstring%7D%20*%2Fpath%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20(this._setPendingPropertyOrPath(propPath%2C%20value%2C%20true%2C%20true))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this._invalidateProperties()%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createReadOnlyProperty%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20protectedSetter%20Creates%20a%20custom%20protected%20setter%0A%20%20%20%20%20%20%20%20%20*%20%20%20when%20%60true%60.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_createReadOnlyProperty'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_createReadOnlyProperty(property%2C%20protectedSetter)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this._addPropertyEffect(property%2C%20TYPES.READ_ONLY)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(protectedSetter)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this%5B'_set'%20%2B%20upper(property)%5D%20%3D%20%2F**%20%40this%20%7BPropertyEffects%7D%20*%2Ffunction%20(value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._setProperty(property%2C%20value)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createPropertyObserver%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7Cfunction(*%2C*)%7D%20method%20Function%20or%20name%20of%20observer%20method%20to%20call%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20dynamicFn%20Whether%20the%20method%20name%20should%20be%20included%20as%0A%20%20%20%20%20%20%20%20%20*%20%20%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_createPropertyObserver'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_createPropertyObserver(property%2C%20method%2C%20dynamicFn)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20%7B%20property%3A%20property%2C%20method%3A%20method%2C%20dynamicFn%3A%20Boolean(dynamicFn)%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20this._addPropertyEffect(property%2C%20TYPES.OBSERVE%2C%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20fn%3A%20runObserverEffect%2C%20info%3A%20info%2C%20trigger%3A%20%7B%20name%3A%20property%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(dynamicFn)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this._addPropertyEffect(%20%2F**%20%40type%20%7Bstring%7D%20*%2Fmethod%2C%20TYPES.OBSERVE%2C%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20fn%3A%20runObserverEffect%2C%20info%3A%20info%2C%20trigger%3A%20%7B%20name%3A%20method%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createMethodObserver%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20expression%20Method%20expression%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7CObject%3D%7D%20dynamicFn%20Boolean%20or%20object%20map%20indicating%0A%20%20%20%20%20%20%20%20%20*%20%20%20whether%20method%20names%20should%20be%20included%20as%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_createMethodObserver'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_createMethodObserver(expression%2C%20dynamicFn)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20sig%20%3D%20parseMethod(expression)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(!sig)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error(%22Malformed%20observer%20expression%20'%22%20%2B%20expression%20%2B%20%22'%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20createMethodEffect(this%2C%20sig%2C%20TYPES.OBSERVE%2C%20runMethodEffect%2C%20null%2C%20dynamicFn)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createNotifyingProperty%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_createNotifyingProperty'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_createNotifyingProperty(property)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this._addPropertyEffect(property%2C%20TYPES.NOTIFY%2C%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20fn%3A%20runNotifyEffect%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20info%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20eventName%3A%20CaseMap.camelToDashCase(property)%20%2B%20'-changed'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20property%3A%20property%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createReflectedProperty%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_createReflectedProperty'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_createReflectedProperty(property)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20attr%20%3D%20this.constructor.attributeNameForProperty(property)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(attr%5B0%5D%20%3D%3D%3D%20'-')%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.warn('Property%20'%20%2B%20property%20%2B%20'%20cannot%20be%20reflected%20to%20attribute%20'%20%2B%20attr%20%2B%20'%20because%20%22-%22%20is%20not%20a%20valid%20starting%20attribute%20name.%20Use%20a%20lowercase%20first%20letter%20for%20the%20property%20instead.')%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this._addPropertyEffect(property%2C%20TYPES.REFLECT%2C%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20fn%3A%20runReflectEffect%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20info%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20attrName%3A%20attr%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60createComputedProperty%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20computed%20property%20to%20set%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20expression%20Method%20expression%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7CObject%3D%7D%20dynamicFn%20Boolean%20or%20object%20map%20indicating%0A%20%20%20%20%20%20%20%20%20*%20%20%20whether%20method%20names%20should%20be%20included%20as%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_createComputedProperty'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_createComputedProperty(property%2C%20expression%2C%20dynamicFn)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20sig%20%3D%20parseMethod(expression)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(!sig)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error(%22Malformed%20computed%20expression%20'%22%20%2B%20expression%20%2B%20%22'%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20createMethodEffect(this%2C%20sig%2C%20TYPES.COMPUTE%2C%20runComputedEffect%2C%20property%2C%20dynamicFn)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Gather%20the%20argument%20values%20for%20a%20method%20specified%20in%20the%20provided%20array%0A%20%20%20%20%20%20%20%20%20*%20of%20argument%20metadata.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20The%20%60path%60%20and%20%60value%60%20arguments%20are%20used%20to%20fill%20in%20wildcard%20descriptor%0A%20%20%20%20%20%20%20%20%20*%20when%20the%20method%20is%20being%20called%20as%20a%20result%20of%20a%20path%20notification.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!Array%3C!MethodArg%3E%7D%20args%20Array%20of%20argument%20metadata%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Property%2Fpath%20name%20that%20triggered%20the%20method%20effect%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%3C*%3E%7D%20Array%20of%20argument%20values%0A%20%20%20%20%20%20%20%20%20*%20%40private%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_marshalArgs'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_marshalArgs(args%2C%20path%2C%20props)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20data%20%3D%20this.__data%3B%0A%20%20%20%20%20%20%20%20%20%20var%20values%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%20%20for%20(var%20i%20%3D%200%2C%20l%20%3D%20args.length%3B%20i%20%3C%20l%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20arg%20%3D%20args%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20name%20%3D%20arg.name%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20v%20%3D%20void%200%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(arg.literal)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20v%20%3D%20arg.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(arg.structured)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20v%20%3D%20Polymer.Path.get(data%2C%20name)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20when%20data%20is%20not%20stored%20e.g.%20%60splices%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(v%20%3D%3D%3D%20undefined)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20v%20%3D%20props%5Bname%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20v%20%3D%20data%5Bname%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(arg.wildcard)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Only%20send%20the%20actual%20path%20changed%20info%20if%20the%20change%20that%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20caused%20the%20observer%20to%20run%20matched%20the%20wildcard%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20baseChanged%20%3D%20name.indexOf(path%20%2B%20'.')%20%3D%3D%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20matches%20%3D%20path.indexOf(name)%20%3D%3D%3D%200%20%26%26%20!baseChanged%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20values%5Bi%5D%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20path%3A%20matches%20%3F%20path%20%3A%20name%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20matches%20%3F%20props%5Bpath%5D%20%3A%20v%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20base%3A%20v%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20values%5Bi%5D%20%3D%20v%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20return%20values%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20--%20static%20class%20methods%20------------%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Ensures%20an%20accessor%20exists%20for%20the%20specified%20property%2C%20and%20adds%0A%20%20%20%20%20%20%20%20%20*%20to%20a%20list%20of%20%22property%20effects%22%20that%20will%20run%20when%20the%20accessor%20for%0A%20%20%20%20%20%20%20%20%20*%20the%20specified%20property%20is%20set.%20%20Effects%20are%20grouped%20by%20%22type%22%2C%20which%0A%20%20%20%20%20%20%20%20%20*%20roughly%20corresponds%20to%20a%20phase%20in%20effect%20processing.%20%20The%20effect%0A%20%20%20%20%20%20%20%20%20*%20metadata%20should%20be%20in%20the%20following%20form%3A%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20%20%20fn%3A%20effectFunction%2C%20%2F%2F%20Reference%20to%20function%20to%20call%20to%20perform%20effect%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20%20%20info%3A%20%7B%20...%20%7D%20%20%20%20%20%20%20%2F%2F%20Effect%20metadata%20passed%20to%20function%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20%20%20trigger%3A%20%7B%20%20%20%20%20%20%20%20%20%20%2F%2F%20Optional%20triggering%20metadata%3B%20if%20not%20provided%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20name%3A%20string%20%20%20%20%20%20%2F%2F%20the%20property%20is%20treated%20as%20a%20wildcard%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20structured%3A%20boolean%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%20%20wildcard%3A%20boolean%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Effects%20are%20called%20from%20%60_propertiesChanged%60%20in%20the%20following%20order%20by%0A%20%20%20%20%20%20%20%20%20*%20type%3A%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%201.%20COMPUTE%0A%20%20%20%20%20%20%20%20%20*%202.%20PROPAGATE%0A%20%20%20%20%20%20%20%20%20*%203.%20REFLECT%0A%20%20%20%20%20%20%20%20%20*%204.%20OBSERVE%0A%20%20%20%20%20%20%20%20%20*%205.%20NOTIFY%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Effect%20functions%20are%20called%20with%20the%20following%20signature%3A%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%20%20%20%20effectFunction(inst%2C%20path%2C%20props%2C%20oldProps%2C%20info%2C%20hasPaths)%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20that%20should%20trigger%20the%20effect%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20type%20Effect%20type%2C%20from%20this.PROPERTY_EFFECT_TYPES%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20effect%20Effect%20metadata%20object%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_bindTemplate'%2C%0A%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20--%20binding%20----------------------------------------------%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Equivalent%20to%20static%20%60bindTemplate%60%20API%20but%20can%20be%20called%20on%0A%20%20%20%20%20%20%20%20%20*%20an%20instance%20to%20add%20effects%20at%20runtime.%20%20See%20that%20method%20for%0A%20%20%20%20%20%20%20%20%20*%20full%20API%20docs.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20may%20be%20called%20on%20the%20prototype%20(for%20prototypical%20template%0A%20%20%20%20%20%20%20%20%20*%20binding%2C%20to%20avoid%20creating%20accessors%20every%20instance)%20once%20per%20prototype%2C%0A%20%20%20%20%20%20%20%20%20*%20and%20will%20be%20called%20with%20%60runtimeBinding%3A%20true%60%20by%20%60_stampTemplate%60%20to%0A%20%20%20%20%20%20%20%20%20*%20create%20and%20link%20an%20instance%20of%20the%20template%20metadata%20associated%20with%20a%0A%20%20%20%20%20%20%20%20%20*%20particular%20stamping.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20containing%20binding%0A%20%20%20%20%20%20%20%20%20*%20%20%20bindings%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20instanceBinding%20When%20false%20(default)%2C%20performs%0A%20%20%20%20%20%20%20%20%20*%20%20%20%22prototypical%22%20binding%20of%20the%20template%20and%20overwrites%20any%20previously%0A%20%20%20%20%20%20%20%20%20*%20%20%20bound%20template%20for%20the%20class.%20When%20true%20(as%20passed%20from%0A%20%20%20%20%20%20%20%20%20*%20%20%20%60_stampTemplate%60)%2C%20the%20template%20info%20is%20instanced%20and%20linked%20into%0A%20%20%20%20%20%20%20%20%20*%20%20%20the%20list%20of%20bound%20templates.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B!TemplateInfo%7D%20Template%20metadata%20object%3B%20for%20%60runtimeBinding%60%2C%0A%20%20%20%20%20%20%20%20%20*%20%20%20this%20is%20an%20instance%20of%20the%20prototypical%20template%20info%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20value%3A%20function%20_bindTemplate(template%2C%20instanceBinding)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20templateInfo%20%3D%20this.constructor._parseTemplate(template)%3B%0A%20%20%20%20%20%20%20%20%20%20var%20wasPreBound%20%3D%20this.__templateInfo%20%3D%3D%20templateInfo%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Optimization%3A%20since%20this%20is%20called%20twice%20for%20proto-bound%20templates%2C%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20don't%20attempt%20to%20recreate%20accessors%20if%20this%20template%20was%20pre-bound%0A%20%20%20%20%20%20%20%20%20%20if%20(!wasPreBound)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(var%20prop%20in%20templateInfo.propertyEffects)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this._createPropertyAccessor(prop)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20(instanceBinding)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20For%20instance-time%20binding%2C%20create%20instance%20of%20template%20metadata%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20and%20link%20into%20list%20of%20templates%20if%20necessary%0A%20%20%20%20%20%20%20%20%20%20%20%20templateInfo%20%3D%20%2F**%20%40type%20%7B!TemplateInfo%7D%20*%2FObject.create(templateInfo)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20templateInfo.wasPreBound%20%3D%20wasPreBound%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!wasPreBound%20%26%26%20this.__templateInfo)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20last%20%3D%20this.__templateInfoLast%20%7C%7C%20this.__templateInfo%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.__templateInfoLast%20%3D%20last.nextTemplateInfo%20%3D%20templateInfo%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20templateInfo.previousTemplateInfo%20%3D%20last%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20templateInfo%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20return%20this.__templateInfo%20%3D%20templateInfo%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Adds%20a%20property%20effect%20to%20the%20given%20template%20metadata%2C%20which%20is%20run%0A%20%20%20%20%20%20%20%20%20*%20at%20the%20%22propagate%22%20stage%20of%20%60_propertiesChanged%60%20when%20the%20template%0A%20%20%20%20%20%20%20%20%20*%20has%20been%20bound%20to%20the%20element%20via%20%60_bindTemplate%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20The%20%60effect%60%20object%20should%20match%20the%20format%20in%20%60_addPropertyEffect%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20templateInfo%20Template%20metadata%20to%20add%20effect%20to%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20prop%20Property%20that%20should%20trigger%20the%20effect%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%3D%7D%20effect%20Effect%20metadata%20object%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_stampTemplate'%2C%0A%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Stamps%20the%20provided%20template%20and%20performs%20instance-time%20setup%20for%0A%20%20%20%20%20%20%20%20%20*%20Polymer%20template%20features%2C%20including%20data%20bindings%2C%20declarative%20event%0A%20%20%20%20%20%20%20%20%20*%20listeners%2C%20and%20the%20%60this.%24%60%20map%20of%20%60id%60's%20to%20nodes.%20%20A%20document%20fragment%0A%20%20%20%20%20%20%20%20%20*%20is%20returned%20containing%20the%20stamped%20DOM%2C%20ready%20for%20insertion%20into%20the%0A%20%20%20%20%20%20%20%20%20*%20DOM.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20This%20method%20may%20be%20called%20more%20than%20once%3B%20however%20note%20that%20due%20to%0A%20%20%20%20%20%20%20%20%20*%20%60shadycss%60%20polyfill%20limitations%2C%20only%20styles%20from%20templates%20prepared%0A%20%20%20%20%20%20%20%20%20*%20using%20%60ShadyCSS.prepareTemplate%60%20will%20be%20correctly%20polyfilled%20(scoped%0A%20%20%20%20%20%20%20%20%20*%20to%20the%20shadow%20root%20and%20support%20CSS%20custom%20properties)%2C%20and%20note%20that%0A%20%20%20%20%20%20%20%20%20*%20%60ShadyCSS.prepareTemplate%60%20may%20only%20be%20called%20once%20per%20element.%20As%20such%2C%0A%20%20%20%20%20%20%20%20%20*%20any%20styles%20required%20by%20in%20runtime-stamped%20templates%20must%20be%20included%0A%20%20%20%20%20%20%20%20%20*%20in%20the%20main%20element%20template.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20to%20stamp%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B!StampedTemplate%7D%20Cloned%20template%20content%0A%20%20%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20value%3A%20function%20_stampTemplate(template)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Ensures%20that%20created%20dom%20is%20%60_enqueueClient%60'd%20to%20this%20element%20so%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20that%20it%20can%20be%20flushed%20on%20next%20call%20to%20%60_flushProperties%60%0A%20%20%20%20%20%20%20%20%20%20hostStack.beginHosting(this)%3B%0A%20%20%20%20%20%20%20%20%20%20var%20dom%20%3D%20babelHelpers.get(PropertyEffects.prototype.__proto__%20%7C%7C%20Object.getPrototypeOf(PropertyEffects.prototype)%2C%20'_stampTemplate'%2C%20this).call(this%2C%20template)%3B%0A%20%20%20%20%20%20%20%20%20%20hostStack.endHosting(this)%3B%0A%20%20%20%20%20%20%20%20%20%20var%20templateInfo%20%3D%20%2F**%20%40type%20%7B!TemplateInfo%7D%20*%2Fthis._bindTemplate(template%2C%20true)%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Add%20template-instance-specific%20data%20to%20instanced%20templateInfo%0A%20%20%20%20%20%20%20%20%20%20templateInfo.nodeList%20%3D%20dom.nodeList%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Capture%20child%20nodes%20to%20allow%20unstamping%20of%20non-prototypical%20templates%0A%20%20%20%20%20%20%20%20%20%20if%20(!templateInfo.wasPreBound)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20nodes%20%3D%20templateInfo.childNodes%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(var%20n%20%3D%20dom.firstChild%3B%20n%3B%20n%20%3D%20n.nextSibling)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20nodes.push(n)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20dom.templateInfo%20%3D%20templateInfo%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Setup%20compound%20storage%2C%202-way%20listeners%2C%20and%20dataHost%20for%20bindings%0A%20%20%20%20%20%20%20%20%20%20setupBindings(this%2C%20templateInfo)%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Flush%20properties%20into%20template%20nodes%20if%20already%20booted%0A%20%20%20%20%20%20%20%20%20%20if%20(this.__dataReady)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20runEffects(this%2C%20templateInfo.propertyEffects%2C%20this.__data%2C%20null%2C%20false%2C%20templateInfo.nodeList)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20return%20dom%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Removes%20and%20unbinds%20the%20nodes%20previously%20contained%20in%20the%20provided%0A%20%20%20%20%20%20%20%20%20*%20DocumentFragment%20returned%20from%20%60_stampTemplate%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!StampedTemplate%7D%20dom%20DocumentFragment%20previously%20returned%0A%20%20%20%20%20%20%20%20%20*%20%20%20from%20%60_stampTemplate%60%20associated%20with%20the%20nodes%20to%20be%20removed%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_removeBoundDom'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_removeBoundDom(dom)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Unlink%20template%20info%0A%20%20%20%20%20%20%20%20%20%20var%20templateInfo%20%3D%20dom.templateInfo%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(templateInfo.previousTemplateInfo)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20templateInfo.previousTemplateInfo.nextTemplateInfo%20%3D%20templateInfo.nextTemplateInfo%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20(templateInfo.nextTemplateInfo)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20templateInfo.nextTemplateInfo.previousTemplateInfo%20%3D%20templateInfo.previousTemplateInfo%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20(this.__templateInfoLast%20%3D%3D%20templateInfo)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.__templateInfoLast%20%3D%20templateInfo.previousTemplateInfo%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20templateInfo.previousTemplateInfo%20%3D%20templateInfo.nextTemplateInfo%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Remove%20stamped%20nodes%0A%20%20%20%20%20%20%20%20%20%20var%20nodes%20%3D%20templateInfo.childNodes%3B%0A%20%20%20%20%20%20%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20nodes.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20node%20%3D%20nodes%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20node.parentNode.removeChild(node)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Overrides%20default%20%60TemplateStamp%60%20implementation%20to%20add%20support%20for%0A%20%20%20%20%20%20%20%20%20*%20parsing%20bindings%20from%20%60TextNode%60's'%20%60textContent%60.%20%20A%20%60bindings%60%0A%20%20%20%20%20%20%20%20%20*%20array%20is%20added%20to%20%60nodeInfo%60%20and%20populated%20with%20binding%20metadata%0A%20%20%20%20%20%20%20%20%20*%20with%20information%20capturing%20the%20binding%20target%2C%20and%20a%20%60parts%60%20array%0A%20%20%20%20%20%20%20%20%20*%20with%20one%20or%20more%20metadata%20objects%20capturing%20the%20source(s)%20of%20the%0A%20%20%20%20%20%20%20%20%20*%20binding.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20to%20parse%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BNodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template%20node%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'PROPERTY_EFFECT_TYPES'%2C%0A%20%20%20%20%20%20%20%20get%3A%20function%20get()%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20TYPES%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%5D%2C%20%5B%7B%0A%20%20%20%20%20%20%20%20key%3A%20'addPropertyEffect'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20addPropertyEffect(property%2C%20type%2C%20effect)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.prototype._addPropertyEffect(property%2C%20type%2C%20effect)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Creates%20a%20single-property%20observer%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7Cfunction(*%2C*)%7D%20method%20Function%20or%20name%20of%20observer%20method%20to%20call%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20dynamicFn%20Whether%20the%20method%20name%20should%20be%20included%20as%0A%20%20%20%20%20%20%20%20%20*%20%20%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'createPropertyObserver'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20createPropertyObserver(property%2C%20method%2C%20dynamicFn)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.prototype._createPropertyObserver(property%2C%20method%2C%20dynamicFn)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Creates%20a%20multi-property%20%22method%20observer%22%20based%20on%20the%20provided%0A%20%20%20%20%20%20%20%20%20*%20expression%2C%20which%20should%20be%20a%20string%20in%20the%20form%20of%20a%20normal%20JavaScript%0A%20%20%20%20%20%20%20%20%20*%20function%20signature%3A%20%60'methodName(arg1%2C%20%5B...%2C%20argn%5D)'%60.%20%20Each%20argument%0A%20%20%20%20%20%20%20%20%20*%20should%20correspond%20to%20a%20property%20or%20path%20in%20the%20context%20of%20this%0A%20%20%20%20%20%20%20%20%20*%20prototype%20(or%20instance)%2C%20or%20may%20be%20a%20literal%20string%20or%20number.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20expression%20Method%20expression%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7CObject%3D%7D%20dynamicFn%20Boolean%20or%20object%20map%20indicating%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%20%20whether%20method%20names%20should%20be%20included%20as%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'createMethodObserver'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20createMethodObserver(expression%2C%20dynamicFn)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.prototype._createMethodObserver(expression%2C%20dynamicFn)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Causes%20the%20setter%20for%20the%20given%20property%20to%20dispatch%20%60%3Cproperty%3E-changed%60%0A%20%20%20%20%20%20%20%20%20*%20events%20to%20notify%20of%20changes%20to%20the%20property.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'createNotifyingProperty'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20createNotifyingProperty(property)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.prototype._createNotifyingProperty(property)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Creates%20a%20read-only%20accessor%20for%20the%20given%20property.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20To%20set%20the%20property%2C%20use%20the%20protected%20%60_setProperty%60%20API.%0A%20%20%20%20%20%20%20%20%20*%20To%20create%20a%20custom%20protected%20setter%20(e.g.%20%60_setMyProp()%60%20for%0A%20%20%20%20%20%20%20%20%20*%20property%20%60myProp%60)%2C%20pass%20%60true%60%20for%20%60protectedSetter%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Note%2C%20if%20the%20property%20will%20have%20other%20property%20effects%2C%20this%20method%0A%20%20%20%20%20%20%20%20%20*%20should%20be%20called%20first%2C%20before%20adding%20other%20effects.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%3D%7D%20protectedSetter%20Creates%20a%20custom%20protected%20setter%0A%20%20%20%20%20%20%20%20%20*%20%20%20when%20%60true%60.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'createReadOnlyProperty'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20createReadOnlyProperty(property%2C%20protectedSetter)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.prototype._createReadOnlyProperty(property%2C%20protectedSetter)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Causes%20the%20setter%20for%20the%20given%20property%20to%20reflect%20the%20property%20value%0A%20%20%20%20%20%20%20%20%20*%20to%20a%20(dash-cased)%20attribute%20of%20the%20same%20name.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Property%20name%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'createReflectedProperty'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20createReflectedProperty(property)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.prototype._createReflectedProperty(property)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Creates%20a%20computed%20property%20whose%20value%20is%20set%20to%20the%20result%20of%20the%0A%20%20%20%20%20%20%20%20%20*%20method%20described%20by%20the%20given%20%60expression%60%20each%20time%20one%20or%20more%0A%20%20%20%20%20%20%20%20%20*%20arguments%20to%20the%20method%20changes.%20%20The%20expression%20should%20be%20a%20string%0A%20%20%20%20%20%20%20%20%20*%20in%20the%20form%20of%20a%20normal%20JavaScript%20function%20signature%3A%0A%20%20%20%20%20%20%20%20%20*%20%60'methodName(arg1%2C%20%5B...%2C%20argn%5D)'%60%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20property%20Name%20of%20computed%20property%20to%20set%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20expression%20Method%20expression%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7CObject%3D%7D%20dynamicFn%20Boolean%20or%20object%20map%20indicating%20whether%0A%20%20%20%20%20%20%20%20%20*%20%20%20method%20names%20should%20be%20included%20as%20a%20dependency%20to%20the%20effect.%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'createComputedProperty'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20createComputedProperty(property%2C%20expression%2C%20dynamicFn)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.prototype._createComputedProperty(property%2C%20expression%2C%20dynamicFn)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Parses%20the%20provided%20template%20to%20ensure%20binding%20effects%20are%20created%0A%20%20%20%20%20%20%20%20%20*%20for%20them%2C%20and%20then%20ensures%20property%20accessors%20are%20created%20for%20any%0A%20%20%20%20%20%20%20%20%20*%20dependent%20properties%20in%20the%20template.%20%20Binding%20effects%20for%20bound%0A%20%20%20%20%20%20%20%20%20*%20templates%20are%20stored%20in%20a%20linked%20list%20on%20the%20instance%20so%20that%0A%20%20%20%20%20%20%20%20%20*%20templates%20can%20be%20efficiently%20stamped%20and%20unstamped.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7B!HTMLTemplateElement%7D%20template%20Template%20containing%20binding%0A%20%20%20%20%20%20%20%20%20*%20%20%20bindings%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B!TemplateInfo%7D%20Template%20metadata%20object%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'bindTemplate'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20bindTemplate(template)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20this.prototype._bindTemplate(template)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_addTemplatePropertyEffect'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_addTemplatePropertyEffect(templateInfo%2C%20prop%2C%20effect)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20hostProps%20%3D%20templateInfo.hostProps%20%3D%20templateInfo.hostProps%20%7C%7C%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20hostProps%5Bprop%5D%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20var%20effects%20%3D%20templateInfo.propertyEffects%20%3D%20templateInfo.propertyEffects%20%7C%7C%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20var%20propEffects%20%3D%20effects%5Bprop%5D%20%3D%20effects%5Bprop%5D%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%20%20propEffects.push(effect)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_parseTemplateNode'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_parseTemplateNode(node%2C%20templateInfo%2C%20nodeInfo)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20noted%20%3D%20babelHelpers.get(PropertyEffects.__proto__%20%7C%7C%20Object.getPrototypeOf(PropertyEffects)%2C%20'_parseTemplateNode'%2C%20this).call(this%2C%20node%2C%20templateInfo%2C%20nodeInfo)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(node.nodeType%20%3D%3D%3D%20Node.TEXT_NODE)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20parts%20%3D%20this._parseBindings(node.textContent%2C%20templateInfo)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(parts)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Initialize%20the%20textContent%20with%20any%20literal%20parts%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20NOTE%3A%20default%20to%20a%20space%20here%20so%20the%20textNode%20remains%3B%20some%20browsers%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20(IE)%20omit%20an%20empty%20textNode%20following%20cloneNode%2FimportNode.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20node.textContent%20%3D%20literalFromParts(parts)%20%7C%7C%20'%20'%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20addBinding(this%2C%20templateInfo%2C%20nodeInfo%2C%20'text'%2C%20'textContent'%2C%20parts)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20noted%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20return%20noted%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Overrides%20default%20%60TemplateStamp%60%20implementation%20to%20add%20support%20for%0A%20%20%20%20%20%20%20%20%20*%20parsing%20bindings%20from%20attributes.%20%20A%20%60bindings%60%0A%20%20%20%20%20%20%20%20%20*%20array%20is%20added%20to%20%60nodeInfo%60%20and%20populated%20with%20binding%20metadata%0A%20%20%20%20%20%20%20%20%20*%20with%20information%20capturing%20the%20binding%20target%2C%20and%20a%20%60parts%60%20array%0A%20%20%20%20%20%20%20%20%20*%20with%20one%20or%20more%20metadata%20objects%20capturing%20the%20source(s)%20of%20the%0A%20%20%20%20%20%20%20%20%20*%20binding.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BElement%7D%20node%20Node%20to%20parse%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BNodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template%20node%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20name%20Attribute%20name%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20value%20Attribute%20value%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_parseTemplateNodeAttribute'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_parseTemplateNodeAttribute(node%2C%20templateInfo%2C%20nodeInfo%2C%20name%2C%20value)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20parts%20%3D%20this._parseBindings(value%2C%20templateInfo)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(parts)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Attribute%20or%20property%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20origName%20%3D%20name%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20kind%20%3D%20'property'%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20The%20only%20way%20we%20see%20a%20capital%20letter%20here%20is%20if%20the%20attr%20has%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20a%20capital%20letter%20in%20it%20per%20spec.%20In%20this%20case%2C%20to%20make%20sure%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20this%20binding%20works%2C%20we%20go%20ahead%20and%20make%20the%20binding%20to%20the%20attribute.%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(capitalAttributeRegex.test(name))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind%20%3D%20'attribute'%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(name%5Bname.length%20-%201%5D%20%3D%3D%20'%24')%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%20%3D%20name.slice(0%2C%20-1)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind%20%3D%20'attribute'%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Initialize%20attribute%20bindings%20with%20any%20literal%20parts%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20literal%20%3D%20literalFromParts(parts)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(literal%20%26%26%20kind%20%3D%3D%20'attribute')%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Ensure%20a%20ShadyCSS%20template%20scoped%20style%20is%20not%20removed%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20when%20a%20class%24%20binding's%20initial%20literal%20value%20is%20set.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(name%20%3D%3D%20'class'%20%26%26%20node.hasAttribute('class'))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20literal%20%2B%3D%20'%20'%20%2B%20node.getAttribute(name)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20node.setAttribute(name%2C%20literal)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Clear%20attribute%20before%20removing%2C%20since%20IE%20won't%20allow%20removing%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%60value%60%20attribute%20if%20it%20previously%20had%20a%20value%20(can't%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20unconditionally%20set%20''%20before%20removing%20since%20attributes%20with%20%60%24%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20can't%20be%20set%20using%20setAttribute)%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(node.localName%20%3D%3D%3D%20'input'%20%26%26%20origName%20%3D%3D%3D%20'value')%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20node.setAttribute(origName%2C%20'')%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Remove%20annotation%0A%20%20%20%20%20%20%20%20%20%20%20%20node.removeAttribute(origName)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Case%20hackery%3A%20attributes%20are%20lower-case%2C%20but%20bind%20targets%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20(properties)%20are%20case%20sensitive.%20Gambit%20is%20to%20map%20dash-case%20to%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20camel-case%3A%20%60foo-bar%60%20becomes%20%60fooBar%60.%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Attribute%20bindings%20are%20excepted.%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(kind%20%3D%3D%3D%20'property')%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%20%3D%20Polymer.CaseMap.dashToCamelCase(name)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20addBinding(this%2C%20templateInfo%2C%20nodeInfo%2C%20kind%2C%20name%2C%20parts%2C%20literal)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20babelHelpers.get(PropertyEffects.__proto__%20%7C%7C%20Object.getPrototypeOf(PropertyEffects)%2C%20'_parseTemplateNodeAttribute'%2C%20this).call(this%2C%20node%2C%20templateInfo%2C%20nodeInfo%2C%20name%2C%20value)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Overrides%20default%20%60TemplateStamp%60%20implementation%20to%20add%20support%20for%0A%20%20%20%20%20%20%20%20%20*%20binding%20the%20properties%20that%20a%20nested%20template%20depends%20on%20to%20the%20template%0A%20%20%20%20%20%20%20%20%20*%20as%20%60_host_%3Cproperty%3E%60.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40override%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BNode%7D%20node%20Node%20to%20parse%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BTemplateInfo%7D%20templateInfo%20Template%20metadata%20for%20current%20template%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BNodeInfo%7D%20nodeInfo%20Node%20metadata%20for%20current%20template%20node%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7Bboolean%7D%20%60true%60%20if%20the%20visited%20node%20added%20node-specific%0A%20%20%20%20%20%20%20%20%20*%20%20%20metadata%20to%20%60nodeInfo%60%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%20%40suppress%20%7BmissingProperties%7D%20Interfaces%20in%20closure%20do%20not%20inherit%20statics%2C%20but%20classes%20do%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_parseTemplateNestedTemplate'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_parseTemplateNestedTemplate(node%2C%20templateInfo%2C%20nodeInfo)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20noted%20%3D%20babelHelpers.get(PropertyEffects.__proto__%20%7C%7C%20Object.getPrototypeOf(PropertyEffects)%2C%20'_parseTemplateNestedTemplate'%2C%20this).call(this%2C%20node%2C%20templateInfo%2C%20nodeInfo)%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Merge%20host%20props%20into%20outer%20template%20and%20add%20bindings%0A%20%20%20%20%20%20%20%20%20%20var%20hostProps%20%3D%20nodeInfo.templateInfo.hostProps%3B%0A%20%20%20%20%20%20%20%20%20%20var%20mode%20%3D%20'%7B'%3B%0A%20%20%20%20%20%20%20%20%20%20for%20(var%20source%20in%20hostProps)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20parts%20%3D%20%5B%7B%20mode%3A%20mode%2C%20source%3A%20source%2C%20dependencies%3A%20%5Bsource%5D%20%7D%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20addBinding(this%2C%20templateInfo%2C%20nodeInfo%2C%20'property'%2C%20'_host_'%20%2B%20source%2C%20parts)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20return%20noted%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Called%20to%20parse%20text%20in%20a%20template%20(either%20attribute%20values%20or%0A%20%20%20%20%20%20%20%20%20*%20textContent)%20into%20binding%20metadata.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Any%20overrides%20of%20this%20method%20should%20return%20an%20array%20of%20binding%20part%0A%20%20%20%20%20%20%20%20%20*%20metadata%20%20representing%20one%20or%20more%20bindings%20found%20in%20the%20provided%20text%0A%20%20%20%20%20%20%20%20%20*%20and%20any%20%22literal%22%20text%20in%20between.%20%20Any%20non-literal%20parts%20will%20be%20passed%0A%20%20%20%20%20%20%20%20%20*%20to%20%60_evaluateBinding%60%20when%20any%20dependencies%20change.%20%20The%20only%20required%0A%20%20%20%20%20%20%20%20%20*%20fields%20of%20each%20%22part%22%20in%20the%20returned%20array%20are%20as%20follows%3A%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20-%20%60dependencies%60%20-%20Array%20containing%20trigger%20metadata%20for%20each%20property%0A%20%20%20%20%20%20%20%20%20*%20%20%20that%20should%20trigger%20the%20binding%20to%20update%0A%20%20%20%20%20%20%20%20%20*%20-%20%60literal%60%20-%20String%20containing%20text%20if%20the%20part%20represents%20a%20literal%3B%0A%20%20%20%20%20%20%20%20%20*%20%20%20in%20this%20case%20no%20%60dependencies%60%20are%20needed%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Additional%20metadata%20for%20use%20by%20%60_evaluateBinding%60%20may%20be%20provided%20in%0A%20%20%20%20%20%20%20%20%20*%20each%20part%20object%20as%20needed.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20The%20default%20implementation%20handles%20the%20following%20types%20of%20bindings%0A%20%20%20%20%20%20%20%20%20*%20(one%20or%20more%20may%20be%20intermixed%20with%20literal%20strings)%3A%0A%20%20%20%20%20%20%20%20%20*%20-%20Property%20binding%3A%20%60%5B%5Bprop%5D%5D%60%0A%20%20%20%20%20%20%20%20%20*%20-%20Path%20binding%3A%20%60%5B%5Bobject.prop%5D%5D%60%0A%20%20%20%20%20%20%20%20%20*%20-%20Negated%20property%20or%20path%20bindings%3A%20%60%5B%5B!prop%5D%5D%60%20or%20%60%5B%5B!object.prop%5D%5D%60%0A%20%20%20%20%20%20%20%20%20*%20-%20Two-way%20property%20or%20path%20bindings%20(supports%20negation)%3A%0A%20%20%20%20%20%20%20%20%20*%20%20%20%60%7B%7Bprop%7D%7D%60%2C%20%60%7B%7Bobject.prop%7D%7D%60%2C%20%60%7B%7B!prop%7D%7D%60%20or%20%60%7B%7B!object.prop%7D%7D%60%0A%20%20%20%20%20%20%20%20%20*%20-%20Inline%20computed%20method%20(supports%20negation)%3A%0A%20%20%20%20%20%20%20%20%20*%20%20%20%60%5B%5Bcompute(a%2C%20'literal'%2C%20b)%5D%5D%60%2C%20%60%5B%5B!compute(a%2C%20'literal'%2C%20b)%5D%5D%60%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20The%20default%20implementation%20uses%20a%20regular%20expression%20for%20best%0A%20%20%20%20%20%20%20%20%20*%20performance.%20However%2C%20the%20regular%20expression%20uses%20a%20white-list%20of%0A%20%20%20%20%20%20%20%20%20*%20allowed%20characters%20in%20a%20data-binding%2C%20which%20causes%20problems%20for%0A%20%20%20%20%20%20%20%20%20*%20data-bindings%20that%20do%20use%20characters%20not%20in%20this%20white-list.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20Instead%20of%20updating%20the%20white-list%20with%20all%20allowed%20characters%2C%0A%20%20%20%20%20%20%20%20%20*%20there%20is%20a%20StrictBindingParser%20(see%20lib%2Fmixins%2Fstrict-binding-parser)%0A%20%20%20%20%20%20%20%20%20*%20that%20uses%20a%20state%20machine%20instead.%20This%20state%20machine%20is%20able%20to%20handle%0A%20%20%20%20%20%20%20%20%20*%20all%20characters.%20However%2C%20it%20is%20slightly%20less%20performant%2C%20therefore%20we%0A%20%20%20%20%20%20%20%20%20*%20extracted%20it%20into%20a%20separate%20optional%20mixin.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20text%20Text%20to%20parse%20from%20attribute%20or%20textContent%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20templateInfo%20Current%20template%20metadata%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7BArray%3C!BindingPart%3E%7D%20Array%20of%20binding%20part%20metadata%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_parseBindings'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_parseBindings(text%2C%20templateInfo)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20parts%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%20%20var%20lastIndex%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20var%20m%20%3D%20void%200%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Example%3A%20%22literal1%7B%7Bprop%7D%7Dliteral2%5B%5B!compute(foo%2Cbar)%5D%5Dfinal%22%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Regex%20matches%3A%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%20%20Iteration%201%3A%20%20Iteration%202%3A%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20m%5B1%5D%3A%20'%7B%7B'%20%20%20%20%20%20%20%20%20%20'%5B%5B'%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20m%5B2%5D%3A%20''%20%20%20%20%20%20%20%20%20%20%20%20'!'%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20m%5B3%5D%3A%20'prop'%20%20%20%20%20%20%20%20'compute(foo%2Cbar)'%0A%20%20%20%20%20%20%20%20%20%20while%20((m%20%3D%20bindingRegex.exec(text))%20!%3D%3D%20null)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Add%20literal%20part%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(m.index%20%3E%20lastIndex)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20parts.push(%7B%20literal%3A%20text.slice(lastIndex%2C%20m.index)%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Add%20binding%20part%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20mode%20%3D%20m%5B1%5D%5B0%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20negate%20%3D%20Boolean(m%5B2%5D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20source%20%3D%20m%5B3%5D.trim()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20customEvent%20%3D%20false%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20notifyEvent%20%3D%20''%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20colon%20%3D%20-1%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(mode%20%3D%3D%20'%7B'%20%26%26%20(colon%20%3D%20source.indexOf('%3A%3A'))%20%3E%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20notifyEvent%20%3D%20source.substring(colon%20%2B%202)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20source%20%3D%20source.substring(0%2C%20colon)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20customEvent%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20signature%20%3D%20parseMethod(source)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20dependencies%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(signature)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Inline%20computed%20function%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20args%20%3D%20signature.args%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20methodName%20%3D%20signature.methodName%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20args.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20arg%20%3D%20args%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(!arg.literal)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dependencies.push(arg)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20dynamicFns%20%3D%20templateInfo.dynamicFns%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(dynamicFns%20%26%26%20dynamicFns%5BmethodName%5D%20%7C%7C%20signature.static)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dependencies.push(methodName)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20signature.dynamicFn%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Property%20or%20path%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20dependencies.push(source)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20parts.push(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20source%3A%20source%2C%20mode%3A%20mode%2C%20negate%3A%20negate%2C%20customEvent%3A%20customEvent%2C%20signature%3A%20signature%2C%20dependencies%3A%20dependencies%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20event%3A%20notifyEvent%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20lastIndex%20%3D%20bindingRegex.lastIndex%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Add%20a%20final%20literal%20part%0A%20%20%20%20%20%20%20%20%20%20if%20(lastIndex%20%26%26%20lastIndex%20%3C%20text.length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20literal%20%3D%20text.substring(lastIndex)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(literal)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20parts.push(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20literal%3A%20literal%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20(parts.length)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20parts%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20*%20Called%20to%20evaluate%20a%20previously%20parsed%20binding%20part%20based%20on%20a%20set%20of%0A%20%20%20%20%20%20%20%20%20*%20one%20or%20more%20changed%20dependencies.%0A%20%20%20%20%20%20%20%20%20*%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bthis%7D%20inst%20Element%20that%20should%20be%20used%20as%20scope%20for%0A%20%20%20%20%20%20%20%20%20*%20%20%20binding%20dependencies%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BBindingPart%7D%20part%20Binding%20part%20metadata%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bstring%7D%20path%20Property%2Fpath%20that%20triggered%20this%20effect%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20props%20Bag%20of%20current%20property%20changes%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7BObject%7D%20oldProps%20Bag%20of%20previous%20values%20for%20changed%20properties%0A%20%20%20%20%20%20%20%20%20*%20%40param%20%7Bboolean%7D%20hasPaths%20True%20with%20%60props%60%20contains%20one%20or%20more%20paths%0A%20%20%20%20%20%20%20%20%20*%20%40return%20%7B*%7D%20Value%20the%20binding%20part%20evaluated%20to%0A%20%20%20%20%20%20%20%20%20*%20%40protected%0A%20%20%20%20%20%20%20%20%20*%2F%0A%0A%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20'_evaluateBinding'%2C%0A%20%20%20%20%20%20%20%20value%3A%20function%20_evaluateBinding(inst%2C%20part%2C%20path%2C%20props%2C%20oldProps%2C%20hasPaths)%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20value%20%3D%20void%200%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(part.signature)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20value%20%3D%20runMethodEffect(inst%2C%20path%2C%20props%2C%20oldProps%2C%20part.signature)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(path%20!%3D%20part.source)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20value%20%3D%20Polymer.Path.get(inst%2C%20part.source)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(hasPaths%20%26%26%20Polymer.Path.isPath(path))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%20%3D%20Polymer.Path.get(inst%2C%20path)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%20%3D%20inst.__data%5Bpath%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20(part.negate)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20value%20%3D%20!value%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20return%20value%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%5D)%3B%0A%20%20%20%20%20%20return%20PropertyEffects%3B%0A%20%20%20%20%7D(propertyEffectsBase)%3B%0A%0A%20%20%20%20%2F%2F%20make%20a%20typing%20for%20closure%20%3AP%0A%0A%0A%20%20%20%20PropertyEffectsType%20%3D%20PropertyEffects%3B%0A%0A%20%20%20%20return%20PropertyEffects%3B%0A%20%20%7D)%3B%0A%0A%20%20%2F**%0A%20%20%20*%20Helper%20api%20for%20enqueuing%20client%20dom%20created%20by%20a%20host%20element.%0A%20%20%20*%0A%20%20%20*%20By%20default%20elements%20are%20flushed%20via%20%60_flushProperties%60%20when%0A%20%20%20*%20%60connectedCallback%60%20is%20called.%20Elements%20attach%20their%20client%20dom%20to%0A%20%20%20*%20themselves%20at%20%60ready%60%20time%20which%20results%20from%20this%20first%20flush.%0A%20%20%20*%20This%20provides%20an%20ordering%20guarantee%20that%20the%20client%20dom%20an%20element%0A%20%20%20*%20creates%20is%20flushed%20before%20the%20element%20itself%20(i.e.%20client%20%60ready%60%0A%20%20%20*%20fires%20before%20host%20%60ready%60).%0A%20%20%20*%0A%20%20%20*%20However%2C%20if%20%60_flushProperties%60%20is%20called%20*before*%20an%20element%20is%20connected%2C%0A%20%20%20*%20as%20for%20example%20%60Templatize%60%20does%2C%20this%20ordering%20guarantee%20cannot%20be%0A%20%20%20*%20satisfied%20because%20no%20elements%20are%20connected.%20(Note%3A%20Bound%20elements%20that%0A%20%20%20*%20receive%20data%20do%20become%20enqueued%20clients%20and%20are%20properly%20ordered%20but%0A%20%20%20*%20unbound%20elements%20are%20not.)%0A%20%20%20*%0A%20%20%20*%20To%20maintain%20the%20desired%20%22client%20before%20host%22%20ordering%20guarantee%20for%20this%0A%20%20%20*%20case%20we%20rely%20on%20the%20%22host%20stack.%20Client%20nodes%20registers%20themselves%20with%0A%20%20%20*%20the%20creating%20host%20element%20when%20created.%20This%20ensures%20that%20all%20client%20dom%0A%20%20%20*%20is%20readied%20in%20the%20proper%20order%2C%20maintaining%20the%20desired%20guarantee.%0A%20%20%20*%0A%20%20%20*%20%40private%0A%20%20%20*%2F%0A%20%20var%20hostStack%20%3D%20%7B%0A%0A%20%20%20%20stack%3A%20%5B%5D%2C%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20inst%20Instance%20to%20add%20to%20hostStack%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BhostStack%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20registerHost%3A%20function%20registerHost(inst)%20%7B%0A%20%20%20%20%20%20if%20(this.stack.length)%20%7B%0A%20%20%20%20%20%20%20%20var%20host%20%3D%20this.stack%5Bthis.stack.length%20-%201%5D%3B%0A%20%20%20%20%20%20%20%20host._enqueueClient(inst)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20inst%20Instance%20to%20begin%20hosting%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BhostStack%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20beginHosting%3A%20function%20beginHosting(inst)%20%7B%0A%20%20%20%20%20%20this.stack.push(inst)%3B%0A%20%20%20%20%7D%2C%0A%0A%0A%20%20%20%20%2F**%0A%20%20%20%20%20*%20%40param%20%7B*%7D%20inst%20Instance%20to%20end%20hosting%0A%20%20%20%20%20*%20%40return%20%7Bvoid%7D%0A%20%20%20%20%20*%20%40this%20%7BhostStack%7D%0A%20%20%20%20%20*%2F%0A%20%20%20%20endHosting%3A%20function%20endHosting(inst)%20%7B%0A%20%20%20%20%20%20var%20stackLen%20%3D%20this.stack.length%3B%0A%20%20%20%20%20%20if%20(stackLen%20%26%26%20this.stack%5BstackLen%20-%201%5D%20%3D%3D%20inst)%20%7B%0A%20%20%20%20%20%20%20%20this.stack.pop()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%7D)()%3B%0A%2F%2F%23%20sourceURL%3Dhttps%3A%2F%2Fthrivepatientportal.com%2Fsrc%2Fportal-app%2Fportal-app.html-12.js%0A