OLD | NEW |
1 <!DOCTYPE html><html><head> | 1 <!DOCTYPE html><html><head> |
2 | 2 |
3 | 3 |
4 <title>Dart VM Observatory</title> | 4 <title>Dart VM Observatory</title> |
5 <meta charset="utf-8"> | 5 <meta charset="utf-8"> |
6 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c
ss"> | 6 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c
ss"> |
7 <script type="text/javascript" src="https://www.google.com/jsapi"></script> | 7 <script type="text/javascript" src="https://www.google.com/jsapi"></script> |
8 | 8 |
9 | 9 |
10 <script src="index_devtools.html_bootstrap.dart.js"></script> | 10 <script src="index_devtools.html_bootstrap.dart.js"></script> |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 </template> | 155 </template> |
156 <template if="{{ !active }}"> | 156 <template if="{{ !active }}"> |
157 <button class="idle" on-click="{{ buttonClick }}">{{ label }}</button> | 157 <button class="idle" on-click="{{ buttonClick }}">{{ label }}</button> |
158 </template> | 158 </template> |
159 </li> | 159 </li> |
160 </template> | 160 </template> |
161 </polymer-element> | 161 </polymer-element> |
162 | 162 |
163 <polymer-element name="top-nav-menu"> | 163 <polymer-element name="top-nav-menu"> |
164 <template> | 164 <template> |
165 <nav-menu link="#" anchor="Observatory" last="{{ last }}"> | 165 <nav-menu link="#/vm" anchor="Observatory" last="{{ last }}"> |
166 <content></content> | 166 <content></content> |
167 </nav-menu> | 167 </nav-menu> |
168 </template> | 168 </template> |
169 </polymer-element> | 169 </polymer-element> |
170 | 170 |
171 <polymer-element name="isolate-nav-menu" extends="observatory-element"> | 171 <polymer-element name="isolate-nav-menu" extends="observatory-element"> |
172 <template> | 172 <template> |
173 <nav-menu link="{{ isolate.hashLink }}" anchor="{{ isolate.name }}" last="{{
last }}"> | 173 <nav-menu link="{{ isolate.hashLink }}" anchor="{{ isolate.name }}" last="{{
last }}"> |
174 <nav-menu-item link="{{ isolate.relativeHashLink('stacktrace') }}" anchor=
"stack trace"></nav-menu-item> | 174 <nav-menu-item link="{{ isolate.relativeHashLink('stacktrace') }}" anchor=
"stack trace"></nav-menu-item> |
175 <nav-menu-item link="{{ isolate.relativeHashLink('profile') }}" anchor="cp
u profile"></nav-menu-item> | 175 <nav-menu-item link="{{ isolate.relativeHashLink('profile') }}" anchor="cp
u profile"></nav-menu-item> |
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
722 Raw message... <i class="{{ iconClass }}"></i> | 722 Raw message... <i class="{{ iconClass }}"></i> |
723 </a> | 723 </a> |
724 <div style="display: {{ displayValue }}" class="well"> | 724 <div style="display: {{ displayValue }}" class="well"> |
725 <content></content> | 725 <content></content> |
726 </div> | 726 </div> |
727 </div> | 727 </div> |
728 </template> | 728 </template> |
729 | 729 |
730 </polymer-element><polymer-element name="error-view" extends="observatory-elemen
t"> | 730 </polymer-element><polymer-element name="error-view" extends="observatory-elemen
t"> |
731 <template> | 731 <template> |
| 732 <nav-bar> |
| 733 <top-nav-menu last="{{ true }}"></top-nav-menu> |
| 734 </nav-bar> |
| 735 |
732 <div class="row"> | 736 <div class="row"> |
733 <div class="col-md-8 col-md-offset-2"> | 737 <div class="col-md-8 col-md-offset-2"> |
734 <div class="panel panel-danger"> | 738 <div class="panel panel-danger"> |
735 <div class="panel-heading">{{ error.kind }}</div> | 739 <div class="panel-heading">{{ error.kind }}</div> |
736 <div class="panel-body"> | 740 <div class="panel-body"> |
737 <p>{{ error.message }}</p> | 741 <p>{{ error.message }}</p> |
738 </div> | 742 </div> |
739 </div> | 743 </div> |
740 </div> | 744 </div> |
741 </div> | 745 </div> |
742 </template> | 746 </template> |
743 | 747 |
744 </polymer-element><polymer-element name="field-view" extends="observatory-elemen
t"> | 748 </polymer-element> |
| 749 <polymer-element name="field-view" extends="observatory-element"> |
745 <template> | 750 <template> |
746 <nav-bar> | 751 <nav-bar> |
747 <top-nav-menu></top-nav-menu> | 752 <top-nav-menu></top-nav-menu> |
748 <isolate-nav-menu isolate="{{ field.isolate }}"></isolate-nav-menu> | 753 <isolate-nav-menu isolate="{{ field.isolate }}"></isolate-nav-menu> |
749 <template if="{{ field['owner'].serviceType == 'Class' }}"> | 754 <template if="{{ field['owner'].serviceType == 'Class' }}"> |
750 <!-- TODO(turnidge): Add library nav menu here. --> | 755 <!-- TODO(turnidge): Add library nav menu here. --> |
751 <class-nav-menu cls="{{ field['owner'] }}"></class-nav-menu> | 756 <class-nav-menu cls="{{ field['owner'] }}"></class-nav-menu> |
752 </template> | 757 </template> |
753 <template if="{{ field['owner'].serviceType == 'Library' }}"> | 758 <template if="{{ field['owner'].serviceType == 'Library' }}"> |
754 <library-nav-menu library="{{ field['owner'] }}"></library-nav-menu> | 759 <library-nav-menu library="{{ field['owner'] }}"></library-nav-menu> |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
880 </template> | 885 </template> |
881 | 886 |
882 </polymer-element> | 887 </polymer-element> |
883 <polymer-element name="isolate-summary" extends="observatory-element"> | 888 <polymer-element name="isolate-summary" extends="observatory-element"> |
884 <template> | 889 <template> |
885 <div class="row"> | 890 <div class="row"> |
886 <div class="col-md-1"> | 891 <div class="col-md-1"> |
887 <img src="img/isolate_icon.png" class="img-polaroid"> | 892 <img src="img/isolate_icon.png" class="img-polaroid"> |
888 </div> | 893 </div> |
889 | 894 |
890 <div class="col-md-1">{{ isolate.vmName }}</div> | 895 <div class="col-md-1">{{ isolate.mainPort }}</div> |
891 | 896 |
892 <!-- TODO(turnidge): Use function-ref when it can take isolate param --> | 897 <!-- TODO(turnidge): Use function-ref when it can take isolate param --> |
893 <div class="col-md-4"> | 898 <div class="col-md-4"> |
894 | 899 |
895 <div class="row"> | 900 <div class="row"> |
896 <isolate-ref ref="{{ isolate }}"></isolate-ref> | 901 <isolate-ref ref="{{ isolate }}"></isolate-ref> |
897 </div> | 902 </div> |
898 | 903 |
899 <div class="row"> | 904 <div class="row"> |
900 <small> | 905 <small> |
901 (<a href="{{ isolate.rootLib.hashLink }}">library</a>) | 906 (<a href="{{ isolate.rootLib.hashLink }}">library</a>) |
902 (<a href="{{ isolate.relativeHashLink('debug/breakpoints') }}">break
points</a>) | 907 (<a href="{{ isolate.relativeHashLink('debug/breakpoints') }}">break
points</a>) |
903 (<a href="{{ isolate.relativeHashLink('profile') }}">profile</a>) | 908 (<a href="{{ isolate.relativeHashLink('profile') }}">profile</a>) |
904 </small> | 909 </small> |
905 </div> | 910 </div> |
906 </div> | 911 </div> |
907 | 912 |
908 <div class="col-md-2"> | 913 <div class="col-md-2"> |
909 <div class="row"> | 914 <div class="row"> |
910 <div class="col-md-3">{{ isolate.timers['total'] | formatTime }}</div> | 915 <div class="col-md-5">{{ isolate.timers['total'] | formatTimePrecise }
}</div> |
911 <div class="col-md-1"></div> | 916 <div class="col-md-1"></div> |
912 <div class="col-md-3"><p class="text-muted">total</p></div> | 917 <div class="col-md-3"><p class="text-muted">total</p></div> |
913 </div> | 918 </div> |
914 <div class="row"> | 919 <div class="row"> |
915 <div class="col-md-3">{{ isolate.timers['dart'] | formatTime }}</div> | 920 <div class="col-md-5">{{ isolate.timers['dart'] | formatTimePrecise }}
</div> |
916 <div class="col-md-1"></div> | 921 <div class="col-md-1"></div> |
917 <div class="col-md-3"><p class="text-muted">dart</p></div> | 922 <div class="col-md-3"><p class="text-muted">dart</p></div> |
918 </div> | 923 </div> |
919 <div class="row"> | 924 <div class="row"> |
920 <div class="col-md-3">{{ isolate.timers['compile'] | formatTime }}</di
v> | 925 <div class="col-md-5">{{ isolate.timers['compile'] | formatTimePrecise
}}</div> |
921 <div class="col-md-1"></div> | 926 <div class="col-md-1"></div> |
922 <div class="col-md-3"><p class="text-muted">compile</p></div> | 927 <div class="col-md-3"><p class="text-muted">compile</p></div> |
923 </div> | 928 </div> |
924 <div class="row"> | 929 <div class="row"> |
925 <div class="col-md-3">{{ isolate.timers['gc'] | formatTime }}</div> | 930 <div class="col-md-5">{{ isolate.timers['gc'] | formatTimePrecise }}</
div> |
926 <div class="col-md-1"></div> | 931 <div class="col-md-1"></div> |
927 <div class="col-md-3"><p class="text-muted">gc</p></div> | 932 <div class="col-md-3"><p class="text-muted">gc</p></div> |
928 </div> | 933 </div> |
929 <div class="row"> | 934 <div class="row"> |
930 <div class="col-md-3">{{ isolate.timers['init'] | formatTime }}</div> | 935 <div class="col-md-5">{{ isolate.timers['init'] | formatTimePrecise }}
</div> |
931 <div class="col-md-1"></div> | 936 <div class="col-md-1"></div> |
932 <div class="col-md-3"><p class="text-muted">init</p></div> | 937 <div class="col-md-3"><p class="text-muted">init</p></div> |
933 </div> | 938 </div> |
934 </div> | 939 </div> |
935 <div class="col-md-2"> | 940 <div class="col-md-2"> |
936 <a href="{{ isolate.relativeHashLink('allocationprofile') }}"> | 941 <a href="{{ isolate.relativeHashLink('allocationprofile') }}"> |
937 {{ isolate.newHeapUsed | formatSize }}/{{ isolate.oldHeapUsed | format
Size }} | 942 {{ isolate.newHeapUsed | formatSize }}/{{ isolate.oldHeapUsed | format
Size }} |
938 </a> | 943 </a> |
939 ( <a href="{{ isolate.relativeHashLink('heapmap') }}">map</a> ) | 944 ( <a href="{{ isolate.relativeHashLink('heapmap') }}">map</a> ) |
940 </div> | 945 </div> |
(...skipping 17 matching lines...) Expand all Loading... |
958 <br> | 963 <br> |
959 <pre>{{ isolate.topFrame['line'] }} {{ isolate.topFrame['lineSt
ring'] }}</pre> | 964 <pre>{{ isolate.topFrame['line'] }} {{ isolate.topFrame['lineSt
ring'] }}</pre> |
960 </template> | 965 </template> |
961 </div> | 966 </div> |
962 <div class="col-md-3"> | 967 <div class="col-md-3"> |
963 </div> | 968 </div> |
964 </div> | 969 </div> |
965 </template> | 970 </template> |
966 | 971 |
967 </polymer-element> | 972 </polymer-element> |
968 <polymer-element name="isolate-list" extends="observatory-element"> | |
969 <template> | |
970 <nav-bar> | |
971 <top-nav-menu last="{{ true }}"></top-nav-menu> | |
972 <!-- TODO(turnidge): Why doesn't "this.refresh" work? --> | |
973 <nav-refresh callback="{{ refresh } }}"></nav-refresh> | |
974 </nav-bar> | |
975 <ul class="list-group"> | |
976 <template repeat="{{ isolate in isolates.isolates.values }}"> | |
977 <li class="list-group-item"> | |
978 <isolate-summary isolate="{{ isolate }}"></isolate-summary> | |
979 </li> | |
980 </template> | |
981 </ul> | |
982 </template> | |
983 | |
984 </polymer-element> | |
985 <polymer-element name="isolate-view" extends="observatory-element"> | 973 <polymer-element name="isolate-view" extends="observatory-element"> |
986 <template> | 974 <template> |
987 <style> | 975 <style> |
988 .content { | 976 .content { |
989 padding-left: 10%; | 977 padding-left: 10%; |
990 font: 400 14px 'Montserrat', sans-serif; | 978 font: 400 14px 'Montserrat', sans-serif; |
991 } | 979 } |
992 h1 { | 980 h1 { |
993 font: 400 18px 'Montserrat', sans-serif; | 981 font: 400 18px 'Montserrat', sans-serif; |
994 } | 982 } |
(...skipping 12 matching lines...) Expand all Loading... |
1007 .sourceInset { | 995 .sourceInset { |
1008 padding-left: 15%; | 996 padding-left: 15%; |
1009 padding-right: 15%; | 997 padding-right: 15%; |
1010 } | 998 } |
1011 </style> | 999 </style> |
1012 | 1000 |
1013 <nav-bar> | 1001 <nav-bar> |
1014 <top-nav-menu></top-nav-menu> | 1002 <top-nav-menu></top-nav-menu> |
1015 <isolate-nav-menu isolate="{{ isolate }}" last="{{ true }}"> | 1003 <isolate-nav-menu isolate="{{ isolate }}" last="{{ true }}"> |
1016 </isolate-nav-menu> | 1004 </isolate-nav-menu> |
| 1005 <nav-refresh callback="{{ refresh }}"></nav-refresh> |
1017 </nav-bar> | 1006 </nav-bar> |
1018 | 1007 |
1019 <div class="content"> | 1008 <div class="content"> |
1020 <h1>isolate '{{ isolate.name }}'</h1> | 1009 <h1>isolate '{{ isolate.name }}'</h1> |
1021 <div class="memberList"> | 1010 <div class="memberList"> |
1022 <div class="memberItem"> | 1011 <div class="memberItem"> |
1023 <div class="memberName">status</div> | 1012 <div class="memberName">status</div> |
1024 <div class="memberValue"> | 1013 <div class="memberValue"> |
1025 <template if="{{ isolate.topFrame == null }}"> | 1014 <template if="{{ isolate.pausedOnStart }}"> |
1026 <strong>idle</strong> | 1015 <strong style="color:darkred;">paused</strong> @ isolate start |
| 1016 <span style="padding-left:20px;"> |
| 1017 [<a on-click="{{ resume }}">resume</a>] |
| 1018 </span> |
1027 </template> | 1019 </template> |
1028 <template if="{{ isolate.topFrame != null }}"> | 1020 |
| 1021 <template if="{{ isolate.pausedOnExit }}"> |
| 1022 <strong style="color:darkred;">paused</strong> @ isolate exit |
| 1023 <span style="padding-left:20px;"> |
| 1024 [<a on-click="{{ resume }}">resume</a>] |
| 1025 </span> |
| 1026 </template> |
| 1027 |
| 1028 <template if="{{ isolate.running }}"> |
1029 <strong>running</strong> | 1029 <strong>running</strong> |
1030 @ | 1030 @ |
1031 <function-ref ref="{{ isolate.topFrame['function'] }}"> | 1031 <function-ref ref="{{ isolate.topFrame['function'] }}"> |
1032 </function-ref> | 1032 </function-ref> |
1033 (<script-ref ref="{{ isolate.topFrame['script'] }}" line="{{ isola
te.topFrame['line'] }}"></script-ref>) | 1033 (<script-ref ref="{{ isolate.topFrame['script'] }}" line="{{ isola
te.topFrame['line'] }}"></script-ref>) |
1034 </template> | 1034 </template> |
| 1035 |
| 1036 <template if="{{ isolate.idle }}"> |
| 1037 <strong>idle</strong> |
| 1038 </template> |
1035 </div> | 1039 </div> |
1036 </div> | 1040 </div> |
1037 </div> | 1041 </div> |
1038 </div> | 1042 </div> |
1039 | 1043 |
1040 <template if="{{ isolate.topFrame != null }}"> | 1044 <template if="{{ isolate.topFrame != null }}"> |
1041 <br> | 1045 <br> |
1042 <div class="sourceInset"> | 1046 <div class="sourceInset"> |
1043 <pre> {{ isolate.topFrame['line'] }} {{ isolate.topFrame
['lineString'] }}</pre> | 1047 <pre> {{ isolate.topFrame['line'] }} {{ isolate.topFrame
['lineString'] }}</pre> |
1044 </div> | 1048 </div> |
(...skipping 12 matching lines...) Expand all Loading... |
1057 <div class="memberItem"> | 1061 <div class="memberItem"> |
1058 <template if="{{ isolate.entry != null }}"> | 1062 <template if="{{ isolate.entry != null }}"> |
1059 <div class="memberName">entry</div> | 1063 <div class="memberName">entry</div> |
1060 <div class="memberValue"> | 1064 <div class="memberValue"> |
1061 <function-ref ref="{{ isolate.entry }}"></function-ref> | 1065 <function-ref ref="{{ isolate.entry }}"></function-ref> |
1062 </div> | 1066 </div> |
1063 </template> | 1067 </template> |
1064 </div> | 1068 </div> |
1065 <div class="memberItem"> | 1069 <div class="memberItem"> |
1066 <div class="memberName">id</div> | 1070 <div class="memberName">id</div> |
1067 <div class="memberValue">{{ isolate.vmName }}</div> | 1071 <div class="memberValue">{{ isolate.mainPort }}</div> |
1068 </div> | 1072 </div> |
1069 <br> | 1073 <br> |
1070 <div class="memberItem"> | 1074 <div class="memberItem"> |
1071 <div class="memberValue"> | 1075 <div class="memberValue"> |
1072 See <a href="{{ isolate.relativeHashLink('stacktrace') }}">stack tra
ce</a> | 1076 See <a href="{{ isolate.relativeHashLink('stacktrace') }}">stack tra
ce</a> |
1073 </div> | 1077 </div> |
1074 </div> | 1078 </div> |
1075 <div class="memberItem"> | 1079 <div class="memberItem"> |
1076 <div class="memberValue"> | 1080 <div class="memberValue"> |
1077 See <a href="{{ isolate.relativeHashLink('profile') }}">cpu profile<
/a> | 1081 See <a href="{{ isolate.relativeHashLink('profile') }}">cpu profile<
/a> |
(...skipping 28 matching lines...) Expand all Loading... |
1106 {{ isolate.oldHeapCapacity | formatSize }} | 1110 {{ isolate.oldHeapCapacity | formatSize }} |
1107 </div> | 1111 </div> |
1108 </div> | 1112 </div> |
1109 </div> | 1113 </div> |
1110 | 1114 |
1111 <br> | 1115 <br> |
1112 | 1116 |
1113 <div class="memberList"> | 1117 <div class="memberList"> |
1114 <div class="memberItem"> | 1118 <div class="memberItem"> |
1115 <div class="memberValue"> | 1119 <div class="memberValue"> |
1116 See <a href="{{ isolate.relativeHashLink('allocationprofile') }}">he
ap profile</a> | 1120 See <a href="{{ isolate.relativeHashLink('allocationprofile') }}">al
location profile</a> |
1117 </div> | 1121 </div> |
1118 </div> | 1122 </div> |
1119 <div class="memberItem"> | 1123 <div class="memberItem"> |
1120 <div class="memberValue"> | 1124 <div class="memberValue"> |
1121 See <a href="{{ isolate.relativeHashLink('heapmap') }}">heap map</a> | 1125 See <a href="{{ isolate.relativeHashLink('heapmap') }}">heap map</a> |
1122 </div> | 1126 </div> |
1123 </div> | 1127 </div> |
1124 </div> | 1128 </div> |
1125 </div> | 1129 </div> |
1126 | 1130 |
(...skipping 643 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1770 <template repeat="{{ frame in trace['members'] }}"> | 1774 <template repeat="{{ frame in trace['members'] }}"> |
1771 <li class="list-group-item"> | 1775 <li class="list-group-item"> |
1772 <stack-frame frame="{{ frame }}"></stack-frame> | 1776 <stack-frame frame="{{ frame }}"></stack-frame> |
1773 </li> | 1777 </li> |
1774 </template> | 1778 </template> |
1775 </ul> | 1779 </ul> |
1776 </template> | 1780 </template> |
1777 </template> | 1781 </template> |
1778 | 1782 |
1779 </polymer-element> | 1783 </polymer-element> |
| 1784 <polymer-element name="vm-view" extends="observatory-element"> |
| 1785 <template> |
| 1786 <style> |
| 1787 .content { |
| 1788 padding-left: 10%; |
| 1789 font: 400 14px 'Montserrat', sans-serif; |
| 1790 } |
| 1791 h1 { |
| 1792 font: 400 18px 'Montserrat', sans-serif; |
| 1793 } |
| 1794 .memberList { |
| 1795 display: table; |
| 1796 } |
| 1797 .memberItem { |
| 1798 display: table-row; |
| 1799 } |
| 1800 .memberName, .memberValue { |
| 1801 display: table-cell; |
| 1802 vertical-align: top; |
| 1803 padding: 3px 0 3px 1em; |
| 1804 font: 400 14px 'Montserrat', sans-serif; |
| 1805 } |
| 1806 .sourceInset { |
| 1807 padding-left: 15%; |
| 1808 padding-right: 15%; |
| 1809 } |
| 1810 </style> |
| 1811 |
| 1812 <nav-bar> |
| 1813 <top-nav-menu last="{{ true }}"></top-nav-menu> |
| 1814 <nav-refresh callback="{{ refresh }}"></nav-refresh> |
| 1815 </nav-bar> |
| 1816 |
| 1817 <div class="content"> |
| 1818 <h1>VM</h1> |
| 1819 <div class="memberList"> |
| 1820 <div class="memberItem"> |
| 1821 <div class="memberName">version</div> |
| 1822 <div class="memberValue">{{ vm.version }}</div> |
| 1823 </div> |
| 1824 <div class="memberItem"> |
| 1825 <div class="memberName">uptime</div> |
| 1826 <div class="memberValue">{{ vm.uptime | formatTime }}</div> |
| 1827 </div> |
| 1828 </div> |
| 1829 </div> |
| 1830 |
| 1831 <br> |
| 1832 |
| 1833 <ul class="list-group"> |
| 1834 <template repeat="{{ isolate in vm.allIsolates }}"> |
| 1835 <li class="list-group-item"> |
| 1836 <isolate-summary isolate="{{ isolate }}"></isolate-summary> |
| 1837 </li> |
| 1838 </template> |
| 1839 </ul> |
| 1840 </template> |
| 1841 |
| 1842 </polymer-element> |
1780 <polymer-element name="service-view" extends="observatory-element"> | 1843 <polymer-element name="service-view" extends="observatory-element"> |
1781 <!-- This element explicitly manages the child elements to avoid setting | 1844 <!-- This element explicitly manages the child elements to avoid setting |
1782 an observable property on the old element to an invalid type. --> | 1845 an observable property on the old element to an invalid type. --> |
1783 | 1846 |
1784 </polymer-element> | 1847 </polymer-element> |
1785 <polymer-element name="response-viewer" extends="observatory-element"> | 1848 <polymer-element name="response-viewer" extends="observatory-element"> |
1786 <template> | 1849 <template> |
1787 <service-view object="{{ app.response }}"></service-view> | 1850 <service-view object="{{ app.response }}"></service-view> |
1788 </template> | 1851 </template> |
1789 | 1852 |
1790 </polymer-element><polymer-element name="observatory-application" extends="obser
vatory-element"> | 1853 </polymer-element><polymer-element name="observatory-application" extends="obser
vatory-element"> |
1791 <template> | 1854 <template> |
1792 <response-viewer app="{{ app }}"></response-viewer> | 1855 <response-viewer app="{{ app }}"></response-viewer> |
1793 </template> | 1856 </template> |
1794 | 1857 |
1795 </polymer-element> | 1858 </polymer-element> |
| 1859 <polymer-element name="vm-ref" extends="service-ref"> |
| 1860 <template> |
| 1861 <a href="{{ url }}">{{ ref.name }}</a> |
| 1862 </template> |
| 1863 |
| 1864 </polymer-element> |
1796 | 1865 |
1797 | 1866 |
1798 <observatory-application devtools="true"></observatory-application> | 1867 <observatory-application devtools="true"></observatory-application> |
1799 | 1868 |
1800 </body></html> | 1869 </body></html> |
OLD | NEW |