diff --git a/js_src/pid_display.js b/js_src/pid_display.js
index f2290613..edd5df6f 100644
--- a/js_src/pid_display.js
+++ b/js_src/pid_display.js
@@ -20,6 +20,7 @@
goog.provide('app.MessageStructure');
goog.require('goog.dom');
+goog.require('goog.html.sanitizer.HtmlSanitizer');
goog.require('goog.ui.Component');
goog.require('goog.ui.Tooltip');
@@ -88,9 +89,8 @@ app.MessageField.prototype.createDom = function() {
app.MessageField.prototype.enterDocument = function() {
app.MessageField.superClass_.enterDocument.call(this);
- var tt = (
- 'Type: ' + this._field_info['type'] + '
' +
- 'Name: ' + this._field_info['name'] + '
');
+ var tt = 'Type: ' + this._field_info['type'] + '
' +
+ 'Name: ' + this._field_info['name'] + '
';
if (this._field_info['multiplier'] != undefined) {
tt += 'Multipler: 10' + this._field_info['multiplier'] + '
';
@@ -113,13 +113,15 @@ app.MessageField.prototype.enterDocument = function() {
tt += 'Labeled Values:
';
var enums = this._field_info['enums'];
for (var i = 0; i < enums.length; ++i) {
- tt += '- ' + enums[i]['value'] + ': ' + enums[i]['label'] + '
';
+ tt += '- ' + enums[i]['value'] + ': ' + enums[i]['label'] + '
';
}
tt += '
';
}
+ var sanitizer = new goog.html.sanitizer.HtmlSanitizer.Builder().build();
+
this.tt = new goog.ui.Tooltip(this.getElement());
- this.tt.setHtml(tt);
+ this.tt.setSafeHtml(sanitizer.sanitize(tt));
};
@@ -231,7 +233,7 @@ app.MessageGroup.prototype.attachTooltip = function(field) {
} else if (max != undefined) {
tt += 'This group repeats at most ' + max + ' times.';
}
- this.tt.setHtml(tt);
+ this.tt.setText(tt);
};
diff --git a/static/js/app.js b/static/js/app.js
index db3e8a1f..6f9a7f5a 100644
--- a/static/js/app.js
+++ b/static/js/app.js
@@ -1,74 +1,92 @@
-var h,m=this;function q(a){return"string"==typeof a}function aa(){}
-function ba(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
-else if("function"==b&&"undefined"==typeof a.call)return"object";return b}function r(a){return"array"==ba(a)}function ca(a){var b=ba(a);return"array"==b||"object"==b&&"number"==typeof a.length}function u(a){var b=typeof a;return"object"==b&&null!=a||"function"==b}var da="closure_uid_"+(1E9*Math.random()>>>0),ea=0;function fa(a,b,c){return a.call.apply(a.bind,arguments)}
-function ha(a,b,c){if(!a)throw Error();if(2")&&(a=a.replace(ra,">"));-1!=a.indexOf('"')&&(a=a.replace(sa,"""));-1!=a.indexOf("'")&&(a=a.replace(ta,"'"));-1!=a.indexOf("\x00")&&(a=a.replace(ua,""));return a}var pa=/&/g,qa=//g,sa=/"/g,ta=/'/g,ua=/\x00/g,oa=/[\x00&<>"']/;
-function va(a,b){var c=0;a=ma(String(a)).split(".");b=ma(String(b)).split(".");for(var d=Math.max(a.length,b.length),e=0;0==c&&eb?1:0};var xa=Array.prototype.indexOf?function(a,b,c){return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(q(a))return q(b)&&1==b.length?a.indexOf(b,c):-1;for(;c=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)}function A(a,b){return a>b?1:aparseFloat(hb)){gb=String(jb);break a}}gb=hb}var Ta={};function kb(a){return Sa(a,function(){return 0<=va(gb,a)})}var F;var lb=m.document;
-F=lb&&D?fb()||("CSS1Compat"==lb.compatMode?parseInt(gb,10):5):void 0;var mb=!D||9<=Number(F),nb=D&&!kb("9");function G(a,b){this.c=void 0!==a?a:0;this.f=void 0!==b?b:0}function ob(a){return new G(a.c,a.f)}G.prototype.toString=function(){return"("+this.c+", "+this.f+")"};function pb(a,b){return new G(a.c-b.c,a.f-b.f)}G.prototype.ceil=function(){this.c=Math.ceil(this.c);this.f=Math.ceil(this.f);return this};G.prototype.floor=function(){this.c=Math.floor(this.c);this.f=Math.floor(this.f);return this};G.prototype.round=function(){this.c=Math.round(this.c);this.f=Math.round(this.f);return this};function I(a,b){this.width=a;this.height=b}h=I.prototype;h.toString=function(){return"("+this.width+" x "+this.height+")"};h.aspectRatio=function(){return this.width/this.height};h.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};h.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};h.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};function J(a){return a?new qb(K(a)):la||(la=new qb)}function L(a){return q(a)?document.getElementById(a):a}function rb(a,b){Ia(b,function(b,d){b&&b.Ia&&(b=b.Ha());"style"==d?a.style.cssText=b:"class"==d?a.className=b:"for"==d?a.htmlFor=b:sb.hasOwnProperty(d)?a.setAttribute(sb[d],b):0==d.lastIndexOf("aria-",0)||0==d.lastIndexOf("data-",0)?a.setAttribute(d,b):a[d]=b})}
-var sb={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",frameborder:"frameBorder",height:"height",maxlength:"maxLength",nonce:"nonce",role:"role",rowspan:"rowSpan",type:"type",usemap:"useMap",valign:"vAlign",width:"width"};function tb(a){var b=ub(a);a=vb(a);return D&&kb("10")&&a.pageYOffset!=b.scrollTop?new G(b.scrollLeft,b.scrollTop):new G(a.pageXOffset||b.scrollLeft,a.pageYOffset||b.scrollTop)}
-function ub(a){return a.scrollingElement?a.scrollingElement:!Ya&&wb(a)?a.documentElement:a.body||a.documentElement}function vb(a){return a.parentWindow||a.defaultView}function xb(a,b,c){return yb(document,arguments)}
-function yb(a,b){var c=String(b[0]),d=b[1];if(!mb&&d&&(d.name||d.type)){c=["<",c];d.name&&c.push(' name="',na(d.name),'"');if(d.type){c.push(' type="',na(d.type),'"');var e={};Ma(e,d);delete e.type;d=e}c.push(">");c=c.join("")}c=a.createElement(c);d&&(q(d)?c.className=d:r(d)?c.className=d.join(" "):rb(c,d));2=a.keyCode)a.keyCode=-1}catch(b){}};var Sb="closure_listenable_"+(1E6*Math.random()|0);function Tb(a){return!(!a||!a[Sb])}var Ub=0;function Vb(a,b,c,d,e){this.listener=a;this.a=null;this.src=b;this.type=c;this.capture=!!d;this.aa=e;this.key=++Ub;this.L=this.V=!1}function Wb(a){a.L=!0;a.listener=null;a.a=null;a.src=null;a.aa=null};function Xb(a){this.src=a;this.a={};this.b=0}function Yb(a,b,c,d,e,f){var g=b.toString();b=a.a[g];b||(b=a.a[g]=[],a.b++);var k=Zb(b,c,e,f);-1d.keyCode||void 0!=d.returnValue)){a:{var e=!1;if(0==d.keyCode)try{d.keyCode=-1;break a}catch(g){e=!0}if(e||void 0==d.returnValue)d.returnValue=!0}d=[];for(e=b.a;e;e=e.parentNode)d.push(e);a=a.type;for(e=d.length-1;0<=e;e--){b.a=d[e];var f=lc(d[e],a,!0,b);c=c&&f}for(e=0;e>>0);function ec(a){if("function"==ba(a))return a;a[nc]||(a[nc]=function(b){return a.handleEvent(b)});return a[nc]};function oc(a){N.call(this);this.b=a;this.a={}}z(oc,N);var pc=[];h=oc.prototype;h.K=function(a,b,c,d){r(b)||(b&&(pc[0]=b.toString()),b=pc);for(var e=0;e=this.left&&a.right<=this.right&&a.top>=this.top&&a.bottom<=this.bottom:a.c>=this.left&&a.c<=this.right&&a.f>=this.top&&a.f<=this.bottom:!1};
-h.ceil=function(){this.top=Math.ceil(this.top);this.right=Math.ceil(this.right);this.bottom=Math.ceil(this.bottom);this.left=Math.ceil(this.left);return this};h.floor=function(){this.top=Math.floor(this.top);this.right=Math.floor(this.right);this.bottom=Math.floor(this.bottom);this.left=Math.floor(this.left);return this};h.round=function(){this.top=Math.round(this.top);this.right=Math.round(this.right);this.bottom=Math.round(this.bottom);this.left=Math.round(this.left);return this};function tc(a,b,c,d){this.left=a;this.top=b;this.width=c;this.height=d}h=tc.prototype;h.toString=function(){return"("+this.left+", "+this.top+" - "+this.width+"w x "+this.height+"h)"};h.contains=function(a){return a instanceof G?a.c>=this.left&&a.c<=this.left+this.width&&a.f>=this.top&&a.f<=this.top+this.height:this.left<=a.left&&this.left+this.width>=a.left+a.width&&this.top<=a.top&&this.top+this.height>=a.top+a.height};
-h.ceil=function(){this.left=Math.ceil(this.left);this.top=Math.ceil(this.top);this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};h.floor=function(){this.left=Math.floor(this.left);this.top=Math.floor(this.top);this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};h.round=function(){this.left=Math.round(this.left);this.top=Math.round(this.top);this.width=Math.round(this.width);this.height=Math.round(this.height);return this};function S(a,b){var c=K(a);return c.defaultView&&c.defaultView.getComputedStyle&&(a=c.defaultView.getComputedStyle(a,null))?a[b]||a.getPropertyValue(b)||"":""}function T(a,b){return S(a,b)||(a.currentStyle?a.currentStyle[b]:null)||a.style&&a.style[b]}function uc(a){a=a?K(a):document;return!D||9<=Number(F)||wb(J(a).a)?a.documentElement:a.body}
-function vc(a){try{var b=a.getBoundingClientRect()}catch(c){return{left:0,top:0,right:0,bottom:0}}D&&a.ownerDocument.body&&(a=a.ownerDocument,b.left-=a.documentElement.clientLeft+a.body.clientLeft,b.top-=a.documentElement.clientTop+a.body.clientTop);return b}
-function wc(a){if(D&&!(8<=Number(F)))return a.offsetParent;var b=K(a),c=T(a,"position"),d="fixed"==c||"absolute"==c;for(a=a.parentNode;a&&a!=b;a=a.parentNode)if(11==a.nodeType&&a.host&&(a=a.host),c=T(a,"position"),d=d&&"static"==c&&a!=b.documentElement&&a!=b.body,!d&&(a.scrollWidth>a.clientWidth||a.scrollHeight>a.clientHeight||"fixed"==c||"absolute"==c||"relative"==c))return a;return null}
-function xc(a){for(var b=new R(0,Infinity,Infinity,0),c=J(a),d=c.a.body,e=c.a.documentElement,f=ub(c.a);a=wc(a);)if(!(D&&0==a.clientWidth||Ya&&0==a.clientHeight&&a==d)&&a!=d&&a!=e&&"visible"!=T(a,"overflow")){var g=yc(a),k=new G(a.clientLeft,a.clientTop);g.c+=k.c;g.f+=k.f;b.top=Math.max(b.top,g.f);b.right=Math.min(b.right,g.c+a.clientWidth);b.bottom=Math.min(b.bottom,g.f+a.clientHeight);b.left=Math.max(b.left,g.c)}d=f.scrollLeft;f=f.scrollTop;b.left=Math.max(b.left,d);b.top=Math.max(b.top,f);c=(vb(c.a)||
-window).document;c=wb(c)?c.documentElement:c.body;c=new I(c.clientWidth,c.clientHeight);b.right=Math.min(b.right,d+c.width);b.bottom=Math.min(b.bottom,f+c.height);return 0<=b.top&&0<=b.left&&b.bottom>b.top&&b.right>b.left?b:null}function yc(a){var b=K(a),c=new G(0,0),d=uc(b);if(a==d)return c;a=vc(a);b=tb(J(b).a);c.c=a.left+b.c;c.f=a.top+b.f;return c}function zc(a){"number"==typeof a&&(a+="px");return a}
-function Ac(a){var b=Bc;if("none"!=T(a,"display"))return b(a);var c=a.style,d=c.display,e=c.visibility,f=c.position;c.visibility="hidden";c.position="absolute";c.display="inline";a=b(a);c.display=d;c.position=f;c.visibility=e;return a}function Bc(a){var b=a.offsetWidth,c=a.offsetHeight,d=Ya&&!b&&!c;return(void 0===b||d)&&a.getBoundingClientRect?(a=vc(a),new I(a.right-a.left,a.bottom-a.top)):new I(b,c)}function Cc(a,b){a.style.display=b?"":"none"}
-function Dc(a,b){if(/^\d+px?$/.test(b))return parseInt(b,10);var c=a.style.left,d=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;a.style.left=b;b=a.style.pixelLeft;a.style.left=c;a.runtimeStyle.left=d;return+b}function Ec(a,b){return(b=a.currentStyle?a.currentStyle[b]:null)?Dc(a,b):0}var Fc={thin:2,medium:4,thick:6};function Gc(a,b){if("none"==(a.currentStyle?a.currentStyle[b+"Style"]:null))return 0;b=a.currentStyle?a.currentStyle[b+"Width"]:null;return b in Fc?Fc[b]:Dc(a,b)};function U(){}U.a=void 0;U.b=function(){return U.a?U.a:U.a=new U};U.prototype.a=0;function V(a){Q.call(this);this.A=a||J();this.G=null;this.C=!1;this.b=null;this.o=void 0;this.j=this.a=this.i=null;this.N=!1}z(V,Q);h=V.prototype;h.Ca=U.b();function Hc(a){return a.G||(a.G=":"+(a.Ca.a++).toString(36))}h.h=function(){return this.b};function Ic(a,b){if(a==b)throw Error("Unable to set parent component");var c;if(c=b&&a.i&&a.G){c=a.i;var d=a.G;c=c.j&&d?Ka(c.j,d)||null:null}if(c&&a.i!=b)throw Error("Unable to set parent component");a.i=b;V.u.ia.call(a,b)}
-h.ia=function(a){if(this.i&&this.i!=a)throw Error("Method not supported");V.u.ia.call(this,a)};h.Y=function(){this.b=this.A.a.createElement("DIV")};function Jc(a,b){if(a.C)throw Error("Component already rendered");if(b&&a.W(b)){a.N=!0;var c=K(b);a.A&&a.A.a==c||(a.A=J(b));a.X(b);a.H()}else throw Error("Invalid element to decorate");}h.W=function(){return!0};h.X=function(a){this.b=a};h.H=function(){this.C=!0;Kc(this,function(a){!a.C&&a.h()&&a.H()})};
-h.R=function(){Kc(this,function(a){a.C&&a.R()});this.o&&rc(this.o);this.C=!1};h.v=function(){this.C&&this.R();this.o&&(this.o.P(),delete this.o);Kc(this,function(a){a.P()});!this.N&&this.b&&Cb(this.b);this.i=this.b=this.j=this.a=null;V.u.v.call(this)};
-function Lc(a,b,c){if(b.C)throw Error("Component already rendered");if(0>c||c>(a.a?a.a.length:0))throw Error("Child component index out of bounds");a.j&&a.a||(a.j={},a.a=[]);if(b.i==a){var d=Hc(b);a.j[d]=b;Ca(a.a,b)}else{d=a.j;var e=Hc(b);if(null!==d&&e in d)throw Error('The object already contains the key "'+e+'"');d[e]=b}Ic(b,a);Ea(a.a,c,0,b);if(b.C&&a.C&&b.i==a)a=a.b,c=a.childNodes[c]||null,c!=b.h()&&a.insertBefore(b.h(),c);else{a.b||a.Y();c=a.a?a.a[c+1]||null:null;a=a.b;c=c?c.b:null;if(b.C)throw Error("Component already rendered");
-b.b||b.Y();a?a.insertBefore(b.b,c||null):b.A.a.body.appendChild(b.b);b.i&&!b.i.C||b.H()}}function Kc(a,b){a.a&&ya(a.a,b,void 0)}h.removeChild=function(a,b){if(a){var c=q(a)?a:Hc(a);a=this.j&&c?Ka(this.j,c)||null:null;if(c&&a){var d=this.j;c in d&&delete d[c];Ca(this.a,a);b&&(a.R(),a.b&&Cb(a.b));Ic(a,null)}}if(!a)throw Error("Child is not in parent component");return a};function Mc(a,b){if("function"!=ba(a))if(a&&"function"==typeof a.handleEvent)a=v(a.handleEvent,a);else throw Error("Invalid listener argument");return 2147483647=e.right)&&(f&=-2);132==(f&132)&&(d.f=e.bottom)&&(f&=-5);d.ce.right&&
-(k.width=Math.min(e.right-d.c,n+k.width-e.left),k.width=Math.max(k.width,0),l|=4)}d.c+k.width>e.right&&f&1&&(d.c=Math.max(e.right-k.width,e.left),l|=1);f&2&&(l|=(d.ce.right?32:0));d.fe.bottom&&(k.height=Math.min(e.bottom-d.f,n+k.height-e.top),k.height=Math.max(k.height,0),l|=8));d.f+k.height>e.bottom&&f&4&&(d.f=Math.max(e.bottom-k.height,e.top),l|=2);f&8&&(l|=(d.f
-e.bottom?128:0));e=l}else e=256;l=e}f=new tc(0,0,0,0);f.left=a.c;f.top=a.f;f.width=g.width;f.height=g.height;e=l;if(e&496)return e;a=new G(f.left,f.top);a instanceof G?(g=a.c,a=a.f):(g=a,a=void 0);b.style.left=zc(g);b.style.top=zc(a);g=new I(f.width,f.height);c==g||c&&g&&c.width==g.width&&c.height==g.height||(c=g,a=wb(J(K(b)).a),!D||kb("10")||a&&kb("8")?(b=b.style,Xa?b.MozBoxSizing="border-box":Ya?b.WebkitBoxSizing="border-box":b.boxSizing="border-box",b.width=Math.max(c.width,0)+"px",b.height=Math.max(c.height,
-0)+"px"):(g=b.style,a?(D?(a=Ec(b,"paddingLeft"),f=Ec(b,"paddingRight"),d=Ec(b,"paddingTop"),k=Ec(b,"paddingBottom"),a=new R(d,f,k,a)):(a=S(b,"paddingLeft"),f=S(b,"paddingRight"),d=S(b,"paddingTop"),k=S(b,"paddingBottom"),a=new R(parseFloat(d),parseFloat(f),parseFloat(k),parseFloat(a))),!D||9<=Number(F)?(f=S(b,"borderLeftWidth"),d=S(b,"borderRightWidth"),k=S(b,"borderTopWidth"),b=S(b,"borderBottomWidth"),b=new R(parseFloat(k),parseFloat(d),parseFloat(b),parseFloat(f))):(f=Gc(b,"borderLeft"),d=Gc(b,
-"borderRight"),k=Gc(b,"borderTop"),b=Gc(b,"borderBottom"),b=new R(k,d,b,f)),g.pixelWidth=c.width-b.left-a.left-a.right-b.right,g.pixelHeight=c.height-b.top-a.top-a.bottom-b.bottom):(g.pixelWidth=c.width,g.pixelHeight=c.height)));return e}function Yc(a,b){return(b&8&&"rtl"==T(a,"direction")?b^4:b)&-9};function $c(){}$c.prototype.a=function(){};function ad(a,b,c){this.b=a;this.g=b;this.i=c}z(ad,$c);ad.prototype.a=function(a,b,c){Xc(this.b,this.g,a,b,void 0,c,this.i)};function bd(a,b){this.b=a instanceof G?a:new G(a,b)}z(bd,$c);bd.prototype.a=function(a,b,c,d){Xc(uc(a),0,a,b,this.b,c,null,d)};function cd(a){if(a.I&&"function"==typeof a.I)return a.I();if(q(a))return a.split("");if(ca(a)){for(var b=[],c=a.length,d=0;dka()-this.ea||jd(this,a)};h.ua=function(a){var b=K(this.w);if("undefined"!=typeof document.activeElement){if(a=b.activeElement,!a||M(this.w,a)||"BODY"==a.tagName)return}else if(a.target!=b)return;150>ka()-this.ea||jd(this)};function kd(a,b){return Ba(a.la||[],function(a){return b===a||M(a,b)})}
-h.v=function(){W.u.v.call(this);this.g.P();Kb(this.D);Kb(this.l);delete this.w;delete this.g;delete this.la};function ld(a,b){this.U=b||void 0;W.call(this,a)}z(ld,W);ld.prototype.Z=function(){if(this.U){var a=!this.B&&"move_offscreen"!=this.M,b=this.h();a&&(b.style.visibility="hidden",Cc(b,!0));this.U.a(b,8,this.Ea);a&&Cc(b,!1)}};function md(a,b,c){this.A=c||(a?J(L(a)):J());ld.call(this,this.A.b("DIV",{style:"position:absolute;display:none;"}));this.N=new G(1,1);this.i=new gd;this.j=null;a&&(c=a=L(a),this.i.a.set(hd(c),c),O(a,"mouseover",this.pa,!1,this),O(a,"mouseout",this.$,!1,this),O(a,"mousemove",this.oa,!1,this),O(a,"focus",this.na,!1,this),O(a,"blur",this.$,!1,this));if(null!=b)if(a=this.h(),"textContent"in a)a.textContent=b;else if(3==a.nodeType)a.data=String(b);else if(a.firstChild&&3==a.firstChild.nodeType){for(;a.lastChild!=
-a.firstChild;)a.removeChild(a.lastChild);a.firstChild.data=String(b)}else Ab(a),a.appendChild(K(a).createTextNode(String(b)))}z(md,ld);var nd=[];h=md.prototype;h.s=null;h.Aa="goog-tooltip";h.detach=function(a){if(a){a=L(a);od(this,a);var b=this.i.a;a=hd(a);fd(b.a,a)&&(delete b.a[a],b.b--,b.m.length>2*b.b&&ed(b))}else{b=this.i.I();for(var c=0;a=b[c];c++)od(this,a);a=this.i.a;a.a={};a.m.length=0;a.b=0}};
-function od(a,b){P(b,"mouseover",a.pa,!1,a);P(b,"mouseout",a.$,!1,a);P(b,"mousemove",a.oa,!1,a);P(b,"focus",a.na,!1,a);P(b,"blur",a.$,!1,a)}h.ha=function(a){var b=this.h();b&&Cb(b);md.u.ha.call(this,a);a?(b=this.A.a.body,b.insertBefore(a,b.lastChild),Kb(this.j),this.j=new Nc(this.h()),a=ia(Kb,this.j),this.T?a():(this.J||(this.J=[]),this.J.push(a)),O(this.j,"focusin",this.O,void 0,this),O(this.j,"focusout",this.ca,void 0,this)):(Kb(this.j),this.j=null)};
-h.fa=function(){if(!W.prototype.fa.call(this))return!1;if(this.a)for(var a,b=0;a=nd[b];b++)M(a.h(),this.a)||id(a,!1);0<=xa(nd,this)||nd.push(this);a=this.h();a.className=this.Aa;this.O();O(a,"mouseover",this.ra,!1,this);O(a,"mouseout",this.qa,!1,this);pd(this);return!0};
-h.ga=function(){Ca(nd,this);for(var a=this.h(),b,c=0;b=nd[c];c++)b.a&&M(a,b.a)&&id(b,!1);this.ka&&this.ka.ca();P(a,"mouseover",this.ra,!1,this);P(a,"mouseout",this.qa,!1,this);this.a=void 0;0==(this.b?this.B?4:1:this.o?3:this.B?2:0)&&(this.G=!1);W.prototype.ga.call(this)};h.ta=function(a,b){this.a==a&&this.i.contains(this.a)&&(this.G||!this.Fa?(id(this,!1),this.B||(this.a=a,this.U=b||new qd(ob(this.N)),this.B&&this.Z(),id(this,!0))):this.a=void 0);this.b=void 0};
-h.Da=function(a){this.o=void 0;if(a==this.a){a=this.A;a:{var b=a.a;try{var c=b&&b.activeElement;break a}catch(d){}c=null}c=c&&this.h()&&a.contains(this.h(),c);this.s&&(this.s==this.h()||this.i.contains(this.s))||c||this.da&&this.da.s||id(this,!1)}};function rd(a,b){var c=tb(a.A.a);a.N.c=b.clientX+c.c;a.N.f=b.clientY+c.f}h.pa=function(a){var b=sd(this,a.target);this.s=b;this.O();b!=this.a&&(this.a=b,this.b||(this.b=Mc(v(this.ta,this,b,void 0),500)),td(this),rd(this,a))};
-function sd(a,b){try{for(;b&&!a.i.contains(b);)b=b.parentNode;return b}catch(c){return null}}h.oa=function(a){rd(this,a);this.G=!0};h.na=function(a){this.s=a=sd(this,a.target);this.G=!0;if(this.a!=a){this.a=a;var b=new ud(this.s);this.O();this.b||(this.b=Mc(v(this.ta,this,a,b),500));td(this)}};function td(a){if(a.a)for(var b,c=0;b=nd[c];c++)M(b.h(),a.a)&&(b.da=a,a.ka=b)}
-h.$=function(a){var b=sd(this,a.target),c=sd(this,a.relatedTarget);b!=c&&(b==this.s&&(this.s=null),pd(this),this.G=!1,!this.B||a.relatedTarget&&M(this.h(),a.relatedTarget)?this.a=void 0:this.ca())};h.ra=function(){var a=this.h();this.s!=a&&(this.O(),this.s=a)};h.qa=function(a){var b=this.h();this.s!=b||a.relatedTarget&&M(b,a.relatedTarget)||(this.s=null,this.ca())};function pd(a){a.b&&(m.clearTimeout(a.b),a.b=void 0)}
-h.ca=function(){2==(this.b?this.B?4:1:this.o?3:this.B?2:0)&&(this.o=Mc(v(this.Da,this,this.a),0))};h.O=function(){this.o&&(m.clearTimeout(this.o),this.o=void 0)};h.v=function(){id(this,!1);pd(this);this.detach();this.h()&&Cb(this.h());this.s=null;delete this.A;md.u.v.call(this)};function qd(a,b){bd.call(this,a,b)}z(qd,bd);qd.prototype.a=function(a,b,c){b=uc(a);b=xc(b);c=c?new R(c.top+10,c.right,c.bottom,c.left+10):new R(10,0,0,10);Zc(this.b,a,8,c,b,9)&496&&Zc(this.b,a,8,c,b,5)};
-function ud(a){ad.call(this,a,5)}z(ud,ad);ud.prototype.a=function(a,b,c){var d=new G(10,0);Xc(this.b,this.g,a,b,d,c,9)&496&&Xc(this.b,4,a,1,d,c,5)};function X(a,b){V.call(this,b);this.g=a}z(X,V);X.prototype.W=function(){return!1};X.prototype.Y=function(){var a=this.g.type+"_field message_field",b=this.g.name;if("string"==this.g.type){var c=this.g.max_size,d=this.g.min_size;void 0!=c&&void 0!=d?b=c==d?b+(" ("+c+" bytes )"):b+(" ( \u2265 "+d+", \u2264 "+c+" bytes )"):void 0!=c?b+=" ( \u2264 "+c+" bytes )":void 0!=d&&(b+=" ( \u2265 "+d+" bytes )")}this.b=this.A.b("div",{"class":a},b)};
-X.prototype.H=function(){X.u.H.call(this);var a="Type: "+this.g.type+"
Name: "+this.g.name+"
";void 0!=this.g.multiplier&&(a+="Multipler: 10"+this.g.multiplier+"
");void 0!=this.g.size&&(a+="Size: "+this.g.size);if(this.g.ranges){a+="Allowed Values: ";for(var b=this.g.ranges,c=0;c["+b[c].min+", "+b[c].max+"]";a+="
"}if(this.g.enums){a+="Labeled Values: ";b=this.g.enums;for(c=0;c"+b[c].value+": "+b[c].label+"";a+=
-"
"}this.l=new md(this.h());this.l.ya(a)};X.prototype.R=function(){X.u.R.call(this);this.l&&this.l.detach(this.h())};function Y(a){V.call(this,a)}z(Y,V);Y.prototype.Y=function(){this.X(this.A.a.createElement("div"))};Y.prototype.W=function(a){return"DIV"==a.tagName};
-Y.prototype.update=function(a){for(var b=[];this.a&&0!=this.a.length;)b.push(this.removeChild(this.a?this.a[0]||null:null,!0));for(b=0;ba&&(a+=4294967296);for(a=a.toString(16);a.length=Ed.length)){b=Ed[b];var c=b.personalities,d=L("model_personality_fieldset");if(d)if(c&&c.length){var e=L("model_personality_tbody");Ab(e);for(a=0;aView in Open Fixture Library');k.appendChild(g);e.appendChild(k)}d.style.display=
-"block"}else d.style.display="none";c=b.sensors;if(d=L("model_sensor_fieldset"))if(c&&c.length){e=L("model_sensor_tbody");Ab(e);for(a=0;ac&&(c=e,b=d)}a.selectedIndex=b;Id(a)});
-x("app.makePIDTable",function(a){var b=new Ad;Jc(b,L(a));b.g[0]=A;b.g[1]=Gd;b.g[2]=Gd;b.g[3]=A;b.g[4]=A;b.g[5]=A});
+var k,n=this;function r(a){return"string"==typeof a}function aa(){}
+function u(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
+else if("function"==b&&"undefined"==typeof a.call)return"object";return b}function w(a){return"array"==u(a)}function ba(a){var b=u(a);return"array"==b||"object"==b&&"number"==typeof a.length}function z(a){var b=typeof a;return"object"==b&&null!=a||"function"==b}var ca="closure_uid_"+(1E9*Math.random()>>>0),da=0;function ea(a,b,c){return a.call.apply(a.bind,arguments)}
+function fa(a,b,c){if(!a)throw Error();if(2")&&(a=a.replace(sa,">"));-1!=a.indexOf('"')&&(a=a.replace(ta,"""));-1!=a.indexOf("'")&&(a=a.replace(ua,"'"));-1!=a.indexOf("\x00")&&(a=a.replace(va,""));return a}var qa=/&/g,ra=//g,ta=/"/g,ua=/'/g,va=/\x00/g,pa=/[\x00&<>"']/;
+function wa(a,b){var c=0;a=D(String(a)).split(".");b=D(String(b)).split(".");for(var d=Math.max(a.length,b.length),e=0;0==c&&eb?1:0};function ya(a,b){b.unshift(a);ka.call(this,na.apply(null,b));b.shift()}C(ya,ka);ya.prototype.name="AssertionError";function za(a,b){throw new ya("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1));};var Aa=Array.prototype.indexOf?function(a,b,c){return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(r(a))return r(b)&&1==b.length?a.indexOf(b,c):-1;for(;c=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)}function Ia(a,b){return a>b?1:aparseFloat(mb)){lb=String(ob);break a}}lb=mb}var Ya={};function pb(a){return Xa(a,function(){return 0<=wa(lb,a)})}var qb;var rb=n.document;
+qb=rb&&H?kb()||("CSS1Compat"==rb.compatMode?parseInt(lb,10):5):void 0;var sb=!H||9<=Number(qb),tb=H&&!pb("9");function ub(){this.a="";this.b=vb}ub.prototype.ma=!0;ub.prototype.la=function(){return this.a};ub.prototype.toString=function(){return"SafeUrl{"+this.a+"}"};function wb(a){if(a instanceof ub&&a.constructor===ub&&a.b===vb)return a.a;za("expected object of type SafeUrl, got '"+a+"' of type "+u(a));return"type_error:SafeUrl"}var xb=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i,vb={};function yb(a){var b=new ub;b.a=a;return b}yb("about:blank");function zb(){this.da="";this.Ha=Ab}zb.prototype.ma=!0;zb.prototype.la=function(){return this.da};zb.prototype.toString=function(){return"SafeHtml{"+this.da+"}"};var Ab={};function Eb(a){var b=new zb;b.da=a;return b}Eb("");Eb("");Eb("
");var Fb={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};function I(a,b){this.c=void 0!==a?a:0;this.f=void 0!==b?b:0}function Gb(a){return new I(a.c,a.f)}I.prototype.toString=function(){return"("+this.c+", "+this.f+")"};function Hb(a,b){return new I(a.c-b.c,a.f-b.f)}I.prototype.ceil=function(){this.c=Math.ceil(this.c);this.f=Math.ceil(this.f);return this};I.prototype.floor=function(){this.c=Math.floor(this.c);this.f=Math.floor(this.f);return this};I.prototype.round=function(){this.c=Math.round(this.c);this.f=Math.round(this.f);return this};function J(a,b){this.width=a;this.height=b}k=J.prototype;k.toString=function(){return"("+this.width+" x "+this.height+")"};k.aspectRatio=function(){return this.width/this.height};k.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};k.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};k.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};function K(a){return a?new Ib(L(a)):la||(la=new Ib)}function M(a){return r(a)?document.getElementById(a):a}function Jb(a,b){La(b,function(b,d){b&&b.ma&&(b=b.la());"style"==d?a.style.cssText=b:"class"==d?a.className=b:"for"==d?a.htmlFor=b:Kb.hasOwnProperty(d)?a.setAttribute(Kb[d],b):0==d.lastIndexOf("aria-",0)||0==d.lastIndexOf("data-",0)?a.setAttribute(d,b):a[d]=b})}
+var Kb={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",frameborder:"frameBorder",height:"height",maxlength:"maxLength",nonce:"nonce",role:"role",rowspan:"rowSpan",type:"type",usemap:"useMap",valign:"vAlign",width:"width"};function Lb(a){var b=Mb(a);a=Nb(a);return H&&pb("10")&&a.pageYOffset!=b.scrollTop?new I(b.scrollLeft,b.scrollTop):new I(a.pageXOffset||b.scrollLeft,a.pageYOffset||b.scrollTop)}
+function Mb(a){return a.scrollingElement?a.scrollingElement:!cb&&Ob(a)?a.documentElement:a.body||a.documentElement}function Nb(a){return a.parentWindow||a.defaultView}function Pb(a,b,c){return Qb(document,arguments)}
+function Qb(a,b){var c=String(b[0]),d=b[1];if(!sb&&d&&(d.name||d.type)){c=["<",c];d.name&&c.push(' name="',oa(d.name),'"');if(d.type){c.push(' type="',oa(d.type),'"');var e={};Ra(e,d);delete e.type;d=e}c.push(">");c=c.join("")}c=a.createElement(c);d&&(r(d)?c.className=d:w(d)?c.className=d.join(" "):Jb(c,d));2=a.keyCode)a.keyCode=-1}catch(b){}};var Lc="closure_listenable_"+(1E6*Math.random()|0);function Mc(a){return!(!a||!a[Lc])}var Nc=0;function Oc(a,b,c,d,e){this.listener=a;this.a=null;this.src=b;this.type=c;this.capture=!!d;this.ha=e;this.key=++Nc;this.R=this.aa=!1}function Pc(a){a.R=!0;a.listener=null;a.a=null;a.src=null;a.ha=null};function Qc(a){this.src=a;this.a={};this.b=0}function Rc(a,b,c,d,e,f){var g=b.toString();b=a.a[g];b||(b=a.a[g]=[],a.b++);var h=Sc(b,c,e,f);-1d.keyCode||void 0!=d.returnValue)){a:{var e=!1;if(0==d.keyCode)try{d.keyCode=-1;break a}catch(g){e=!0}if(e||void 0==d.returnValue)d.returnValue=!0}d=[];for(e=b.a;e;e=e.parentNode)d.push(e);a=a.type;for(e=d.length-1;0<=e;e--){b.a=d[e];var f=ed(d[e],a,!0,b);c=c&&f}for(e=0;e>>0);function Yc(a){if("function"==u(a))return a;a[gd]||(a[gd]=function(b){return a.handleEvent(b)});return a[gd]};function hd(a){Ac.call(this);this.b=a;this.a={}}C(hd,Ac);var id=[];k=hd.prototype;k.N=function(a,b,c,d){w(b)||(b&&(id[0]=b.toString()),b=id);for(var e=0;e=this.left&&a.right<=this.right&&a.top>=this.top&&a.bottom<=this.bottom:a.c>=this.left&&a.c<=this.right&&a.f>=this.top&&a.f<=this.bottom:!1};
+k.ceil=function(){this.top=Math.ceil(this.top);this.right=Math.ceil(this.right);this.bottom=Math.ceil(this.bottom);this.left=Math.ceil(this.left);return this};k.floor=function(){this.top=Math.floor(this.top);this.right=Math.floor(this.right);this.bottom=Math.floor(this.bottom);this.left=Math.floor(this.left);return this};k.round=function(){this.top=Math.round(this.top);this.right=Math.round(this.right);this.bottom=Math.round(this.bottom);this.left=Math.round(this.left);return this};function md(a,b,c,d){this.left=a;this.top=b;this.width=c;this.height=d}k=md.prototype;k.toString=function(){return"("+this.left+", "+this.top+" - "+this.width+"w x "+this.height+"h)"};k.contains=function(a){return a instanceof I?a.c>=this.left&&a.c<=this.left+this.width&&a.f>=this.top&&a.f<=this.top+this.height:this.left<=a.left&&this.left+this.width>=a.left+a.width&&this.top<=a.top&&this.top+this.height>=a.top+a.height};
+k.ceil=function(){this.left=Math.ceil(this.left);this.top=Math.ceil(this.top);this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};k.floor=function(){this.left=Math.floor(this.left);this.top=Math.floor(this.top);this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};k.round=function(){this.left=Math.round(this.left);this.top=Math.round(this.top);this.width=Math.round(this.width);this.height=Math.round(this.height);return this};function U(a,b){var c=L(a);return c.defaultView&&c.defaultView.getComputedStyle&&(a=c.defaultView.getComputedStyle(a,null))?a[b]||a.getPropertyValue(b)||"":""}function V(a,b){return U(a,b)||(a.currentStyle?a.currentStyle[b]:null)||a.style&&a.style[b]}function nd(a){a=a?L(a):document;return!H||9<=Number(qb)||Ob(K(a).a)?a.documentElement:a.body}
+function od(a){try{var b=a.getBoundingClientRect()}catch(c){return{left:0,top:0,right:0,bottom:0}}H&&a.ownerDocument.body&&(a=a.ownerDocument,b.left-=a.documentElement.clientLeft+a.body.clientLeft,b.top-=a.documentElement.clientTop+a.body.clientTop);return b}
+function pd(a){if(H&&!(8<=Number(qb)))return a.offsetParent;var b=L(a),c=V(a,"position"),d="fixed"==c||"absolute"==c;for(a=a.parentNode;a&&a!=b;a=a.parentNode)if(11==a.nodeType&&a.host&&(a=a.host),c=V(a,"position"),d=d&&"static"==c&&a!=b.documentElement&&a!=b.body,!d&&(a.scrollWidth>a.clientWidth||a.scrollHeight>a.clientHeight||"fixed"==c||"absolute"==c||"relative"==c))return a;return null}
+function qd(a){for(var b=new T(0,Infinity,Infinity,0),c=K(a),d=c.a.body,e=c.a.documentElement,f=Mb(c.a);a=pd(a);)if(!(H&&0==a.clientWidth||cb&&0==a.clientHeight&&a==d)&&a!=d&&a!=e&&"visible"!=V(a,"overflow")){var g=rd(a),h=new I(a.clientLeft,a.clientTop);g.c+=h.c;g.f+=h.f;b.top=Math.max(b.top,g.f);b.right=Math.min(b.right,g.c+a.clientWidth);b.bottom=Math.min(b.bottom,g.f+a.clientHeight);b.left=Math.max(b.left,g.c)}d=f.scrollLeft;f=f.scrollTop;b.left=Math.max(b.left,d);b.top=Math.max(b.top,f);c=(Nb(c.a)||
+window).document;c=Ob(c)?c.documentElement:c.body;c=new J(c.clientWidth,c.clientHeight);b.right=Math.min(b.right,d+c.width);b.bottom=Math.min(b.bottom,f+c.height);return 0<=b.top&&0<=b.left&&b.bottom>b.top&&b.right>b.left?b:null}function rd(a){var b=L(a),c=new I(0,0),d=nd(b);if(a==d)return c;a=od(a);b=Lb(K(b).a);c.c=a.left+b.c;c.f=a.top+b.f;return c}function sd(a){"number"==typeof a&&(a+="px");return a}
+function td(a){var b=ud;if("none"!=V(a,"display"))return b(a);var c=a.style,d=c.display,e=c.visibility,f=c.position;c.visibility="hidden";c.position="absolute";c.display="inline";a=b(a);c.display=d;c.position=f;c.visibility=e;return a}function ud(a){var b=a.offsetWidth,c=a.offsetHeight,d=cb&&!b&&!c;return(void 0===b||d)&&a.getBoundingClientRect?(a=od(a),new J(a.right-a.left,a.bottom-a.top)):new J(b,c)}function vd(a,b){a.style.display=b?"":"none"}
+function wd(a,b){if(/^\d+px?$/.test(b))return parseInt(b,10);var c=a.style.left,d=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;a.style.left=b;b=a.style.pixelLeft;a.style.left=c;a.runtimeStyle.left=d;return+b}function xd(a,b){return(b=a.currentStyle?a.currentStyle[b]:null)?wd(a,b):0}var yd={thin:2,medium:4,thick:6};function zd(a,b){if("none"==(a.currentStyle?a.currentStyle[b+"Style"]:null))return 0;b=a.currentStyle?a.currentStyle[b+"Width"]:null;return b in yd?yd[b]:wd(a,b)};function W(){}W.a=void 0;W.b=function(){return W.a?W.a:W.a=new W};W.prototype.a=0;function X(a){S.call(this);this.s=a||K();this.H=null;this.G=!1;this.b=null;this.m=void 0;this.j=this.a=this.i=null;this.V=!1}C(X,S);k=X.prototype;k.Ma=W.b();function Ad(a){return a.H||(a.H=":"+(a.Ma.a++).toString(36))}k.h=function(){return this.b};function Bd(a,b){if(a==b)throw Error("Unable to set parent component");var c;if(c=b&&a.i&&a.H){c=a.i;var d=a.H;c=c.j&&d?Oa(c.j,d)||null:null}if(c&&a.i!=b)throw Error("Unable to set parent component");a.i=b;X.v.ra.call(a,b)}
+k.ra=function(a){if(this.i&&this.i!=a)throw Error("Method not supported");X.v.ra.call(this,a)};k.ea=function(){this.b=this.s.a.createElement("DIV")};function Cd(a,b){if(a.G)throw Error("Component already rendered");if(b&&a.ba(b)){a.V=!0;var c=L(b);a.s&&a.s.a==c||(a.s=K(b));a.ca(b);a.L()}else throw Error("Invalid element to decorate");}k.ba=function(){return!0};k.ca=function(a){this.b=a};k.L=function(){this.G=!0;Dd(this,function(a){!a.G&&a.h()&&a.L()})};
+k.Y=function(){Dd(this,function(a){a.G&&a.Y()});this.m&&kd(this.m);this.G=!1};k.w=function(){this.G&&this.Y();this.m&&(this.m.X(),delete this.m);Dd(this,function(a){a.X()});!this.V&&this.b&&Tb(this.b);this.i=this.b=this.j=this.a=null;X.v.w.call(this)};
+function Ed(a,b,c){if(b.G)throw Error("Component already rendered");if(0>c||c>(a.a?a.a.length:0))throw Error("Child component index out of bounds");a.j&&a.a||(a.j={},a.a=[]);if(b.i==a){var d=Ad(b);a.j[d]=b;Ea(a.a,b)}else{d=a.j;var e=Ad(b);if(null!==d&&e in d)throw Error('The object already contains the key "'+e+'"');d[e]=b}Bd(b,a);Ga(a.a,c,0,b);if(b.G&&a.G&&b.i==a)a=a.b,c=a.childNodes[c]||null,c!=b.h()&&a.insertBefore(b.h(),c);else{a.b||a.ea();c=a.a?a.a[c+1]||null:null;a=a.b;c=c?c.b:null;if(b.G)throw Error("Component already rendered");
+b.b||b.ea();a?a.insertBefore(b.b,c||null):b.s.a.body.appendChild(b.b);b.i&&!b.i.G||b.L()}}function Dd(a,b){a.a&&E(a.a,b,void 0)}k.removeChild=function(a,b){if(a){var c=r(a)?a:Ad(a);a=this.j&&c?Oa(this.j,c)||null:null;if(c&&a){var d=this.j;c in d&&delete d[c];Ea(this.a,a);b&&(a.Y(),a.b&&Tb(a.b));Bd(a,null)}}if(!a)throw Error("Child is not in parent component");return a};function Fd(a,b){if("function"!=u(a))if(a&&"function"==typeof a.handleEvent)a=B(a.handleEvent,a);else throw Error("Invalid listener argument");return 2147483647=e.right)&&(f&=-2);132==(f&132)&&(d.f=e.bottom)&&(f&=-5);d.ce.right&&
+(h.width=Math.min(e.right-d.c,p+h.width-e.left),h.width=Math.max(h.width,0),l|=4)}d.c+h.width>e.right&&f&1&&(d.c=Math.max(e.right-h.width,e.left),l|=1);f&2&&(l|=(d.ce.right?32:0));d.fe.bottom&&(h.height=Math.min(e.bottom-d.f,p+h.height-e.top),h.height=Math.max(h.height,0),l|=8));d.f+h.height>e.bottom&&f&4&&(d.f=Math.max(e.bottom-h.height,e.top),l|=2);f&8&&(l|=(d.f
+e.bottom?128:0));e=l}else e=256;l=e}f=new md(0,0,0,0);f.left=a.c;f.top=a.f;f.width=g.width;f.height=g.height;e=l;if(e&496)return e;a=new I(f.left,f.top);a instanceof I?(g=a.c,a=a.f):(g=a,a=void 0);b.style.left=sd(g);b.style.top=sd(a);g=new J(f.width,f.height);c==g||c&&g&&c.width==g.width&&c.height==g.height||(c=g,a=Ob(K(L(b)).a),!H||pb("10")||a&&pb("8")?(b=b.style,bb?b.MozBoxSizing="border-box":cb?b.WebkitBoxSizing="border-box":b.boxSizing="border-box",b.width=Math.max(c.width,0)+"px",b.height=Math.max(c.height,
+0)+"px"):(g=b.style,a?(H?(a=xd(b,"paddingLeft"),f=xd(b,"paddingRight"),d=xd(b,"paddingTop"),h=xd(b,"paddingBottom"),a=new T(d,f,h,a)):(a=U(b,"paddingLeft"),f=U(b,"paddingRight"),d=U(b,"paddingTop"),h=U(b,"paddingBottom"),a=new T(parseFloat(d),parseFloat(f),parseFloat(h),parseFloat(a))),!H||9<=Number(qb)?(f=U(b,"borderLeftWidth"),d=U(b,"borderRightWidth"),h=U(b,"borderTopWidth"),b=U(b,"borderBottomWidth"),b=new T(parseFloat(h),parseFloat(d),parseFloat(b),parseFloat(f))):(f=zd(b,"borderLeft"),d=zd(b,
+"borderRight"),h=zd(b,"borderTop"),b=zd(b,"borderBottom"),b=new T(h,d,b,f)),g.pixelWidth=c.width-b.left-a.left-a.right-b.right,g.pixelHeight=c.height-b.top-a.top-a.bottom-b.bottom):(g.pixelWidth=c.width,g.pixelHeight=c.height)));return e}function Rd(a,b){return(b&8&&"rtl"==V(a,"direction")?b^4:b)&-9};function Td(){}Td.prototype.a=function(){};function Ud(a,b,c){this.b=a;this.g=b;this.i=c}C(Ud,Td);Ud.prototype.a=function(a,b,c){Qd(this.b,this.g,a,b,void 0,c,this.i)};function Vd(a,b){this.b=a instanceof I?a:new I(a,b)}C(Vd,Td);Vd.prototype.a=function(a,b,c,d){Qd(nd(a),0,a,b,this.b,c,null,d)};function Wd(a){if(a.M&&"function"==typeof a.M)return a.M();if(r(a))return a.split("");if(ba(a)){for(var b=[],c=a.length,d=0;dia()-this.na||de(this,a)};k.Da=function(a){var b=L(this.C);if("undefined"!=typeof document.activeElement){if(a=b.activeElement,!a||N(this.C,a)||"BODY"==a.tagName)return}else if(a.target!=b)return;150>ia()-this.na||de(this)};function ee(a,b){return Da(a.ua||[],function(a){return b===a||N(a,b)})}
+k.w=function(){be.v.w.call(this);this.g.X();Dc(this.F);Dc(this.l);delete this.C;delete this.g;delete this.ua};function fe(a,b){this.$=b||void 0;be.call(this,a)}C(fe,be);fe.prototype.fa=function(){if(this.$){var a=!this.D&&"move_offscreen"!=this.T,b=this.h();a&&(b.style.visibility="hidden",vd(b,!0));this.$.a(b,8,this.Oa);a&&vd(b,!1)}};function ge(a,b,c){this.s=c||(a?K(M(a)):K());fe.call(this,this.s.b("DIV",{style:"position:absolute;display:none;"}));this.V=new I(1,1);this.i=new $d;this.j=null;a&&(c=a=M(a),this.i.a.set(ae(c),c),Q(a,"mouseover",this.ya,!1,this),Q(a,"mouseout",this.ga,!1,this),Q(a,"mousemove",this.xa,!1,this),Q(a,"focus",this.wa,!1,this),Q(a,"blur",this.ga,!1,this));null!=b&&Ub(this.h(),b)}C(ge,fe);var he=[];k=ge.prototype;k.u=null;k.Ka="goog-tooltip";
+k.detach=function(a){if(a){a=M(a);ie(this,a);var b=this.i.a;a=ae(a);Zd(b.a,a)&&(delete b.a[a],b.b--,b.o.length>2*b.b&&Yd(b))}else{b=this.i.M();for(var c=0;a=b[c];c++)ie(this,a);a=this.i.a;a.a={};a.o.length=0;a.b=0}};function ie(a,b){R(b,"mouseover",a.ya,!1,a);R(b,"mouseout",a.ga,!1,a);R(b,"mousemove",a.xa,!1,a);R(b,"focus",a.wa,!1,a);R(b,"blur",a.ga,!1,a)}
+k.qa=function(a){var b=this.h();b&&Tb(b);ge.v.qa.call(this,a);a?(b=this.s.a.body,b.insertBefore(a,b.lastChild),Dc(this.j),this.j=new Gd(this.h()),a=ha(Dc,this.j),this.O?a():(this.K||(this.K=[]),this.K.push(a)),Q(this.j,"focusin",this.W,void 0,this),Q(this.j,"focusout",this.ja,void 0,this)):(Dc(this.j),this.j=null)};
+k.oa=function(){if(!be.prototype.oa.call(this))return!1;if(this.a)for(var a,b=0;a=he[b];b++)N(a.h(),this.a)||ce(a,!1);0<=Aa(he,this)||he.push(this);a=this.h();a.className=this.Ka;this.W();Q(a,"mouseover",this.Aa,!1,this);Q(a,"mouseout",this.za,!1,this);je(this);return!0};
+k.pa=function(){Ea(he,this);for(var a=this.h(),b,c=0;b=he[c];c++)b.a&&N(a,b.a)&&ce(b,!1);this.ta&&this.ta.ja();R(a,"mouseover",this.Aa,!1,this);R(a,"mouseout",this.za,!1,this);this.a=void 0;0==(this.b?this.D?4:1:this.m?3:this.D?2:0)&&(this.H=!1);be.prototype.pa.call(this)};k.Ca=function(a,b){this.a==a&&this.i.contains(this.a)&&(this.H||!this.Pa?(ce(this,!1),this.D||(this.a=a,this.$=b||new ke(Gb(this.V)),this.D&&this.fa(),ce(this,!0))):this.a=void 0);this.b=void 0};
+k.Na=function(a){this.m=void 0;if(a==this.a){a=this.s;a:{var b=a.a;try{var c=b&&b.activeElement;break a}catch(d){}c=null}c=c&&this.h()&&a.contains(this.h(),c);this.u&&(this.u==this.h()||this.i.contains(this.u))||c||this.ka&&this.ka.u||ce(this,!1)}};function le(a,b){var c=Lb(a.s.a);a.V.c=b.clientX+c.c;a.V.f=b.clientY+c.f}k.ya=function(a){var b=me(this,a.target);this.u=b;this.W();b!=this.a&&(this.a=b,this.b||(this.b=Fd(B(this.Ca,this,b,void 0),500)),ne(this),le(this,a))};
+function me(a,b){try{for(;b&&!a.i.contains(b);)b=b.parentNode;return b}catch(c){return null}}k.xa=function(a){le(this,a);this.H=!0};k.wa=function(a){this.u=a=me(this,a.target);this.H=!0;if(this.a!=a){this.a=a;var b=new oe(this.u);this.W();this.b||(this.b=Fd(B(this.Ca,this,a,b),500));ne(this)}};function ne(a){if(a.a)for(var b,c=0;b=he[c];c++)N(b.h(),a.a)&&(b.ka=a,a.ta=b)}
+k.ga=function(a){var b=me(this,a.target),c=me(this,a.relatedTarget);b!=c&&(b==this.u&&(this.u=null),je(this),this.H=!1,!this.D||a.relatedTarget&&N(this.h(),a.relatedTarget)?this.a=void 0:this.ja())};k.Aa=function(){var a=this.h();this.u!=a&&(this.W(),this.u=a)};k.za=function(a){var b=this.h();this.u!=b||a.relatedTarget&&N(b,a.relatedTarget)||(this.u=null,this.ja())};function je(a){a.b&&(n.clearTimeout(a.b),a.b=void 0)}
+k.ja=function(){2==(this.b?this.D?4:1:this.m?3:this.D?2:0)&&(this.m=Fd(B(this.Na,this,this.a),0))};k.W=function(){this.m&&(n.clearTimeout(this.m),this.m=void 0)};k.w=function(){ce(this,!1);je(this);this.detach();this.h()&&Tb(this.h());this.u=null;delete this.s;ge.v.w.call(this)};function ke(a,b){Vd.call(this,a,b)}C(ke,Vd);ke.prototype.a=function(a,b,c){b=nd(a);b=qd(b);c=c?new T(c.top+10,c.right,c.bottom,c.left+10):new T(10,0,0,10);Sd(this.b,a,8,c,b,9)&496&&Sd(this.b,a,8,c,b,5)};
+function oe(a){Ud.call(this,a,5)}C(oe,Ud);oe.prototype.a=function(a,b,c){var d=new I(10,0);Qd(this.b,this.g,a,b,d,c,9)&496&&Qd(this.b,4,a,1,d,c,5)};function Y(a,b){X.call(this,b);this.g=a}C(Y,X);Y.prototype.ba=function(){return!1};Y.prototype.ea=function(){var a=this.g.type+"_field message_field",b=this.g.name;if("string"==this.g.type){var c=this.g.max_size,d=this.g.min_size;void 0!=c&&void 0!=d?b=c==d?b+(" ("+c+" bytes )"):b+(" ( \u2265 "+d+", \u2264 "+c+" bytes )"):void 0!=c?b+=" ( \u2264 "+c+" bytes )":void 0!=d&&(b+=" ( \u2265 "+d+" bytes )")}this.b=this.s.b("div",{"class":a},b)};
+Y.prototype.L=function(){Y.v.L.call(this);var a="Type: "+this.g.type+"
Name: "+this.g.name+"
";void 0!=this.g.multiplier&&(a+="Multipler: 10"+this.g.multiplier+"
");void 0!=this.g.size&&(a+="Size: "+this.g.size);if(this.g.ranges){a+="Allowed Values: ";for(var b=this.g.ranges,c=0;c["+b[c].min+", "+b[c].max+"]";a+="
"}if(this.g.enums){a+="Labeled Values: ";b=this.g.enums;for(c=0;c"+b[c].value+": "+b[c].label+"";a+=
+"
"}c=new ic;b=new hc(c);c=this.l=new ge(this.h());a=yc(b,a);a=(new XMLSerializer).serializeToString(a);0==a.lastIndexOf("")?a=a.slice(a.indexOf(">")+1,-7):ma(a,"/>")&&(a=""));a=Eb(a);if(c=c.h()){if(Fb[c.tagName.toUpperCase()])throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of "+c.tagName+".");a instanceof zb&&a.constructor===zb&&a.Ha===Ab?a=a.da:(za("expected object of type SafeHtml, got '"+a+"' of type "+u(a)),a="type_error:SafeHtml");c.innerHTML=
+a}};Y.prototype.Y=function(){Y.v.Y.call(this);this.l&&this.l.detach(this.h())};function pe(a){X.call(this,a)}C(pe,X);pe.prototype.ea=function(){this.ca(this.s.a.createElement("div"))};pe.prototype.ba=function(a){return"DIV"==a.tagName};
+pe.prototype.update=function(a){for(var b=[];this.a&&0!=this.a.length;)b.push(this.removeChild(this.a?this.a[0]||null:null,!0));for(b=0;ba&&(a+=4294967296);for(a=a.toString(16);a.length=ze.length)){b=ze[b];var c=b.personalities,d=M("model_personality_fieldset");if(d)if(c&&c.length){var e=M("model_personality_tbody");Sb(e);for(a=0;aView in Open Fixture Library');h.appendChild(g);e.appendChild(h)}d.style.display=
+"block"}else d.style.display="none";c=b.sensors;if(d=M("model_sensor_fieldset"))if(c&&c.length){e=M("model_sensor_tbody");Sb(e);for(a=0;ac&&(c=e,b=d)}a.selectedIndex=b;De(a)});
+ja("app.makePIDTable",function(a){var b=new ve;Cd(b,M(a));b.g[0]=Ia;b.g[1]=Be;b.g[2]=Be;b.g[3]=Ia;b.g[4]=Ia;b.g[5]=Ia});
diff --git a/templates/browse_models.tmpl b/templates/browse_models.tmpl
index 2324a59c..d4bfbc90 100644
--- a/templates/browse_models.tmpl
+++ b/templates/browse_models.tmpl
@@ -100,7 +100,7 @@
function attachTooltip(i, j, rating) {
var el = document.getElementById('rating_' + i + '_' + j);
var tt = new goog.ui.Tooltip(el);
- tt.setHtml('RDM Responder Test Score: ' + rating + '%');
+ tt.setText('RDM Responder Test Score: ' + rating + '%');
}
{% for row in model_rows %}