| <!DOCTYPE html> |
| <html> |
| <head i18n-values="dir:textdirection;"> |
| <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> |
| <meta http-equiv="origin-trial" content="AnYuQDtUf6OrWCmR9Okd67JhWVTbmnRedvPi1TEvAxac8+1p6o9q08FoDO6oCbLD0xEqev+SkZFiIhFSzlY9HgUAAABxeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXVzZXJjb250ZW50LmNvbTo0NDMiLCJmZWF0dXJlIjoiV2ViQ29tcG9uZW50c1YwIiwiZXhwaXJ5IjoxNjA0NjE0NTM4LCJpc1N1YmRvbWFpbiI6dHJ1ZX0="> |
| <template id="overlay-template"> |
| <style> |
| overlay-mask { |
| left: 0; |
| padding: 8px; |
| position: absolute; |
| top: 0; |
| z-index: 1000; |
| font-family: sans-serif; |
| -webkit-justify-content: center; |
| background: rgba(0, 0, 0, 0.8); |
| display: flex; |
| height: 100%; |
| left: 0; |
| position: fixed; |
| top: 0; |
| width: 100%; |
| } |
| overlay-mask:focus { |
| outline: none; |
| } |
| overlay-vertical-centering-container { |
| -webkit-justify-content: center; |
| flex-direction: column; |
| display: flex; |
| } |
| overlay-frame { |
| z-index: 1100; |
| background: rgb(255, 255, 255); |
| border: 1px solid #ccc; |
| margin: 75px; |
| display: flex; |
| flex-direction: column; |
| min-height: 0; |
| } |
| title-bar { |
| -webkit-align-items: center; |
| flex-direction: row; |
| border-bottom: 1px solid #ccc; |
| background-color: #ddd; |
| display: flex; |
| padding: 5px; |
| flex: 0 0 auto; |
| } |
| title { |
| display: inline; |
| font-weight: bold; |
| flex: 1 1 auto; |
| } |
| close-button { |
| -webkit-align-self: flex-end; |
| border: 1px solid #eee; |
| background-color: #999; |
| font-size: 10pt; |
| font-weight: bold; |
| padding: 2px; |
| text-align: center; |
| width: 16px; |
| } |
| close-button:hover { |
| background-color: #ddd; |
| border-color: black; |
| cursor: pointer; |
| } |
| overlay-content { |
| display: flex; |
| flex: 1 1 auto; |
| flex-direction: column; |
| overflow-y: auto; |
| padding: 10px; |
| min-width: 300px; |
| min-height: 0; |
| } |
| button-bar { |
| -webkit-align-items: baseline; |
| border-top: 1px solid #ccc; |
| display: flex; |
| flex: 0 0 auto; |
| flex-direction: row-reverse; |
| padding: 4px; |
| } |
| </style> |
| |
| <overlay-mask> |
| <overlay-vertical-centering-container> |
| <overlay-frame> |
| <title-bar> |
| <title></title> |
| <close-button>✕</close-button> |
| </title-bar> |
| <overlay-content> |
| <content></content> |
| </overlay-content> |
| <button-bar></button-bar> |
| </overlay-frame> |
| </overlay-vertical-centering-container> |
| </overlay-mask> |
| </template><dom-module id="tr-ui-a-analysis-link"> |
| <template> |
| <style> |
| :host { |
| display: inline; |
| cursor: pointer; |
| cursor: pointer; |
| white-space: nowrap; |
| } |
| a { |
| text-decoration: underline; |
| } |
| </style> |
| <a href="{{href}}" on-click="onClicked_" on-mouseenter="onMouseEnter_" on-mouseleave="onMouseLeave_"><slot></slot></a> |
| |
| </template> |
| </dom-module><dom-module id="tr-ui-b-table"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: column; |
| } |
| |
| table { |
| flex: 1 1 auto; |
| align-self: stretch; |
| border-collapse: separate; |
| border-spacing: 0; |
| border-width: 0; |
| -webkit-user-select: initial; |
| } |
| |
| tr > td { |
| padding: 2px 4px 2px 4px; |
| vertical-align: top; |
| } |
| |
| table > tbody:focus { |
| outline: none; |
| } |
| table > tbody:focus[selection-mode="row"] > tr[selected], |
| table > tbody:focus[selection-mode="cell"] > tr > td[selected], |
| table > tbody:focus > tr.empty-row > td { |
| outline: 1px dotted #666666; |
| outline-offset: -1px; |
| } |
| |
| button.toggle-button { |
| height: 15px; |
| line-height: 60%; |
| vertical-align: middle; |
| width: 100%; |
| } |
| |
| button > * { |
| height: 15px; |
| vertical-align: middle; |
| } |
| |
| td.button-column { |
| width: 30px; |
| } |
| |
| table > thead > tr > td.sensitive:hover { |
| background-color: #fcfcfc; |
| } |
| |
| table > thead > tr > td { |
| font-weight: bold; |
| text-align: left; |
| |
| background-color: #eee; |
| white-space: nowrap; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| |
| border-top: 1px solid #ffffff; |
| border-bottom: 1px solid #aaa; |
| } |
| |
| table > tfoot { |
| background-color: #eee; |
| font-weight: bold; |
| } |
| |
| /* Light row and cell highlight. */ |
| table > tbody[row-highlight-style="light"] > tr[selected], |
| table > tbody[cell-highlight-style="light"] > tr > td[selected] { |
| background-color: rgb(213, 236, 229); /* light turquoise */ |
| } |
| table > tbody[row-highlight-style="light"] > |
| tr:not(.empty-row):not([selected]):hover, |
| table > tbody[cell-highlight-style="light"] > |
| tr:not(.empty-row):not([selected]) > td:hover { |
| background-color: #f6f6f6; /* light grey */ |
| } |
| |
| /* Dark row and cell highlight. */ |
| table > tbody[row-highlight-style="dark"] > tr[selected], |
| table > tbody[cell-highlight-style="dark"] > tr > td[selected] { |
| background-color: rgb(103, 199, 165); /* turquoise */ |
| } |
| table > tbody[row-highlight-style="dark"] > |
| tr:not(.empty-row):not([selected]):hover, |
| table > tbody[cell-highlight-style="dark"] > |
| tr:not(.empty-row):not([selected]) > td:hover { |
| background-color: #e6e6e6; /* grey */ |
| } |
| table > tbody[row-highlight-style="dark"] > tr:hover[selected], |
| table > tbody[cell-highlight-style="dark"] > tr[selected] > td:hover { |
| background-color: rgb(171, 217, 202); /* semi-light turquoise */ |
| } |
| |
| table > colgroup > col[selected] { |
| background-color: #e6e6e6; /* grey */ |
| } |
| |
| table > tbody > tr.empty-row > td { |
| color: #666; |
| font-style: italic; |
| text-align: center; |
| } |
| |
| table > tbody.has-footer > tr:last-child > td { |
| border-bottom: 1px solid #aaa; |
| } |
| |
| table > tfoot > tr:first-child > td { |
| border-top: 1px solid #ffffff; |
| } |
| |
| :host([zebra]) table tbody tr:nth-child(even) { |
| background-color: #f4f4f4; |
| } |
| |
| expand-button { |
| -webkit-user-select: none; |
| cursor: pointer; |
| margin-right: 3px; |
| font-size: smaller; |
| height: 1rem; |
| } |
| |
| expand-button.button-expanded { |
| transform: rotate(90deg); |
| } |
| </style> |
| <table> |
| <colgroup id="cols"> |
| </colgroup> |
| <thead id="head"> |
| </thead> |
| <tbody id="body"> |
| </tbody> |
| <tfoot id="foot"> |
| </tfoot> |
| </table> |
| </template> |
| </dom-module><dom-module id="tr-ui-b-table-header-cell"> |
| <template> |
| <style> |
| :host { |
| -webkit-user-select: none; |
| display: flex; |
| } |
| |
| span { |
| flex: 0 1 auto; |
| } |
| |
| #side { |
| -webkit-user-select: none; |
| flex: 0 0 auto; |
| padding-left: 2px; |
| padding-right: 2px; |
| vertical-align: top; |
| font-size: 15px; |
| font-family: sans-serif; |
| line-height: 85%; |
| margin-left: 5px; |
| } |
| |
| #side.disabled { |
| color: rgb(140, 140, 140); |
| } |
| |
| #title:empty, #side:empty { |
| display: none; |
| } |
| </style> |
| |
| <span id="title"></span> |
| <span id="side"></span> |
| </template> |
| </dom-module><dom-module id="tr-v-ui-scalar-context-controller"> |
| <template></template> |
| </dom-module><dom-module id="tr-v-ui-scalar-span"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: row; |
| justify-content: flex-end; |
| position: relative; |
| /* Limit the sparkline's negative z-index to the span only. */ |
| isolation: isolate; |
| } |
| |
| :host(.left-align) { |
| justify-content: flex-start; |
| } |
| |
| :host(.inline) { |
| display: inline-flex; |
| } |
| |
| #sparkline { |
| width: 0%; |
| position: absolute; |
| bottom: 0; |
| display: none; |
| height: 100%; |
| background-color: hsla(216, 100%, 94.5%, .75); |
| border-color: hsl(216, 100%, 89%); |
| box-sizing: border-box; |
| z-index: -1; |
| } |
| #sparkline.positive { |
| border-right-style: solid; |
| /* The border width must be kept in sync with buildSparklineStyle_(). */ |
| border-right-width: 1px; |
| } |
| #sparkline:not(.positive) { |
| border-left-style: solid; |
| /* The border width must be kept in sync with buildSparklineStyle_(). */ |
| border-left-width: 1px; |
| } |
| #sparkline.better { |
| background-color: hsla(115, 100%, 93%, .75); |
| border-color: hsl(118, 60%, 80%); |
| } |
| #sparkline.worse { |
| background-color: hsla(0, 100%, 88%, .75); |
| border-color: hsl(0, 100%, 80%); |
| } |
| |
| #content { |
| white-space: nowrap; |
| } |
| #content, #significance, #warning { |
| flex-grow: 0; |
| } |
| #content.better { |
| color: green; |
| } |
| #content.worse { |
| color: red; |
| } |
| |
| #significance svg { |
| margin-left: 4px; |
| display: none; |
| height: 1em; |
| vertical-align: text-top; |
| stroke-width: 4; |
| fill: rgba(0, 0, 0, 0); |
| } |
| #significance #insignificant { |
| stroke: black; |
| } |
| #significance #significantly_better { |
| stroke: green; |
| } |
| #significance #significantly_worse { |
| stroke: red; |
| } |
| |
| #warning { |
| display: none; |
| margin-left: 4px; |
| height: 1em; |
| vertical-align: text-top; |
| stroke-width: 0; |
| } |
| #warning path { |
| fill: rgb(255, 185, 185); |
| } |
| #warning rect { |
| fill: red; |
| } |
| </style> |
| |
| <span id="sparkline"></span> |
| |
| <span id="content"></span> |
| |
| <span id="significance"> |
| |
| <svg id="insignificant" viewBox="0 0 128 128"> |
| <circle cx="64" cy="64" r="60"></circle> |
| <circle cx="44" cy="44" r="4"></circle> |
| <circle cx="84" cy="44" r="4"></circle> |
| <line x1="36" x2="92" y1="80" y2="80"></line> |
| </svg> |
| |
| |
| <svg id="significantly_better" viewBox="0 0 128 128"> |
| <circle cx="64" cy="64" r="60"></circle> |
| <circle cx="44" cy="44" r="4"></circle> |
| <circle cx="84" cy="44" r="4"></circle> |
| <path d="M 28 64 Q 64 128 100 64"></path> |
| </svg> |
| |
| |
| <svg id="significantly_worse" viewBox="0 0 128 128"> |
| <circle cx="64" cy="64" r="60"></circle> |
| <circle cx="44" cy="44" r="4"></circle> |
| <circle cx="84" cy="44" r="4"></circle> |
| <path d="M 36 96 Q 64 48 92 96"></path> |
| </svg> |
| </span> |
| |
| <svg id="warning" viewBox="0 0 128 128"> |
| <path d="M 64 0 L 128 128 L 0 128 L 64 0"></path> |
| <rect height="84" width="8" x="60" y="0"></rect> |
| <rect height="24" width="8" x="60" y="100"></rect> |
| </svg> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-generic-object-view"> |
| <template> |
| <style> |
| :host { |
| display: block; |
| font-family: monospace; |
| } |
| </style> |
| <div id="content"> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-generic-object-view-with-label"> |
| <template> |
| <style> |
| :host { |
| display: block; |
| } |
| </style> |
| </template> |
| </dom-module><dom-module id="tr-ui-b-drag-handle"> |
| <template> |
| <style> |
| :host { |
| -webkit-user-select: none; |
| box-sizing: border-box; |
| display: block; |
| } |
| |
| :host(.horizontal-drag-handle) { |
| background-image: -webkit-gradient(linear, |
| 0 0, 0 100%, |
| from(#E5E5E5), |
| to(#D1D1D1)); |
| border-bottom: 1px solid #8e8e8e; |
| border-top: 1px solid white; |
| cursor: ns-resize; |
| flex: 0 0 auto; |
| height: 7px; |
| position: relative; |
| } |
| |
| :host(.vertical-drag-handle) { |
| background-image: -webkit-gradient(linear, |
| 0 0, 100% 0, |
| from(#E5E5E5), |
| to(#D1D1D1)); |
| border-left: 1px solid white; |
| border-right: 1px solid #8e8e8e; |
| cursor: ew-resize; |
| flex: 0 0 auto; |
| position: relative; |
| width: 7px; |
| } |
| </style> |
| <div></div> |
| </template> |
| </dom-module><dom-module id="tv-ui-b-hotkey-controller"> |
| <template> |
| <div></div> |
| </template> |
| </dom-module><dom-module id="tr-ui-b-info-bar"> |
| <template> |
| <style> |
| :host { |
| align-items: center; |
| flex: 0 0 auto; |
| background-color: rgb(252, 235, 162); |
| border-bottom: 1px solid #A3A3A3; |
| border-left: 1px solid white; |
| border-right: 1px solid #A3A3A3; |
| border-top: 1px solid white; |
| display: flex; |
| min-height: 26px; |
| padding: 0 3px 0 3px; |
| } |
| |
| :host([hidden]) { |
| display: none !important; |
| } |
| |
| #message { flex: 1 1 auto; } |
| </style> |
| |
| <span id="message"></span> |
| <span id="buttons"></span> |
| </template> |
| </dom-module><dom-module id="tr-ui-b-mouse-mode-icon"> |
| <template> |
| <style> |
| :host { |
| display: block; |
| background-image: url(data:image/png;base64,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); |
| width: 27px; |
| height: 30px; |
| } |
| :host.active { |
| cursor: auto; |
| } |
| </style> |
| </template> |
| </dom-module><dom-module id="tr-ui-b-mouse-mode-selector"> |
| <template> |
| <style> |
| :host { |
| |
| -webkit-user-drag: element; |
| -webkit-user-select: none; |
| |
| background: #DDD; |
| border: 1px solid #BBB; |
| border-radius: 4px; |
| box-shadow: 0 1px 2px rgba(0,0,0,0.2); |
| left: calc(100% - 120px); |
| position: absolute; |
| top: 100px; |
| user-select: none; |
| width: 29px; |
| z-index: 20; |
| } |
| |
| .drag-handle { |
| background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAChCAYAAACbBNzvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA3LzE2LzEzRNEKUwAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAA9aSURBVHic7V1rTFvl//+UrgUmZWMpbLa6cLErwpYxkqLGkjAG88WSbmumGUllvlmAJctMRtybvlHrLXiJUekMIZuYSCL5gS+EuLIXGEGjqCsllCEW6xQECgzWG7S05/+C/zkp9LTn0gsL6ych9JzznOdzPj19Luf5PN/nCN59913ixRdfRFdXFxLx/2GDgCAIYmpqCoWFhUjE/4cNae+99x4AIFH/Hzak7nDqDu+wOyyw2WzEdl9EMpG23ReQbKQE73Q8coJ3bfcFWK1W/Pbbb/D7/UhLi/37DwaDEIvFKC8vR0lJSdjxbRVstVoxPDyMxx9/HAUFBcjMzIRAIOCdXzAYhNvtht1ux/DwMACEid5WwSMjI3jyySdRXFwMsVgMoVAYk2CCIJCZmYns7GyMjo5iZGQkPoKXl5exd+9e3hdGIhgMIj8/H5mZmRCJRIyCyQ5NJBAEgUAgAKFQiIKCAiwsLISl4VxoHA4H+vv74Xa7uZ4aBqFQiOzsbIhEIojFYojFYohEItq/8fFxXLlyBUtLSxHThOaxZ88eCIXC2AWPj48DAH799deYBaelpUEoFLL6++qrrwAAH3zwAav0YrGYthLkJHh6ehpzc3MAgPn5eUxPT8csWiAQMJbboaEhmM1mAIDFYsHQ0BDvPDkJtlgsYdt+v59LFrxw/fr1sG2Xy8UrL06C6+vrw7bFYjEvYi747rvvwrYlEgmvvDjV0g6HI+p2ohBP3qh32OFwoLe3l1VGvb29sNvtvC8kFCMjI9DpdKzS6nQ6mEwm1nnTPg/7/X6MjY1hcnKS/VX+P/bu3YuysjLk5uYypv36669x8uRJZGRkQCQSwev1oqOjAz09PZx5CwsLcenSJRw+fBh+vx+rq6swmUx46aWXNqWjvcMDAwO8xAIbnZKBgQFeNXhzczMvscBGp6S5uRk//vhj1HS0grVaLYqLi3kRy+Vy1NXVRe0RRcKNGzeg0Wh48apUKnR1daG6ujpqOtpKy+VyQa1Wo6SkBLdv38aFCxeoY5988gn1+fLly9TnL774ApWVlXjiiSfgdDqxtrbG+aJ9Ph/0ej3OnDkDvV6PW7duUceOHDlCfR4dHaU+v/DCC7h27RrUajWcTidWV1ejctAKJggCKysryMzMhE6nw+zsLO3Joft1Oh0ePHiApaUlduqi8BYVFaGvr48Vb19fHyfeqM2Sz+dj3QTEs4lKJC+njsfWJoptkxUrtjZRbJssOnASXFtbG3U7UXjrrbeibnMBJ8FZWVkoKysDABQUFCArK4s3MRcoFArqrlZXV0OhUPDOi5Ngn8+Hw4cPQyqV4tlnn4XP5+NNTIIgmH0An8+HV155BUqlEq+++ior3kAgQLuf84jH2toajh8/jvX1da6n0sLj8SAjI4MxHUEQ+PTTT1nlSRAEHjx4QHtsW8e0RCIR7HY79uzZE/GOcEUgEEAgEMDff/8NkUgUdnxbBR85cgRmsxkCgQD5+fkRh2XYIhAI4P79+5iamoLD4cCxY8fC0myr4KeeegoCgQBWqxVzc3NIS0uLedQyGAxi165dKC8vR1FRUVialHu405ESvNPxyAlOuYfJRMo9fFjdw3iBq3vIBDbu4bYK3uoextKtJEH2yWNyD8nyEG8wuYcffvgha3cxru6h3W5Hf39/QoyzaE6fyWRCQ0MDZ+MsLu7h8vIyent7sby8zIk8VkxNTUGn08Fms8UlP04Nn9/vR39/f9w8JLZwu91obGzk5CFFAq+Wfnh4mDKok4mWlha0trbGlAfvrs3k5CQGBgaSYoiHoqenB1evXk2OIb4VDocDJpMp6eXaYrGgsbGRV7mOufPq8XgwMDCQ9HI9NzeHq1evci7XvDseUqkUWq0W6enpCAaDcDqd8Hq9fLNjDaVSiRs3bkAikfDi5XSHxWIxampqAAALCwsYGhrC7Ows5ufnEypWIpHAYDAAACYmJnD9+nXevJwEnzp1CjKZDBUVFQCAsbGxpJTfjz76CFVVVWhqagIAdHR08G6XWQuuqanB7t274fV6UVpaiuzsbAAbTzyJhMFggEKhgNfrRX19PWQyGQDAaDTyyo+V4JqaGshkMsricLlcOH78OICNCWp8p0cwwWAwoKqqahPvG2+8AWDji+7u7uacJyvBMpksrKxkZWVR0yLGxsY4E7NBVVVVGK9CoaCmRXR0dHDOk5VguorB5/OhoqICYrE4YZ2PSLxXrlyBRCLhNcE1pufh1dVVXLx4EWlpaRGnJzCBjXtId87g4GBU3ri5h1uJ5+fnY8mCtXvIhTflHoYg5R4mEyn3MAl45KyWlOCdjkdOcMo9TCZS7mHKPeSGhLmH5LBOrAGXXN1DcliHrgdFgsk95CzYbrfDbDbD7/ejrKwstpmtNO5hJJhMJrS2tsLtdqOpqQlarTZi2mjuIWvBfr8fZrN50/iz2WzG9PQ0nn/+edonEzZgij10uVwwGo2bxp+NRiOGhobw+uuv005hjtk9JENz6AbbyWCuRESp2Ww2NDc30w62WywW6HQ6zoOIrO5wbm4uzp8/j5WVFXR2dm46VldXh3379mF5eTku86dDUVxcjK6uLthstrClqrq6unDo0CHOvKwE+/1+LC4uUqG0oZiYmIhaicQCkvfu3bthxwYGBnhVmpy6NnSD7kxxQvEA3Zo+fIsQJ8F040j379/nRcwFdF4037FwToLphkUXFxd5EXMB3chkUgQ7nc6wfT6fL+Gm+H///Re2z+Vy8TLFGSut/v5+RsPsm2++AbDR84pXLFNDQwPjelxnz54FsBFK+/nnn7PKl/EOa7VaVmHvYrE4au+HK27evMkq7F0ikeDmzZus82UU7HK5qG8yGs6ePct73gUdfD4f2tvbGdO1t7dzaocZBRMEAaFQSBnhdKipqYFQKORlm0TjzcvLo4xwOhgMBuTl5XHiZVVp+f1+yGQy2iDq4uJiyGSyhFRcfr8fVVVVtEHUGo0GVVVVnHlZ19JerxdqtRpSqZTaJ5VKoVarEzrdwev1Qq/XQ6lUUvuUSiX0ej0vXk7N0srKCjQaDbXmjUajwcrKCmfSULD5Oa6srKCtrQ0SiQQSiQRtbW2MvHFzD0MrsXhUUmzdw9BKjKmSiqt7SBBE3Conru4hOa8kWqBnyj3cgl0EQcQ0cMYWW3kIgkiKe7iVV2C1Won09PSYxLCB1+tFZmYmtb22tobt4E1LBimATaQAkiKWjveR85ZSgnc6Uu5hMpFyD1PuITekYg/ZxB52dXXFTMo2n1D38NSpU7zjDEP/yHzisnJpIsBm5dJ45rntgpONuITTJirctqWlJabjdGAUvNUEp0NouxcvtLa2MgZhmUwmzqKjCrbb7aw9HC5pmWAymVivb2kymTgFe0RslrbeNTa1rtlshkgkQn5+PusL2Iqtd42NdWM0GpGVlYWTJ08ypo14h/nGI8Uax8Q3XJbteREFV1ZW8iLmex6Ja9euJfS8iD9puVyOmpoa3L59G8DmVUq3glzNlAzoimVgvrq6GmlpadDr9QA2r1K6FeRqpmRAFxveiIK9Xi8VZ/jLL78whulUVFTELJbkJeMMjUYjI29TUxNrsQBDX5qMM4w0qE2iuLgYpaWlcXMPyThDphWMNRoN6uvrOfGyskvVanXUNGq1Oq5WKclL/qwjQa/Xc+Zl1dNi8nFi9ZeSyZvqS0erjbmAbT6kT7X1lQp8QeYTyasKE8w3aJJvPh6PBwRBYGZmJi68MzMzqdjDUDx67mEsFxwrUrGHSUCqWdrpSAne6dix7uFzzz1HW0s/FO7h/v37UVBQgMceeyxm99DlcsFut2NwcBACgSDsnTHb7h4ePHgQxcXFcTPTMjIyIJFIcOfOHfz+++8Pl2DSPSTftxQv93DXrl0oKirCnTt3wtIwFhq62aputxtms5maCR8pHROEQiEkEgntew/X1tbC3mu4tLSE9vZ2nD9/njZd6Pn79u3jHoo3OTmJsbExnDlzBsDGWLXdbqcNoent7YVCocChQ4dYh+VFij3s7u5GR0cH9YWaTCbcunVr0yMkmfbChQvQarXQarVUWF4wGER6ejp7wdPT0zCbzfB4PJv2R7NT/H4/rFYrJicnUVZWxnowPtTpGxoagtFoDAsIi2anuN1ufPnll+ju7salS5dw4sQJKk+64hH2FTgcDgwPD4eJZQu/3w+bzcZ5JSSLxYL333+fNvqNDdxuN3p6ehjPDxMsl8tjjkw5ceIENfOVLVQqFd58882YeA0GA7WiWiSECfb5fPjpp58AbKyBx/bCpVIp6urqAADff/895wf6tbU1fPbZZwCAjz/+mPHCSSiVSsr3eueddxh5aWtpMrwuJyeH9cuczp07R5UZvktO/fnnnwCAY8eOoa+vj9U5nZ2d1CsH2fhaUZulwcFB1kGNi4uLjK/gYwuDwcCJ9+2332add9RmyW63w+12Q6FQIC8vD5cvX8bCwgI19VcqlcJms8HhcGBycjJuSz6aTCbMzs5Cq9Xi6NGjGB0dxcTEBJxOJyQSCZRKJUZGRjAyMoL//e9/jBFsoaAVLJfLKZvD4XBQ37ZEItlUph0OB238gVwu5ySQhEqlopo+i8VCtbsymWxTmb579y6t46BSqRg5aAXX1tbi22+/DZvY5XQ6aQMuQyGVSlFbW8trgb6WlhY0NDRgYmJi0/6ZmRnGYVylUomWlhbGeGbaMuzxeKDRaKhVDdkgOzsblZWVOHfuHO82fH19HW1tbWhqamL9ul2ZTIbXXnsNnZ2drN7yFfFFjy6XC6WlpVCpVFhaWsK///5LVfnz8/PIy8sDAOzevRu5ubnIycmBx+OJKZ6YIAj4fD7U19ejsbERf/zxB4aHhykrdHx8HE8//TQAYP/+/VAqlVAoFJx4I1ZapGiyrBw4cAD37t2DXC7HgQMHAGx0QXNycrC+vh63VR5Cecnw3J6eHqhUKpSXlwPY6OI+88wzALiHxnN6PPz555/D9h08eJATIR/Qzd9gE/FKh9SYFlvI5XKqPMUCrlFuKpUKp0+fZkwXDAZp93MSLBaLUVJSgqNHjyIjIwNerzfmOR0ul4sx9lAikeD06dN4+eWXIZVKGXnj5h5evHgRXq8XHo+Hd9MTCpFIhHv37iEnJydqp/+HH36A1+uFy+VirKTi6h7Gug7tVpDuIUEQKCwsjOge/vPPP6zyCwQCWF5exl9//YX5+Xla93DbzTSbzQar1Yr19fW4uoclJSUp9xB4BJullOCdjkdO8P8BGCQ0hnF1DxUAAAAASUVORK5CYII=) 2px 3px no-repeat; |
| background-repeat: no-repeat; |
| border-bottom: 1px solid #BCBCBC; |
| cursor: move; |
| display: block; |
| height: 13px; |
| width: 27px; |
| } |
| |
| .tool-button { |
| background-position: center center; |
| background-repeat: no-repeat; |
| border-bottom: 1px solid #BCBCBC; |
| border-top: 1px solid #F1F1F1; |
| cursor: pointer; |
| } |
| |
| .buttons > .tool-button:last-child { |
| border-bottom: none; |
| } |
| |
| </style> |
| <div class="drag-handle"></div> |
| <div class="buttons"> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-e-chrome-cc-display-item-list-item"> |
| <template> |
| <style> |
| :host { |
| border-bottom: 1px solid #555; |
| display: block; |
| font-size: 12px; |
| padding: 3px 5px; |
| } |
| |
| :host(:hover) { |
| background-color: #f0f0f0; |
| cursor: pointer; |
| } |
| |
| .header { |
| font-weight: bold; |
| margin: 2px 0; |
| } |
| |
| .header > .extra { |
| background-color: #777; |
| border-radius: 4px; |
| color: white; |
| margin: 0 6px; |
| text-decoration: none; |
| padding: 2px 4px; |
| } |
| |
| .raw-details { |
| white-space: pre-wrap; |
| } |
| |
| .details > dl { |
| margin: 0; |
| } |
| |
| :host(:not([selected])) .details { |
| display: none; |
| } |
| </style> |
| <div class="header"> |
| {{name}} |
| <template if="{{_computeIfSKP(richDetails)}}" is="dom-if"> |
| <a class="extra" download="drawing.skp" href$="{{_computeHref(richDetails)}}" on-click="{{stopPropagation}}">SKP</a> |
| </template> |
| </div> |
| <div class="details"> |
| <template if="{{rawDetails}}" is="dom-if"> |
| <div class="raw-details">{{rawDetails}}</div> |
| </template> |
| <template if="{{richDetails}}" is="dom-if"> |
| <dl> |
| <template if="{{richDetails.visualRect}}" is="dom-if"> |
| <dt>Visual rect</dt> |
| <dd>{{richDetails.visualRect.x}},{{richDetails.visualRect.y}} |
| {{richDetails.visualRect.width}}×{{richDetails.visualRect.height}} |
| </dd> |
| </template> |
| </dl> |
| </template> |
| </div> |
| </template> |
| |
| </dom-module><template id="tr-ui-e-chrome-cc-display-item-debugger-template"> |
| <left-panel> |
| <display-item-info> |
| <header> |
| <span class="title">Display Item List</span> |
| <span class="size"></span> |
| <div class="export"> |
| <input class="dlfilename" type="text" value="displayitemlist.json"/> |
| <button class="dlexport">Export display item list</button> |
| </div> |
| <div class="export"> |
| <input class="skpfilename" type="text" value="skpicture.skp"/> |
| <button class="skpexport">Export list as SkPicture</button> |
| </div> |
| </header> |
| </display-item-info> |
| </left-panel> |
| <right-panel> |
| <raster-area> |
| <canvas-scroller> |
| <canvas></canvas> |
| </canvas-scroller> |
| </raster-area> |
| </right-panel> |
| </template><template id="quad-stack-view-template"> |
| <style> |
| #chrome-left { |
| background-image: url(data:image/png;base64,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); |
| display: none; |
| } |
| #chrome-mid { |
| background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAABICAYAAADRa1RpAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAB3RJTUUH3QcNFycE5v9iFQAAAQtJREFUOMvtkjGSWzEMQx/0eYrM3v8k3vgqycalSwlI8Ufyl3OBFMtGIgUCIEd6PB6RBEASqvfONSrJXrDNbNkQ8ywA2y/SmayW+ZIESTsiyQsxo40xmMS2aUmYbheHpCVd0+UqJGGMsey3mUyldoUvlY3D9rIN0K7Wbe/WbZ+y1yWtaVtrp3VJzAEX6ZVjc2p7b2mtnYhNdl6m05rwtfV/ltx7XypJTpXeO7Y5juOlchzHaWxyrJmuhLapqgIJONv05+srThBgiQpBTSRwGOr3rwccgWHUhJ7P5/YNlbd/2XiL78L/WajP240AQUihfnx84EDJjCHKHjTAbkimQDgBjAJ1/3kHAgEk/gL71AHEWVXPGQAAAABJRU5ErkJggg==); |
| display: none; |
| } |
| #chrome-right { |
| background-image: url(data:image/png;base64,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); |
| display: none; |
| } |
| </style> |
| |
| <div id="header"></div> |
| <input id="stacking-distance-slider" max="400" min="1" step="1" type="range"/> |
| |
| <div id="canvas-scroller"> |
| <canvas id="canvas"></canvas> |
| </div> |
| <img id="chrome-left"/> |
| <img id="chrome-mid"/> |
| <img id="chrome-right"/> |
| </template><template id="tr-ui-e-chrome-cc-layer-tree-quad-stack-view-template"> |
| <style> |
| #input-event { |
| background-image: url(data:image/png;base64,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); |
| display: none; |
| } |
| </style> |
| <img id="input-event"/> |
| </template><template id="tr-ui-e-chrome-cc-picture-debugger-template"> |
| <left-panel> |
| <picture-info> |
| <div> |
| <span class="title">Skia Picture</span> |
| <span class="size"></span> |
| </div> |
| <div> |
| <input class="filename" type="text" value="skpicture.skp"/> |
| <button class="export">Export</button> |
| </div> |
| </picture-info> |
| </left-panel> |
| <right-panel> |
| <tr-ui-e-chrome-cc-picture-ops-chart-view> |
| </tr-ui-e-chrome-cc-picture-ops-chart-view> |
| <raster-area><canvas></canvas></raster-area> |
| </right-panel> |
| </template><dom-module id="tr-ui-a-stack-frame"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: row; |
| align-items: center; |
| font-size: 12px; |
| } |
| </style> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-single-event-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex: 0 1; |
| flex-direction: column; |
| } |
| #table { |
| flex: 0 1 auto; |
| align-self: stretch; |
| font-size: 12px; |
| } |
| </style> |
| <tr-ui-b-table id="table"> |
| </tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-e-chrome-cc-raster-task-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: column; |
| } |
| #heading { |
| flex: 0 0 auto; |
| } |
| tr-ui-b-table { |
| font-size: 12px; |
| } |
| </style> |
| |
| <div id="heading"> |
| Rasterization costs in |
| <tr-ui-a-analysis-link id="link"></tr-ui-a-analysis-link> |
| </div> |
| <tr-ui-b-table id="content"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-e-chrome-codesearch"> |
| <template> |
| <style> |
| :host { |
| white-space: nowrap; |
| } |
| #codesearchLink { |
| font-size: x-small; |
| margin-left: 20px; |
| text-decoration: none; |
| } |
| </style> |
| <a id="codesearchLink" on-click="onClick" target="_blank">🔍</a> |
| </template> |
| </dom-module><style> |
| .tr-ui-e-chrome-gpu-state-snapshot-view{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAEwATABMYqp3KAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB90JCQsBMCH7ZqYAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAUElEQVRYw+3WwQkAIAiF4Vc0hTO5/wiuURvYIcQOv1cRPhDlDXffSsrMsrYiQi/zU80FAACAVX3nt3lWAABA/x+ovnPyAAAA5AHyAAAA3wMOd34Xd+lsglgAAAAASUVORK5CYII=);display:flex;overflow:auto}.tr-ui-e-chrome-gpu-state-snapshot-view img{display:block;margin:16px auto 16px auto} |
| </style><dom-module id="tr-ui-a-layout-tree-sub-view"> |
| <template> |
| <style> |
| tr-ui-b-table { |
| font-size: 12px; |
| } |
| </style> |
| <div id="content"></div> |
| </template> |
| </dom-module><template id="tr-ui-e-img-image-snapshot-view-template"> |
| <style> |
| .image-info { |
| margin-bottom: 5px; |
| } |
| |
| .image-info .title { |
| font-weight: bold; |
| margin-left: 5px; |
| margin-right: 5px; |
| } |
| |
| .image-info .size { |
| margin-right: 5px; |
| } |
| |
| .image-container { |
| min-height: 100px; |
| min-width: 200px; |
| overflow: auto; |
| } |
| </style> |
| |
| <div class="image-info"> |
| <span class="title">Image</span> |
| <span class="size">(unknown)</span> |
| <span class="instructions"> |
| [ Drag with mouse to zoom in and out ] |
| </span> |
| </div> |
| <div class="image-container"> |
| <img alt="Image snapshot"/> |
| </div> |
| </template><dom-module id="tr-ui-e-s-frame-data-side-panel"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| width: 600px; |
| flex-direction: column; |
| } |
| table-container { |
| display: flex; |
| overflow: auto; |
| font-size: 12px; |
| } |
| </style> |
| <div> |
| Organize by: |
| <select id="select"> |
| <option value="none">None</option> |
| <option value="tree">Frame Tree</option> |
| </select> |
| </div> |
| <table-container> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </table-container> |
| </template> |
| </dom-module><dom-module id="tr-ui-b-chart-legend-key"> |
| <template> |
| <style> |
| #checkbox { |
| margin: 0; |
| visibility: hidden; |
| vertical-align: text-top; |
| } |
| #label, #link { |
| white-space: nowrap; |
| text-overflow: ellipsis; |
| overflow: hidden; |
| display: inline-block; |
| } |
| </style> |
| |
| <input checked="" id="checkbox" type="checkbox"/> |
| <tr-ui-a-analysis-link id="link"></tr-ui-a-analysis-link> |
| <label id="label"></label> |
| </template> |
| </dom-module><template id="chart-base-template"> |
| <svg> |
| <g id="chart-area" xmlns="http://www.w3.org/2000/svg"> |
| <g class="x axis"></g> |
| <g class="y axis"></g> |
| <text id="title"></text> |
| </g> |
| </svg> |
| </template><dom-module id="tr-ui-e-s-input-latency-side-panel"> |
| <template> |
| <style> |
| :host { |
| flex-direction: column; |
| display: flex; |
| } |
| toolbar { |
| flex: 0 0 auto; |
| border-bottom: 1px solid black; |
| display: flex; |
| } |
| result-area { |
| flex: 1 1 auto; |
| display: block; |
| min-height: 0; |
| overflow-y: auto; |
| } |
| </style> |
| |
| <toolbar id="toolbar"></toolbar> |
| <result-area id="result_area"></result-area> |
| </template> |
| </dom-module><dom-module id="tr-ui-b-heading"> |
| <template> |
| <style> |
| :host { |
| background-color: rgb(243, 245, 247); |
| border-right: 1px solid #8e8e8e; |
| display: block; |
| height: 100%; |
| margin: 0; |
| padding: 0 5px 0 0; |
| } |
| |
| heading { |
| display: block; |
| overflow-x: hidden; |
| text-align: left; |
| white-space: nowrap; |
| } |
| |
| #arrow { |
| flex: 0 0 auto; |
| font-family: sans-serif; |
| margin-left: 5px; |
| margin-right: 5px; |
| width: 8px; |
| } |
| |
| #link, #heading_content { |
| display: none; |
| } |
| </style> |
| <heading id="heading" on-click="onHeadingDivClicked_"> |
| <span id="arrow"></span> |
| <span id="heading_content"></span> |
| <tr-ui-a-analysis-link id="link"></tr-ui-a-analysis-link> |
| </heading> |
| </template> |
| </dom-module><style> |
| .track-button{background-color:rgba(255,255,255,0.5);border:1px solid rgba(0,0,0,0.1);color:rgba(0,0,0,0.2);font-size:10px;height:12px;text-align:center;width:12px}.track-button:hover{background-color:rgba(255,255,255,1.0);border:1px solid rgba(0,0,0,0.5);box-shadow:0 0 .05em rgba(0,0,0,0.4);color:rgba(0,0,0,1)}.track-close-button{left:2px;position:absolute;top:2px}.track-collapse-button{left:3px;position:absolute;top:2px} |
| </style><style> |
| .object-instance-track{height:18px} |
| </style><style> |
| .tr-ui-e-system-stats-instance-track{height:500px}.tr-ui-e-system-stats-instance-track ul{list-style:none;list-style-position:outside;margin:0;overflow:hidden} |
| </style><style> |
| .tr-ui-e-system-stats-snapshot-view .subhead{font-size:small;padding-bottom:10px}.tr-ui-e-system-stats-snapshot-view ul{background-position:0 5px;background-repeat:no-repeat;cursor:pointer;font-family:monospace;list-style:none;margin:0;padding-left:15px}.tr-ui-e-system-stats-snapshot-view li{background-position:0 5px;background-repeat:no-repeat;cursor:pointer;list-style:none;margin:0;padding-left:15px} |
| </style><dom-module id="tr-ui-e-v8-gc-objects-stats-table"> |
| <template> |
| <style> |
| tr-ui-b-table { |
| flex: 0 0 auto; |
| align-self: stretch; |
| margin-top: 1em; |
| font-size: 12px; |
| } |
| .diff { |
| display: inline-block; |
| margin-top: 1em; |
| margin-left: 0.8em; |
| } |
| </style> |
| <div class="diff" id="diffOption"> |
| Diff |
| </div> |
| <tr-ui-b-table id="diffTable"></tr-ui-b-table> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-e-multi-v8-gc-stats-thread-slice-sub-view"> |
| <template> |
| <style> |
| </style> |
| <tr-ui-e-v8-gc-objects-stats-table id="gcObjectsStats"> |
| </tr-ui-e-v8-gc-objects-stats-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-e-v8-ic-stats-table"> |
| <template> |
| <style> |
| tr-ui-b-table { |
| flex: 0 0 auto; |
| align-self: stretch; |
| margin-top: 1em; |
| font-size: 12px; |
| } |
| #total { |
| margin-top: 1em; |
| margin-left: 0.8em; |
| } |
| #groupOption { |
| display: inline-block; |
| margin-top: 1em; |
| margin-left: 0.8em; |
| } |
| </style> |
| <div style="padding-right: 200px"> |
| <div style="float:right; border-style: solid; border-width: 1px; padding:20px"> |
| X no feedback<br/> |
| 0 uninitialized<br/> |
| . premonomorphic<br/> |
| 1 monomorphic<br/> |
| ^ recompute handler<br/> |
| P polymorphic<br/> |
| N megamorphic<br/> |
| G generic |
| </div> |
| </div> |
| <div id="total"> |
| </div> |
| <div id="groupOption"> |
| Group Key |
| </div> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-e-multi-v8-ic-stats-thread-slice-sub-view"> |
| <template> |
| <tr-ui-e-v8-ic-stats-table id="table"> |
| </tr-ui-e-v8-ic-stats-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-e-v8-runtime-call-stats-table"> |
| <template> |
| <style> |
| #table, #blink_rcs_table { |
| flex: 0 0 auto; |
| align-self: stretch; |
| margin-top: 1em; |
| font-size: 12px; |
| } |
| |
| #v8_rcs_heading, #blink_rcs_heading { |
| padding-top: 1em; |
| font-size: 18px; |
| } |
| </style> |
| <h1 id="v8_rcs_heading"></h1> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| <h1 id="blink_rcs_heading"></h1> |
| <tr-ui-b-table id="blink_rcs_table"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-e-multi-v8-thread-slice-sub-view"> |
| <template> |
| <tr-ui-a-multi-thread-slice-sub-view id="content"></tr-ui-a-multi-thread-slice-sub-view> |
| <tr-ui-e-v8-runtime-call-stats-table id="runtimeCallStats"></tr-ui-e-v8-runtime-call-stats-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-e-single-v8-gc-stats-thread-slice-sub-view"> |
| <template> |
| <tr-ui-a-single-event-sub-view id="content"></tr-ui-a-single-event-sub-view> |
| <tr-ui-e-v8-gc-objects-stats-table id="gcObjectsStats"></tr-ui-e-v8-gc-objects-stats-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-e-single-v8-ic-stats-thread-slice-sub-view"> |
| <template> |
| <tr-ui-e-v8-ic-stats-table id="table"> |
| </tr-ui-e-v8-ic-stats-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-e-single-v8-thread-slice-sub-view"> |
| <template> |
| <tr-ui-a-single-thread-slice-sub-view id="content"></tr-ui-a-single-thread-slice-sub-view> |
| <tr-ui-e-v8-runtime-call-stats-table id="runtimeCallStats"></tr-ui-e-v8-runtime-call-stats-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-alert-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: column; |
| } |
| #table { |
| flex: 1 1 auto; |
| align-self: stretch; |
| font-size: 12px; |
| } |
| </style> |
| <tr-ui-b-table id="table"> |
| </tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-b-tab-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: column; |
| } |
| |
| #selection_description, #tabs { |
| font-size: 12px; |
| } |
| |
| #selection_description { |
| display: inline-block; |
| font-weight: bold; |
| margin: 9px 0px 4px 20px; |
| } |
| |
| #tabs { |
| flex: 0 0 auto; |
| border-top: 1px solid #8e8e8e; |
| border-bottom: 1px solid #8e8e8e; |
| background-color: #ececec; |
| overflow: hidden; |
| margin: 0; |
| } |
| |
| #tabs input[type=radio] { |
| display: none; |
| } |
| |
| #tabs tab label { |
| cursor: pointer; |
| display: inline-block; |
| border: 1px solid #ececec; |
| margin: 5px 0px 0px 15px; |
| padding: 3px 10px 3px 10px; |
| } |
| |
| #tabs tab label span { |
| font-weight: bold; |
| } |
| |
| #tabs:focus input[type=radio]:checked ~ label { |
| outline: dotted 1px #8e8e8e; |
| outline-offset: -2px; |
| } |
| |
| #tabs input[type=radio]:checked ~ label { |
| background-color: white; |
| border: 1px solid #8e8e8e; |
| border-bottom: 1px solid white; |
| } |
| |
| #subView { |
| flex: 1 1 auto; |
| min-width: 0; |
| display: flex; |
| } |
| |
| #subView > * { |
| flex: 1 1 auto; |
| min-width: 0; |
| } |
| </style> |
| <div hidden="[[tabsHidden]]" id="tabs"> |
| <label id="selection_description">[[label_]]</label> |
| <template is="dom-repeat" items="[[subViews_]]"> |
| <tab> |
| <input checked="[[isChecked_(item)]]" id$="[[computeRadioId_(item)]]" name="tabs" on-change="onTabChanged_" type="radio"/> |
| <label for$="[[computeRadioId_(item)]]"> |
| <template if="[[item.tabIcon]]" is="dom-if"> |
| <span style$="[[item.tabIcon.style]]">[[item.tabIcon.text]]</span> |
| </template> |
| [[item.tabLabel]] |
| </label> |
| </tab> |
| </template> |
| </div> |
| <div id="subView"></div> |
| <slot> |
| </slot> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-memory-dump-heap-details-breakdown-view"> |
| <template> |
| <tr-ui-b-tab-view id="tabs"></tr-ui-b-tab-view> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-memory-dump-heap-details-breakdown-view-tab"> |
| <template> |
| <tr-v-ui-scalar-context-controller></tr-v-ui-scalar-context-controller> |
| <tr-ui-b-info-bar hidden="" id="info"></tr-ui-b-info-bar> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-memory-dump-heap-details-path-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: column; |
| } |
| </style> |
| <tr-v-ui-scalar-context-controller></tr-v-ui-scalar-context-controller> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-memory-dump-heap-details-pane"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: column; |
| } |
| |
| #header { |
| flex: 0 0 auto; |
| display: flex; |
| flex-direction: row; |
| align-items: center; |
| |
| background-color: #eee; |
| border-bottom: 1px solid #8e8e8e; |
| border-top: 1px solid white; |
| } |
| |
| #label { |
| flex: 1 1 auto; |
| padding: 8px; |
| font-size: 15px; |
| font-weight: bold; |
| } |
| |
| #view_mode_container { |
| display: none; |
| flex: 0 0 auto; |
| padding: 5px; |
| font-size: 15px; |
| } |
| |
| #contents { |
| flex: 1 0 auto; |
| align-self: stretch; |
| font-size: 12px; |
| } |
| |
| #info_text { |
| padding: 8px; |
| color: #666; |
| font-style: italic; |
| text-align: center; |
| } |
| |
| #split_view { |
| display: none; /* Hide until memory allocator dumps are set. */ |
| flex: 1 0 auto; |
| align-self: stretch; |
| flex-direction: row; |
| } |
| |
| #path_view { |
| width: 50%; |
| } |
| |
| #breakdown_view { |
| flex: 1 1 auto; |
| width: 0; |
| } |
| |
| #path_view, #breakdown_view { |
| overflow-x: auto; /* Show scrollbar if necessary. */ |
| } |
| </style> |
| <div id="header"> |
| <div id="label">Heap details</div> |
| <div id="view_mode_container"> |
| <span>View mode:</span> |
| |
| </div> |
| </div> |
| <div id="contents"> |
| <tr-ui-b-info-bar hidden="" id="info_bar"> |
| </tr-ui-b-info-bar> |
| |
| <div id="info_text">No heap dump selected</div> |
| |
| <div id="split_view"> |
| <tr-ui-a-memory-dump-heap-details-path-view id="path_view"> |
| </tr-ui-a-memory-dump-heap-details-path-view> |
| <tr-ui-b-drag-handle id="drag_handle"></tr-ui-b-drag-handle> |
| <tr-ui-a-memory-dump-heap-details-breakdown-view id="breakdown_view"> |
| </tr-ui-a-memory-dump-heap-details-breakdown-view> |
| </div> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-memory-dump-allocator-details-pane"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: column; |
| } |
| |
| #label { |
| flex: 0 0 auto; |
| padding: 8px; |
| |
| background-color: #eee; |
| border-bottom: 1px solid #8e8e8e; |
| border-top: 1px solid white; |
| |
| font-size: 15px; |
| font-weight: bold; |
| } |
| |
| #contents { |
| flex: 1 0 auto; |
| align-self: stretch; |
| font-size: 12px; |
| } |
| |
| #info_text { |
| padding: 8px; |
| color: #666; |
| font-style: italic; |
| text-align: center; |
| } |
| |
| #table { |
| display: none; /* Hide until memory allocator dumps are set. */ |
| flex: 1 0 auto; |
| align-self: stretch; |
| font-size: 12px; |
| } |
| </style> |
| <div id="label">Component details</div> |
| <div id="contents"> |
| <div id="info_text">No memory allocator dump selected</div> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-memory-dump-vm-regions-details-pane"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: column; |
| } |
| |
| #label { |
| flex: 0 0 auto; |
| padding: 8px; |
| |
| background-color: #eee; |
| border-bottom: 1px solid #8e8e8e; |
| border-top: 1px solid white; |
| |
| font-size: 15px; |
| font-weight: bold; |
| } |
| |
| #contents { |
| flex: 1 0 auto; |
| align-self: stretch; |
| font-size: 12px; |
| } |
| |
| #info_text { |
| padding: 8px; |
| color: #666; |
| font-style: italic; |
| text-align: center; |
| } |
| |
| #table { |
| display: none; /* Hide until memory dumps are set. */ |
| flex: 1 0 auto; |
| align-self: stretch; |
| font-size: 12px; |
| } |
| </style> |
| <div id="label">Memory maps</div> |
| <div id="contents"> |
| <div id="info_text">No memory maps selected</div> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-b-color-legend"> |
| <template> |
| <style> |
| :host { |
| display: inline-block; |
| } |
| |
| #square { |
| font-size: 150%; /* Make the square bigger. */ |
| line-height: 0%; /* Prevent the square from increasing legend height. */ |
| } |
| </style> |
| <span id="square"></span> |
| <span id="label"></span> |
| </template> |
| </dom-module><dom-module id="tr-ui-b-view-specific-brushing-state"> |
| <template></template> |
| </dom-module><dom-module id="tr-ui-a-memory-dump-overview-pane"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: column; |
| } |
| |
| #label { |
| flex: 0 0 auto; |
| padding: 8px; |
| |
| background-color: #eee; |
| border-bottom: 1px solid #8e8e8e; |
| border-top: 1px solid white; |
| |
| font-size: 15px; |
| font-weight: bold; |
| } |
| |
| #label a { |
| font-weight: normal; |
| float: right; |
| } |
| |
| #contents { |
| flex: 1 0 auto; |
| align-self: stretch; |
| font-size: 12px; |
| overflow: auto; |
| } |
| |
| #info_text { |
| padding: 8px; |
| color: #666; |
| font-style: italic; |
| text-align: center; |
| } |
| |
| #table { |
| display: none; /* Hide until memory dumps are set. */ |
| flex: 1 0 auto; |
| align-self: stretch; |
| font-size: 12px; |
| } |
| </style> |
| <tr-ui-b-view-specific-brushing-state id="state" view-id="analysis.memory_dump_overview_pane"> |
| </tr-ui-b-view-specific-brushing-state> |
| <div id="label">Overview <a href="https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra">Help</a></div> |
| <div id="contents"> |
| <div id="info_text">No memory memory dumps selected</div> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-memory-dump-header-pane"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: row; |
| align-items: center; |
| |
| background-color: #d0d0d0; |
| border-bottom: 1px solid #8e8e8e; |
| border-top: 1px solid white; |
| } |
| |
| #label { |
| flex: 1 1 auto; |
| padding: 6px; |
| font-size: 15px; |
| } |
| |
| #aggregation_mode_container { |
| display: none; |
| flex: 0 0 auto; |
| padding: 5px; |
| font-size: 15px; |
| } |
| </style> |
| |
| <div id="label"></div> |
| <div id="aggregation_mode_container"> |
| <span>Metric aggregation:</span> |
| |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-stacked-pane-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: column; |
| } |
| |
| #pane_container > * { |
| flex: 0 0 auto; |
| } |
| </style> |
| <div id="pane_container"> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-container-memory-dump-sub-view"> |
| <template> |
| <style> |
| tr-ui-b-table { |
| font-size: 12px; |
| } |
| </style> |
| <div id="content"></div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-counter-sample-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: column; |
| } |
| tr-ui-b-table { |
| font-size: 12px; |
| } |
| </style> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-multi-event-summary-table"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| } |
| #table { |
| flex: 1 1 auto; |
| align-self: stretch; |
| font-size: 12px; |
| } |
| </style> |
| <tr-ui-b-table id="table"> |
| </tr-ui-b-table> |
| |
| </template> |
| </dom-module><dom-module id="tr-ui-a-selection-summary-table"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| } |
| #table { |
| flex: 1 1 auto; |
| align-self: stretch; |
| font-size: 12px; |
| } |
| </style> |
| <tr-ui-b-table id="table"> |
| </tr-ui-b-table> |
| |
| </template> |
| </dom-module><dom-module id="tr-ui-b-radio-picker"> |
| <template> |
| <style> |
| :host([vertical]) #container { |
| flex-direction: column; |
| } |
| :host(:not[vertical]) #container { |
| flex-direction: row; |
| } |
| #container { |
| display: flex; |
| } |
| #container > div { |
| padding-left: 1em; |
| padding-bottom: 0.5em; |
| } |
| </style> |
| <div id="container"></div> |
| </template> |
| </dom-module><dom-module id="tr-v-ui-breakdown-span"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: column; |
| } |
| #table_container { |
| display: flex; |
| flex: 0 0 auto; |
| } |
| #table { |
| max-height: 150px; |
| overflow-y: auto; |
| } |
| </style> |
| |
| <div id="empty">(empty)</div> |
| <div id="table_container"> |
| <div id="container"></div> |
| <span> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </span> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-v-ui-collected-related-event-set-span"> |
| </dom-module><dom-module id="tr-v-ui-date-range-span"> |
| <template> |
| <content></content> |
| </template> |
| </dom-module><dom-module id="tr-v-ui-generic-set-span"> |
| <template> |
| <style> |
| a { |
| display: block; |
| } |
| </style> |
| |
| <tr-ui-a-generic-object-view id="generic"></tr-ui-a-generic-object-view> |
| |
| <div id="links"></div> |
| </template> |
| </dom-module><dom-module id="tr-v-ui-related-event-set-span"> |
| </dom-module><dom-module id="tr-v-ui-scalar-diagnostic-span"> |
| <template> |
| <tr-v-ui-scalar-span id="scalar"></tr-v-ui-scalar-span> |
| </template> |
| </dom-module><dom-module id="tr-v-ui-unmergeable-diagnostic-set-span"> |
| </dom-module><dom-module id="tr-v-ui-diagnostic-map-table"> |
| <template> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-v-ui-scalar-map-table"> |
| <template> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-v-ui-histogram-span"> |
| <template> |
| <style> |
| #container { |
| display: flex; |
| flex-direction: row; |
| justify-content: space-between; |
| } |
| #chart { |
| flex-grow: 1; |
| display: none; |
| } |
| #drag_handle, #diagnostics_tab_templates { |
| display: none; |
| } |
| #chart svg { |
| display: block; |
| } |
| #stats_container { |
| overflow-y: auto; |
| } |
| </style> |
| |
| <div id="container"> |
| <div id="chart"></div> |
| <div id="stats_container"> |
| <tr-v-ui-scalar-map-table id="stats"></tr-v-ui-scalar-map-table> |
| </div> |
| </div> |
| <tr-ui-b-drag-handle id="drag_handle"></tr-ui-b-drag-handle> |
| |
| <tr-ui-b-tab-view id="diagnostics"></tr-ui-b-tab-view> |
| |
| <div id="diagnostics_tab_templates"> |
| <tr-v-ui-diagnostic-map-table id="metric_diagnostics"></tr-v-ui-diagnostic-map-table> |
| |
| <tr-v-ui-diagnostic-map-table id="metadata_diagnostics"></tr-v-ui-diagnostic-map-table> |
| |
| <div id="sample_diagnostics_container"> |
| <div id="merge_sample_diagnostics_container"> |
| <input checked="" id="merge_sample_diagnostics" on-change="updateDiagnostics_" type="checkbox"/> |
| <label for="merge_sample_diagnostics">Merge Sample Diagnostics</label> |
| </div> |
| <tr-v-ui-diagnostic-map-table id="sample_diagnostics"></tr-v-ui-diagnostic-map-table> |
| </div> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-multi-event-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| overflow: auto; |
| } |
| #content { |
| display: flex; |
| flex-direction: column; |
| flex: 0 1 auto; |
| align-self: stretch; |
| } |
| #content > * { |
| flex: 0 0 auto; |
| align-self: stretch; |
| } |
| #histogramContainer { |
| display: flex; |
| } |
| |
| tr-ui-a-multi-event-summary-table { |
| border-bottom: 1px solid #aaa; |
| } |
| |
| tr-ui-a-selection-summary-table { |
| margin-top: 1.25em; |
| border-top: 1px solid #aaa; |
| background-color: #eee; |
| font-weight: bold; |
| margin-bottom: 1.25em; |
| border-bottom: 1px solid #aaa; |
| } |
| </style> |
| <div id="content"> |
| <tr-ui-a-multi-event-summary-table id="eventSummaryTable"> |
| </tr-ui-a-multi-event-summary-table> |
| <tr-ui-a-selection-summary-table id="selectionSummaryTable"> |
| </tr-ui-a-selection-summary-table> |
| <tr-ui-b-radio-picker id="radioPicker"> |
| </tr-ui-b-radio-picker> |
| <div id="histogramContainer"> |
| <tr-v-ui-histogram-span id="histogramSpan"> |
| </tr-v-ui-histogram-span> |
| </div> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-related-events"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: column; |
| } |
| #table { |
| flex: 1 1 auto; |
| align-self: stretch; |
| font-size: 12px; |
| } |
| </style> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-multi-async-slice-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| } |
| #container { |
| display: flex; |
| flex: 1 1 auto; |
| } |
| #events { |
| margin-left: 8px; |
| flex: 0 1 200px; |
| } |
| </style> |
| <div id="container"> |
| <tr-ui-a-multi-event-sub-view id="content"></tr-ui-a-multi-event-sub-view> |
| <div id="events"> |
| <tr-ui-a-related-events id="relatedEvents"></tr-ui-a-related-events> |
| </div> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-multi-cpu-slice-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| } |
| #content { |
| flex: 1 1 auto; |
| } |
| </style> |
| <tr-ui-a-multi-event-sub-view id="content"></tr-ui-a-multi-event-sub-view> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-multi-flow-event-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| } |
| </style> |
| <tr-ui-a-multi-event-sub-view id="content"></tr-ui-a-multi-event-sub-view> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-multi-instant-event-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: block; |
| } |
| </style> |
| <div id="content"></div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-multi-object-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| font-size: 12px; |
| } |
| </style> |
| <tr-ui-b-table id="content"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-frame-power-usage-chart"> |
| <template> |
| <div id="content"></div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-power-sample-summary-table"> |
| <template> |
| <style> |
| tr-ui-b-table { |
| font-size: 12px; |
| } |
| </style> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-multi-power-sample-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: row; |
| } |
| #tables { |
| display: flex; |
| flex-direction: column; |
| width: 50%; |
| } |
| #chart { |
| width: 50%; |
| } |
| </style> |
| <div id="tables"> |
| <tr-ui-a-power-sample-summary-table id="summaryTable"> |
| </tr-ui-a-power-sample-summary-table> |
| </div> |
| <tr-ui-a-frame-power-usage-chart id="chart"> |
| </tr-ui-a-frame-power-usage-chart> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-multi-sample-sub-view"> |
| <template> |
| <style> |
| :host { display: block; } |
| #control { |
| background-color: #e6e6e6; |
| background-image: -webkit-gradient(linear, 0 0, 0 100%, |
| from(#E5E5E5), to(#D1D1D1)); |
| flex: 0 0 auto; |
| overflow-x: auto; |
| } |
| #control::-webkit-scrollbar { height: 0px; } |
| #control { |
| font-size: 12px; |
| display: flex; |
| flex-direction: row; |
| align-items: stretch; |
| margin: 1px; |
| margin-right: 2px; |
| } |
| tr-ui-b-table { |
| font-size: 12px; |
| } |
| </style> |
| <div id="control"> |
| Sample View Option |
| </div> |
| <tr-ui-b-table id="table"> |
| </tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-multi-thread-slice-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| } |
| #content { |
| display: flex; |
| flex: 1 1 auto; |
| min-width: 0; |
| } |
| #content > tr-ui-a-related-events { |
| margin-left: 8px; |
| flex: 0 1 200px; |
| } |
| </style> |
| <div id="content"></div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-multi-thread-time-slice-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| } |
| #content { |
| flex: 1 1 auto; |
| min-width: 0; |
| } |
| </style> |
| <tr-ui-a-multi-event-sub-view id="content"></tr-ui-a-multi-event-sub-view> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-user-expectation-related-samples-table"> |
| <template> |
| <style> |
| #table { |
| flex: 1 1 auto; |
| align-self: stretch; |
| font-size: 12px; |
| } |
| </style> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-multi-user-expectation-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex: 1 1 auto; |
| } |
| #events { |
| margin-left: 8px; |
| flex: 0 1 200px; |
| } |
| </style> |
| <tr-ui-a-multi-event-sub-view id="realView"></tr-ui-a-multi-event-sub-view> |
| <div id="events"> |
| <tr-ui-a-user-expectation-related-samples-table id="relatedSamples"></tr-ui-a-user-expectation-related-samples-table> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-single-async-slice-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: row; |
| } |
| #events { |
| display:flex; |
| flex-direction: column; |
| } |
| </style> |
| <tr-ui-a-single-event-sub-view id="content"></tr-ui-a-single-event-sub-view> |
| <div id="events"> |
| <tr-ui-a-related-events id="relatedEvents"></tr-ui-a-related-events> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-single-cpu-slice-sub-view"> |
| <template> |
| <style> |
| table { |
| border-collapse: collapse; |
| border-width: 0; |
| margin-bottom: 25px; |
| width: 100%; |
| } |
| |
| table tr > td:first-child { |
| padding-left: 2px; |
| } |
| |
| table tr > td { |
| padding: 2px 4px 2px 4px; |
| vertical-align: text-top; |
| width: 150px; |
| } |
| |
| table td td { |
| padding: 0 0 0 0; |
| width: auto; |
| } |
| tr { |
| vertical-align: top; |
| } |
| |
| tr:nth-child(2n+0) { |
| background-color: #e2e2e2; |
| } |
| </style> |
| <table> |
| <tbody><tr> |
| <td>Running process:</td><td id="process-name"></td> |
| </tr> |
| <tr> |
| <td>Running thread:</td><td id="thread-name"></td> |
| </tr> |
| <tr> |
| <td>Start:</td> |
| <td> |
| <tr-v-ui-scalar-span id="start"> |
| </tr-v-ui-scalar-span> |
| </td> |
| </tr> |
| <tr> |
| <td>Duration:</td> |
| <td> |
| <tr-v-ui-scalar-span id="duration"> |
| </tr-v-ui-scalar-span> |
| </td> |
| </tr> |
| <tr> |
| <td>Active slices:</td><td id="running-thread"></td> |
| </tr> |
| <tr> |
| <td>Args:</td> |
| <td> |
| <tr-ui-a-generic-object-view id="args"> |
| </tr-ui-a-generic-object-view> |
| </td> |
| </tr> |
| </tbody></table> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-single-flow-event-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: block; |
| } |
| </style> |
| <tr-ui-a-single-event-sub-view id="singleEventSubView"> |
| </tr-ui-a-single-event-sub-view> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-single-frame-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: column; |
| } |
| #asv { |
| flex: 0 0 auto; |
| align-self: stretch; |
| } |
| </style> |
| <tr-ui-a-alert-sub-view id="asv"> |
| </tr-ui-a-alert-sub-view> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-single-instant-event-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: block; |
| } |
| </style> |
| <div id="content"></div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-single-object-instance-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: block; |
| } |
| |
| #snapshots > * { |
| display: block; |
| } |
| |
| :host { |
| overflow: auto; |
| display: block; |
| } |
| |
| * { |
| -webkit-user-select: text; |
| } |
| |
| .title { |
| border-bottom: 1px solid rgb(128, 128, 128); |
| font-size: 110%; |
| font-weight: bold; |
| } |
| |
| td, th { |
| font-family: monospace; |
| vertical-align: top; |
| } |
| </style> |
| <div id="content"></div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-single-object-snapshot-sub-view"> |
| <template> |
| <style> |
| #args { |
| white-space: pre; |
| } |
| |
| :host { |
| overflow: auto; |
| display: flex; |
| } |
| |
| ::content * { |
| -webkit-user-select: text; |
| } |
| |
| ::content .title { |
| border-bottom: 1px solid rgb(128, 128, 128); |
| font-size: 110%; |
| font-weight: bold; |
| } |
| |
| ::content td, th { |
| font-family: monospace; |
| vertical-align: top; |
| } |
| </style> |
| <slot></slot> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-power-sample-table"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| font-size: 12px; |
| } |
| </style> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-single-power-sample-sub-view"> |
| <template> |
| <style> |
| :host { display: block; } |
| </style> |
| <tr-ui-a-power-sample-table id="samplesTable"> |
| </tr-ui-a-power-sample-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-single-sample-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| font-size: 12px; |
| } |
| </style> |
| <tr-ui-b-table id="content"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-single-thread-slice-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: row; |
| } |
| #events { |
| display: flex; |
| flex-direction: column; |
| } |
| |
| </style> |
| <tr-ui-a-single-event-sub-view id="content"></tr-ui-a-single-event-sub-view> |
| <div id="events"> |
| <tr-ui-a-related-events id="relatedEvents"> |
| </tr-ui-a-related-events> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-single-thread-time-slice-sub-view"> |
| <template> |
| <style> |
| table { |
| border-collapse: collapse; |
| border-width: 0; |
| margin-bottom: 25px; |
| width: 100%; |
| } |
| |
| table tr > td:first-child { |
| padding-left: 2px; |
| } |
| |
| table tr > td { |
| padding: 2px 4px 2px 4px; |
| vertical-align: text-top; |
| width: 150px; |
| } |
| |
| table td td { |
| padding: 0 0 0 0; |
| width: auto; |
| } |
| tr { |
| vertical-align: top; |
| } |
| |
| tr:nth-child(2n+0) { |
| background-color: #e2e2e2; |
| } |
| </style> |
| <table> |
| <tbody><tr> |
| <td>Running process:</td><td id="process-name"></td> |
| </tr> |
| <tr> |
| <td>Running thread:</td><td id="thread-name"></td> |
| </tr> |
| <tr> |
| <td>State:</td> |
| <td><b><span id="state"></span></b></td> |
| </tr> |
| <tr> |
| <td>Start:</td> |
| <td> |
| <tr-v-ui-scalar-span id="start"> |
| </tr-v-ui-scalar-span> |
| </td> |
| </tr> |
| <tr> |
| <td>Duration:</td> |
| <td> |
| <tr-v-ui-scalar-span id="duration"> |
| </tr-v-ui-scalar-span> |
| </td> |
| </tr> |
| |
| <tr> |
| <td>On CPU:</td><td id="on-cpu"></td> |
| </tr> |
| |
| <tr> |
| <td>Running instead:</td><td id="running-instead"></td> |
| </tr> |
| |
| <tr> |
| <td>Args:</td><td id="args"></td> |
| </tr> |
| </tbody></table> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-single-user-expectation-sub-view"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: row; |
| } |
| #events { |
| display: flex; |
| flex-direction: column; |
| } |
| </style> |
| <tr-ui-a-single-event-sub-view id="realView"></tr-ui-a-single-event-sub-view> |
| <div id="events"> |
| <tr-ui-a-user-expectation-related-samples-table id="relatedSamples"></tr-ui-a-user-expectation-related-samples-table> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-a-analysis-view"> |
| <template> |
| <style> |
| :host { |
| background-color: white; |
| display: flex; |
| flex-direction: column; |
| height: 275px; |
| overflow: auto; |
| } |
| |
| :host(.tall-mode) { |
| height: 525px; |
| } |
| </style> |
| <slot></slot> |
| </template> |
| </dom-module><dom-module id="tr-ui-b-dropdown"> |
| <template> |
| <style> |
| button { |
| @apply --dropdown-button; |
| } |
| button.open { |
| @apply --dropdown-button-open; |
| } |
| dialog { |
| position: absolute; |
| margin: 0; |
| padding: 1em; |
| border: 1px solid darkgrey; |
| @apply --dropdown-dialog; |
| } |
| </style> |
| |
| <button id="button" on-tap="open">[[label]]</button> |
| |
| <dialog id="dialog" on-cancel="close" on-tap="onDialogTap_"> |
| <slot></slot> |
| </dialog> |
| </template> |
| </dom-module><dom-module id="tr-ui-b-info-bar-group"> |
| <template> |
| <style> |
| :host { |
| flex: 0 0 auto; |
| flex-direction: column; |
| display: flex; |
| } |
| </style> |
| <div id="messages"></div> |
| </template> |
| </dom-module><dom-module id="tr-ui-b-toolbar-button"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| background-color: #f8f8f8; |
| border: 1px solid rgba(0, 0, 0, 0.5); |
| color: rgba(0,0,0,0.8); |
| justify-content: center; |
| align-self: stretch; |
| min-width: 23px; |
| } |
| |
| :host(:hover) { |
| background-color: rgba(255, 255, 255, 1.0); |
| border-color: rgba(0, 0, 0, 0.8); |
| box-shadow: 0 0 .05em rgba(0, 0, 0, 0.4); |
| color: rgba(0, 0, 0, 1); |
| } |
| |
| #aligner { |
| display: flex; |
| flex: 0 0 auto; |
| align-self: center; |
| } |
| </style> |
| <div id="aligner"> |
| <slot></slot> |
| </div> |
| </template> |
| </dom-module><style> |
| .drawing-container{display:inline;overflow:auto;overflow-x:hidden;position:relative}.drawing-container-canvas{display:block;pointer-events:none;position:absolute;top:0} |
| </style><style> |
| .letter-dot-track { |
| height: 18px; |
| } |
| </style><style> |
| .chart-track { |
| height: 30px; |
| position: relative; |
| } |
| </style><style> |
| .cpu-usage-track { |
| height: 90px; |
| } |
| </style><style> |
| .power-series-track { |
| height: 90px; |
| } |
| </style><style> |
| .spacing-track{height:4px} |
| </style><style> |
| .rect-track{height:18px} |
| </style><style> |
| .thread-track{flex-direction:column;display:flex;position:relative} |
| </style><style> |
| .process-track-header{display:flex;flex:0 0 auto;background-image:-webkit-gradient(linear,0 0,100% 0,from(#E5E5E5),to(#D1D1D1));border-bottom:1px solid #8e8e8e;border-top:1px solid white;font-size:75%}.process-track-name{flex-grow:1}.process-track-name:before{content:'\25B8';padding:0 5px}.process-track-base.expanded .process-track-name:before{content:'\25BE'}.process-track-close{color:black;border:1px solid transparent;padding:0px 2px}.process-track-close:hover{border:1px solid grey} |
| </style><style> |
| .model-track { |
| flex-grow: 1; |
| } |
| </style><style> |
| .x-axis-track { |
| height: 12px; |
| } |
| |
| .x-axis-track.tall-mode { |
| height: 30px; |
| } |
| </style><dom-module id="tr-ui-timeline-track-view"> |
| <template> |
| <style> |
| :host { |
| flex-direction: column; |
| display: flex; |
| position: relative; |
| } |
| |
| :host ::content * { |
| -webkit-user-select: none; |
| cursor: default; |
| } |
| |
| #drag_box { |
| background-color: rgba(0, 0, 255, 0.25); |
| border: 1px solid rgb(0, 0, 96); |
| font-size: 75%; |
| position: fixed; |
| } |
| |
| #hint_text { |
| position: absolute; |
| bottom: 6px; |
| right: 6px; |
| font-size: 8pt; |
| } |
| </style> |
| <slot></slot> |
| |
| <div id="drag_box"></div> |
| <div id="hint_text"></div> |
| |
| <tv-ui-b-hotkey-controller id="hotkey_controller"> |
| </tv-ui-b-hotkey-controller> |
| </template> |
| </dom-module><dom-module id="tr-ui-find-control"> |
| <template> |
| <style> |
| :host { |
| -webkit-user-select: none; |
| display: flex; |
| position: relative; |
| } |
| input { |
| -webkit-user-select: auto; |
| background-color: #f8f8f8; |
| border: 1px solid rgba(0, 0, 0, 0.5); |
| box-sizing: border-box; |
| margin: 0; |
| padding: 0; |
| width: 170px; |
| } |
| input:focus { |
| background-color: white; |
| } |
| tr-ui-b-toolbar-button { |
| border-left: none; |
| margin: 0; |
| } |
| #hitCount { |
| left: 0; |
| opacity: 0.25; |
| pointer-events: none; |
| position: absolute; |
| text-align: right; |
| top: 2px; |
| width: 167px; |
| z-index: 1; |
| } |
| #spinner { |
| visibility: hidden; |
| width: 8px; |
| height: 8px; |
| left: 154px; |
| pointer-events: none; |
| position: absolute; |
| top: 4px; |
| z-index: 1; |
| |
| border: 2px solid transparent; |
| border-bottom: 2px solid rgba(0, 0, 0, 0.5); |
| border-right: 2px solid rgba(0, 0, 0, 0.5); |
| border-radius: 50%; |
| } |
| @keyframes spin { 100% { transform: rotate(360deg); } } |
| </style> |
| |
| <input id="filter" on-blur="filterBlur" on-focus="filterFocus" on-input="filterTextChanged" on-keydown="filterKeyDown" on-mouseup="filterMouseUp" type="text"/> |
| <div id="spinner"></div> |
| <tr-ui-b-toolbar-button on-click="findPrevious"> |
| ← |
| </tr-ui-b-toolbar-button> |
| <tr-ui-b-toolbar-button on-click="findNext"> |
| → |
| </tr-ui-b-toolbar-button> |
| <div id="hitCount">0 of 0</div> |
| </template> |
| </dom-module><dom-module id="tr-ui-scripting-control"> |
| <template> |
| <style> |
| :host { |
| flex: 1 1 auto; |
| } |
| .root { |
| font-family: monospace; |
| cursor: text; |
| |
| padding: 2px; |
| margin: 2px; |
| border: 1px solid rgba(0, 0, 0, 0.5); |
| background: white; |
| |
| height: 100px; |
| overflow-y: auto; |
| |
| transition-property: opacity, height, padding, margin; |
| transition-duration: .2s; |
| transition-timing-function: ease-out; |
| } |
| .hidden { |
| margin-top: 0px; |
| margin-bottom: 0px; |
| padding-top: 0px; |
| padding-bottom: 0px; |
| height: 0px; |
| opacity: 0; |
| } |
| .focused { |
| outline: auto 5px -webkit-focus-ring-color; |
| } |
| #history { |
| -webkit-user-select: text; |
| color: #777; |
| } |
| #promptContainer { |
| display: flex; |
| } |
| #promptMark { |
| width: 1em; |
| color: #468; |
| } |
| #prompt { |
| flex: 1; |
| width: 100%; |
| border: none !important; |
| background-color: inherit !important; |
| font: inherit !important; |
| text-overflow: clip !important; |
| text-decoration: none !important; |
| } |
| #prompt:focus { |
| outline: none; |
| } |
| </style> |
| |
| <div class="root hidden" id="root" on-focus="onConsoleFocus" tabindex="0"> |
| <div id="history"></div> |
| <div id="promptContainer"> |
| <span id="promptMark">></span> |
| <input id="prompt" on-blur="onConsoleBlur" on-keydown="promptKeyDown" on-keypress="promptKeyPress" type="text"/> |
| </div> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-side-panel-container"> |
| <template> |
| <style> |
| :host { |
| align-items: stretch; |
| display: flex; |
| background-color: white; |
| } |
| |
| :host([expanded]) > #side_panel_drag_handle, |
| :host([expanded]) > active-panel-container { |
| flex: 1 1 auto; |
| border-left: 1px solid black; |
| display: flex; |
| } |
| |
| :host(:not([expanded])) > #side_panel_drag_handle, |
| :host(:not([expanded])) > active-panel-container { |
| display: none; |
| } |
| |
| active-panel-container { |
| display: flex; |
| } |
| |
| tab-strip { |
| flex: 0 0 auto; |
| flex-direction: column; |
| -webkit-user-select: none; |
| background-color: rgb(236, 236, 236); |
| border-left: 1px solid black; |
| cursor: default; |
| display: flex; |
| min-width: 18px; /* workaround for flexbox and writing-mode mixing bug */ |
| padding: 10px 0 10px 0; |
| font-size: 12px; |
| } |
| |
| tab-strip > tab-strip-label { |
| flex-shrink: 0; |
| -webkit-writing-mode: vertical-rl; |
| white-space: nowrap; |
| display: inline; |
| margin-right: 1px; |
| min-height: 20px; |
| padding: 15px 3px 15px 1px; |
| } |
| |
| tab-strip > |
| tab-strip-label:not([enabled]) { |
| color: rgb(128, 128, 128); |
| } |
| |
| tab-strip > tab-strip-label[selected] { |
| background-color: white; |
| border: 1px solid rgb(163, 163, 163); |
| border-left: none; |
| padding: 14px 2px 14px 1px; |
| } |
| |
| #active_panel_container { |
| overflow: auto; |
| } |
| </style> |
| |
| <tr-ui-b-drag-handle id="side_panel_drag_handle"></tr-ui-b-drag-handle> |
| <active-panel-container id="active_panel_container"> |
| </active-panel-container> |
| <tab-strip id="tab_strip"></tab-strip> |
| </template> |
| </dom-module><dom-module id="tr-ui-timeline-view-help-overlay"> |
| <template> |
| <style> |
| :host { |
| flex: 1 1 auto; |
| flex-direction: row; |
| display: flex; |
| width: 700px; |
| } |
| .column { |
| width: 50%; |
| } |
| h2 { |
| font-size: 1.2em; |
| margin: 0; |
| margin-top: 5px; |
| text-align: center; |
| } |
| h3 { |
| margin: 0; |
| margin-left: 126px; |
| margin-top: 10px; |
| } |
| .pair { |
| flex: 1 1 auto; |
| flex-direction: row; |
| display: flex; |
| } |
| .command { |
| font-family: monospace; |
| margin-right: 5px; |
| text-align: right; |
| width: 150px; |
| } |
| .action { |
| font-size: 0.9em; |
| text-align: left; |
| width: 200px; |
| } |
| tr-ui-b-mouse-mode-icon { |
| border: 1px solid #888; |
| border-radius: 3px; |
| box-shadow: inset 0 0 2px rgba(0,0,0,0.3); |
| display: inline-block; |
| margin-right: 1px; |
| position: relative; |
| top: 4px; |
| } |
| .mouse-mode-icon.pan-mode { |
| background-position: -1px -11px; |
| } |
| .mouse-mode-icon.select-mode { |
| background-position: -1px -41px; |
| } |
| .mouse-mode-icon.zoom-mode { |
| background-position: -1px -71px; |
| } |
| .mouse-mode-icon.timing-mode { |
| background-position: -1px -101px; |
| } |
| </style> |
| <div class="column left"> |
| <h2>Navigation</h2> |
| <div class="pair"> |
| <div class="command">w/s</div> |
| <div class="action">Zoom in/out (+shift: faster)</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">a/d</div> |
| <div class="action">Pan left/right (+shift: faster)</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">→/shift-TAB</div> |
| <div class="action">Select previous event</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">←/TAB</div> |
| <div class="action">Select next event</div> |
| </div> |
| |
| <h2>Mouse Controls</h2> |
| <div class="pair"> |
| <div class="command">click</div> |
| <div class="action">Select event</div> |
| </div> |
| <div class="pair"> |
| <div class="command">alt-mousewheel</div> |
| <div class="action">Zoom in/out</div> |
| </div> |
| |
| <h3> |
| <tr-ui-b-mouse-mode-icon mode-name="SELECTION"></tr-ui-b-mouse-mode-icon> |
| Select mode |
| </h3> |
| <div class="pair"> |
| <div class="command">drag</div> |
| <div class="action">Box select</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command"><span class="mod"></span>-click/drag</div> |
| <div class="action">Add events to the current selection</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">double click</div> |
| <div class="action">Select all events with same title</div> |
| </div> |
| |
| <h3> |
| <tr-ui-b-mouse-mode-icon mode-name="PANSCAN"></tr-ui-b-mouse-mode-icon> |
| Pan mode |
| </h3> |
| <div class="pair"> |
| <div class="command">drag</div> |
| <div class="action">Pan the view</div> |
| </div> |
| |
| <h3> |
| <tr-ui-b-mouse-mode-icon mode-name="ZOOM"></tr-ui-b-mouse-mode-icon> |
| Zoom mode |
| </h3> |
| <div class="pair"> |
| <div class="command">drag</div> |
| <div class="action">Zoom in/out by dragging up/down</div> |
| </div> |
| |
| <h3> |
| <tr-ui-b-mouse-mode-icon mode-name="TIMING"></tr-ui-b-mouse-mode-icon> |
| Timing mode |
| </h3> |
| <div class="pair"> |
| <div class="command">drag</div> |
| <div class="action">Create or move markers</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">double click</div> |
| <div class="action">Set marker range to slice</div> |
| </div> |
| </div> |
| |
| <div class="column right"> |
| <h2>General</h2> |
| <div class="pair"> |
| <div class="command">1-4</div> |
| <div class="action">Switch mouse mode</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">shift</div> |
| <div class="action">Hold for temporary select</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">space</div> |
| <div class="action">Hold for temporary pan</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">/</div> |
| <div class="action">Search</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">enter</div> |
| <div class="action">Step through search results</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">f</div> |
| <div class="action">Zoom into selection</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">z/0</div> |
| <div class="action">Reset zoom and pan</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">g/G</div> |
| <div class="action">Toggle 60hz grid</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">v</div> |
| <div class="action">Highlight VSync</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">h</div> |
| <div class="action">Toggle low/high details</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">m</div> |
| <div class="action">Mark current selection</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">p</div> |
| <div class="action">Select power samples over current selection interval</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">`</div> |
| <div class="action">Show or hide the scripting console</div> |
| </div> |
| |
| <div class="pair"> |
| <div class="command">?</div> |
| <div class="action">Show help</div> |
| </div> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-timeline-view-metadata-overlay"> |
| <template> |
| <style> |
| :host { |
| width: 700px; |
| |
| overflow: auto; |
| } |
| </style> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-timeline-view"> |
| <template> |
| <style> |
| :host { |
| flex-direction: column; |
| cursor: default; |
| display: flex; |
| font-family: sans-serif; |
| padding: 0; |
| } |
| |
| #control { |
| background-color: #e6e6e6; |
| background-image: -webkit-gradient(linear, 0 0, 0 100%, |
| from(#E5E5E5), to(#D1D1D1)); |
| flex: 0 0 auto; |
| overflow-x: auto; |
| } |
| |
| #control::-webkit-scrollbar { height: 0px; } |
| |
| #control > #bar { |
| font-size: 12px; |
| display: flex; |
| flex-direction: row; |
| margin: 1px; |
| } |
| |
| #control > #bar > #title { |
| display: flex; |
| align-items: center; |
| padding-left: 8px; |
| padding-right: 8px; |
| flex: 1 1 auto; |
| overflow: hidden; |
| white-space: nowrap; |
| } |
| |
| #control > #bar > #left_controls, |
| #control > #bar > #right_controls { |
| display: flex; |
| flex-direction: row; |
| align-items: stretch; |
| flex-shrink: 0; |
| } |
| |
| #control > #bar > #left_controls > * { margin-right: 2px; } |
| #control > #bar > #right_controls > * { margin-left: 2px; } |
| #control > #collapsing_controls { display: flex; } |
| |
| middle-container { |
| flex: 1 1 auto; |
| flex-direction: row; |
| border-bottom: 1px solid #8e8e8e; |
| display: flex; |
| min-height: 0; |
| } |
| |
| middle-container ::content track-view-container { |
| flex: 1 1 auto; |
| display: flex; |
| min-height: 0; |
| min-width: 0; |
| overflow-x: hidden; |
| } |
| |
| middle-container ::content track-view-container > * { flex: 1 1 auto; } |
| middle-container > x-timeline-view-side-panel-container { flex: 0 0 auto; } |
| tr-ui-b-drag-handle { flex: 0 0 auto; } |
| tr-ui-a-analysis-view { flex: 0 0 auto; } |
| |
| tr-ui-b-dropdown { |
| --dropdown-button: { |
| -webkit-appearance: none; |
| align-items: normal; |
| background-color: rgb(248, 248, 248); |
| border: 1px solid rgba(0, 0, 0, 0.5); |
| box-sizing: content-box; |
| color: rgba(0, 0, 0, 0.8); |
| font-family: sans-serif; |
| font-size: 12px; |
| padding: 2px 5px; |
| } |
| } |
| </style> |
| |
| <tv-ui-b-hotkey-controller id="hkc"></tv-ui-b-hotkey-controller> |
| <div id="control"> |
| <div id="bar"> |
| <div id="left_controls"></div> |
| <div id="title">^_^</div> |
| <div id="right_controls"> |
| <tr-ui-b-dropdown id="flow_event_filter_dropdown" label="Flow events"></tr-ui-b-dropdown> |
| <tr-ui-b-dropdown id="process_filter_dropdown" label="Processes"></tr-ui-b-dropdown> |
| <tr-ui-b-toolbar-button id="view_metadata_button"> |
| M |
| </tr-ui-b-toolbar-button> |
| <tr-ui-b-dropdown id="view_options_dropdown" label="View Options"></tr-ui-b-dropdown> |
| <tr-ui-find-control id="view_find_control"></tr-ui-find-control> |
| <tr-ui-b-toolbar-button id="view_console_button"> |
| » |
| </tr-ui-b-toolbar-button> |
| <tr-ui-b-toolbar-button id="view_help_button"> |
| ? |
| </tr-ui-b-toolbar-button> |
| </div> |
| </div> |
| <div id="collapsing_controls"></div> |
| <tr-ui-b-info-bar-group id="import-warnings"> |
| </tr-ui-b-info-bar-group> |
| <tr-ui-b-info-bar-group id="polyfill-warning"> |
| </tr-ui-b-info-bar-group> |
| </div> |
| <middle-container> |
| <slot></slot> |
| |
| <tr-ui-side-panel-container id="side_panel_container"> |
| </tr-ui-side-panel-container> |
| </middle-container> |
| <tr-ui-b-drag-handle id="drag_handle"></tr-ui-b-drag-handle> |
| <tr-ui-a-analysis-view id="analysis"></tr-ui-a-analysis-view> |
| |
| <tr-v-ui-preferred-display-unit id="display_unit"> |
| </tr-v-ui-preferred-display-unit> |
| </template> |
| </dom-module><dom-module id="tr-ui-b-grouping-table"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| } |
| #table { |
| flex: 1 1 auto; |
| font-size: 12px; |
| } |
| </style> |
| <tr-ui-b-table id="table"></tr-ui-b-table> |
| </template> |
| </dom-module><dom-module id="tr-ui-b-grouping-table-groupby-picker"> |
| <template> |
| <style> |
| #container { |
| display: flex; |
| } |
| #container *:not(:first-child) { |
| padding-left: 3px; |
| border-left: 1px solid black; |
| margin-left: 3px; |
| } |
| </style> |
| |
| <div id="container"></div> |
| </template> |
| </dom-module><dom-module id="tr-ui-b-grouping-table-groupby-picker-group"> |
| <template> |
| <style> |
| :host { |
| white-space: nowrap; |
| } |
| #left, #right { |
| user-select: none; |
| cursor: pointer; |
| } |
| </style> |
| |
| <span id="left" on-click="moveLeft_">◀</span> |
| <input id="enabled" on-change="onEnableChanged_" type="checkbox"/> |
| <label for="enabled" id="label"></label> |
| <span id="right" on-click="moveRight_">▶</span> |
| </template> |
| </dom-module><dom-module id="tr-ui-sp-file-size-stats-side-panel"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: column; |
| } |
| toolbar { |
| align-items: center; |
| background-color: rgb(236, 236, 236); |
| border-bottom: 1px solid #8e8e8e; |
| display: flex; |
| flex-direction: row; |
| flex-direction: row; |
| flex: 0 0 auto; |
| font-size: 12px; |
| padding: 0 10px 0 10px; |
| } |
| table-container { |
| display: flex; |
| min-height: 0px; |
| overflow-y: auto; |
| } |
| </style> |
| |
| <toolbar> |
| <span><b>Group by:</b></span> |
| <tr-ui-b-grouping-table-groupby-picker id="picker"> |
| </tr-ui-b-grouping-table-groupby-picker> |
| </toolbar> |
| <table-container> |
| <tr-ui-b-grouping-table id="table"></tr-ui-b-grouping-table> |
| </table-container> |
| </template> |
| </dom-module><dom-module id="tr-v-ui-histogram-set-controls-export"> |
| <template> |
| <style> |
| :host { |
| display: grid; |
| grid-gap: 1em; |
| grid-template-rows: auto auto; |
| grid-template-columns: auto auto; |
| } |
| button { |
| -webkit-appearance: none; |
| border: 0; |
| font-size: initial; |
| padding: 5px; |
| } |
| </style> |
| |
| <button on-tap="exportRawCsv_">raw CSV</button> |
| <button on-tap="exportRawJson_">raw JSON</button> |
| <button on-tap="exportMergedCsv_">merged CSV</button> |
| <button on-tap="exportMergedJson_">merged JSON</button> |
| </template> |
| </dom-module><dom-module id="tr-v-ui-histogram-set-controls"> |
| <template> |
| <style> |
| :host { |
| display: block; |
| } |
| |
| #help, #feedback { |
| display: none; |
| margin-left: 20px; |
| } |
| |
| #search_container { |
| display: inline-flex; |
| margin-right: 20px; |
| padding-bottom: 1px; |
| border-bottom: 1px solid darkgrey; |
| } |
| |
| #search { |
| border: 0; |
| max-width: 20em; |
| outline: none; |
| } |
| |
| #clear_search { |
| visibility: hidden; |
| height: 1em; |
| stroke: black; |
| stroke-width: 16; |
| } |
| |
| #controls { |
| white-space: nowrap; |
| } |
| |
| #show_overview, #hide_overview { |
| height: 1em; |
| margin-right: 20px; |
| } |
| |
| #show_overview { |
| stroke: blue; |
| stroke-width: 16; |
| } |
| |
| #show_overview:hover { |
| background: blue; |
| stroke: white; |
| } |
| |
| #hide_overview { |
| display: none; |
| stroke-width: 18; |
| stroke: black; |
| } |
| |
| #hide_overview:hover { |
| background: black; |
| stroke: white; |
| } |
| |
| #reference_display_label { |
| display: none; |
| margin-right: 20px; |
| } |
| |
| #alpha, #alpha_slider_container { |
| display: none; |
| } |
| |
| #alpha { |
| margin-right: 20px; |
| } |
| |
| #alpha_slider_container { |
| background: white; |
| border: 1px solid black; |
| flex-direction: column; |
| padding: 0.5em; |
| position: absolute; |
| z-index: 10; /* scalar-span uses z-index :-( */ |
| } |
| |
| #alpha_slider { |
| -webkit-appearance: slider-vertical; |
| align-self: center; |
| height: 200px; |
| width: 30px; |
| } |
| |
| #statistic { |
| display: none; |
| margin-right: 20px; |
| } |
| |
| #show_visualization { |
| margin-right: 20px; |
| } |
| |
| #export { |
| margin-right: 20px; |
| } |
| </style> |
| |
| <div id="controls"> |
| <span id="search_container"> |
| <input id="search" placeholder="Find Histogram name" value="{{searchQuery::keyup}}"/> |
| <svg id="clear_search" on-tap="clearSearch_" viewBox="0 0 128 128"> |
| <g> |
| <title>Clear search</title> |
| <line x1="28" x2="100" y1="28" y2="100"></line> |
| <line x1="28" x2="100" y1="100" y2="28"></line> |
| </g> |
| </svg> |
| </span> |
| |
| <svg id="show_overview" on-tap="toggleOverviewLineCharts_" viewBox="0 0 128 128"> |
| <g> |
| <title>Show overview charts</title> |
| <line x1="19" x2="49" y1="109" y2="49"></line> |
| <line x1="49" x2="79" y1="49" y2="79"></line> |
| <line x1="79" x2="109" y1="79" y2="19"></line> |
| </g> |
| </svg> |
| <svg id="hide_overview" on-tap="toggleOverviewLineCharts_" viewBox="0 0 128 128"> |
| <g> |
| <title>Hide overview charts</title> |
| <line x1="28" x2="100" y1="28" y2="100"></line> |
| <line x1="28" x2="100" y1="100" y2="28"></line> |
| </g> |
| </svg> |
| |
| <select id="reference_display_label" value="{{referenceDisplayLabel::change}}"> |
| <option value="">Select a reference column</option> |
| </select> |
| |
| <button id="alpha" on-tap="openAlphaSlider_">α=[[alphaString]]</button> |
| <div id="alpha_slider_container"> |
| <input id="alpha_slider" max="18" min="0" on-blur="closeAlphaSlider_" on-input="updateAlpha_" type="range" value="{{alphaIndex::change}}"/> |
| </div> |
| |
| <select id="statistic" value="{{displayStatisticName::change}}"> |
| </select> |
| |
| <button id="show_visualization" on-tap="loadVisualization_">Visualize</button> |
| |
| <tr-ui-b-dropdown label="Export"> |
| <tr-v-ui-histogram-set-controls-export> |
| </tr-v-ui-histogram-set-controls-export> |
| </tr-ui-b-dropdown> |
| |
| <input checked="{{showAll::change}}" id="show_all" title="When unchecked, less important histograms are hidden." type="checkbox"/> |
| <label for="show_all" title="When unchecked, less important histograms are hidden.">Show all</label> |
| |
| <a id="help">Help</a> |
| <a id="feedback">Feedback</a> |
| </div> |
| |
| <tr-ui-b-grouping-table-groupby-picker id="picker"> |
| </tr-ui-b-grouping-table-groupby-picker> |
| </template> |
| </dom-module><dom-module id="tr-v-ui-histogram-set-table-cell"> |
| <template> |
| <style> |
| #histogram_container { |
| display: flex; |
| flex-direction: row; |
| } |
| |
| #missing, #empty, #unmergeable, #scalar { |
| flex-grow: 1; |
| } |
| |
| #open_histogram, #close_histogram, #open_histogram svg, #close_histogram svg { |
| height: 1em; |
| } |
| |
| #open_histogram svg { |
| margin-left: 4px; |
| stroke-width: 0; |
| stroke: blue; |
| fill: blue; |
| } |
| :host(:hover) #open_histogram svg { |
| background: blue; |
| stroke: white; |
| fill: white; |
| } |
| |
| #scalar { |
| flex-grow: 1; |
| white-space: nowrap; |
| } |
| |
| #histogram { |
| flex-grow: 1; |
| } |
| |
| #close_histogram svg line { |
| stroke-width: 18; |
| stroke: black; |
| } |
| #close_histogram:hover svg { |
| background: black; |
| } |
| #close_histogram:hover svg line { |
| stroke: white; |
| } |
| |
| #overview_container { |
| display: none; |
| } |
| </style> |
| |
| <div id="histogram_container"> |
| <span id="missing">(missing)</span> |
| <span id="empty">(empty)</span> |
| <span id="unmergeable">(unmergeable)</span> |
| |
| <tr-v-ui-scalar-span id="scalar" on-click="openHistogram_"></tr-v-ui-scalar-span> |
| |
| <span id="open_histogram" on-click="openHistogram_"> |
| <svg viewBox="0 0 128 128"> |
| <rect height="16" width="32" x="16" y="24"></rect> |
| <rect height="16" width="96" x="16" y="56"></rect> |
| <rect height="16" width="64" x="16" y="88"></rect> |
| </svg> |
| </span> |
| |
| <span id="histogram"></span> |
| |
| <span id="close_histogram" on-click="closeHistogram_"> |
| <svg viewBox="0 0 128 128"> |
| <line x1="28" x2="100" y1="28" y2="100"></line> |
| <line x1="28" x2="100" y1="100" y2="28"></line> |
| </svg> |
| </span> |
| </div> |
| |
| <div id="overview_container"> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-v-ui-histogram-set-table-name-cell"> |
| <template> |
| <style> |
| #name_container { |
| display: flex; |
| } |
| |
| #name { |
| overflow: hidden; |
| white-space: nowrap; |
| text-overflow: ellipsis; |
| } |
| |
| #show_overview, #hide_overview, #show_overview svg, #hide_overview svg { |
| height: 1em; |
| margin-left: 5px; |
| } |
| |
| #show_overview svg { |
| stroke: blue; |
| stroke-width: 16; |
| } |
| |
| #show_overview:hover svg { |
| background: blue; |
| stroke: white; |
| } |
| |
| #hide_overview { |
| display: none; |
| } |
| |
| #hide_overview svg { |
| stroke-width: 18; |
| stroke: black; |
| } |
| |
| #hide_overview:hover svg { |
| background: black; |
| stroke: white; |
| } |
| |
| #open_histograms, #close_histograms, #open_histograms svg, #close_histograms svg { |
| height: 1em; |
| } |
| |
| #close_histograms { |
| display: none; |
| } |
| |
| #open_histograms svg { |
| margin-left: 4px; |
| stroke-width: 0; |
| stroke: blue; |
| fill: blue; |
| } |
| #open_histograms:hover svg { |
| background: blue; |
| stroke: white; |
| fill: white; |
| } |
| |
| #close_histograms line { |
| stroke-width: 18; |
| stroke: black; |
| } |
| #close_histograms:hover { |
| background: black; |
| } |
| #close_histograms:hover line { |
| stroke: white; |
| } |
| |
| #overview_container { |
| display: none; |
| } |
| </style> |
| |
| <div id="name_container"> |
| <span id="name"></span> |
| |
| <span id="show_overview" on-click="showOverview_"> |
| <svg viewBox="0 0 128 128"> |
| <line x1="19" x2="49" y1="109" y2="49"></line> |
| <line x1="49" x2="79" y1="49" y2="79"></line> |
| <line x1="79" x2="109" y1="79" y2="19"></line> |
| </svg> |
| </span> |
| |
| <span id="hide_overview" on-click="hideOverview_"> |
| <svg viewBox="0 0 128 128"> |
| <line x1="28" x2="100" y1="28" y2="100"></line> |
| <line x1="28" x2="100" y1="100" y2="28"></line> |
| </svg> |
| </span> |
| |
| <span id="open_histograms" on-click="openHistograms_"> |
| <svg viewBox="0 0 128 128"> |
| <rect height="16" width="32" x="16" y="24"></rect> |
| <rect height="16" width="96" x="16" y="56"></rect> |
| <rect height="16" width="64" x="16" y="88"></rect> |
| </svg> |
| </span> |
| |
| <span id="close_histograms" on-click="closeHistograms_"> |
| <svg viewBox="0 0 128 128"> |
| <line x1="28" x2="100" y1="28" y2="100"></line> |
| <line x1="28" x2="100" y1="100" y2="28"></line> |
| </svg> |
| </span> |
| </div> |
| |
| <div id="overview_container"> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-v-ui-histogram-set-table"> |
| <template> |
| <style> |
| :host { |
| min-height: 0px; |
| overflow: auto; |
| } |
| #table { |
| margin-top: 5px; |
| } |
| </style> |
| |
| <tr-ui-b-table id="table"> |
| </tr-ui-b-table></template> |
| </dom-module><dom-module id="tr-v-ui-metrics-visualization"> |
| <template> |
| <style> |
| button { |
| padding: 5px; |
| font-size: 14px; |
| } |
| |
| .text_input { |
| width: 50px; |
| padding: 4px; |
| font-size: 14px; |
| } |
| |
| .error { |
| color: red; |
| display: none; |
| } |
| |
| .container { |
| position: relative; |
| display: inline-block; |
| margin-left: 15px; |
| } |
| |
| #title { |
| font-size: 20px; |
| font-weight: bold; |
| padding-bottom: 5px; |
| } |
| |
| #selectors { |
| display: block; |
| padding-bottom: 10px; |
| } |
| |
| #search_page { |
| width: 200px; |
| margin-left: 30px; |
| } |
| |
| #close { |
| display: none; |
| vertical-align: top; |
| } |
| |
| #close svg{ |
| height: 1em; |
| } |
| |
| #close svg line { |
| stroke-width: 18; |
| stroke: black; |
| } |
| |
| #close:hover svg { |
| background: black; |
| } |
| |
| #close:hover svg line { |
| stroke: white; |
| } |
| </style> |
| <span class="container" id="aggregateContainer"> |
| </span> |
| <span class="container" id="pageByPageContainer"> |
| <span id="selectors"> |
| <span id="percentile_label">Percentile Range:</span> |
| <input class="text_input" id="start" placeholder="0"/> |
| <input class="text_input" id="end" placeholder="100"/> |
| <button id="filter" on-tap="filterByPercentile_">Filter</button> |
| <input class="text_input" id="search_page" placeholder="Page Name"/> |
| <button id="search" on-tap="searchByPage_">Search</button> |
| <span class="error" id="search_error">Sorry, could not find that page!</span> |
| </span> |
| </span> |
| <div display="block" id="submetricsContainer"> |
| <span id="close"> |
| <svg viewBox="0 0 128 128"> |
| <line x1="28" x2="100" y1="28" y2="100"></line> |
| <line x1="28" x2="100" y1="100" y2="28"></line> |
| </svg> |
| </span> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-v-ui-raster-visualization"> |
| <template> |
| <style> |
| button { |
| padding: 5px; |
| font-size: 14px; |
| } |
| .error { |
| color: red; |
| display: none; |
| } |
| |
| .text_input { |
| width: 200px; |
| padding: 4px; |
| font-size: 14px; |
| } |
| |
| .selector_container{ |
| padding: 5px; |
| } |
| |
| #search { |
| display: inline-block; |
| padding-bottom: 10px; |
| } |
| |
| #search_page { |
| width: 200px; |
| } |
| |
| #pageSelector { |
| display: inline-block; |
| font-size: 12pt; |
| } |
| |
| #close { |
| display: none; |
| vertical-align: top; |
| } |
| |
| #close svg{ |
| height: 1em; |
| } |
| |
| #close svg line { |
| stroke-width: 18; |
| stroke: black; |
| } |
| |
| #close:hover svg { |
| background: black; |
| } |
| |
| #close:hover svg line { |
| stroke: white; |
| } |
| </style> |
| <span id="aggregateContainer"> |
| <div> |
| <div class="selector_container"> |
| <span id="select_page_label">Individual Page Results:</span> |
| <select id="pageSelector"> |
| <option id="select_page" value="">Select a page</option> |
| </select> |
| </div> |
| <div class="selector_container"> |
| <div id="search_page_label">Search for a page:</div> |
| <input class="text_input" id="search_page" placeholder="Page Name"/> |
| <button id="search_button">Search</button> |
| <div class="error" id="search_error">Sorry, could not find that page!</div> |
| </div> |
| </div> |
| </span> |
| <span id="pageContainer"> |
| <span id="close"> |
| <svg viewBox="0 0 128 128"> |
| <line x1="28" x2="100" y1="28" y2="100"></line> |
| <line x1="28" x2="100" y1="100" y2="28"></line> |
| </svg> |
| </span> |
| </span> |
| </template> |
| </dom-module><meta charset="utf-8"/><dom-module id="tr-v-ui-visualizations-data-container"> |
| <template> |
| <style> |
| .error { |
| color: red; |
| display: none; |
| } |
| |
| .sample{ |
| display: none; |
| } |
| |
| .subtitle{ |
| font-size: 20px; |
| font-weight: bold; |
| padding-bottom: 5px; |
| } |
| |
| .description{ |
| font-size: 15px; |
| padding-bottom: 5px; |
| } |
| |
| #title { |
| font-size: 30px; |
| font-weight: bold; |
| padding-bottom: 5px; |
| } |
| </style> |
| <div id="title">Visualizations</div> |
| <div class="error" id="data_error">Invalid data provided.</div> |
| <div id="pipeline_per_frame_container"> |
| <div class="subtitle">Graphics Pipeline and Raster Tasks</div> |
| <div class="description"> |
| When raster tasks are completed in comparison to the rest of the graphics pipeline.<br/> |
| Only pages where raster tasks are completed after beginFrame is issued are included. |
| </div> |
| <tr-v-ui-raster-visualization id="rasterVisualization"> |
| </tr-v-ui-raster-visualization> |
| </div> |
| <div id="metrics_container"> |
| <div class="subtitle">Metrics</div> |
| <div class="description">Total amount of time taken for the indicated metrics.</div> |
| <tr-v-ui-metrics-visualization class="sample" id="metricsVisualization"> |
| </tr-v-ui-metrics-visualization> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-v-ui-histogram-set-view"> |
| <template> |
| <style> |
| :host { |
| font-family: sans-serif; |
| } |
| |
| #zero { |
| color: red; |
| /* histogram-set-table is used by both metrics-side-panel and results.html. |
| * This font-size rule has no effect in results.html, but improves |
| * legibility in the metrics-side-panel, which sets font-size in order to |
| * make this table denser. |
| */ |
| font-size: initial; |
| } |
| |
| #container { |
| display: none; |
| } |
| |
| #visualizations{ |
| display: none; |
| } |
| </style> |
| |
| <div id="zero">zero Histograms</div> |
| |
| <div id="container"> |
| <tr-v-ui-histogram-set-controls id="controls"> |
| </tr-v-ui-histogram-set-controls> |
| |
| <tr-v-ui-visualizations-data-container id="visualizations"> |
| </tr-v-ui-visualizations-data-container> |
| |
| <tr-v-ui-histogram-set-table id="table"></tr-v-ui-histogram-set-table> |
| </div> |
| </template> |
| </dom-module><dom-module id="tr-ui-sp-metrics-side-panel"> |
| <template> |
| <style> |
| :host { |
| display: flex; |
| flex-direction: column; |
| } |
| div#error { |
| color: red; |
| } |
| #results { |
| font-size: 12px; |
| } |
| </style> |
| |
| <top-left-controls id="top_left_controls"></top-left-controls> |
| |
| <tr-v-ui-histogram-set-view id="results"></tr-v-ui-histogram-set-view> |
| |
| <div id="error"></div> |
| </template> |
| </dom-module><dom-module id="tr-ui-e-s-alerts-side-panel"> |
| <template> |
| <style> |
| :host { |
| display: block; |
| width: 250px; |
| } |
| #content { |
| flex-direction: column; |
| display: flex; |
| } |
| tr-ui-b-table { |
| font-size: 12px; |
| } |
| </style> |
| |
| <div id="content"> |
| <toolbar id="toolbar"></toolbar> |
| <result-area id="result_area"></result-area> |
| </div> |
| </template> |
| </dom-module><script> |
| |
| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| /* WARNING: This file is auto generated. |
| * |
| * Do not edit directly. |
| */ |
| |
| 'use strict';if(!window.CustomElements||window.CustomElements.hasNative){if(window.Polymer){throw new Error('Cannot proceed. Polymer already present.');} |
| window.Polymer={};window.Polymer.dom='shadow';} |
| (function(){function resolve(){document.body.removeAttribute('unresolved');} |
| if(window.WebComponents){addEventListener('WebComponentsReady',resolve);}else{if(document.readyState==='interactive'||document.readyState==='complete'){resolve();}else{addEventListener('DOMContentLoaded',resolve);}}}());window.Polymer={Settings:function(){var settings=window.Polymer||{};if(!settings.noUrlSettings){var parts=location.search.slice(1).split('&');for(var i=0,o;i<parts.length&&(o=parts[i]);i++){o=o.split('=');o[0]&&(settings[o[0]]=o[1]||true);}} |
| settings.wantShadow=settings.dom==='shadow';settings.hasShadow=Boolean(Element.prototype.createShadowRoot);settings.nativeShadow=settings.hasShadow&&!window.ShadowDOMPolyfill;settings.useShadow=settings.wantShadow&&settings.hasShadow;settings.hasNativeImports=Boolean('import'in document.createElement('link'));settings.useNativeImports=settings.hasNativeImports;settings.useNativeCustomElements=!window.CustomElements||window.CustomElements.useNative;settings.useNativeShadow=settings.useShadow&&settings.nativeShadow;settings.usePolyfillProto=!settings.useNativeCustomElements&&!Object.__proto__;settings.hasNativeCSSProperties=!navigator.userAgent.match(/AppleWebKit\/601|Edge\/15/)&&window.CSS&&CSS.supports&&CSS.supports('box-shadow','0 0 0 var(--foo)');settings.useNativeCSSProperties=settings.hasNativeCSSProperties&&settings.lazyRegister&&settings.useNativeCSSProperties;settings.isIE=navigator.userAgent.match('Trident');settings.passiveTouchGestures=settings.passiveTouchGestures||false;return settings;}()};(function(){var userPolymer=window.Polymer;window.Polymer=function(prototype){if(typeof prototype==='function'){prototype=prototype.prototype;} |
| if(!prototype){prototype={};} |
| prototype=desugar(prototype);var customCtor=prototype===prototype.constructor.prototype?prototype.constructor:null;var options={prototype:prototype};if(prototype.extends){options.extends=prototype.extends;} |
| Polymer.telemetry._registrate(prototype);var ctor=document.registerElement(prototype.is,options);return customCtor||ctor;};var desugar=function(prototype){var base=Polymer.Base;if(prototype.extends){base=Polymer.Base._getExtendedPrototype(prototype.extends);} |
| prototype=Polymer.Base.chainObject(prototype,base);prototype.registerCallback();return prototype;};if(userPolymer){for(var i in userPolymer){Polymer[i]=userPolymer[i];}} |
| Polymer.Class=function(prototype){if(!prototype.factoryImpl){prototype.factoryImpl=function(){};} |
| return desugar(prototype).constructor;};}());Polymer.telemetry={registrations:[],_regLog:function(prototype){console.log('['+prototype.is+']: registered');},_registrate:function(prototype){this.registrations.push(prototype);Polymer.log&&this._regLog(prototype);},dumpRegistrations:function(){this.registrations.forEach(this._regLog);}};Object.defineProperty(window,'currentImport',{enumerable:true,configurable:true,get:function(){return(document._currentScript||document.currentScript||{}).ownerDocument;}});Polymer.RenderStatus={_ready:false,_callbacks:[],whenReady:function(cb){if(this._ready){cb();}else{this._callbacks.push(cb);}},_makeReady:function(){this._ready=true;for(var i=0;i<this._callbacks.length;i++){this._callbacks[i]();} |
| this._callbacks=[];},_catchFirstRender:function(){requestAnimationFrame(function(){Polymer.RenderStatus._makeReady();});},_afterNextRenderQueue:[],_waitingNextRender:false,afterNextRender:function(element,fn,args){this._watchNextRender();this._afterNextRenderQueue.push([element,fn,args]);},hasRendered:function(){return this._ready;},_watchNextRender:function(){if(!this._waitingNextRender){this._waitingNextRender=true;var fn=function(){Polymer.RenderStatus._flushNextRender();};if(!this._ready){this.whenReady(fn);}else{requestAnimationFrame(fn);}}},_flushNextRender:function(){var self=this;setTimeout(function(){self._flushRenderCallbacks(self._afterNextRenderQueue);self._afterNextRenderQueue=[];self._waitingNextRender=false;});},_flushRenderCallbacks:function(callbacks){for(var i=0,h;i<callbacks.length;i++){h=callbacks[i];h[1].apply(h[0],h[2]||Polymer.nar);}}};if(window.HTMLImports){HTMLImports.whenReady(function(){Polymer.RenderStatus._catchFirstRender();});}else{Polymer.RenderStatus._catchFirstRender();} |
| Polymer.ImportStatus=Polymer.RenderStatus;Polymer.ImportStatus.whenLoaded=Polymer.ImportStatus.whenReady;(function(){'use strict';var settings=Polymer.Settings;Polymer.Base={__isPolymerInstance__:true,_addFeature:function(feature){this.mixin(this,feature);},registerCallback:function(){if(settings.lazyRegister==='max'){if(this.beforeRegister){this.beforeRegister();}}else{this._desugarBehaviors();for(var i=0,b;i<this.behaviors.length;i++){b=this.behaviors[i];if(b.beforeRegister){b.beforeRegister.call(this);}} |
| if(this.beforeRegister){this.beforeRegister();}} |
| this._registerFeatures();if(!settings.lazyRegister){this.ensureRegisterFinished();}},createdCallback:function(){if(settings.disableUpgradeEnabled){if(this.hasAttribute('disable-upgrade')){this._propertySetter=disableUpgradePropertySetter;this._configValue=null;this.__data__={};return;}else{this.__hasInitialized=true;}} |
| this.__initialize();},__initialize:function(){if(!this.__hasRegisterFinished){this._ensureRegisterFinished(this.__proto__);} |
| Polymer.telemetry.instanceCount++;this.root=this;for(var i=0,b;i<this.behaviors.length;i++){b=this.behaviors[i];if(b.created){b.created.call(this);}} |
| if(this.created){this.created();} |
| this._initFeatures();},ensureRegisterFinished:function(){this._ensureRegisterFinished(this);},_ensureRegisterFinished:function(proto){if(proto.__hasRegisterFinished!==proto.is||!proto.is){if(settings.lazyRegister==='max'){proto._desugarBehaviors();for(var i=0,b;i<proto.behaviors.length;i++){b=proto.behaviors[i];if(b.beforeRegister){b.beforeRegister.call(proto);}}} |
| proto.__hasRegisterFinished=proto.is;if(proto._finishRegisterFeatures){proto._finishRegisterFeatures();} |
| for(var j=0,pb;j<proto.behaviors.length;j++){pb=proto.behaviors[j];if(pb.registered){pb.registered.call(proto);}} |
| if(proto.registered){proto.registered();} |
| if(settings.usePolyfillProto&&proto!==this){proto.extend(this,proto);}}},attachedCallback:function(){var self=this;Polymer.RenderStatus.whenReady(function(){self.isAttached=true;for(var i=0,b;i<self.behaviors.length;i++){b=self.behaviors[i];if(b.attached){b.attached.call(self);}} |
| if(self.attached){self.attached();}});},detachedCallback:function(){var self=this;Polymer.RenderStatus.whenReady(function(){self.isAttached=false;for(var i=0,b;i<self.behaviors.length;i++){b=self.behaviors[i];if(b.detached){b.detached.call(self);}} |
| if(self.detached){self.detached();}});},attributeChangedCallback:function(name,oldValue,newValue){this._attributeChangedImpl(name);for(var i=0,b;i<this.behaviors.length;i++){b=this.behaviors[i];if(b.attributeChanged){b.attributeChanged.call(this,name,oldValue,newValue);}} |
| if(this.attributeChanged){this.attributeChanged(name,oldValue,newValue);}},_attributeChangedImpl:function(name){this._setAttributeToProperty(this,name);},extend:function(target,source){if(target&&source){var n$=Object.getOwnPropertyNames(source);for(var i=0,n;i<n$.length&&(n=n$[i]);i++){this.copyOwnProperty(n,source,target);}} |
| return target||source;},mixin:function(target,source){for(var i in source){target[i]=source[i];} |
| return target;},copyOwnProperty:function(name,source,target){var pd=Object.getOwnPropertyDescriptor(source,name);if(pd){Object.defineProperty(target,name,pd);}},_logger:function(level,args){if(args.length===1&&Array.isArray(args[0])){args=args[0];} |
| switch(level){case'log':case'warn':case'error':console[level].apply(console,args);break;}},_log:function(){var args=Array.prototype.slice.call(arguments,0);this._logger('log',args);},_warn:function(){var args=Array.prototype.slice.call(arguments,0);this._logger('warn',args);},_error:function(){var args=Array.prototype.slice.call(arguments,0);this._logger('error',args);},_logf:function(){return this._logPrefix.concat(this.is).concat(Array.prototype.slice.call(arguments,0));}};Polymer.Base._logPrefix=function(){var color=window.chrome&&!/edge/i.test(navigator.userAgent)||/firefox/i.test(navigator.userAgent);return color?['%c[%s::%s]:','font-weight: bold; background-color:#EEEE00;']:['[%s::%s]:'];}();Polymer.Base.chainObject=function(object,inherited){if(object&&inherited&&object!==inherited){if(!Object.__proto__){object=Polymer.Base.extend(Object.create(inherited),object);} |
| object.__proto__=inherited;} |
| return object;};Polymer.Base=Polymer.Base.chainObject(Polymer.Base,HTMLElement.prototype);Polymer.BaseDescriptors={};var disableUpgradePropertySetter;if(settings.disableUpgradeEnabled){disableUpgradePropertySetter=function(property,value){this.__data__[property]=value;};var origAttributeChangedCallback=Polymer.Base.attributeChangedCallback;Polymer.Base.attributeChangedCallback=function(name,oldValue,newValue){if(!this.__hasInitialized&&name==='disable-upgrade'){this.__hasInitialized=true;this._propertySetter=Polymer.Bind._modelApi._propertySetter;this._configValue=Polymer.Base._configValue;this.__initialize();} |
| origAttributeChangedCallback.call(this,name,oldValue,newValue);};} |
| if(window.CustomElements){Polymer.instanceof=CustomElements.instanceof;}else{Polymer.instanceof=function(obj,ctor){return obj instanceof ctor;};} |
| Polymer.isInstance=function(obj){return Boolean(obj&&obj.__isPolymerInstance__);};Polymer.telemetry.instanceCount=0;}());(function(){var modules={};var lcModules={};var findModule=function(id){return modules[id]||lcModules[id.toLowerCase()];};var DomModule=function(){return document.createElement('dom-module');};DomModule.prototype=Object.create(HTMLElement.prototype);Polymer.Base.mixin(DomModule.prototype,{createdCallback:function(){this.register();},register:function(id){id=id||this.id||this.getAttribute('name')||this.getAttribute('is');if(id){this.id=id;modules[id]=this;lcModules[id.toLowerCase()]=this;}},import:function(id,selector){if(id){var m=findModule(id);if(!m){forceDomModulesUpgrade();m=findModule(id);} |
| if(m&&selector){m=m.querySelector(selector);} |
| return m;}}});Object.defineProperty(DomModule.prototype,'constructor',{value:DomModule,configurable:true,writable:true});var cePolyfill=window.CustomElements&&!CustomElements.useNative;document.registerElement('dom-module',DomModule);function forceDomModulesUpgrade(){if(cePolyfill){var script=document._currentScript||document.currentScript;var doc=script&&script.ownerDocument||document;var modules=doc.querySelectorAll('dom-module');for(var i=modules.length-1,m;i>=0&&(m=modules[i]);i--){if(m.__upgraded__){return;}else{CustomElements.upgrade(m);}}}}}());Polymer.Base._addFeature({_prepIs:function(){if(!this.is){var module=(document._currentScript||document.currentScript).parentNode;if(module.localName==='dom-module'){var id=module.id||module.getAttribute('name')||module.getAttribute('is');this.is=id;}} |
| if(this.is){this.is=this.is.toLowerCase();}}});Polymer.Base._addFeature({behaviors:[],_desugarBehaviors:function(){if(this.behaviors.length){this.behaviors=this._desugarSomeBehaviors(this.behaviors);}},_desugarSomeBehaviors:function(behaviors){var behaviorSet=[];behaviors=this._flattenBehaviorsList(behaviors);for(var i=behaviors.length-1;i>=0;i--){var b=behaviors[i];if(behaviorSet.indexOf(b)===-1){this._mixinBehavior(b);behaviorSet.unshift(b);}} |
| return behaviorSet;},_flattenBehaviorsList:function(behaviors){var flat=[];for(var i=0;i<behaviors.length;i++){var b=behaviors[i];if(b instanceof Array){flat=flat.concat(this._flattenBehaviorsList(b));}else if(b){flat.push(b);}else{this._warn(this._logf('_flattenBehaviorsList','behavior is null, check for missing or 404 import'));}} |
| return flat;},_mixinBehavior:function(b){var n$=Object.getOwnPropertyNames(b);var useAssignment=b._noAccessors;for(var i=0,n;i<n$.length&&(n=n$[i]);i++){if(!Polymer.Base._behaviorProperties[n]&&!this.hasOwnProperty(n)){if(useAssignment){this[n]=b[n];}else{this.copyOwnProperty(n,b,this);}}}},_prepBehaviors:function(){this._prepFlattenedBehaviors(this.behaviors);},_prepFlattenedBehaviors:function(behaviors){for(var i=0,l=behaviors.length;i<l;i++){this._prepBehavior(behaviors[i]);} |
| this._prepBehavior(this);},_marshalBehaviors:function(){for(var i=0;i<this.behaviors.length;i++){this._marshalBehavior(this.behaviors[i]);} |
| this._marshalBehavior(this);}});Polymer.Base._behaviorProperties={hostAttributes:true,beforeRegister:true,registered:true,properties:true,observers:true,listeners:true,created:true,attached:true,detached:true,attributeChanged:true,ready:true,_noAccessors:true};Polymer.Base._addFeature({_getExtendedPrototype:function(tag){return this._getExtendedNativePrototype(tag);},_nativePrototypes:{},_getExtendedNativePrototype:function(tag){var p=this._nativePrototypes[tag];if(!p){p=Object.create(this.getNativePrototype(tag));var p$=Object.getOwnPropertyNames(Polymer.Base);for(var i=0,n;i<p$.length&&(n=p$[i]);i++){if(!Polymer.BaseDescriptors[n]){p[n]=Polymer.Base[n];}} |
| Object.defineProperties(p,Polymer.BaseDescriptors);this._nativePrototypes[tag]=p;} |
| return p;},getNativePrototype:function(tag){return Object.getPrototypeOf(document.createElement(tag));}});Polymer.Base._addFeature({_prepConstructor:function(){this._factoryArgs=this.extends?[this.extends,this.is]:[this.is];var ctor=function(){return this._factory(arguments);};if(this.hasOwnProperty('extends')){ctor.extends=this.extends;} |
| Object.defineProperty(this,'constructor',{value:ctor,writable:true,configurable:true});ctor.prototype=this;},_factory:function(args){var elt=document.createElement.apply(document,this._factoryArgs);if(this.factoryImpl){this.factoryImpl.apply(elt,args);} |
| return elt;}});Polymer.nob=Object.create(null);Polymer.Base._addFeature({getPropertyInfo:function(property){var info=this._getPropertyInfo(property,this.properties);if(!info){for(var i=0;i<this.behaviors.length;i++){info=this._getPropertyInfo(property,this.behaviors[i].properties);if(info){return info;}}} |
| return info||Polymer.nob;},_getPropertyInfo:function(property,properties){var p=properties&&properties[property];if(typeof p==='function'){p=properties[property]={type:p};} |
| if(p){p.defined=true;} |
| return p;},_prepPropertyInfo:function(){this._propertyInfo={};for(var i=0;i<this.behaviors.length;i++){this._addPropertyInfo(this._propertyInfo,this.behaviors[i].properties);} |
| this._addPropertyInfo(this._propertyInfo,this.properties);this._addPropertyInfo(this._propertyInfo,this._propertyEffects);},_addPropertyInfo:function(target,source){if(source){var t,s;for(var i in source){t=target[i];s=source[i];if(i[0]==='_'&&!s.readOnly){continue;} |
| if(!target[i]){target[i]={type:typeof s==='function'?s:s.type,readOnly:s.readOnly,attribute:Polymer.CaseMap.camelToDashCase(i)};}else{if(!t.type){t.type=s.type;} |
| if(!t.readOnly){t.readOnly=s.readOnly;}}}}}});(function(){var propertiesDesc={configurable:true,writable:true,enumerable:true,value:{}};Polymer.BaseDescriptors.properties=propertiesDesc;Object.defineProperty(Polymer.Base,'properties',propertiesDesc);}());Polymer.CaseMap={_caseMap:{},_rx:{dashToCamel:/-[a-z]/g,camelToDash:/([A-Z])/g},dashToCamelCase:function(dash){return this._caseMap[dash]||(this._caseMap[dash]=dash.indexOf('-')<0?dash:dash.replace(this._rx.dashToCamel,function(m){return m[1].toUpperCase();}));},camelToDashCase:function(camel){return this._caseMap[camel]||(this._caseMap[camel]=camel.replace(this._rx.camelToDash,'-$1').toLowerCase());}};Polymer.Base._addFeature({_addHostAttributes:function(attributes){if(!this._aggregatedAttributes){this._aggregatedAttributes={};} |
| if(attributes){this.mixin(this._aggregatedAttributes,attributes);}},_marshalHostAttributes:function(){if(this._aggregatedAttributes){this._applyAttributes(this,this._aggregatedAttributes);}},_applyAttributes:function(node,attr$){for(var n in attr$){if(!this.hasAttribute(n)&&n!=='class'){var v=attr$[n];this.serializeValueToAttribute(v,n,this);}}},_marshalAttributes:function(){this._takeAttributesToModel(this);},_takeAttributesToModel:function(model){if(this.hasAttributes()){for(var i in this._propertyInfo){var info=this._propertyInfo[i];if(this.hasAttribute(info.attribute)){this._setAttributeToProperty(model,info.attribute,i,info);}}}},_setAttributeToProperty:function(model,attribute,property,info){if(!this._serializing){property=property||Polymer.CaseMap.dashToCamelCase(attribute);info=info||this._propertyInfo&&this._propertyInfo[property];if(info&&!info.readOnly){var v=this.getAttribute(attribute);model[property]=this.deserialize(v,info.type);}}},_serializing:false,reflectPropertyToAttribute:function(property,attribute,value){this._serializing=true;value=value===undefined?this[property]:value;this.serializeValueToAttribute(value,attribute||Polymer.CaseMap.camelToDashCase(property));this._serializing=false;},serializeValueToAttribute:function(value,attribute,node){var str=this.serialize(value);node=node||this;if(str===undefined){node.removeAttribute(attribute);}else{node.setAttribute(attribute,str);}},deserialize:function(value,type){switch(type){case Number:value=Number(value);break;case Boolean:value=value!=null;break;case Object:try{value=JSON.parse(value);}catch(x){} |
| break;case Array:try{value=JSON.parse(value);}catch(x){value=null;console.warn('Polymer::Attributes: couldn`t decode Array as JSON');} |
| break;case Date:value=new Date(value);break;case String:default:break;} |
| return value;},serialize:function(value){switch(typeof value){case'boolean':return value?'':undefined;case'object':if(value instanceof Date){return value.toString();}else if(value){try{return JSON.stringify(value);}catch(x){return'';}} |
| default:return value!=null?value:undefined;}}});Polymer.version="1.11.3";Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs();this._prepBehaviors();this._prepConstructor();this._prepPropertyInfo();},_prepBehavior:function(b){this._addHostAttributes(b.hostAttributes);},_marshalBehavior:function(b){},_initFeatures:function(){this._marshalHostAttributes();this._marshalBehaviors();}});(function(){function resolveCss(cssText,ownerDocument){return cssText.replace(CSS_URL_RX,function(m,pre,url,post){return pre+'\''+resolve(url.replace(/["']/g,''),ownerDocument)+'\''+post;});} |
| function resolveAttrs(element,ownerDocument){for(var name in URL_ATTRS){var a$=URL_ATTRS[name];for(var i=0,l=a$.length,a,at,v;i<l&&(a=a$[i]);i++){if(name==='*'||element.localName===name){at=element.attributes[a];v=at&&at.value;if(v&&v.search(BINDING_RX)<0){at.value=a==='style'?resolveCss(v,ownerDocument):resolve(v,ownerDocument);}}}}} |
| function resolve(url,ownerDocument){if(url&&ABS_URL.test(url)){return url;} |
| var resolver=getUrlResolver(ownerDocument);resolver.href=url;return resolver.href||url;} |
| var tempDoc;var tempDocBase;function resolveUrl(url,baseUri){if(!tempDoc){tempDoc=document.implementation.createHTMLDocument('temp');tempDocBase=tempDoc.createElement('base');tempDoc.head.appendChild(tempDocBase);} |
| tempDocBase.href=baseUri;return resolve(url,tempDoc);} |
| function getUrlResolver(ownerDocument){return ownerDocument.body.__urlResolver||(ownerDocument.body.__urlResolver=ownerDocument.createElement('a'));} |
| function pathFromUrl(url){return url.substring(0,url.lastIndexOf('/')+1);} |
| var CSS_URL_RX=/(url\()([^)]*)(\))/g;var URL_ATTRS={'*':['href','src','style','url'],form:['action']};var ABS_URL=/(^\/)|(^#)|(^[\w-\d]*:)/;var BINDING_RX=/\{\{|\[\[/;Polymer.ResolveUrl={resolveCss:resolveCss,resolveAttrs:resolveAttrs,resolveUrl:resolveUrl,pathFromUrl:pathFromUrl};Polymer.rootPath=Polymer.Settings.rootPath||pathFromUrl(document.baseURI||window.location.href);}());Polymer.Base._addFeature({_prepTemplate:function(){var module;if(this._template===undefined){module=Polymer.DomModule.import(this.is);this._template=module&&module.querySelector('template');} |
| if(module){var assetPath=module.getAttribute('assetpath')||'';var importURL=Polymer.ResolveUrl.resolveUrl(assetPath,module.ownerDocument.baseURI);this._importPath=Polymer.ResolveUrl.pathFromUrl(importURL);}else{this._importPath='';} |
| if(this._template&&this._template.hasAttribute('is')){this._warn(this._logf('_prepTemplate','top-level Polymer template '+'must not be a type-extension, found',this._template,'Move inside simple <template>.'));} |
| if(this._template&&!this._template.content&&window.HTMLTemplateElement&&HTMLTemplateElement.decorate){HTMLTemplateElement.decorate(this._template);}},_stampTemplate:function(){if(this._template){this.root=this.instanceTemplate(this._template);}},instanceTemplate:function(template){var dom=document.importNode(template._content||template.content,true);return dom;}});(function(){var baseAttachedCallback=Polymer.Base.attachedCallback;var baseDetachedCallback=Polymer.Base.detachedCallback;Polymer.Base._addFeature({_hostStack:[],ready:function(){},_registerHost:function(host){this.dataHost=host=host||Polymer.Base._hostStack[Polymer.Base._hostStack.length-1];if(host&&host._clients){host._clients.push(this);} |
| this._clients=null;this._clientsReadied=false;},_beginHosting:function(){Polymer.Base._hostStack.push(this);if(!this._clients){this._clients=[];}},_endHosting:function(){Polymer.Base._hostStack.pop();},_tryReady:function(){this._readied=false;if(this._canReady()){this._ready();}},_canReady:function(){return!this.dataHost||this.dataHost._clientsReadied;},_ready:function(){this._beforeClientsReady();if(this._template){this._setupRoot();this._readyClients();} |
| this._clientsReadied=true;this._clients=null;this._afterClientsReady();this._readySelf();},_readyClients:function(){this._beginDistribute();var c$=this._clients;if(c$){for(var i=0,l=c$.length,c;i<l&&(c=c$[i]);i++){c._ready();}} |
| this._finishDistribute();},_readySelf:function(){for(var i=0,b;i<this.behaviors.length;i++){b=this.behaviors[i];if(b.ready){b.ready.call(this);}} |
| if(this.ready){this.ready();} |
| this._readied=true;if(this._attachedPending){this._attachedPending=false;this.attachedCallback();}},_beforeClientsReady:function(){},_afterClientsReady:function(){},_beforeAttached:function(){},attachedCallback:function(){if(this._readied){this._beforeAttached();baseAttachedCallback.call(this);}else{this._attachedPending=true;}},detachedCallback:function(){if(this._readied){baseDetachedCallback.call(this);}else{this._attachedPending=false;}}});}());Polymer.ArraySplice=function(){function newSplice(index,removed,addedCount){return{index:index,removed:removed,addedCount:addedCount};} |
| var EDIT_LEAVE=0;var EDIT_UPDATE=1;var EDIT_ADD=2;var EDIT_DELETE=3;function ArraySplice(){} |
| ArraySplice.prototype={calcEditDistances:function(current,currentStart,currentEnd,old,oldStart,oldEnd){var rowCount=oldEnd-oldStart+1;var columnCount=currentEnd-currentStart+1;var distances=new Array(rowCount);for(var i=0;i<rowCount;i++){distances[i]=new Array(columnCount);distances[i][0]=i;} |
| for(var j=0;j<columnCount;j++) |
| distances[0][j]=j;for(i=1;i<rowCount;i++){for(j=1;j<columnCount;j++){if(this.equals(current[currentStart+j-1],old[oldStart+i-1])) |
| distances[i][j]=distances[i-1][j-1];else{var north=distances[i-1][j]+1;var west=distances[i][j-1]+1;distances[i][j]=north<west?north:west;}}} |
| return distances;},spliceOperationsFromEditDistances:function(distances){var i=distances.length-1;var j=distances[0].length-1;var current=distances[i][j];var edits=[];while(i>0||j>0){if(i==0){edits.push(EDIT_ADD);j--;continue;} |
| if(j==0){edits.push(EDIT_DELETE);i--;continue;} |
| var northWest=distances[i-1][j-1];var west=distances[i-1][j];var north=distances[i][j-1];var min;if(west<north) |
| min=west<northWest?west:northWest;else |
| min=north<northWest?north:northWest;if(min==northWest){if(northWest==current){edits.push(EDIT_LEAVE);}else{edits.push(EDIT_UPDATE);current=northWest;} |
| i--;j--;}else if(min==west){edits.push(EDIT_DELETE);i--;current=west;}else{edits.push(EDIT_ADD);j--;current=north;}} |
| edits.reverse();return edits;},calcSplices:function(current,currentStart,currentEnd,old,oldStart,oldEnd){var prefixCount=0;var suffixCount=0;var minLength=Math.min(currentEnd-currentStart,oldEnd-oldStart);if(currentStart==0&&oldStart==0) |
| prefixCount=this.sharedPrefix(current,old,minLength);if(currentEnd==current.length&&oldEnd==old.length) |
| suffixCount=this.sharedSuffix(current,old,minLength-prefixCount);currentStart+=prefixCount;oldStart+=prefixCount;currentEnd-=suffixCount;oldEnd-=suffixCount;if(currentEnd-currentStart==0&&oldEnd-oldStart==0) |
| return[];if(currentStart==currentEnd){var splice=newSplice(currentStart,[],0);while(oldStart<oldEnd) |
| splice.removed.push(old[oldStart++]);return[splice];}else if(oldStart==oldEnd) |
| return[newSplice(currentStart,[],currentEnd-currentStart)];var ops=this.spliceOperationsFromEditDistances(this.calcEditDistances(current,currentStart,currentEnd,old,oldStart,oldEnd));splice=undefined;var splices=[];var index=currentStart;var oldIndex=oldStart;for(var i=0;i<ops.length;i++){switch(ops[i]){case EDIT_LEAVE:if(splice){splices.push(splice);splice=undefined;} |
| index++;oldIndex++;break;case EDIT_UPDATE:if(!splice) |
| splice=newSplice(index,[],0);splice.addedCount++;index++;splice.removed.push(old[oldIndex]);oldIndex++;break;case EDIT_ADD:if(!splice) |
| splice=newSplice(index,[],0);splice.addedCount++;index++;break;case EDIT_DELETE:if(!splice) |
| splice=newSplice(index,[],0);splice.removed.push(old[oldIndex]);oldIndex++;break;}} |
| if(splice){splices.push(splice);} |
| return splices;},sharedPrefix:function(current,old,searchLength){for(var i=0;i<searchLength;i++) |
| if(!this.equals(current[i],old[i])) |
| return i;return searchLength;},sharedSuffix:function(current,old,searchLength){var index1=current.length;var index2=old.length;var count=0;while(count<searchLength&&this.equals(current[--index1],old[--index2])) |
| count++;return count;},calculateSplices:function(current,previous){return this.calcSplices(current,0,current.length,previous,0,previous.length);},equals:function(currentValue,previousValue){return currentValue===previousValue;}};return new ArraySplice();}();Polymer.domInnerHTML=function(){var escapeAttrRegExp=/[&\u00A0"]/g;var escapeDataRegExp=/[&\u00A0<>]/g;function escapeReplace(c){switch(c){case'&':return'&';case'<':return'<';case'>':return'>';case'"':return'"';case'\xA0':return' ';}} |
| function escapeAttr(s){return s.replace(escapeAttrRegExp,escapeReplace);} |
| function escapeData(s){return s.replace(escapeDataRegExp,escapeReplace);} |
| function makeSet(arr){var set={};for(var i=0;i<arr.length;i++){set[arr[i]]=true;} |
| return set;} |
| var voidElements=makeSet(['area','base','br','col','command','embed','hr','img','input','keygen','link','meta','param','source','track','wbr']);var plaintextParents=makeSet(['style','script','xmp','iframe','noembed','noframes','plaintext','noscript']);function getOuterHTML(node,parentNode,composed){switch(node.nodeType){case Node.ELEMENT_NODE:var tagName=node.localName;var s='<'+tagName;var attrs=node.attributes;for(var i=0,attr;attr=attrs[i];i++){s+=' '+attr.name+'="'+escapeAttr(attr.value)+'"';} |
| s+='>';if(voidElements[tagName]){return s;} |
| return s+getInnerHTML(node,composed)+'</'+tagName+'>';case Node.TEXT_NODE:var data=node.data;if(parentNode&&plaintextParents[parentNode.localName]){return data;} |
| return escapeData(data);case Node.COMMENT_NODE:return'<!--'+node.data+'-->';default:console.error(node);throw new Error('not implemented');}} |
| function getInnerHTML(node,composed){if(node instanceof HTMLTemplateElement) |
| node=node.content;var s='';var c$=Polymer.dom(node).childNodes;for(var i=0,l=c$.length,child;i<l&&(child=c$[i]);i++){s+=getOuterHTML(child,node,composed);} |
| return s;} |
| return{getInnerHTML:getInnerHTML};}();(function(){'use strict';var nativeInsertBefore=Element.prototype.insertBefore;var nativeAppendChild=Element.prototype.appendChild;var nativeRemoveChild=Element.prototype.removeChild;Polymer.TreeApi={arrayCopyChildNodes:function(parent){var copy=[],i=0;for(var n=parent.firstChild;n;n=n.nextSibling){copy[i++]=n;} |
| return copy;},arrayCopyChildren:function(parent){var copy=[],i=0;for(var n=parent.firstElementChild;n;n=n.nextElementSibling){copy[i++]=n;} |
| return copy;},arrayCopy:function(a$){var l=a$.length;var copy=new Array(l);for(var i=0;i<l;i++){copy[i]=a$[i];} |
| return copy;}};Polymer.TreeApi.Logical={hasParentNode:function(node){return Boolean(node.__dom&&node.__dom.parentNode);},hasChildNodes:function(node){return Boolean(node.__dom&&node.__dom.childNodes!==undefined);},getChildNodes:function(node){return this.hasChildNodes(node)?this._getChildNodes(node):node.childNodes;},_getChildNodes:function(node){if(!node.__dom.childNodes){node.__dom.childNodes=[];for(var n=node.__dom.firstChild;n;n=n.__dom.nextSibling){node.__dom.childNodes.push(n);}} |
| return node.__dom.childNodes;},getParentNode:function(node){return node.__dom&&node.__dom.parentNode!==undefined?node.__dom.parentNode:node.parentNode;},getFirstChild:function(node){return node.__dom&&node.__dom.firstChild!==undefined?node.__dom.firstChild:node.firstChild;},getLastChild:function(node){return node.__dom&&node.__dom.lastChild!==undefined?node.__dom.lastChild:node.lastChild;},getNextSibling:function(node){return node.__dom&&node.__dom.nextSibling!==undefined?node.__dom.nextSibling:node.nextSibling;},getPreviousSibling:function(node){return node.__dom&&node.__dom.previousSibling!==undefined?node.__dom.previousSibling:node.previousSibling;},getFirstElementChild:function(node){return node.__dom&&node.__dom.firstChild!==undefined?this._getFirstElementChild(node):node.firstElementChild;},_getFirstElementChild:function(node){var n=node.__dom.firstChild;while(n&&n.nodeType!==Node.ELEMENT_NODE){n=n.__dom.nextSibling;} |
| return n;},getLastElementChild:function(node){return node.__dom&&node.__dom.lastChild!==undefined?this._getLastElementChild(node):node.lastElementChild;},_getLastElementChild:function(node){var n=node.__dom.lastChild;while(n&&n.nodeType!==Node.ELEMENT_NODE){n=n.__dom.previousSibling;} |
| return n;},getNextElementSibling:function(node){return node.__dom&&node.__dom.nextSibling!==undefined?this._getNextElementSibling(node):node.nextElementSibling;},_getNextElementSibling:function(node){var n=node.__dom.nextSibling;while(n&&n.nodeType!==Node.ELEMENT_NODE){n=n.__dom.nextSibling;} |
| return n;},getPreviousElementSibling:function(node){return node.__dom&&node.__dom.previousSibling!==undefined?this._getPreviousElementSibling(node):node.previousElementSibling;},_getPreviousElementSibling:function(node){var n=node.__dom.previousSibling;while(n&&n.nodeType!==Node.ELEMENT_NODE){n=n.__dom.previousSibling;} |
| return n;},saveChildNodes:function(node){if(!this.hasChildNodes(node)){node.__dom=node.__dom||{};node.__dom.firstChild=node.firstChild;node.__dom.lastChild=node.lastChild;node.__dom.childNodes=[];for(var n=node.firstChild;n;n=n.nextSibling){n.__dom=n.__dom||{};n.__dom.parentNode=node;node.__dom.childNodes.push(n);n.__dom.nextSibling=n.nextSibling;n.__dom.previousSibling=n.previousSibling;}}},recordInsertBefore:function(node,container,ref_node){container.__dom.childNodes=null;if(node.nodeType===Node.DOCUMENT_FRAGMENT_NODE){for(var n=node.firstChild;n;n=n.nextSibling){this._linkNode(n,container,ref_node);}}else{this._linkNode(node,container,ref_node);}},_linkNode:function(node,container,ref_node){node.__dom=node.__dom||{};container.__dom=container.__dom||{};if(ref_node){ref_node.__dom=ref_node.__dom||{};} |
| node.__dom.previousSibling=ref_node?ref_node.__dom.previousSibling:container.__dom.lastChild;if(node.__dom.previousSibling){node.__dom.previousSibling.__dom.nextSibling=node;} |
| node.__dom.nextSibling=ref_node||null;if(node.__dom.nextSibling){node.__dom.nextSibling.__dom.previousSibling=node;} |
| node.__dom.parentNode=container;if(ref_node){if(ref_node===container.__dom.firstChild){container.__dom.firstChild=node;}}else{container.__dom.lastChild=node;if(!container.__dom.firstChild){container.__dom.firstChild=node;}} |
| container.__dom.childNodes=null;},recordRemoveChild:function(node,container){node.__dom=node.__dom||{};container.__dom=container.__dom||{};if(node===container.__dom.firstChild){container.__dom.firstChild=node.__dom.nextSibling;} |
| if(node===container.__dom.lastChild){container.__dom.lastChild=node.__dom.previousSibling;} |
| var p=node.__dom.previousSibling;var n=node.__dom.nextSibling;if(p){p.__dom.nextSibling=n;} |
| if(n){n.__dom.previousSibling=p;} |
| node.__dom.parentNode=node.__dom.previousSibling=node.__dom.nextSibling=undefined;container.__dom.childNodes=null;}};Polymer.TreeApi.Composed={getChildNodes:function(node){return Polymer.TreeApi.arrayCopyChildNodes(node);},getParentNode:function(node){return node.parentNode;},clearChildNodes:function(node){node.textContent='';},insertBefore:function(parentNode,newChild,refChild){return nativeInsertBefore.call(parentNode,newChild,refChild||null);},appendChild:function(parentNode,newChild){return nativeAppendChild.call(parentNode,newChild);},removeChild:function(parentNode,node){return nativeRemoveChild.call(parentNode,node);}};}());Polymer.DomApi=function(){'use strict';var Settings=Polymer.Settings;var TreeApi=Polymer.TreeApi;var DomApi=function(node){this.node=needsToWrap?DomApi.wrap(node):node;};var needsToWrap=Settings.hasShadow&&!Settings.nativeShadow;DomApi.wrap=window.wrap?window.wrap:function(node){return node;};DomApi.prototype={flush:function(){Polymer.dom.flush();},deepContains:function(node){if(this.node.contains(node)){return true;} |
| var n=node;var doc=node.ownerDocument;while(n&&n!==doc&&n!==this.node){n=Polymer.dom(n).parentNode||n.host;} |
| return n===this.node;},queryDistributedElements:function(selector){var c$=this.getEffectiveChildNodes();var list=[];for(var i=0,l=c$.length,c;i<l&&(c=c$[i]);i++){if(c.nodeType===Node.ELEMENT_NODE&&DomApi.matchesSelector.call(c,selector)){list.push(c);}} |
| return list;},getEffectiveChildNodes:function(){var list=[];var c$=this.childNodes;for(var i=0,l=c$.length,c;i<l&&(c=c$[i]);i++){if(c.localName===CONTENT){var d$=dom(c).getDistributedNodes();for(var j=0;j<d$.length;j++){list.push(d$[j]);}}else{list.push(c);}} |
| return list;},observeNodes:function(callback){if(callback){if(!this.observer){this.observer=this.node.localName===CONTENT?new DomApi.DistributedNodesObserver(this):new DomApi.EffectiveNodesObserver(this);} |
| return this.observer.addListener(callback);}},unobserveNodes:function(handle){if(this.observer){this.observer.removeListener(handle);}},notifyObserver:function(){if(this.observer){this.observer.notify();}},_query:function(matcher,node,halter){node=node||this.node;var list=[];this._queryElements(TreeApi.Logical.getChildNodes(node),matcher,halter,list);return list;},_queryElements:function(elements,matcher,halter,list){for(var i=0,l=elements.length,c;i<l&&(c=elements[i]);i++){if(c.nodeType===Node.ELEMENT_NODE){if(this._queryElement(c,matcher,halter,list)){return true;}}}},_queryElement:function(node,matcher,halter,list){var result=matcher(node);if(result){list.push(node);} |
| if(halter&&halter(result)){return result;} |
| this._queryElements(TreeApi.Logical.getChildNodes(node),matcher,halter,list);}};var CONTENT=DomApi.CONTENT='content';var dom=DomApi.factory=function(node){node=node||document;if(!node.__domApi){node.__domApi=new DomApi.ctor(node);} |
| return node.__domApi;};DomApi.hasApi=function(node){return Boolean(node.__domApi);};DomApi.ctor=DomApi;Polymer.dom=function(obj,patch){if(obj instanceof Event){return Polymer.EventApi.factory(obj);}else{return DomApi.factory(obj,patch);}};var p=Element.prototype;DomApi.matchesSelector=p.matches||p.matchesSelector||p.mozMatchesSelector||p.msMatchesSelector||p.oMatchesSelector||p.webkitMatchesSelector;return DomApi;}();(function(){'use strict';var Settings=Polymer.Settings;var DomApi=Polymer.DomApi;var dom=DomApi.factory;var TreeApi=Polymer.TreeApi;var getInnerHTML=Polymer.domInnerHTML.getInnerHTML;var CONTENT=DomApi.CONTENT;if(Settings.useShadow){return;} |
| var nativeCloneNode=Element.prototype.cloneNode;var nativeImportNode=Document.prototype.importNode;Polymer.Base.mixin(DomApi.prototype,{_lazyDistribute:function(host){if(host.shadyRoot&&host.shadyRoot._distributionClean){host.shadyRoot._distributionClean=false;Polymer.dom.addDebouncer(host.debounce('_distribute',host._distributeContent));}},appendChild:function(node){return this.insertBefore(node);},insertBefore:function(node,ref_node){if(ref_node&&TreeApi.Logical.getParentNode(ref_node)!==this.node){throw Error('The ref_node to be inserted before is not a child '+'of this node');} |
| if(node.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var parent=TreeApi.Logical.getParentNode(node);if(parent){if(DomApi.hasApi(parent)){dom(parent).notifyObserver();} |
| this._removeNode(node);}else{this._removeOwnerShadyRoot(node);}} |
| if(!this._addNode(node,ref_node)){if(ref_node){ref_node=ref_node.localName===CONTENT?this._firstComposedNode(ref_node):ref_node;} |
| var container=this.node._isShadyRoot?this.node.host:this.node;if(ref_node){TreeApi.Composed.insertBefore(container,node,ref_node);}else{TreeApi.Composed.appendChild(container,node);}} |
| this.notifyObserver();return node;},_addNode:function(node,ref_node){var root=this.getOwnerRoot();if(root){var ipAdded=this._maybeAddInsertionPoint(node,this.node);if(!root._invalidInsertionPoints){root._invalidInsertionPoints=ipAdded;} |
| this._addNodeToHost(root.host,node);} |
| if(TreeApi.Logical.hasChildNodes(this.node)){TreeApi.Logical.recordInsertBefore(node,this.node,ref_node);} |
| var handled=this._maybeDistribute(node)||this.node.shadyRoot;if(handled){if(node.nodeType===Node.DOCUMENT_FRAGMENT_NODE){while(node.firstChild){TreeApi.Composed.removeChild(node,node.firstChild);}}else{var parent=TreeApi.Composed.getParentNode(node);if(parent){TreeApi.Composed.removeChild(parent,node);}}} |
| return handled;},removeChild:function(node){if(TreeApi.Logical.getParentNode(node)!==this.node){throw Error('The node to be removed is not a child of this node: '+node);} |
| if(!this._removeNode(node)){var container=this.node._isShadyRoot?this.node.host:this.node;var parent=TreeApi.Composed.getParentNode(node);if(container===parent){TreeApi.Composed.removeChild(container,node);}} |
| this.notifyObserver();return node;},_removeNode:function(node){var logicalParent=TreeApi.Logical.hasParentNode(node)&&TreeApi.Logical.getParentNode(node);var distributed;var root=this._ownerShadyRootForNode(node);if(logicalParent){distributed=dom(node)._maybeDistributeParent();TreeApi.Logical.recordRemoveChild(node,logicalParent);if(root&&this._removeDistributedChildren(root,node)){root._invalidInsertionPoints=true;this._lazyDistribute(root.host);}} |
| this._removeOwnerShadyRoot(node);if(root){this._removeNodeFromHost(root.host,node);} |
| return distributed;},replaceChild:function(node,ref_node){this.insertBefore(node,ref_node);this.removeChild(ref_node);return node;},_hasCachedOwnerRoot:function(node){return Boolean(node._ownerShadyRoot!==undefined);},getOwnerRoot:function(){return this._ownerShadyRootForNode(this.node);},_ownerShadyRootForNode:function(node){if(!node){return;} |
| var root=node._ownerShadyRoot;if(root===undefined){if(node._isShadyRoot){root=node;}else{var parent=TreeApi.Logical.getParentNode(node);if(parent){root=parent._isShadyRoot?parent:this._ownerShadyRootForNode(parent);}else{root=null;}} |
| if(root||document.documentElement.contains(node)){node._ownerShadyRoot=root;}} |
| return root;},_maybeDistribute:function(node){var fragContent=node.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&!node.__noContent&&dom(node).querySelector(CONTENT);var wrappedContent=fragContent&&TreeApi.Logical.getParentNode(fragContent).nodeType!==Node.DOCUMENT_FRAGMENT_NODE;var hasContent=fragContent||node.localName===CONTENT;if(hasContent){var root=this.getOwnerRoot();if(root){this._lazyDistribute(root.host);}} |
| var needsDist=this._nodeNeedsDistribution(this.node);if(needsDist){this._lazyDistribute(this.node);} |
| return needsDist||hasContent&&!wrappedContent;},_maybeAddInsertionPoint:function(node,parent){var added;if(node.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&!node.__noContent){var c$=dom(node).querySelectorAll(CONTENT);for(var i=0,n,np,na;i<c$.length&&(n=c$[i]);i++){np=TreeApi.Logical.getParentNode(n);if(np===node){np=parent;} |
| na=this._maybeAddInsertionPoint(n,np);added=added||na;}}else if(node.localName===CONTENT){TreeApi.Logical.saveChildNodes(parent);TreeApi.Logical.saveChildNodes(node);added=true;} |
| return added;},_updateInsertionPoints:function(host){var i$=host.shadyRoot._insertionPoints=dom(host.shadyRoot).querySelectorAll(CONTENT);for(var i=0,c;i<i$.length;i++){c=i$[i];TreeApi.Logical.saveChildNodes(c);TreeApi.Logical.saveChildNodes(TreeApi.Logical.getParentNode(c));}},_nodeNeedsDistribution:function(node){return node&&node.shadyRoot&&DomApi.hasInsertionPoint(node.shadyRoot);},_addNodeToHost:function(host,node){if(host._elementAdd){host._elementAdd(node);}},_removeNodeFromHost:function(host,node){if(host._elementRemove){host._elementRemove(node);}},_removeDistributedChildren:function(root,container){var hostNeedsDist;var ip$=root._insertionPoints;for(var i=0;i<ip$.length;i++){var content=ip$[i];if(this._contains(container,content)){var dc$=dom(content).getDistributedNodes();for(var j=0;j<dc$.length;j++){hostNeedsDist=true;var node=dc$[j];var parent=TreeApi.Composed.getParentNode(node);if(parent){TreeApi.Composed.removeChild(parent,node);}}}} |
| return hostNeedsDist;},_contains:function(container,node){while(node){if(node==container){return true;} |
| node=TreeApi.Logical.getParentNode(node);}},_removeOwnerShadyRoot:function(node){if(this._hasCachedOwnerRoot(node)){var c$=TreeApi.Logical.getChildNodes(node);for(var i=0,l=c$.length,n;i<l&&(n=c$[i]);i++){this._removeOwnerShadyRoot(n);}} |
| node._ownerShadyRoot=undefined;},_firstComposedNode:function(content){var n$=dom(content).getDistributedNodes();for(var i=0,l=n$.length,n,p$;i<l&&(n=n$[i]);i++){p$=dom(n).getDestinationInsertionPoints();if(p$[p$.length-1]===content){return n;}}},querySelector:function(selector){var result=this._query(function(n){return DomApi.matchesSelector.call(n,selector);},this.node,function(n){return Boolean(n);})[0];return result||null;},querySelectorAll:function(selector){return this._query(function(n){return DomApi.matchesSelector.call(n,selector);},this.node);},getDestinationInsertionPoints:function(){return this.node._destinationInsertionPoints||[];},getDistributedNodes:function(){return this.node._distributedNodes||[];},_clear:function(){while(this.childNodes.length){this.removeChild(this.childNodes[0]);}},setAttribute:function(name,value){this.node.setAttribute(name,value);this._maybeDistributeParent();},removeAttribute:function(name){this.node.removeAttribute(name);this._maybeDistributeParent();},_maybeDistributeParent:function(){if(this._nodeNeedsDistribution(this.parentNode)){this._lazyDistribute(this.parentNode);return true;}},cloneNode:function(deep){var n=nativeCloneNode.call(this.node,false);if(deep){var c$=this.childNodes;var d=dom(n);for(var i=0,nc;i<c$.length;i++){nc=dom(c$[i]).cloneNode(true);d.appendChild(nc);}} |
| return n;},importNode:function(externalNode,deep){var doc=this.node instanceof Document?this.node:this.node.ownerDocument;var n=nativeImportNode.call(doc,externalNode,false);if(deep){var c$=TreeApi.Logical.getChildNodes(externalNode);var d=dom(n);for(var i=0,nc;i<c$.length;i++){nc=dom(doc).importNode(c$[i],true);d.appendChild(nc);}} |
| return n;},_getComposedInnerHTML:function(){return getInnerHTML(this.node,true);}});Object.defineProperties(DomApi.prototype,{activeElement:{get:function(){var active=document.activeElement;if(!active){return null;} |
| var isShadyRoot=!!this.node._isShadyRoot;if(this.node!==document){if(!isShadyRoot){return null;} |
| if(this.node.host===active||!this.node.host.contains(active)){return null;}} |
| var activeRoot=dom(active).getOwnerRoot();while(activeRoot&&activeRoot!==this.node){active=activeRoot.host;activeRoot=dom(active).getOwnerRoot();} |
| if(this.node===document){return activeRoot?null:active;}else{return activeRoot===this.node?active:null;}},configurable:true},childNodes:{get:function(){var c$=TreeApi.Logical.getChildNodes(this.node);return Array.isArray(c$)?c$:TreeApi.arrayCopyChildNodes(this.node);},configurable:true},children:{get:function(){if(TreeApi.Logical.hasChildNodes(this.node)){return Array.prototype.filter.call(this.childNodes,function(n){return n.nodeType===Node.ELEMENT_NODE;});}else{return TreeApi.arrayCopyChildren(this.node);}},configurable:true},parentNode:{get:function(){return TreeApi.Logical.getParentNode(this.node);},configurable:true},firstChild:{get:function(){return TreeApi.Logical.getFirstChild(this.node);},configurable:true},lastChild:{get:function(){return TreeApi.Logical.getLastChild(this.node);},configurable:true},nextSibling:{get:function(){return TreeApi.Logical.getNextSibling(this.node);},configurable:true},previousSibling:{get:function(){return TreeApi.Logical.getPreviousSibling(this.node);},configurable:true},firstElementChild:{get:function(){return TreeApi.Logical.getFirstElementChild(this.node);},configurable:true},lastElementChild:{get:function(){return TreeApi.Logical.getLastElementChild(this.node);},configurable:true},nextElementSibling:{get:function(){return TreeApi.Logical.getNextElementSibling(this.node);},configurable:true},previousElementSibling:{get:function(){return TreeApi.Logical.getPreviousElementSibling(this.node);},configurable:true},textContent:{get:function(){var nt=this.node.nodeType;if(nt===Node.TEXT_NODE||nt===Node.COMMENT_NODE){return this.node.textContent;}else{var tc=[];for(var i=0,cn=this.childNodes,c;c=cn[i];i++){if(c.nodeType!==Node.COMMENT_NODE){tc.push(c.textContent);}} |
| return tc.join('');}},set:function(text){var nt=this.node.nodeType;if(nt===Node.TEXT_NODE||nt===Node.COMMENT_NODE){this.node.textContent=text;}else{this._clear();if(text){this.appendChild(document.createTextNode(text));}}},configurable:true},innerHTML:{get:function(){var nt=this.node.nodeType;if(nt===Node.TEXT_NODE||nt===Node.COMMENT_NODE){return null;}else{return getInnerHTML(this.node);}},set:function(text){var nt=this.node.nodeType;if(nt!==Node.TEXT_NODE||nt!==Node.COMMENT_NODE){this._clear();var d=document.createElement('div');d.innerHTML=text;var c$=TreeApi.arrayCopyChildNodes(d);for(var i=0;i<c$.length;i++){this.appendChild(c$[i]);}}},configurable:true}});DomApi.hasInsertionPoint=function(root){return Boolean(root&&root._insertionPoints.length);};}());(function(){'use strict';var Settings=Polymer.Settings;var TreeApi=Polymer.TreeApi;var DomApi=Polymer.DomApi;if(!Settings.useShadow){return;} |
| Polymer.Base.mixin(DomApi.prototype,{querySelectorAll:function(selector){return TreeApi.arrayCopy(this.node.querySelectorAll(selector));},getOwnerRoot:function(){var n=this.node;while(n){if(n.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&n.host){return n;} |
| n=n.parentNode;}},importNode:function(externalNode,deep){var doc=this.node instanceof Document?this.node:this.node.ownerDocument;return doc.importNode(externalNode,deep);},getDestinationInsertionPoints:function(){var n$=this.node.getDestinationInsertionPoints&&this.node.getDestinationInsertionPoints();return n$?TreeApi.arrayCopy(n$):[];},getDistributedNodes:function(){var n$=this.node.getDistributedNodes&&this.node.getDistributedNodes();return n$?TreeApi.arrayCopy(n$):[];}});Object.defineProperties(DomApi.prototype,{activeElement:{get:function(){var node=DomApi.wrap(this.node);var activeElement=node.activeElement;return node.contains(activeElement)?activeElement:null;},configurable:true},childNodes:{get:function(){return TreeApi.arrayCopyChildNodes(this.node);},configurable:true},children:{get:function(){return TreeApi.arrayCopyChildren(this.node);},configurable:true},textContent:{get:function(){return this.node.textContent;},set:function(value){return this.node.textContent=value;},configurable:true},innerHTML:{get:function(){return this.node.innerHTML;},set:function(value){return this.node.innerHTML=value;},configurable:true}});var forwardMethods=function(m$){for(var i=0;i<m$.length;i++){forwardMethod(m$[i]);}};var forwardMethod=function(method){DomApi.prototype[method]=function(){return this.node[method].apply(this.node,arguments);};};forwardMethods(['cloneNode','appendChild','insertBefore','removeChild','replaceChild','setAttribute','removeAttribute','querySelector']);var forwardProperties=function(f$){for(var i=0;i<f$.length;i++){forwardProperty(f$[i]);}};var forwardProperty=function(name){Object.defineProperty(DomApi.prototype,name,{get:function(){return this.node[name];},configurable:true});};forwardProperties(['parentNode','firstChild','lastChild','nextSibling','previousSibling','firstElementChild','lastElementChild','nextElementSibling','previousElementSibling']);}());Polymer.Base.mixin(Polymer.dom,{_flushGuard:0,_FLUSH_MAX:100,_needsTakeRecords:!Polymer.Settings.useNativeCustomElements,_debouncers:[],_staticFlushList:[],_finishDebouncer:null,flush:function(){this._flushGuard=0;this._prepareFlush();while(this._debouncers.length&&this._flushGuard<this._FLUSH_MAX){while(this._debouncers.length){this._debouncers.shift().complete();} |
| if(this._finishDebouncer){this._finishDebouncer.complete();} |
| this._prepareFlush();this._flushGuard++;} |
| if(this._flushGuard>=this._FLUSH_MAX){console.warn('Polymer.dom.flush aborted. Flush may not be complete.');}},_prepareFlush:function(){if(this._needsTakeRecords){CustomElements.takeRecords();} |
| for(var i=0;i<this._staticFlushList.length;i++){this._staticFlushList[i]();}},addStaticFlush:function(fn){this._staticFlushList.push(fn);},removeStaticFlush:function(fn){var i=this._staticFlushList.indexOf(fn);if(i>=0){this._staticFlushList.splice(i,1);}},addDebouncer:function(debouncer){this._debouncers.push(debouncer);this._finishDebouncer=Polymer.Debounce(this._finishDebouncer,this._finishFlush);},_finishFlush:function(){Polymer.dom._debouncers=[];}});Polymer.EventApi=function(){'use strict';var DomApi=Polymer.DomApi.ctor;var Settings=Polymer.Settings;DomApi.Event=function(event){this.event=event;};if(Settings.useShadow){DomApi.Event.prototype={get rootTarget(){return this.event.path[0];},get localTarget(){return this.event.target;},get path(){var path=this.event.path;if(!Array.isArray(path)){path=Array.prototype.slice.call(path);} |
| return path;}};}else{DomApi.Event.prototype={get rootTarget(){return this.event.target;},get localTarget(){var current=this.event.currentTarget;var currentRoot=current&&Polymer.dom(current).getOwnerRoot();var p$=this.path;for(var i=0;i<p$.length;i++){if(Polymer.dom(p$[i]).getOwnerRoot()===currentRoot){return p$[i];}}},get path(){if(!this.event._path){var path=[];var current=this.rootTarget;while(current){path.push(current);var insertionPoints=Polymer.dom(current).getDestinationInsertionPoints();if(insertionPoints.length){for(var i=0;i<insertionPoints.length-1;i++){path.push(insertionPoints[i]);} |
| current=insertionPoints[insertionPoints.length-1];}else{current=Polymer.dom(current).parentNode||current.host;}} |
| path.push(window);this.event._path=path;} |
| return this.event._path;}};} |
| var factory=function(event){if(!event.__eventApi){event.__eventApi=new DomApi.Event(event);} |
| return event.__eventApi;};return{factory:factory};}();(function(){'use strict';var DomApi=Polymer.DomApi.ctor;var useShadow=Polymer.Settings.useShadow;Object.defineProperty(DomApi.prototype,'classList',{get:function(){if(!this._classList){this._classList=new DomApi.ClassList(this);} |
| return this._classList;},configurable:true});DomApi.ClassList=function(host){this.domApi=host;this.node=host.node;};DomApi.ClassList.prototype={add:function(){this.node.classList.add.apply(this.node.classList,arguments);this._distributeParent();},remove:function(){this.node.classList.remove.apply(this.node.classList,arguments);this._distributeParent();},toggle:function(){this.node.classList.toggle.apply(this.node.classList,arguments);this._distributeParent();},_distributeParent:function(){if(!useShadow){this.domApi._maybeDistributeParent();}},contains:function(){return this.node.classList.contains.apply(this.node.classList,arguments);}};}());(function(){'use strict';var DomApi=Polymer.DomApi.ctor;var Settings=Polymer.Settings;DomApi.EffectiveNodesObserver=function(domApi){this.domApi=domApi;this.node=this.domApi.node;this._listeners=[];};DomApi.EffectiveNodesObserver.prototype={addListener:function(callback){if(!this._isSetup){this._setup();this._isSetup=true;} |
| var listener={fn:callback,_nodes:[]};this._listeners.push(listener);this._scheduleNotify();return listener;},removeListener:function(handle){var i=this._listeners.indexOf(handle);if(i>=0){this._listeners.splice(i,1);handle._nodes=[];} |
| if(!this._hasListeners()){this._cleanup();this._isSetup=false;}},_setup:function(){this._observeContentElements(this.domApi.childNodes);},_cleanup:function(){this._unobserveContentElements(this.domApi.childNodes);},_hasListeners:function(){return Boolean(this._listeners.length);},_scheduleNotify:function(){if(this._debouncer){this._debouncer.stop();} |
| this._debouncer=Polymer.Debounce(this._debouncer,this._notify);this._debouncer.context=this;Polymer.dom.addDebouncer(this._debouncer);},notify:function(){if(this._hasListeners()){this._scheduleNotify();}},_notify:function(){this._beforeCallListeners();this._callListeners();},_beforeCallListeners:function(){this._updateContentElements();},_updateContentElements:function(){this._observeContentElements(this.domApi.childNodes);},_observeContentElements:function(elements){for(var i=0,n;i<elements.length&&(n=elements[i]);i++){if(this._isContent(n)){n.__observeNodesMap=n.__observeNodesMap||new WeakMap();if(!n.__observeNodesMap.has(this)){n.__observeNodesMap.set(this,this._observeContent(n));}}}},_observeContent:function(content){var self=this;var h=Polymer.dom(content).observeNodes(function(){self._scheduleNotify();});h._avoidChangeCalculation=true;return h;},_unobserveContentElements:function(elements){for(var i=0,n,h;i<elements.length&&(n=elements[i]);i++){if(this._isContent(n)){h=n.__observeNodesMap.get(this);if(h){Polymer.dom(n).unobserveNodes(h);n.__observeNodesMap.delete(this);}}}},_isContent:function(node){return node.localName==='content';},_callListeners:function(){var o$=this._listeners;var nodes=this._getEffectiveNodes();for(var i=0,o;i<o$.length&&(o=o$[i]);i++){var info=this._generateListenerInfo(o,nodes);if(info||o._alwaysNotify){this._callListener(o,info);}}},_getEffectiveNodes:function(){return this.domApi.getEffectiveChildNodes();},_generateListenerInfo:function(listener,newNodes){if(listener._avoidChangeCalculation){return true;} |
| var oldNodes=listener._nodes;var info={target:this.node,addedNodes:[],removedNodes:[]};var splices=Polymer.ArraySplice.calculateSplices(newNodes,oldNodes);for(var i=0,s;i<splices.length&&(s=splices[i]);i++){for(var j=0,n;j<s.removed.length&&(n=s.removed[j]);j++){info.removedNodes.push(n);}} |
| for(i=0,s;i<splices.length&&(s=splices[i]);i++){for(j=s.index;j<s.index+s.addedCount;j++){info.addedNodes.push(newNodes[j]);}} |
| listener._nodes=newNodes;if(info.addedNodes.length||info.removedNodes.length){return info;}},_callListener:function(listener,info){return listener.fn.call(this.node,info);},enableShadowAttributeTracking:function(){}};if(Settings.useShadow){var baseSetup=DomApi.EffectiveNodesObserver.prototype._setup;var baseCleanup=DomApi.EffectiveNodesObserver.prototype._cleanup;Polymer.Base.mixin(DomApi.EffectiveNodesObserver.prototype,{_setup:function(){if(!this._observer){var self=this;this._mutationHandler=function(mxns){if(mxns&&mxns.length){self._scheduleNotify();}};this._observer=new MutationObserver(this._mutationHandler);this._boundFlush=function(){self._flush();};Polymer.dom.addStaticFlush(this._boundFlush);this._observer.observe(this.node,{childList:true});} |
| baseSetup.call(this);},_cleanup:function(){this._observer.disconnect();this._observer=null;this._mutationHandler=null;Polymer.dom.removeStaticFlush(this._boundFlush);baseCleanup.call(this);},_flush:function(){if(this._observer){this._mutationHandler(this._observer.takeRecords());}},enableShadowAttributeTracking:function(){if(this._observer){this._makeContentListenersAlwaysNotify();this._observer.disconnect();this._observer.observe(this.node,{childList:true,attributes:true,subtree:true});var root=this.domApi.getOwnerRoot();var host=root&&root.host;if(host&&Polymer.dom(host).observer){Polymer.dom(host).observer.enableShadowAttributeTracking();}}},_makeContentListenersAlwaysNotify:function(){for(var i=0,h;i<this._listeners.length;i++){h=this._listeners[i];h._alwaysNotify=h._isContentListener;}}});}}());(function(){'use strict';var DomApi=Polymer.DomApi.ctor;var Settings=Polymer.Settings;DomApi.DistributedNodesObserver=function(domApi){DomApi.EffectiveNodesObserver.call(this,domApi);};DomApi.DistributedNodesObserver.prototype=Object.create(DomApi.EffectiveNodesObserver.prototype);Polymer.Base.mixin(DomApi.DistributedNodesObserver.prototype,{_setup:function(){},_cleanup:function(){},_beforeCallListeners:function(){},_getEffectiveNodes:function(){return this.domApi.getDistributedNodes();}});if(Settings.useShadow){Polymer.Base.mixin(DomApi.DistributedNodesObserver.prototype,{_setup:function(){if(!this._observer){var root=this.domApi.getOwnerRoot();var host=root&&root.host;if(host){var self=this;this._observer=Polymer.dom(host).observeNodes(function(){self._scheduleNotify();});this._observer._isContentListener=true;if(this._hasAttrSelect()){Polymer.dom(host).observer.enableShadowAttributeTracking();}}}},_hasAttrSelect:function(){var select=this.node.getAttribute('select');return select&&select.match(/[[.]+/);},_cleanup:function(){var root=this.domApi.getOwnerRoot();var host=root&&root.host;if(host){Polymer.dom(host).unobserveNodes(this._observer);} |
| this._observer=null;}});}}());(function(){var DomApi=Polymer.DomApi;var TreeApi=Polymer.TreeApi;Polymer.Base._addFeature({_prepShady:function(){this._useContent=this._useContent||Boolean(this._template);},_setupShady:function(){this.shadyRoot=null;if(!this.__domApi){this.__domApi=null;} |
| if(!this.__dom){this.__dom=null;} |
| if(!this._ownerShadyRoot){this._ownerShadyRoot=undefined;}},_poolContent:function(){if(this._useContent){TreeApi.Logical.saveChildNodes(this);}},_setupRoot:function(){if(this._useContent){this._createLocalRoot();if(!this.dataHost){upgradeLogicalChildren(TreeApi.Logical.getChildNodes(this));}}},_createLocalRoot:function(){this.shadyRoot=this.root;this.shadyRoot._distributionClean=false;this.shadyRoot._hasDistributed=false;this.shadyRoot._isShadyRoot=true;this.shadyRoot._dirtyRoots=[];var i$=this.shadyRoot._insertionPoints=!this._notes||this._notes._hasContent?this.shadyRoot.querySelectorAll('content'):[];TreeApi.Logical.saveChildNodes(this.shadyRoot);for(var i=0,c;i<i$.length;i++){c=i$[i];TreeApi.Logical.saveChildNodes(c);TreeApi.Logical.saveChildNodes(c.parentNode);} |
| this.shadyRoot.host=this;},distributeContent:function(updateInsertionPoints){if(this.shadyRoot){this.shadyRoot._invalidInsertionPoints=this.shadyRoot._invalidInsertionPoints||updateInsertionPoints;var host=getTopDistributingHost(this);Polymer.dom(this)._lazyDistribute(host);}},_distributeContent:function(){if(this._useContent&&!this.shadyRoot._distributionClean){if(this.shadyRoot._invalidInsertionPoints){Polymer.dom(this)._updateInsertionPoints(this);this.shadyRoot._invalidInsertionPoints=false;} |
| this._beginDistribute();this._distributeDirtyRoots();this._finishDistribute();}},_beginDistribute:function(){if(this._useContent&&DomApi.hasInsertionPoint(this.shadyRoot)){this._resetDistribution();this._distributePool(this.shadyRoot,this._collectPool());}},_distributeDirtyRoots:function(){var c$=this.shadyRoot._dirtyRoots;for(var i=0,l=c$.length,c;i<l&&(c=c$[i]);i++){c._distributeContent();} |
| this.shadyRoot._dirtyRoots=[];},_finishDistribute:function(){if(this._useContent){this.shadyRoot._distributionClean=true;if(DomApi.hasInsertionPoint(this.shadyRoot)){this._composeTree();notifyContentObservers(this.shadyRoot);}else{if(!this.shadyRoot._hasDistributed){TreeApi.Composed.clearChildNodes(this);this.appendChild(this.shadyRoot);}else{var children=this._composeNode(this);this._updateChildNodes(this,children);}} |
| if(!this.shadyRoot._hasDistributed){notifyInitialDistribution(this);} |
| this.shadyRoot._hasDistributed=true;}},elementMatches:function(selector,node){node=node||this;return DomApi.matchesSelector.call(node,selector);},_resetDistribution:function(){var children=TreeApi.Logical.getChildNodes(this);for(var i=0;i<children.length;i++){var child=children[i];if(child._destinationInsertionPoints){child._destinationInsertionPoints=undefined;} |
| if(isInsertionPoint(child)){clearDistributedDestinationInsertionPoints(child);}} |
| var root=this.shadyRoot;var p$=root._insertionPoints;for(var j=0;j<p$.length;j++){p$[j]._distributedNodes=[];}},_collectPool:function(){var pool=[];var children=TreeApi.Logical.getChildNodes(this);for(var i=0;i<children.length;i++){var child=children[i];if(isInsertionPoint(child)){pool.push.apply(pool,child._distributedNodes);}else{pool.push(child);}} |
| return pool;},_distributePool:function(node,pool){var p$=node._insertionPoints;for(var i=0,l=p$.length,p;i<l&&(p=p$[i]);i++){this._distributeInsertionPoint(p,pool);maybeRedistributeParent(p,this);}},_distributeInsertionPoint:function(content,pool){var anyDistributed=false;for(var i=0,l=pool.length,node;i<l;i++){node=pool[i];if(!node){continue;} |
| if(this._matchesContentSelect(node,content)){distributeNodeInto(node,content);pool[i]=undefined;anyDistributed=true;}} |
| if(!anyDistributed){var children=TreeApi.Logical.getChildNodes(content);for(var j=0;j<children.length;j++){distributeNodeInto(children[j],content);}}},_composeTree:function(){this._updateChildNodes(this,this._composeNode(this));var p$=this.shadyRoot._insertionPoints;for(var i=0,l=p$.length,p,parent;i<l&&(p=p$[i]);i++){parent=TreeApi.Logical.getParentNode(p);if(!parent._useContent&&parent!==this&&parent!==this.shadyRoot){this._updateChildNodes(parent,this._composeNode(parent));}}},_composeNode:function(node){var children=[];var c$=TreeApi.Logical.getChildNodes(node.shadyRoot||node);for(var i=0;i<c$.length;i++){var child=c$[i];if(isInsertionPoint(child)){var distributedNodes=child._distributedNodes;for(var j=0;j<distributedNodes.length;j++){var distributedNode=distributedNodes[j];if(isFinalDestination(child,distributedNode)){children.push(distributedNode);}}}else{children.push(child);}} |
| return children;},_updateChildNodes:function(container,children){var composed=TreeApi.Composed.getChildNodes(container);var splices=Polymer.ArraySplice.calculateSplices(children,composed);for(var i=0,d=0,s;i<splices.length&&(s=splices[i]);i++){for(var j=0,n;j<s.removed.length&&(n=s.removed[j]);j++){if(TreeApi.Composed.getParentNode(n)===container){TreeApi.Composed.removeChild(container,n);} |
| composed.splice(s.index+d,1);} |
| d-=s.addedCount;} |
| for(var i=0,s,next;i<splices.length&&(s=splices[i]);i++){next=composed[s.index];for(j=s.index,n;j<s.index+s.addedCount;j++){n=children[j];TreeApi.Composed.insertBefore(container,n,next);composed.splice(j,0,n);}}},_matchesContentSelect:function(node,contentElement){var select=contentElement.getAttribute('select');if(!select){return true;} |
| select=select.trim();if(!select){return true;} |
| if(!(node instanceof Element)){return false;} |
| var validSelectors=/^(:not\()?[*.#[a-zA-Z_|]/;if(!validSelectors.test(select)){return false;} |
| return this.elementMatches(select,node);},_elementAdd:function(){},_elementRemove:function(){}});var domHostDesc={get:function(){var root=Polymer.dom(this).getOwnerRoot();return root&&root.host;},configurable:true};Object.defineProperty(Polymer.Base,'domHost',domHostDesc);Polymer.BaseDescriptors.domHost=domHostDesc;function distributeNodeInto(child,insertionPoint){insertionPoint._distributedNodes.push(child);var points=child._destinationInsertionPoints;if(!points){child._destinationInsertionPoints=[insertionPoint];}else{points.push(insertionPoint);}} |
| function clearDistributedDestinationInsertionPoints(content){var e$=content._distributedNodes;if(e$){for(var i=0;i<e$.length;i++){var d=e$[i]._destinationInsertionPoints;if(d){d.splice(d.indexOf(content)+1,d.length);}}}} |
| function maybeRedistributeParent(content,host){var parent=TreeApi.Logical.getParentNode(content);if(parent&&parent.shadyRoot&&DomApi.hasInsertionPoint(parent.shadyRoot)&&parent.shadyRoot._distributionClean){parent.shadyRoot._distributionClean=false;host.shadyRoot._dirtyRoots.push(parent);}} |
| function isFinalDestination(insertionPoint,node){var points=node._destinationInsertionPoints;return points&&points[points.length-1]===insertionPoint;} |
| function isInsertionPoint(node){return node.localName=='content';} |
| function getTopDistributingHost(host){while(host&&hostNeedsRedistribution(host)){host=host.domHost;} |
| return host;} |
| function hostNeedsRedistribution(host){var c$=TreeApi.Logical.getChildNodes(host);for(var i=0,c;i<c$.length;i++){c=c$[i];if(c.localName&&c.localName==='content'){return host.domHost;}}} |
| function notifyContentObservers(root){for(var i=0,c;i<root._insertionPoints.length;i++){c=root._insertionPoints[i];if(DomApi.hasApi(c)){Polymer.dom(c).notifyObserver();}}} |
| function notifyInitialDistribution(host){if(DomApi.hasApi(host)){Polymer.dom(host).notifyObserver();}} |
| var needsUpgrade=window.CustomElements&&!CustomElements.useNative;function upgradeLogicalChildren(children){if(needsUpgrade&&children){for(var i=0;i<children.length;i++){CustomElements.upgrade(children[i]);}}}}());if(Polymer.Settings.useShadow){Polymer.Base._addFeature({_poolContent:function(){},_beginDistribute:function(){},distributeContent:function(){},_distributeContent:function(){},_finishDistribute:function(){},_createLocalRoot:function(){this.createShadowRoot();this.shadowRoot.appendChild(this.root);this.root=this.shadowRoot;}});}Polymer.Async={_currVal:0,_lastVal:0,_callbacks:[],_twiddleContent:0,_twiddle:document.createTextNode(''),run:function(callback,waitTime){if(waitTime>0){return~setTimeout(callback,waitTime);}else{this._twiddle.textContent=this._twiddleContent++;this._callbacks.push(callback);return this._currVal++;}},cancel:function(handle){if(handle<0){clearTimeout(~handle);}else{var idx=handle-this._lastVal;if(idx>=0){if(!this._callbacks[idx]){throw'invalid async handle: '+handle;} |
| this._callbacks[idx]=null;}}},_atEndOfMicrotask:function(){var len=this._callbacks.length;for(var i=0;i<len;i++){var cb=this._callbacks[i];if(cb){try{cb();}catch(e){i++;this._callbacks.splice(0,i);this._lastVal+=i;this._twiddle.textContent=this._twiddleContent++;throw e;}}} |
| this._callbacks.splice(0,len);this._lastVal+=len;}};new window.MutationObserver(function(){Polymer.Async._atEndOfMicrotask();}).observe(Polymer.Async._twiddle,{characterData:true});Polymer.Debounce=function(){var Async=Polymer.Async;var Debouncer=function(context){this.context=context;var self=this;this.boundComplete=function(){self.complete();};};Debouncer.prototype={go:function(callback,wait){var h;this.finish=function(){Async.cancel(h);};h=Async.run(this.boundComplete,wait);this.callback=callback;},stop:function(){if(this.finish){this.finish();this.finish=null;this.callback=null;}},complete:function(){if(this.finish){var callback=this.callback;this.stop();callback.call(this.context);}}};function debounce(debouncer,callback,wait){if(debouncer){debouncer.stop();}else{debouncer=new Debouncer(this);} |
| debouncer.go(callback,wait);return debouncer;} |
| |