diff --git a/docs/dmi_0_10_2.html b/docs/dmi_0_10_2.html
index 927b741..9b32cc0 100644
--- a/docs/dmi_0_10_2.html
+++ b/docs/dmi_0_10_2.html
@@ -5,7 +5,7 @@
 <meta http-equiv="Pragma" content="no-cache">
 <meta http-equiv="Expires" content="-1">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta content="Robot Framework 3.2.2 (Python 3.8.10 on linux)" name="Generator">
+<meta content="Robot Framework 3.1.2 (Python 3.9.10 on linux)" name="Generator">
 <link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
 <style media="all" type="text/css">
 body {
@@ -53,34 +53,6 @@
     font-weight: normal !important;
     letter-spacing: 0 !important;
 }
-.shortcut-list-toggle, .tag-list-toggle {
-    margin-bottom: 1em;
-    font-size: 0.9em;
-}
-input.switch {
-    display: none;
-}
-.slider {
-    background-color: grey;
-    display: inline-block;
-    position: relative;
-    top: 5px;
-    height: 18px;
-    width: 36px;
-}
-.slider:before {
-    background-color: white;
-    content: "";
-    position: absolute;
-    top: 3px;
-    left: 3px;
-    height: 12px;
-    width: 12px;
-}
-input.switch:checked + .slider::before {
-    background-color: white;
-    left: 21px;
-}
 .keywords {
     border: 1px solid #ccc;
     border-collapse: collapse;
@@ -97,17 +69,9 @@
     background: #ddd;
     color: black;
 }
-.kw {
-    width: 15%;
-}
-.args {
-    width: 25%;
-}
-.tags {
-    width: 10%;
-}
-.doc {
-    width: 60%;
+.kw, .args, .tags {
+    min-width: 100px;
+    max-width: 20%;
 }
 td.kw a {
     color: inherit;
@@ -351,37 +315,6 @@
 }
 </style>
 <script type="text/javascript">
-storage = function () {
-    var prefix = 'robot-framework-';
-    var storage;
-    function init(user) {
-        prefix += user + '-';
-        storage = getStorage();
-    }
-    function getStorage() {
-        // Use localStorage if it's accessible, normal object otherwise.
-        // Inspired by https://stackoverflow.com/questions/11214404
-        try {
-            localStorage.setItem(prefix, prefix);
-            localStorage.removeItem(prefix);
-            return localStorage;
-        } catch (exception) {
-            return {};
-        }
-    }
-    function get(name, defaultValue) {
-        var value = storage[prefix + name];
-        if (typeof value === 'undefined')
-            return defaultValue;
-        return value;
-    }
-    function set(name, value) {
-        storage[prefix + name] = value;
-    }
-    return {init: init, get: get, set: set};
-}();
-</script>
-<script type="text/javascript">
 window.util = function () {
     function map(elems, func) {
         var ret = [];
@@ -585,8 +518,8 @@
 }();
 </script>
 <script type="text/javascript">
-/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
-!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});
 </script>
 <script type="text/javascript">
 /*
@@ -614,7 +547,7 @@
 jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
 </script>
 <script type="text/javascript">
-libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>This library is intended to supported different Protocol Buffer definitions. Precondition is that python files generated from Protocol Buffer files are available in a pip package which must be installed before the library is used.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Supported device\x3c/td>\n<td>Pip package\x3c/td>\n<td>Pip package version\x3c/td>\n<td>Library Name\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.3\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.4\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.5\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.6\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.8\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.9\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.12.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>1.0.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n\x3c/table>","generated":"2021-07-14 13:18:50","inits":[],"keywords":[{"args":[],"doc":"<p>Closes the connection to the gRPC host.\x3c/p>","matched":true,"name":"Connection Close","shortdoc":"","tags":[]},{"args":["host","port","**kwargs"],"doc":"<p>Opens a connection to the gRPC host.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>host: &lt;string&gt;|&lt;IP address&gt;; Name or IP address of the gRPC host.\x3c/li>\n<li>port: &lt;number&gt;; TCP port of the gRPC host.\x3c/li>\n\x3c/ul>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response. Default: 30 s\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Open","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieves the connection parameters for the gRPC channel.\x3c/p>\n<p><b>Return\x3c/b>: A dictionary with the keys:\x3c/p>\n<ul>\n<li>timeout\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Parameters Get","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>Sets the gRPC channel connection parameters.\x3c/p>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: Same dictionary as the keyword <i>Connection Parameter Get\x3c/i> with the values before they got changed.\x3c/p>","matched":true,"name":"Connection Parameters Set","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently used python module <i>device-management-interface\x3c/i>.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Dmi Version Get","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Returns the list of keyword names\x3c/p>","matched":true,"name":"Get Keyword Names","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListEvents\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ListEventsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'events': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service List Events","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateEventsConfiguration\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: EventsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: EventsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service Update Events Configuration","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoGetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n[    # list of:\n  {    # type: HWComponentInfoGetResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'component': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                     1 - VALUE_TYPE_OTHER |\n                     2 - VALUE_TYPE_UNKNOWN |\n                     3 - VALUE_TYPE_VOLTS_AC |\n                     4 - VALUE_TYPE_VOLTS_DC |\n                     5 - VALUE_TYPE_AMPERES |\n                     6 - VALUE_TYPE_WATTS |\n                     7 - VALUE_TYPE_HERTZ |\n                     8 - VALUE_TYPE_CELSIUS |\n                     9 - VALUE_TYPE_PERCENT_RH |\n                    10 - VALUE_TYPE_RPM |\n                    11 - VALUE_TYPE_CMM |\n                    12 - VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                      1 - VALUE_SCALE_YOCTO |\n                      2 - VALUE_SCALE_ZEPTO |\n                      3 - VALUE_SCALE_ATTO |\n                      4 - VALUE_SCALE_FEMTO |\n                      5 - VALUE_SCALE_PICO |\n                      6 - VALUE_SCALE_NANO |\n                      7 - VALUE_SCALE_MICRO |\n                      8 - VALUE_SCALE_MILLI |\n                      9 - VALUE_SCALE_UNITS |\n                     10 - VALUE_SCALE_KILO |\n                     11 - VALUE_SCALE_MEGA |\n                     12 - VALUE_SCALE_GIGA |\n                     13 - VALUE_SCALE_TERA |\n                     14 - VALUE_SCALE_PETA |\n                     15 - VALUE_SCALE_EXA |\n                     16 - VALUE_SCALE_ZETTA |\n                     17 - VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n      '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n        'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                            1 - RJ45 |\n                            2 - FIBER_LC |\n                            3 - FIBER_SC_PC |\n                            4 - FIBER_MPO &gt;\n        'speed': &lt; 0 - SPEED_UNDEFINED |\n                   1 - DYNAMIC |\n                   2 - GIGABIT_1 |\n                   3 - GIGABIT_10 |\n                   4 - GIGABIT_25 |\n                   5 - GIGABIT_40 |\n                   6 - GIGABIT_100 |\n                   7 - GIGABIT_400 |\n                   8 - MEGABIT_2500 |\n                   9 - MEGABIT_1250 &gt;\n        'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - GFAST |\n                      6 - SERIAL |\n                      7 - EPON &gt;\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n        'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                               1 - V48 |\n                               2 - V230 |\n                               3 - V115 &gt;\n      }\n      '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n        'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                          1 - QSFP |\n                          2 - QSFP_PLUS |\n                          3 - QSFP28 |\n                          4 - SFP |\n                          5 - SFP_PLUS |\n                          6 - XFP |\n                          7 - CFP4 |\n                          8 - CFP2 |\n                          9 - CPAK |\n                         10 - X2 |\n                         11 - OTHER |\n                         12 - CFP |\n                         13 - CFP2_ACO |\n                         14 - CFP2_DCO &gt;\n        'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - CPON |\n                        6 - NG_PON2 |\n                        7 - EPON &gt;\n        'max_distance': &lt;uint32&gt;,\n        'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        'rx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'tx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      }\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'entities': [    # list of:\n    &lt;string&gt;,\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggableEntities\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLoggableEntitiesRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Loggable Entities","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLoggingEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Logging Endpoint","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetManagedDevices\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ManagedDevicesResponse\n  'devices': [    # list of:\n    {    # type: ModifiableComponent\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'parent': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                       1 - VALUE_TYPE_OTHER |\n                       2 - VALUE_TYPE_UNKNOWN |\n                       3 - VALUE_TYPE_VOLTS_AC |\n                       4 - VALUE_TYPE_VOLTS_DC |\n                       5 - VALUE_TYPE_AMPERES |\n                       6 - VALUE_TYPE_WATTS |\n                       7 - VALUE_TYPE_HERTZ |\n                       8 - VALUE_TYPE_CELSIUS |\n                       9 - VALUE_TYPE_PERCENT_RH |\n                      10 - VALUE_TYPE_RPM |\n                      11 - VALUE_TYPE_CMM |\n                      12 - VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                        1 - VALUE_SCALE_YOCTO |\n                        2 - VALUE_SCALE_ZEPTO |\n                        3 - VALUE_SCALE_ATTO |\n                        4 - VALUE_SCALE_FEMTO |\n                        5 - VALUE_SCALE_PICO |\n                        6 - VALUE_SCALE_NANO |\n                        7 - VALUE_SCALE_MICRO |\n                        8 - VALUE_SCALE_MILLI |\n                        9 - VALUE_SCALE_UNITS |\n                       10 - VALUE_SCALE_KILO |\n                       11 - VALUE_SCALE_MEGA |\n                       12 - VALUE_SCALE_GIGA |\n                       13 - VALUE_SCALE_TERA |\n                       14 - VALUE_SCALE_PETA |\n                       15 - VALUE_SCALE_EXA |\n                       16 - VALUE_SCALE_ZETTA |\n                       17 - VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n        '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n          'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                              1 - RJ45 |\n                              2 - FIBER_LC |\n                              3 - FIBER_SC_PC |\n                              4 - FIBER_MPO &gt;\n          'speed': &lt; 0 - SPEED_UNDEFINED |\n                     1 - DYNAMIC |\n                     2 - GIGABIT_1 |\n                     3 - GIGABIT_10 |\n                     4 - GIGABIT_25 |\n                     5 - GIGABIT_40 |\n                     6 - GIGABIT_100 |\n                     7 - GIGABIT_400 |\n                     8 - MEGABIT_2500 |\n                     9 - MEGABIT_1250 &gt;\n          'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - GFAST |\n                        6 - SERIAL |\n                        7 - EPON &gt;\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n          'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                                 1 - V48 |\n                                 2 - V230 |\n                                 3 - V115 &gt;\n        }\n        '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n          'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                            1 - QSFP |\n                            2 - QSFP_PLUS |\n                            3 - QSFP28 |\n                            4 - SFP |\n                            5 - SFP_PLUS |\n                            6 - XFP |\n                            7 - CFP4 |\n                            8 - CFP2 |\n                            9 - CPAK |\n                           10 - X2 |\n                           11 - OTHER |\n                           12 - CFP |\n                           13 - CFP2_ACO |\n                           14 - CFP2_DCO &gt;\n          'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                          1 - ETHERNET |\n                          2 - GPON |\n                          3 - XGPON |\n                          4 - XGSPON |\n                          5 - CPON |\n                          6 - NG_PON2 |\n                          7 - EPON &gt;\n          'max_distance': &lt;uint32&gt;,\n          'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                   1 - VALUE_SCALE_YOCTO |\n                                   2 - VALUE_SCALE_ZEPTO |\n                                   3 - VALUE_SCALE_ATTO |\n                                   4 - VALUE_SCALE_FEMTO |\n                                   5 - VALUE_SCALE_PICO |\n                                   6 - VALUE_SCALE_NANO |\n                                   7 - VALUE_SCALE_MICRO |\n                                   8 - VALUE_SCALE_MILLI |\n                                   9 - VALUE_SCALE_UNITS |\n                                  10 - VALUE_SCALE_KILO |\n                                  11 - VALUE_SCALE_MEGA |\n                                  12 - VALUE_SCALE_GIGA |\n                                  13 - VALUE_SCALE_TERA |\n                                  14 - VALUE_SCALE_PETA |\n                                  15 - VALUE_SCALE_EXA |\n                                  16 - VALUE_SCALE_ZETTA |\n                                  17 - VALUE_SCALE_YOTTA &gt;\n          'rx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'tx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        }\n      }\n      'parent_rel_pos': &lt;int32&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n    }\n  ]\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Managed Devices","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMsgBusEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'msgbus_endpoint': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetPhysicalInventory\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: PhysicalInventoryRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n[    # list of:\n  {    # type: PhysicalInventoryResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'inventory': {    # type: Hardware\n      'last_change': &lt;google.protobuf.Timestamp&gt;,\n      'root': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                       1 - VALUE_TYPE_OTHER |\n                       2 - VALUE_TYPE_UNKNOWN |\n                       3 - VALUE_TYPE_VOLTS_AC |\n                       4 - VALUE_TYPE_VOLTS_DC |\n                       5 - VALUE_TYPE_AMPERES |\n                       6 - VALUE_TYPE_WATTS |\n                       7 - VALUE_TYPE_HERTZ |\n                       8 - VALUE_TYPE_CELSIUS |\n                       9 - VALUE_TYPE_PERCENT_RH |\n                      10 - VALUE_TYPE_RPM |\n                      11 - VALUE_TYPE_CMM |\n                      12 - VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                        1 - VALUE_SCALE_YOCTO |\n                        2 - VALUE_SCALE_ZEPTO |\n                        3 - VALUE_SCALE_ATTO |\n                        4 - VALUE_SCALE_FEMTO |\n                        5 - VALUE_SCALE_PICO |\n                        6 - VALUE_SCALE_NANO |\n                        7 - VALUE_SCALE_MICRO |\n                        8 - VALUE_SCALE_MILLI |\n                        9 - VALUE_SCALE_UNITS |\n                       10 - VALUE_SCALE_KILO |\n                       11 - VALUE_SCALE_MEGA |\n                       12 - VALUE_SCALE_GIGA |\n                       13 - VALUE_SCALE_TERA |\n                       14 - VALUE_SCALE_PETA |\n                       15 - VALUE_SCALE_EXA |\n                       16 - VALUE_SCALE_ZETTA |\n                       17 - VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n        '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n          'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                              1 - RJ45 |\n                              2 - FIBER_LC |\n                              3 - FIBER_SC_PC |\n                              4 - FIBER_MPO &gt;\n          'speed': &lt; 0 - SPEED_UNDEFINED |\n                     1 - DYNAMIC |\n                     2 - GIGABIT_1 |\n                     3 - GIGABIT_10 |\n                     4 - GIGABIT_25 |\n                     5 - GIGABIT_40 |\n                     6 - GIGABIT_100 |\n                     7 - GIGABIT_400 |\n                     8 - MEGABIT_2500 |\n                     9 - MEGABIT_1250 &gt;\n          'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - GFAST |\n                        6 - SERIAL |\n                        7 - EPON &gt;\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n          'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                                 1 - V48 |\n                                 2 - V230 |\n                                 3 - V115 &gt;\n        }\n        '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n          'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                            1 - QSFP |\n                            2 - QSFP_PLUS |\n                            3 - QSFP28 |\n                            4 - SFP |\n                            5 - SFP_PLUS |\n                            6 - XFP |\n                            7 - CFP4 |\n                            8 - CFP2 |\n                            9 - CPAK |\n                           10 - X2 |\n                           11 - OTHER |\n                           12 - CFP |\n                           13 - CFP2_ACO |\n                           14 - CFP2_DCO &gt;\n          'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                          1 - ETHERNET |\n                          2 - GPON |\n                          3 - XGPON |\n                          4 - XGSPON |\n                          5 - CPON |\n                          6 - NG_PON2 |\n                          7 - EPON &gt;\n          'max_distance': &lt;uint32&gt;,\n          'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                   1 - VALUE_SCALE_YOCTO |\n                                   2 - VALUE_SCALE_ZEPTO |\n                                   3 - VALUE_SCALE_ATTO |\n                                   4 - VALUE_SCALE_FEMTO |\n                                   5 - VALUE_SCALE_PICO |\n                                   6 - VALUE_SCALE_NANO |\n                                   7 - VALUE_SCALE_MICRO |\n                                   8 - VALUE_SCALE_MILLI |\n                                   9 - VALUE_SCALE_UNITS |\n                                  10 - VALUE_SCALE_KILO |\n                                  11 - VALUE_SCALE_MEGA |\n                                  12 - VALUE_SCALE_GIGA |\n                                  13 - VALUE_SCALE_TERA |\n                                  14 - VALUE_SCALE_PETA |\n                                  15 - VALUE_SCALE_EXA |\n                                  16 - VALUE_SCALE_ZETTA |\n                                  17 - VALUE_SCALE_YOTTA &gt;\n          'rx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'tx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        }\n      }\n      'last_booted': &lt;google.protobuf.Timestamp&gt;,\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Physical Inventory","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoSetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n  'changes': {    # type: ModifiableComponent\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n    'parent': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                     1 - VALUE_TYPE_OTHER |\n                     2 - VALUE_TYPE_UNKNOWN |\n                     3 - VALUE_TYPE_VOLTS_AC |\n                     4 - VALUE_TYPE_VOLTS_DC |\n                     5 - VALUE_TYPE_AMPERES |\n                     6 - VALUE_TYPE_WATTS |\n                     7 - VALUE_TYPE_HERTZ |\n                     8 - VALUE_TYPE_CELSIUS |\n                     9 - VALUE_TYPE_PERCENT_RH |\n                    10 - VALUE_TYPE_RPM |\n                    11 - VALUE_TYPE_CMM |\n                    12 - VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                      1 - VALUE_SCALE_YOCTO |\n                      2 - VALUE_SCALE_ZEPTO |\n                      3 - VALUE_SCALE_ATTO |\n                      4 - VALUE_SCALE_FEMTO |\n                      5 - VALUE_SCALE_PICO |\n                      6 - VALUE_SCALE_NANO |\n                      7 - VALUE_SCALE_MICRO |\n                      8 - VALUE_SCALE_MILLI |\n                      9 - VALUE_SCALE_UNITS |\n                     10 - VALUE_SCALE_KILO |\n                     11 - VALUE_SCALE_MEGA |\n                     12 - VALUE_SCALE_GIGA |\n                     13 - VALUE_SCALE_TERA |\n                     14 - VALUE_SCALE_PETA |\n                     15 - VALUE_SCALE_EXA |\n                     16 - VALUE_SCALE_ZETTA |\n                     17 - VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n      '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n        'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                            1 - RJ45 |\n                            2 - FIBER_LC |\n                            3 - FIBER_SC_PC |\n                            4 - FIBER_MPO &gt;\n        'speed': &lt; 0 - SPEED_UNDEFINED |\n                   1 - DYNAMIC |\n                   2 - GIGABIT_1 |\n                   3 - GIGABIT_10 |\n                   4 - GIGABIT_25 |\n                   5 - GIGABIT_40 |\n                   6 - GIGABIT_100 |\n                   7 - GIGABIT_400 |\n                   8 - MEGABIT_2500 |\n                   9 - MEGABIT_1250 &gt;\n        'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - GFAST |\n                      6 - SERIAL |\n                      7 - EPON &gt;\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n        'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                               1 - V48 |\n                               2 - V230 |\n                               3 - V115 &gt;\n      }\n      '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n        'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                          1 - QSFP |\n                          2 - QSFP_PLUS |\n                          3 - QSFP28 |\n                          4 - SFP |\n                          5 - SFP_PLUS |\n                          6 - XFP |\n                          7 - CFP4 |\n                          8 - CFP2 |\n                          9 - CPAK |\n                         10 - X2 |\n                         11 - OTHER |\n                         12 - CFP |\n                         13 - CFP2_ACO |\n                         14 - CFP2_DCO &gt;\n        'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - CPON |\n                        6 - NG_PON2 |\n                        7 - EPON &gt;\n        'max_distance': &lt;uint32&gt;,\n        'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        'rx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'tx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      }\n    }\n    'parent_rel_pos': &lt;int32&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                     1 - COMP_ADMIN_STATE_UNKNOWN |\n                     2 - COMP_ADMIN_STATE_LOCKED |\n                     3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                     4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: HWComponentInfoSetResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'loglevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLoggingEndpointRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Logging Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetMsgBusEndpointRequest\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StartManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ModifiableComponent\n  'name': &lt;string&gt;,\n  'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n              1 - COMPONENT_TYPE_UNKNOWN |\n              2 - COMPONENT_TYPE_CHASSIS |\n              3 - COMPONENT_TYPE_BACKPLANE |\n              4 - COMPONENT_TYPE_CONTAINER |\n              5 - COMPONENT_TYPE_POWER_SUPPLY |\n              6 - COMPONENT_TYPE_FAN |\n              7 - COMPONENT_TYPE_SENSOR |\n              8 - COMPONENT_TYPE_MODULE |\n              9 - COMPONENT_TYPE_PORT |\n             10 - COMPONENT_TYPE_CPU |\n             11 - COMPONENT_TYPE_BATTERY |\n             12 - COMPONENT_TYPE_STORAGE |\n             13 - COMPONENT_TYPE_MEMORY |\n             14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n  'parent': {    # type: Component\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n    'description': &lt;string&gt;,\n    'parent': &lt;string&gt;,\n    'parent_rel_pos': &lt;int32&gt;,\n    'children': [    # list of:\n      &lt; recursive type: Component &gt;\n    ]\n    'hardware_rev': &lt;string&gt;,\n    'firmware_rev': &lt;string&gt;,\n    'software_rev': &lt;string&gt;,\n    'serial_num': &lt;string&gt;,\n    'mfg_name': &lt;string&gt;,\n    'model_name': &lt;string&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'is_fru': &lt;bool&gt;,\n    'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'state': {    # type: ComponentState\n      'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n      'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                      1 - COMP_OPER_STATE_UNKNOWN |\n                      2 - COMP_OPER_STATE_DISABLED |\n                      3 - COMP_OPER_STATE_ENABLED |\n                      4 - COMP_OPER_STATE_TESTING &gt;\n      'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                       1 - COMP_USAGE_STATE_UNKNOWN |\n                       2 - COMP_USAGE_STATE_IDLE |\n                       3 - COMP_USAGE_STATE_ACTIVE |\n                       4 - COMP_USAGE_STATE_BUSY &gt;\n      'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                       1 - COMP_ALARM_STATE_UNKNOWN |\n                       2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                       3 - COMP_ALARM_STATE_CRITICAL |\n                       4 - COMP_ALARM_STATE_MAJOR |\n                       5 - COMP_ALARM_STATE_MINOR |\n                       6 - COMP_ALARM_STATE_WARNING |\n                       7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n      'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                         1 - COMP_STANDBY_STATE_UNKNOWN |\n                         2 - COMP_STANDBY_STATE_HOT |\n                         3 - COMP_STANDBY_STATE_COLD |\n                         4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n    }\n    'sensor_data': [    # list of:\n      {    # type: ComponentSensorData\n        'value': &lt;int32&gt;,\n        'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                   1 - VALUE_TYPE_OTHER |\n                   2 - VALUE_TYPE_UNKNOWN |\n                   3 - VALUE_TYPE_VOLTS_AC |\n                   4 - VALUE_TYPE_VOLTS_DC |\n                   5 - VALUE_TYPE_AMPERES |\n                   6 - VALUE_TYPE_WATTS |\n                   7 - VALUE_TYPE_HERTZ |\n                   8 - VALUE_TYPE_CELSIUS |\n                   9 - VALUE_TYPE_PERCENT_RH |\n                  10 - VALUE_TYPE_RPM |\n                  11 - VALUE_TYPE_CMM |\n                  12 - VALUE_TYPE_TRUTH_VALUE &gt;\n        'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                    1 - VALUE_SCALE_YOCTO |\n                    2 - VALUE_SCALE_ZEPTO |\n                    3 - VALUE_SCALE_ATTO |\n                    4 - VALUE_SCALE_FEMTO |\n                    5 - VALUE_SCALE_PICO |\n                    6 - VALUE_SCALE_NANO |\n                    7 - VALUE_SCALE_MICRO |\n                    8 - VALUE_SCALE_MILLI |\n                    9 - VALUE_SCALE_UNITS |\n                   10 - VALUE_SCALE_KILO |\n                   11 - VALUE_SCALE_MEGA |\n                   12 - VALUE_SCALE_GIGA |\n                   13 - VALUE_SCALE_TERA |\n                   14 - VALUE_SCALE_PETA |\n                   15 - VALUE_SCALE_EXA |\n                   16 - VALUE_SCALE_ZETTA |\n                   17 - VALUE_SCALE_YOTTA &gt;\n        'precision': &lt;int32&gt;,\n        'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                    1 - SENSOR_STATUS_OK |\n                    2 - SENSOR_STATUS_UNAVAILABLE |\n                    3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n        'units_display': &lt;string&gt;,\n        'timestamp': &lt;google.protobuf.Timestamp&gt;,\n        'value_update_rate': &lt;uint32&gt;,\n        'data_type': &lt;string&gt;,\n      }\n    ]\n    '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n      'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                          1 - RJ45 |\n                          2 - FIBER_LC |\n                          3 - FIBER_SC_PC |\n                          4 - FIBER_MPO &gt;\n      'speed': &lt; 0 - SPEED_UNDEFINED |\n                 1 - DYNAMIC |\n                 2 - GIGABIT_1 |\n                 3 - GIGABIT_10 |\n                 4 - GIGABIT_25 |\n                 5 - GIGABIT_40 |\n                 6 - GIGABIT_100 |\n                 7 - GIGABIT_400 |\n                 8 - MEGABIT_2500 |\n                 9 - MEGABIT_1250 &gt;\n      'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                    1 - ETHERNET |\n                    2 - GPON |\n                    3 - XGPON |\n                    4 - XGSPON |\n                    5 - GFAST |\n                    6 - SERIAL |\n                    7 - EPON &gt;\n      'physical_label': &lt;string&gt;,\n    }\n    '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n      'physical_label': &lt;string&gt;,\n    }\n    '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n      'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                             1 - V48 |\n                             2 - V230 |\n                             3 - V115 &gt;\n    }\n    '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n      'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                        1 - QSFP |\n                        2 - QSFP_PLUS |\n                        3 - QSFP28 |\n                        4 - SFP |\n                        5 - SFP_PLUS |\n                        6 - XFP |\n                        7 - CFP4 |\n                        8 - CFP2 |\n                        9 - CPAK |\n                       10 - X2 |\n                       11 - OTHER |\n                       12 - CFP |\n                       13 - CFP2_ACO |\n                       14 - CFP2_DCO &gt;\n      'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - CPON |\n                      6 - NG_PON2 |\n                      7 - EPON &gt;\n      'max_distance': &lt;uint32&gt;,\n      'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      'rx_wavelength': [    # list of:\n        &lt;uint32&gt;,\n      ]\n      'tx_wavelength': [    # list of:\n        &lt;uint32&gt;,\n      ]\n      'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                             1 - VALUE_SCALE_YOCTO |\n                             2 - VALUE_SCALE_ZEPTO |\n                             3 - VALUE_SCALE_ATTO |\n                             4 - VALUE_SCALE_FEMTO |\n                             5 - VALUE_SCALE_PICO |\n                             6 - VALUE_SCALE_NANO |\n                             7 - VALUE_SCALE_MICRO |\n                             8 - VALUE_SCALE_MILLI |\n                             9 - VALUE_SCALE_UNITS |\n                            10 - VALUE_SCALE_KILO |\n                            11 - VALUE_SCALE_MEGA |\n                            12 - VALUE_SCALE_GIGA |\n                            13 - VALUE_SCALE_TERA |\n                            14 - VALUE_SCALE_PETA |\n                            15 - VALUE_SCALE_EXA |\n                            16 - VALUE_SCALE_ZETTA |\n                            17 - VALUE_SCALE_YOTTA &gt;\n    }\n  }\n  'parent_rel_pos': &lt;int32&gt;,\n  'alias': &lt;string&gt;,\n  'asset_id': &lt;string&gt;,\n  'uri': {    # type: Uri\n    'uri': &lt;string&gt;,\n  }\n  'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                   1 - COMP_ADMIN_STATE_UNKNOWN |\n                   2 - COMP_ADMIN_STATE_LOCKED |\n                   3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                   4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: StartManagingDeviceResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Start Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StopManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StopManagingDeviceRequest\n  'name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StopManagingDeviceResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Stop Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetMetric\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetMetricRequest\n  'meta_data': {    # type: MetricMetaData\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_name': &lt;string&gt;,\n  }\n  'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                   1 - METRIC_FAN_SPEED |\n                 100 - METRIC_CPU_TEMP |\n                 101 - METRIC_CPU_USAGE_PERCENTAGE |\n                 200 - METRIC_TRANSCEIVER_TEMP |\n                 201 - METRIC_TRANSCEIVER_VOLTAGE |\n                 202 - METRIC_TRANSCEIVER_BIAS |\n                 203 - METRIC_TRANSCEIVER_RX_POWER |\n                 204 - METRIC_TRANSCEIVER_TX_POWER |\n                 205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                 300 - METRIC_DISK_TEMP |\n                 301 - METRIC_DISK_CAPACITY |\n                 302 - METRIC_DISK_USAGE |\n                 303 - METRIC_DISK_USAGE_PERCENTAGE |\n                 304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                 305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                 400 - METRIC_RAM_TEMP |\n                 401 - METRIC_RAM_CAPACITY |\n                 402 - METRIC_RAM_USAGE |\n                 403 - METRIC_RAM_USAGE_PERCENTAGE |\n                 500 - METRIC_POWER_MAX |\n                 501 - METRIC_POWER_USAGE |\n                 502 - METRIC_POWER_USAGE_PERCENTAGE |\n                 600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMetricResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'metric': {    # type: Metric\n    'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                     1 - METRIC_FAN_SPEED |\n                   100 - METRIC_CPU_TEMP |\n                   101 - METRIC_CPU_USAGE_PERCENTAGE |\n                   200 - METRIC_TRANSCEIVER_TEMP |\n                   201 - METRIC_TRANSCEIVER_VOLTAGE |\n                   202 - METRIC_TRANSCEIVER_BIAS |\n                   203 - METRIC_TRANSCEIVER_RX_POWER |\n                   204 - METRIC_TRANSCEIVER_TX_POWER |\n                   205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                   300 - METRIC_DISK_TEMP |\n                   301 - METRIC_DISK_CAPACITY |\n                   302 - METRIC_DISK_USAGE |\n                   303 - METRIC_DISK_USAGE_PERCENTAGE |\n                   304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                   305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                   400 - METRIC_RAM_TEMP |\n                   401 - METRIC_RAM_CAPACITY |\n                   402 - METRIC_RAM_USAGE |\n                   403 - METRIC_RAM_USAGE_PERCENTAGE |\n                   500 - METRIC_POWER_MAX |\n                   501 - METRIC_POWER_USAGE |\n                   502 - METRIC_POWER_USAGE_PERCENTAGE |\n                   600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n    'metric_metadata': {    # type: MetricMetaData\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_name': &lt;string&gt;,\n    }\n    'value': {    # type: ComponentSensorData\n      'value': &lt;int32&gt;,\n      'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                 1 - VALUE_TYPE_OTHER |\n                 2 - VALUE_TYPE_UNKNOWN |\n                 3 - VALUE_TYPE_VOLTS_AC |\n                 4 - VALUE_TYPE_VOLTS_DC |\n                 5 - VALUE_TYPE_AMPERES |\n                 6 - VALUE_TYPE_WATTS |\n                 7 - VALUE_TYPE_HERTZ |\n                 8 - VALUE_TYPE_CELSIUS |\n                 9 - VALUE_TYPE_PERCENT_RH |\n                10 - VALUE_TYPE_RPM |\n                11 - VALUE_TYPE_CMM |\n                12 - VALUE_TYPE_TRUTH_VALUE &gt;\n      'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                  1 - VALUE_SCALE_YOCTO |\n                  2 - VALUE_SCALE_ZEPTO |\n                  3 - VALUE_SCALE_ATTO |\n                  4 - VALUE_SCALE_FEMTO |\n                  5 - VALUE_SCALE_PICO |\n                  6 - VALUE_SCALE_NANO |\n                  7 - VALUE_SCALE_MICRO |\n                  8 - VALUE_SCALE_MILLI |\n                  9 - VALUE_SCALE_UNITS |\n                 10 - VALUE_SCALE_KILO |\n                 11 - VALUE_SCALE_MEGA |\n                 12 - VALUE_SCALE_GIGA |\n                 13 - VALUE_SCALE_TERA |\n                 14 - VALUE_SCALE_PETA |\n                 15 - VALUE_SCALE_EXA |\n                 16 - VALUE_SCALE_ZETTA |\n                 17 - VALUE_SCALE_YOTTA &gt;\n      'precision': &lt;int32&gt;,\n      'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                  1 - SENSOR_STATUS_OK |\n                  2 - SENSOR_STATUS_UNAVAILABLE |\n                  3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n      'units_display': &lt;string&gt;,\n      'timestamp': &lt;google.protobuf.Timestamp&gt;,\n      'value_update_rate': &lt;uint32&gt;,\n      'data_type': &lt;string&gt;,\n    }\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Get Metric","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListMetrics\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ListMetricsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'metrics': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service List Metrics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateMetricsConfiguration\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: MetricsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: MetricsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Update Metrics Configuration","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently running library instance.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Library Version Get","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ActivateImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Activate Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>DownloadImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: DownloadImageRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'image_info': {    # type: ImageInformation\n    'image': {    # type: ImageVersion\n      'image_name': &lt;string&gt;,\n      'version': &lt;string&gt;,\n    }\n    'image_install_script': &lt;string&gt;,\n    'image_url': &lt;string&gt;,\n    'sha256sum': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Download Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetSoftwareVersion\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetSoftwareVersionInformationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'info': {    # type: SoftwareVersionInformation\n    'active_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n    'standby_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Software Version","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetStartupConfigurationInfo\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StartupConfigInfoRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StartupConfigInfoResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'config_url': &lt;string&gt;,\n  'version': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Startup Configuration Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>RevertToStandbyImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Revert To Standby Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateStartupConfiguration\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ConfigRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'config_url': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ConfigResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Update Startup Configuration","shortdoc":"","tags":[]}],"name":"grpc_robot.Dmi","named_args":true,"scope":"SUITE","version":"2.9.3"};
+libdoc = {"all_tags":[],"contains_tags":false,"doc":"<p>This library is intended to supported different Protocol Buffer definitions. Precondition is that python files generated from Protocol Buffer files are available in a pip package which must be installed before the library is used.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Supported device\x3c/td>\n<td>Pip package\x3c/td>\n<td>Pip package version\x3c/td>\n<td>Library Name\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.3\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.4\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.5\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.6\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.8\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.9.9\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.1\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.10.2\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>0.12.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n<tr>\n<td>dmi\x3c/td>\n<td>device-management-interface\x3c/td>\n<td>1.0.0\x3c/td>\n<td>grpc_robot.Dmi\x3c/td>\n\x3c/tr>\n\x3c/table>","generated":"2022-02-07 12:57:05","inits":[],"keywords":[{"args":[],"doc":"<p>Closes the connection to the gRPC host.\x3c/p>","matched":true,"name":"Connection Close","shortdoc":"","tags":[]},{"args":["host","port","**kwargs"],"doc":"<p>Opens a connection to the gRPC host.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>host: &lt;string&gt;|&lt;IP address&gt;; Name or IP address of the gRPC host.\x3c/li>\n<li>port: &lt;number&gt;; TCP port of the gRPC host.\x3c/li>\n\x3c/ul>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response. Default: 30 s\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Open","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieves the connection parameters for the gRPC channel.\x3c/p>\n<p><b>Return\x3c/b>: A dictionary with the keys:\x3c/p>\n<ul>\n<li>timeout\x3c/li>\n\x3c/ul>","matched":true,"name":"Connection Parameters Get","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>Sets the gRPC channel connection parameters.\x3c/p>\n<p><b>Named Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>timeout: &lt;number&gt;; Timeout in seconds for a gRPC response.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: Same dictionary as the keyword <i>Connection Parameter Get\x3c/i> with the values before they got changed.\x3c/p>","matched":true,"name":"Connection Parameters Set","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently used python module <i>device-management-interface\x3c/i>.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Dmi Version Get","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Returns the list of keyword names\x3c/p>","matched":true,"name":"Get Keyword Names","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListEvents\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ListEventsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'events': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service List Events","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateEventsConfiguration\x3c/i> from <i>NativeEventsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: EventsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: EventsCfg\n    'items': [    # list of:\n      {    # type: EventCfg\n        'event_id': &lt;   0 - EVENT_NAME_UNDEFINED |\n                      100 - EVENT_TRANSCEIVER_PLUG_OUT |\n                      101 - EVENT_TRANSCEIVER_PLUG_IN |\n                      102 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD |\n                      103 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD |\n                      104 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD |\n                      105 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD |\n                      106 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD |\n                      107 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD |\n                      108 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD |\n                      109 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD |\n                      110 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD |\n                      111 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD |\n                      112 - EVENT_TRANSCEIVER_FAILURE |\n                      113 - EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED |\n                      114 - EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED |\n                      115 - EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED |\n                      116 - EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED |\n                      117 - EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED |\n                      118 - EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED |\n                      119 - EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      120 - EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      121 - EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED |\n                      122 - EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED |\n                      123 - EVENT_TRANSCEIVER_FAILURE_RECOVERED |\n                      200 - EVENT_PSU_PLUG_OUT |\n                      201 - EVENT_PSU_PLUG_IN |\n                      202 - EVENT_PSU_FAILURE |\n                      203 - EVENT_PSU_FAILURE_RECOVERED |\n                      300 - EVENT_FAN_FAILURE |\n                      301 - EVENT_FAN_PLUG_OUT |\n                      302 - EVENT_FAN_PLUG_IN |\n                      303 - EVENT_FAN_FAILURE_RECOVERED |\n                      400 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL |\n                      401 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL |\n                      402 - EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      403 - EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED |\n                      500 - EVENT_HW_DEVICE_RESET |\n                      501 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL |\n                      502 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL |\n                      503 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED |\n                      504 - EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED &gt;\n        'is_configured': &lt;bool&gt;,\n        'thresholds': {    # type: Thresholds\n          '<i>ONEOF threshold\x3c/i>: <b>upper\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n          '<i>ONEOF threshold\x3c/i>: <b>lower\x3c/b>': {    # type: WaterMarks\n            'high': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n            'low': {    # type: ValueType\n              '<i>ONEOF val\x3c/i>: <b>int_val\x3c/b>': &lt;int64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>uint_val\x3c/b>': &lt;uint64&gt;,\n              '<i>ONEOF val\x3c/i>: <b>float_val\x3c/b>': &lt;float&gt;,\n            }\n          }\n        }\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: EventsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Event Mgmt Service Update Events Configuration","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoGetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n[    # list of:\n  {    # type: HWComponentInfoGetResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'component': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                     1 - VALUE_TYPE_OTHER |\n                     2 - VALUE_TYPE_UNKNOWN |\n                     3 - VALUE_TYPE_VOLTS_AC |\n                     4 - VALUE_TYPE_VOLTS_DC |\n                     5 - VALUE_TYPE_AMPERES |\n                     6 - VALUE_TYPE_WATTS |\n                     7 - VALUE_TYPE_HERTZ |\n                     8 - VALUE_TYPE_CELSIUS |\n                     9 - VALUE_TYPE_PERCENT_RH |\n                    10 - VALUE_TYPE_RPM |\n                    11 - VALUE_TYPE_CMM |\n                    12 - VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                      1 - VALUE_SCALE_YOCTO |\n                      2 - VALUE_SCALE_ZEPTO |\n                      3 - VALUE_SCALE_ATTO |\n                      4 - VALUE_SCALE_FEMTO |\n                      5 - VALUE_SCALE_PICO |\n                      6 - VALUE_SCALE_NANO |\n                      7 - VALUE_SCALE_MICRO |\n                      8 - VALUE_SCALE_MILLI |\n                      9 - VALUE_SCALE_UNITS |\n                     10 - VALUE_SCALE_KILO |\n                     11 - VALUE_SCALE_MEGA |\n                     12 - VALUE_SCALE_GIGA |\n                     13 - VALUE_SCALE_TERA |\n                     14 - VALUE_SCALE_PETA |\n                     15 - VALUE_SCALE_EXA |\n                     16 - VALUE_SCALE_ZETTA |\n                     17 - VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n      '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n        'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                            1 - RJ45 |\n                            2 - FIBER_LC |\n                            3 - FIBER_SC_PC |\n                            4 - FIBER_MPO &gt;\n        'speed': &lt; 0 - SPEED_UNDEFINED |\n                   1 - DYNAMIC |\n                   2 - GIGABIT_1 |\n                   3 - GIGABIT_10 |\n                   4 - GIGABIT_25 |\n                   5 - GIGABIT_40 |\n                   6 - GIGABIT_100 |\n                   7 - GIGABIT_400 |\n                   8 - MEGABIT_2500 |\n                   9 - MEGABIT_1250 &gt;\n        'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - GFAST |\n                      6 - SERIAL |\n                      7 - EPON &gt;\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n        'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                               1 - V48 |\n                               2 - V230 |\n                               3 - V115 &gt;\n      }\n      '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n        'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                          1 - QSFP |\n                          2 - QSFP_PLUS |\n                          3 - QSFP28 |\n                          4 - SFP |\n                          5 - SFP_PLUS |\n                          6 - XFP |\n                          7 - CFP4 |\n                          8 - CFP2 |\n                          9 - CPAK |\n                         10 - X2 |\n                         11 - OTHER |\n                         12 - CFP |\n                         13 - CFP2_ACO |\n                         14 - CFP2_DCO &gt;\n        'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - CPON |\n                        6 - NG_PON2 |\n                        7 - EPON &gt;\n        'max_distance': &lt;uint32&gt;,\n        'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        'rx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'tx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      }\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'entities': [    # list of:\n    &lt;string&gt;,\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggableEntities\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetLoggableEntitiesRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logLevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Loggable Entities","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetLoggingEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Logging Endpoint","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetManagedDevices\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n{    # type: ManagedDevicesResponse\n  'devices': [    # list of:\n    {    # type: ModifiableComponent\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'parent': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                       1 - VALUE_TYPE_OTHER |\n                       2 - VALUE_TYPE_UNKNOWN |\n                       3 - VALUE_TYPE_VOLTS_AC |\n                       4 - VALUE_TYPE_VOLTS_DC |\n                       5 - VALUE_TYPE_AMPERES |\n                       6 - VALUE_TYPE_WATTS |\n                       7 - VALUE_TYPE_HERTZ |\n                       8 - VALUE_TYPE_CELSIUS |\n                       9 - VALUE_TYPE_PERCENT_RH |\n                      10 - VALUE_TYPE_RPM |\n                      11 - VALUE_TYPE_CMM |\n                      12 - VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                        1 - VALUE_SCALE_YOCTO |\n                        2 - VALUE_SCALE_ZEPTO |\n                        3 - VALUE_SCALE_ATTO |\n                        4 - VALUE_SCALE_FEMTO |\n                        5 - VALUE_SCALE_PICO |\n                        6 - VALUE_SCALE_NANO |\n                        7 - VALUE_SCALE_MICRO |\n                        8 - VALUE_SCALE_MILLI |\n                        9 - VALUE_SCALE_UNITS |\n                       10 - VALUE_SCALE_KILO |\n                       11 - VALUE_SCALE_MEGA |\n                       12 - VALUE_SCALE_GIGA |\n                       13 - VALUE_SCALE_TERA |\n                       14 - VALUE_SCALE_PETA |\n                       15 - VALUE_SCALE_EXA |\n                       16 - VALUE_SCALE_ZETTA |\n                       17 - VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n        '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n          'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                              1 - RJ45 |\n                              2 - FIBER_LC |\n                              3 - FIBER_SC_PC |\n                              4 - FIBER_MPO &gt;\n          'speed': &lt; 0 - SPEED_UNDEFINED |\n                     1 - DYNAMIC |\n                     2 - GIGABIT_1 |\n                     3 - GIGABIT_10 |\n                     4 - GIGABIT_25 |\n                     5 - GIGABIT_40 |\n                     6 - GIGABIT_100 |\n                     7 - GIGABIT_400 |\n                     8 - MEGABIT_2500 |\n                     9 - MEGABIT_1250 &gt;\n          'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - GFAST |\n                        6 - SERIAL |\n                        7 - EPON &gt;\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n          'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                                 1 - V48 |\n                                 2 - V230 |\n                                 3 - V115 &gt;\n        }\n        '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n          'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                            1 - QSFP |\n                            2 - QSFP_PLUS |\n                            3 - QSFP28 |\n                            4 - SFP |\n                            5 - SFP_PLUS |\n                            6 - XFP |\n                            7 - CFP4 |\n                            8 - CFP2 |\n                            9 - CPAK |\n                           10 - X2 |\n                           11 - OTHER |\n                           12 - CFP |\n                           13 - CFP2_ACO |\n                           14 - CFP2_DCO &gt;\n          'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                          1 - ETHERNET |\n                          2 - GPON |\n                          3 - XGPON |\n                          4 - XGSPON |\n                          5 - CPON |\n                          6 - NG_PON2 |\n                          7 - EPON &gt;\n          'max_distance': &lt;uint32&gt;,\n          'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                   1 - VALUE_SCALE_YOCTO |\n                                   2 - VALUE_SCALE_ZEPTO |\n                                   3 - VALUE_SCALE_ATTO |\n                                   4 - VALUE_SCALE_FEMTO |\n                                   5 - VALUE_SCALE_PICO |\n                                   6 - VALUE_SCALE_NANO |\n                                   7 - VALUE_SCALE_MICRO |\n                                   8 - VALUE_SCALE_MILLI |\n                                   9 - VALUE_SCALE_UNITS |\n                                  10 - VALUE_SCALE_KILO |\n                                  11 - VALUE_SCALE_MEGA |\n                                  12 - VALUE_SCALE_GIGA |\n                                  13 - VALUE_SCALE_TERA |\n                                  14 - VALUE_SCALE_PETA |\n                                  15 - VALUE_SCALE_EXA |\n                                  16 - VALUE_SCALE_ZETTA |\n                                  17 - VALUE_SCALE_YOTTA &gt;\n          'rx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'tx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        }\n      }\n      'parent_rel_pos': &lt;int32&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n    }\n  ]\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Managed Devices","shortdoc":"","tags":[]},{"args":["**kwargs"],"doc":"<p>RPC <i>GetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>: <i>none\x3c/i>\x3c/p>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMsgBusEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'msgbus_endpoint': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetPhysicalInventory\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: PhysicalInventoryRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/p>\n<pre>\n[    # list of:\n  {    # type: PhysicalInventoryResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'inventory': {    # type: Hardware\n      'last_change': &lt;google.protobuf.Timestamp&gt;,\n      'root': {    # type: Component\n        'name': &lt;string&gt;,\n        'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                    1 - COMPONENT_TYPE_UNKNOWN |\n                    2 - COMPONENT_TYPE_CHASSIS |\n                    3 - COMPONENT_TYPE_BACKPLANE |\n                    4 - COMPONENT_TYPE_CONTAINER |\n                    5 - COMPONENT_TYPE_POWER_SUPPLY |\n                    6 - COMPONENT_TYPE_FAN |\n                    7 - COMPONENT_TYPE_SENSOR |\n                    8 - COMPONENT_TYPE_MODULE |\n                    9 - COMPONENT_TYPE_PORT |\n                   10 - COMPONENT_TYPE_CPU |\n                   11 - COMPONENT_TYPE_BATTERY |\n                   12 - COMPONENT_TYPE_STORAGE |\n                   13 - COMPONENT_TYPE_MEMORY |\n                   14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n        'description': &lt;string&gt;,\n        'parent': &lt;string&gt;,\n        'parent_rel_pos': &lt;int32&gt;,\n        'children': [    # list of:\n          &lt; recursive type: Component &gt;\n        ]\n        'hardware_rev': &lt;string&gt;,\n        'firmware_rev': &lt;string&gt;,\n        'software_rev': &lt;string&gt;,\n        'serial_num': &lt;string&gt;,\n        'mfg_name': &lt;string&gt;,\n        'model_name': &lt;string&gt;,\n        'alias': &lt;string&gt;,\n        'asset_id': &lt;string&gt;,\n        'is_fru': &lt;bool&gt;,\n        'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n        'uri': {    # type: Uri\n          'uri': &lt;string&gt;,\n        }\n        'uuid': {    # type: Uuid\n          'uuid': &lt;string&gt;,\n        }\n        'state': {    # type: ComponentState\n          'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n          'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                           1 - COMP_ADMIN_STATE_UNKNOWN |\n                           2 - COMP_ADMIN_STATE_LOCKED |\n                           3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                           4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n          'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                          1 - COMP_OPER_STATE_UNKNOWN |\n                          2 - COMP_OPER_STATE_DISABLED |\n                          3 - COMP_OPER_STATE_ENABLED |\n                          4 - COMP_OPER_STATE_TESTING &gt;\n          'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                           1 - COMP_USAGE_STATE_UNKNOWN |\n                           2 - COMP_USAGE_STATE_IDLE |\n                           3 - COMP_USAGE_STATE_ACTIVE |\n                           4 - COMP_USAGE_STATE_BUSY &gt;\n          'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                           1 - COMP_ALARM_STATE_UNKNOWN |\n                           2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                           3 - COMP_ALARM_STATE_CRITICAL |\n                           4 - COMP_ALARM_STATE_MAJOR |\n                           5 - COMP_ALARM_STATE_MINOR |\n                           6 - COMP_ALARM_STATE_WARNING |\n                           7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n          'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                             1 - COMP_STANDBY_STATE_UNKNOWN |\n                             2 - COMP_STANDBY_STATE_HOT |\n                             3 - COMP_STANDBY_STATE_COLD |\n                             4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n        }\n        'sensor_data': [    # list of:\n          {    # type: ComponentSensorData\n            'value': &lt;int32&gt;,\n            'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                       1 - VALUE_TYPE_OTHER |\n                       2 - VALUE_TYPE_UNKNOWN |\n                       3 - VALUE_TYPE_VOLTS_AC |\n                       4 - VALUE_TYPE_VOLTS_DC |\n                       5 - VALUE_TYPE_AMPERES |\n                       6 - VALUE_TYPE_WATTS |\n                       7 - VALUE_TYPE_HERTZ |\n                       8 - VALUE_TYPE_CELSIUS |\n                       9 - VALUE_TYPE_PERCENT_RH |\n                      10 - VALUE_TYPE_RPM |\n                      11 - VALUE_TYPE_CMM |\n                      12 - VALUE_TYPE_TRUTH_VALUE &gt;\n            'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                        1 - VALUE_SCALE_YOCTO |\n                        2 - VALUE_SCALE_ZEPTO |\n                        3 - VALUE_SCALE_ATTO |\n                        4 - VALUE_SCALE_FEMTO |\n                        5 - VALUE_SCALE_PICO |\n                        6 - VALUE_SCALE_NANO |\n                        7 - VALUE_SCALE_MICRO |\n                        8 - VALUE_SCALE_MILLI |\n                        9 - VALUE_SCALE_UNITS |\n                       10 - VALUE_SCALE_KILO |\n                       11 - VALUE_SCALE_MEGA |\n                       12 - VALUE_SCALE_GIGA |\n                       13 - VALUE_SCALE_TERA |\n                       14 - VALUE_SCALE_PETA |\n                       15 - VALUE_SCALE_EXA |\n                       16 - VALUE_SCALE_ZETTA |\n                       17 - VALUE_SCALE_YOTTA &gt;\n            'precision': &lt;int32&gt;,\n            'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                        1 - SENSOR_STATUS_OK |\n                        2 - SENSOR_STATUS_UNAVAILABLE |\n                        3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n            'units_display': &lt;string&gt;,\n            'timestamp': &lt;google.protobuf.Timestamp&gt;,\n            'value_update_rate': &lt;uint32&gt;,\n            'data_type': &lt;string&gt;,\n          }\n        ]\n        '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n          'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                              1 - RJ45 |\n                              2 - FIBER_LC |\n                              3 - FIBER_SC_PC |\n                              4 - FIBER_MPO &gt;\n          'speed': &lt; 0 - SPEED_UNDEFINED |\n                     1 - DYNAMIC |\n                     2 - GIGABIT_1 |\n                     3 - GIGABIT_10 |\n                     4 - GIGABIT_25 |\n                     5 - GIGABIT_40 |\n                     6 - GIGABIT_100 |\n                     7 - GIGABIT_400 |\n                     8 - MEGABIT_2500 |\n                     9 - MEGABIT_1250 &gt;\n          'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - GFAST |\n                        6 - SERIAL |\n                        7 - EPON &gt;\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n          'physical_label': &lt;string&gt;,\n        }\n        '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n          'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                                 1 - V48 |\n                                 2 - V230 |\n                                 3 - V115 &gt;\n        }\n        '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n          'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                            1 - QSFP |\n                            2 - QSFP_PLUS |\n                            3 - QSFP28 |\n                            4 - SFP |\n                            5 - SFP_PLUS |\n                            6 - XFP |\n                            7 - CFP4 |\n                            8 - CFP2 |\n                            9 - CPAK |\n                           10 - X2 |\n                           11 - OTHER |\n                           12 - CFP |\n                           13 - CFP2_ACO |\n                           14 - CFP2_DCO &gt;\n          'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                          1 - ETHERNET |\n                          2 - GPON |\n                          3 - XGPON |\n                          4 - XGSPON |\n                          5 - CPON |\n                          6 - NG_PON2 |\n                          7 - EPON &gt;\n          'max_distance': &lt;uint32&gt;,\n          'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                   1 - VALUE_SCALE_YOCTO |\n                                   2 - VALUE_SCALE_ZEPTO |\n                                   3 - VALUE_SCALE_ATTO |\n                                   4 - VALUE_SCALE_FEMTO |\n                                   5 - VALUE_SCALE_PICO |\n                                   6 - VALUE_SCALE_NANO |\n                                   7 - VALUE_SCALE_MICRO |\n                                   8 - VALUE_SCALE_MILLI |\n                                   9 - VALUE_SCALE_UNITS |\n                                  10 - VALUE_SCALE_KILO |\n                                  11 - VALUE_SCALE_MEGA |\n                                  12 - VALUE_SCALE_GIGA |\n                                  13 - VALUE_SCALE_TERA |\n                                  14 - VALUE_SCALE_PETA |\n                                  15 - VALUE_SCALE_EXA |\n                                  16 - VALUE_SCALE_ZETTA |\n                                  17 - VALUE_SCALE_YOTTA &gt;\n          'rx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'tx_wavelength': [    # list of:\n            &lt;uint32&gt;,\n          ]\n          'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        }\n      }\n      'last_booted': &lt;google.protobuf.Timestamp&gt;,\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Get Physical Inventory","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetHWComponentInfo\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HWComponentInfoSetRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'component_name': &lt;string&gt;,\n  'changes': {    # type: ModifiableComponent\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n    'parent': {    # type: Component\n      'name': &lt;string&gt;,\n      'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                  1 - COMPONENT_TYPE_UNKNOWN |\n                  2 - COMPONENT_TYPE_CHASSIS |\n                  3 - COMPONENT_TYPE_BACKPLANE |\n                  4 - COMPONENT_TYPE_CONTAINER |\n                  5 - COMPONENT_TYPE_POWER_SUPPLY |\n                  6 - COMPONENT_TYPE_FAN |\n                  7 - COMPONENT_TYPE_SENSOR |\n                  8 - COMPONENT_TYPE_MODULE |\n                  9 - COMPONENT_TYPE_PORT |\n                 10 - COMPONENT_TYPE_CPU |\n                 11 - COMPONENT_TYPE_BATTERY |\n                 12 - COMPONENT_TYPE_STORAGE |\n                 13 - COMPONENT_TYPE_MEMORY |\n                 14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n      'description': &lt;string&gt;,\n      'parent': &lt;string&gt;,\n      'parent_rel_pos': &lt;int32&gt;,\n      'children': [    # list of:\n        &lt; recursive type: Component &gt;\n      ]\n      'hardware_rev': &lt;string&gt;,\n      'firmware_rev': &lt;string&gt;,\n      'software_rev': &lt;string&gt;,\n      'serial_num': &lt;string&gt;,\n      'mfg_name': &lt;string&gt;,\n      'model_name': &lt;string&gt;,\n      'alias': &lt;string&gt;,\n      'asset_id': &lt;string&gt;,\n      'is_fru': &lt;bool&gt;,\n      'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n      'uri': {    # type: Uri\n        'uri': &lt;string&gt;,\n      }\n      'uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'state': {    # type: ComponentState\n        'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n        'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                         1 - COMP_ADMIN_STATE_UNKNOWN |\n                         2 - COMP_ADMIN_STATE_LOCKED |\n                         3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                         4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n        'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                        1 - COMP_OPER_STATE_UNKNOWN |\n                        2 - COMP_OPER_STATE_DISABLED |\n                        3 - COMP_OPER_STATE_ENABLED |\n                        4 - COMP_OPER_STATE_TESTING &gt;\n        'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                         1 - COMP_USAGE_STATE_UNKNOWN |\n                         2 - COMP_USAGE_STATE_IDLE |\n                         3 - COMP_USAGE_STATE_ACTIVE |\n                         4 - COMP_USAGE_STATE_BUSY &gt;\n        'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                         1 - COMP_ALARM_STATE_UNKNOWN |\n                         2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                         3 - COMP_ALARM_STATE_CRITICAL |\n                         4 - COMP_ALARM_STATE_MAJOR |\n                         5 - COMP_ALARM_STATE_MINOR |\n                         6 - COMP_ALARM_STATE_WARNING |\n                         7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n        'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                           1 - COMP_STANDBY_STATE_UNKNOWN |\n                           2 - COMP_STANDBY_STATE_HOT |\n                           3 - COMP_STANDBY_STATE_COLD |\n                           4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n      }\n      'sensor_data': [    # list of:\n        {    # type: ComponentSensorData\n          'value': &lt;int32&gt;,\n          'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                     1 - VALUE_TYPE_OTHER |\n                     2 - VALUE_TYPE_UNKNOWN |\n                     3 - VALUE_TYPE_VOLTS_AC |\n                     4 - VALUE_TYPE_VOLTS_DC |\n                     5 - VALUE_TYPE_AMPERES |\n                     6 - VALUE_TYPE_WATTS |\n                     7 - VALUE_TYPE_HERTZ |\n                     8 - VALUE_TYPE_CELSIUS |\n                     9 - VALUE_TYPE_PERCENT_RH |\n                    10 - VALUE_TYPE_RPM |\n                    11 - VALUE_TYPE_CMM |\n                    12 - VALUE_TYPE_TRUTH_VALUE &gt;\n          'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                      1 - VALUE_SCALE_YOCTO |\n                      2 - VALUE_SCALE_ZEPTO |\n                      3 - VALUE_SCALE_ATTO |\n                      4 - VALUE_SCALE_FEMTO |\n                      5 - VALUE_SCALE_PICO |\n                      6 - VALUE_SCALE_NANO |\n                      7 - VALUE_SCALE_MICRO |\n                      8 - VALUE_SCALE_MILLI |\n                      9 - VALUE_SCALE_UNITS |\n                     10 - VALUE_SCALE_KILO |\n                     11 - VALUE_SCALE_MEGA |\n                     12 - VALUE_SCALE_GIGA |\n                     13 - VALUE_SCALE_TERA |\n                     14 - VALUE_SCALE_PETA |\n                     15 - VALUE_SCALE_EXA |\n                     16 - VALUE_SCALE_ZETTA |\n                     17 - VALUE_SCALE_YOTTA &gt;\n          'precision': &lt;int32&gt;,\n          'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                      1 - SENSOR_STATUS_OK |\n                      2 - SENSOR_STATUS_UNAVAILABLE |\n                      3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n          'units_display': &lt;string&gt;,\n          'timestamp': &lt;google.protobuf.Timestamp&gt;,\n          'value_update_rate': &lt;uint32&gt;,\n          'data_type': &lt;string&gt;,\n        }\n      ]\n      '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n        'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                            1 - RJ45 |\n                            2 - FIBER_LC |\n                            3 - FIBER_SC_PC |\n                            4 - FIBER_MPO &gt;\n        'speed': &lt; 0 - SPEED_UNDEFINED |\n                   1 - DYNAMIC |\n                   2 - GIGABIT_1 |\n                   3 - GIGABIT_10 |\n                   4 - GIGABIT_25 |\n                   5 - GIGABIT_40 |\n                   6 - GIGABIT_100 |\n                   7 - GIGABIT_400 |\n                   8 - MEGABIT_2500 |\n                   9 - MEGABIT_1250 &gt;\n        'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - GFAST |\n                      6 - SERIAL |\n                      7 - EPON &gt;\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n        'physical_label': &lt;string&gt;,\n      }\n      '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n        'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                               1 - V48 |\n                               2 - V230 |\n                               3 - V115 &gt;\n      }\n      '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n        'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                          1 - QSFP |\n                          2 - QSFP_PLUS |\n                          3 - QSFP28 |\n                          4 - SFP |\n                          5 - SFP_PLUS |\n                          6 - XFP |\n                          7 - CFP4 |\n                          8 - CFP2 |\n                          9 - CPAK |\n                         10 - X2 |\n                         11 - OTHER |\n                         12 - CFP |\n                         13 - CFP2_ACO |\n                         14 - CFP2_DCO &gt;\n        'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                        1 - ETHERNET |\n                        2 - GPON |\n                        3 - XGPON |\n                        4 - XGSPON |\n                        5 - CPON |\n                        6 - NG_PON2 |\n                        7 - EPON &gt;\n        'max_distance': &lt;uint32&gt;,\n        'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                                 1 - VALUE_SCALE_YOCTO |\n                                 2 - VALUE_SCALE_ZEPTO |\n                                 3 - VALUE_SCALE_ATTO |\n                                 4 - VALUE_SCALE_FEMTO |\n                                 5 - VALUE_SCALE_PICO |\n                                 6 - VALUE_SCALE_NANO |\n                                 7 - VALUE_SCALE_MICRO |\n                                 8 - VALUE_SCALE_MILLI |\n                                 9 - VALUE_SCALE_UNITS |\n                                10 - VALUE_SCALE_KILO |\n                                11 - VALUE_SCALE_MEGA |\n                                12 - VALUE_SCALE_GIGA |\n                                13 - VALUE_SCALE_TERA |\n                                14 - VALUE_SCALE_PETA |\n                                15 - VALUE_SCALE_EXA |\n                                16 - VALUE_SCALE_ZETTA |\n                                17 - VALUE_SCALE_YOTTA &gt;\n        'rx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'tx_wavelength': [    # list of:\n          &lt;uint32&gt;,\n        ]\n        'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      }\n    }\n    'parent_rel_pos': &lt;int32&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                     1 - COMP_ADMIN_STATE_UNKNOWN |\n                     2 - COMP_ADMIN_STATE_LOCKED |\n                     3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                     4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: HWComponentInfoSetResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Hw Component Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLogLevel\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLogLevelRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'loglevels': [    # list of:\n    {    # type: EntitiesLogLevel\n      'logLevel': &lt; 0 - TRACE |\n                    1 - DEBUG |\n                    2 - INFO |\n                    3 - WARN |\n                    4 - ERROR &gt;\n      'entities': [    # list of:\n        &lt;string&gt;,\n      ]\n    }\n  ]\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetLogLevelResponse\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Log Level","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetLoggingEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetLoggingEndpointRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'logging_endpoint': &lt;string&gt;,\n  'logging_protocol': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Logging Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>SetMsgBusEndpoint\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: SetMsgBusEndpointRequest\n  'msgbus_endpoint': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: SetRemoteEndpointResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Set Msg Bus Endpoint","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StartManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ModifiableComponent\n  'name': &lt;string&gt;,\n  'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n              1 - COMPONENT_TYPE_UNKNOWN |\n              2 - COMPONENT_TYPE_CHASSIS |\n              3 - COMPONENT_TYPE_BACKPLANE |\n              4 - COMPONENT_TYPE_CONTAINER |\n              5 - COMPONENT_TYPE_POWER_SUPPLY |\n              6 - COMPONENT_TYPE_FAN |\n              7 - COMPONENT_TYPE_SENSOR |\n              8 - COMPONENT_TYPE_MODULE |\n              9 - COMPONENT_TYPE_PORT |\n             10 - COMPONENT_TYPE_CPU |\n             11 - COMPONENT_TYPE_BATTERY |\n             12 - COMPONENT_TYPE_STORAGE |\n             13 - COMPONENT_TYPE_MEMORY |\n             14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n  'parent': {    # type: Component\n    'name': &lt;string&gt;,\n    'class': &lt;  0 - COMPONENT_TYPE_UNDEFINED |\n                1 - COMPONENT_TYPE_UNKNOWN |\n                2 - COMPONENT_TYPE_CHASSIS |\n                3 - COMPONENT_TYPE_BACKPLANE |\n                4 - COMPONENT_TYPE_CONTAINER |\n                5 - COMPONENT_TYPE_POWER_SUPPLY |\n                6 - COMPONENT_TYPE_FAN |\n                7 - COMPONENT_TYPE_SENSOR |\n                8 - COMPONENT_TYPE_MODULE |\n                9 - COMPONENT_TYPE_PORT |\n               10 - COMPONENT_TYPE_CPU |\n               11 - COMPONENT_TYPE_BATTERY |\n               12 - COMPONENT_TYPE_STORAGE |\n               13 - COMPONENT_TYPE_MEMORY |\n               14 - COMPONENT_TYPE_TRANSCEIVER &gt;\n    'description': &lt;string&gt;,\n    'parent': &lt;string&gt;,\n    'parent_rel_pos': &lt;int32&gt;,\n    'children': [    # list of:\n      &lt; recursive type: Component &gt;\n    ]\n    'hardware_rev': &lt;string&gt;,\n    'firmware_rev': &lt;string&gt;,\n    'software_rev': &lt;string&gt;,\n    'serial_num': &lt;string&gt;,\n    'mfg_name': &lt;string&gt;,\n    'model_name': &lt;string&gt;,\n    'alias': &lt;string&gt;,\n    'asset_id': &lt;string&gt;,\n    'is_fru': &lt;bool&gt;,\n    'mfg_date': &lt;google.protobuf.Timestamp&gt;,\n    'uri': {    # type: Uri\n      'uri': &lt;string&gt;,\n    }\n    'uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'state': {    # type: ComponentState\n      'state_last_changed': &lt;google.protobuf.Timestamp&gt;,\n      'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                       1 - COMP_ADMIN_STATE_UNKNOWN |\n                       2 - COMP_ADMIN_STATE_LOCKED |\n                       3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                       4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n      'oper_state': &lt; 0 - COMP_OPER_STATE_UNDEFINED |\n                      1 - COMP_OPER_STATE_UNKNOWN |\n                      2 - COMP_OPER_STATE_DISABLED |\n                      3 - COMP_OPER_STATE_ENABLED |\n                      4 - COMP_OPER_STATE_TESTING &gt;\n      'usage_state': &lt; 0 - COMP_USAGE_STATE_UNDEFINED |\n                       1 - COMP_USAGE_STATE_UNKNOWN |\n                       2 - COMP_USAGE_STATE_IDLE |\n                       3 - COMP_USAGE_STATE_ACTIVE |\n                       4 - COMP_USAGE_STATE_BUSY &gt;\n      'alarm_state': &lt; 0 - COMP_ALARM_STATE_UNDEFINED |\n                       1 - COMP_ALARM_STATE_UNKNOWN |\n                       2 - COMP_ALARM_STATE_UNDER_REPAIR |\n                       3 - COMP_ALARM_STATE_CRITICAL |\n                       4 - COMP_ALARM_STATE_MAJOR |\n                       5 - COMP_ALARM_STATE_MINOR |\n                       6 - COMP_ALARM_STATE_WARNING |\n                       7 - COMP_ALARM_STATE_INDETERMINATE &gt;\n      'standby_state': &lt; 0 - COMP_STANDBY_STATE_UNDEFINED |\n                         1 - COMP_STANDBY_STATE_UNKNOWN |\n                         2 - COMP_STANDBY_STATE_HOT |\n                         3 - COMP_STANDBY_STATE_COLD |\n                         4 - COMP_STANDBY_STATE_PROVIDING_SERVICE &gt;\n    }\n    'sensor_data': [    # list of:\n      {    # type: ComponentSensorData\n        'value': &lt;int32&gt;,\n        'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                   1 - VALUE_TYPE_OTHER |\n                   2 - VALUE_TYPE_UNKNOWN |\n                   3 - VALUE_TYPE_VOLTS_AC |\n                   4 - VALUE_TYPE_VOLTS_DC |\n                   5 - VALUE_TYPE_AMPERES |\n                   6 - VALUE_TYPE_WATTS |\n                   7 - VALUE_TYPE_HERTZ |\n                   8 - VALUE_TYPE_CELSIUS |\n                   9 - VALUE_TYPE_PERCENT_RH |\n                  10 - VALUE_TYPE_RPM |\n                  11 - VALUE_TYPE_CMM |\n                  12 - VALUE_TYPE_TRUTH_VALUE &gt;\n        'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                    1 - VALUE_SCALE_YOCTO |\n                    2 - VALUE_SCALE_ZEPTO |\n                    3 - VALUE_SCALE_ATTO |\n                    4 - VALUE_SCALE_FEMTO |\n                    5 - VALUE_SCALE_PICO |\n                    6 - VALUE_SCALE_NANO |\n                    7 - VALUE_SCALE_MICRO |\n                    8 - VALUE_SCALE_MILLI |\n                    9 - VALUE_SCALE_UNITS |\n                   10 - VALUE_SCALE_KILO |\n                   11 - VALUE_SCALE_MEGA |\n                   12 - VALUE_SCALE_GIGA |\n                   13 - VALUE_SCALE_TERA |\n                   14 - VALUE_SCALE_PETA |\n                   15 - VALUE_SCALE_EXA |\n                   16 - VALUE_SCALE_ZETTA |\n                   17 - VALUE_SCALE_YOTTA &gt;\n        'precision': &lt;int32&gt;,\n        'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                    1 - SENSOR_STATUS_OK |\n                    2 - SENSOR_STATUS_UNAVAILABLE |\n                    3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n        'units_display': &lt;string&gt;,\n        'timestamp': &lt;google.protobuf.Timestamp&gt;,\n        'value_update_rate': &lt;uint32&gt;,\n        'data_type': &lt;string&gt;,\n      }\n    ]\n    '<i>ONEOF specific\x3c/i>: <b>port_attr\x3c/b>': {    # type: PortComponentAttributes\n      'connector_type': &lt; 0 - CONNECTOR_TYPE_UNDEFINED |\n                          1 - RJ45 |\n                          2 - FIBER_LC |\n                          3 - FIBER_SC_PC |\n                          4 - FIBER_MPO &gt;\n      'speed': &lt; 0 - SPEED_UNDEFINED |\n                 1 - DYNAMIC |\n                 2 - GIGABIT_1 |\n                 3 - GIGABIT_10 |\n                 4 - GIGABIT_25 |\n                 5 - GIGABIT_40 |\n                 6 - GIGABIT_100 |\n                 7 - GIGABIT_400 |\n                 8 - MEGABIT_2500 |\n                 9 - MEGABIT_1250 &gt;\n      'protocol': &lt; 0 - PROTOCOL_UNDEFINED |\n                    1 - ETHERNET |\n                    2 - GPON |\n                    3 - XGPON |\n                    4 - XGSPON |\n                    5 - GFAST |\n                    6 - SERIAL |\n                    7 - EPON &gt;\n      'physical_label': &lt;string&gt;,\n    }\n    '<i>ONEOF specific\x3c/i>: <b>container_attr\x3c/b>': {    # type: ContainerComponentAttributes\n      'physical_label': &lt;string&gt;,\n    }\n    '<i>ONEOF specific\x3c/i>: <b>psu_attr\x3c/b>': {    # type: PsuComponentAttributes\n      'supported_voltage': &lt; 0 - SUPPORTED_VOLTAGE_UNDEFINED |\n                             1 - V48 |\n                             2 - V230 |\n                             3 - V115 &gt;\n    }\n    '<i>ONEOF specific\x3c/i>: <b>transceiver_attr\x3c/b>': {    # type: TransceiverComponentsAttributes\n      'form_factor': &lt;  0 - FORM_FACTOR_UNKNOWN |\n                        1 - QSFP |\n                        2 - QSFP_PLUS |\n                        3 - QSFP28 |\n                        4 - SFP |\n                        5 - SFP_PLUS |\n                        6 - XFP |\n                        7 - CFP4 |\n                        8 - CFP2 |\n                        9 - CPAK |\n                       10 - X2 |\n                       11 - OTHER |\n                       12 - CFP |\n                       13 - CFP2_ACO |\n                       14 - CFP2_DCO &gt;\n      'trans_type': &lt; 0 - TYPE_UNKNOWN |\n                      1 - ETHERNET |\n                      2 - GPON |\n                      3 - XGPON |\n                      4 - XGSPON |\n                      5 - CPON |\n                      6 - NG_PON2 |\n                      7 - EPON &gt;\n      'max_distance': &lt;uint32&gt;,\n      'max_distance_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                               1 - VALUE_SCALE_YOCTO |\n                               2 - VALUE_SCALE_ZEPTO |\n                               3 - VALUE_SCALE_ATTO |\n                               4 - VALUE_SCALE_FEMTO |\n                               5 - VALUE_SCALE_PICO |\n                               6 - VALUE_SCALE_NANO |\n                               7 - VALUE_SCALE_MICRO |\n                               8 - VALUE_SCALE_MILLI |\n                               9 - VALUE_SCALE_UNITS |\n                              10 - VALUE_SCALE_KILO |\n                              11 - VALUE_SCALE_MEGA |\n                              12 - VALUE_SCALE_GIGA |\n                              13 - VALUE_SCALE_TERA |\n                              14 - VALUE_SCALE_PETA |\n                              15 - VALUE_SCALE_EXA |\n                              16 - VALUE_SCALE_ZETTA |\n                              17 - VALUE_SCALE_YOTTA &gt;\n      'rx_wavelength': [    # list of:\n        &lt;uint32&gt;,\n      ]\n      'tx_wavelength': [    # list of:\n        &lt;uint32&gt;,\n      ]\n      'wavelength_scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                             1 - VALUE_SCALE_YOCTO |\n                             2 - VALUE_SCALE_ZEPTO |\n                             3 - VALUE_SCALE_ATTO |\n                             4 - VALUE_SCALE_FEMTO |\n                             5 - VALUE_SCALE_PICO |\n                             6 - VALUE_SCALE_NANO |\n                             7 - VALUE_SCALE_MICRO |\n                             8 - VALUE_SCALE_MILLI |\n                             9 - VALUE_SCALE_UNITS |\n                            10 - VALUE_SCALE_KILO |\n                            11 - VALUE_SCALE_MEGA |\n                            12 - VALUE_SCALE_GIGA |\n                            13 - VALUE_SCALE_TERA |\n                            14 - VALUE_SCALE_PETA |\n                            15 - VALUE_SCALE_EXA |\n                            16 - VALUE_SCALE_ZETTA |\n                            17 - VALUE_SCALE_YOTTA &gt;\n    }\n  }\n  'parent_rel_pos': &lt;int32&gt;,\n  'alias': &lt;string&gt;,\n  'asset_id': &lt;string&gt;,\n  'uri': {    # type: Uri\n    'uri': &lt;string&gt;,\n  }\n  'admin_state': &lt; 0 - COMP_ADMIN_STATE_UNDEFINED |\n                   1 - COMP_ADMIN_STATE_UNKNOWN |\n                   2 - COMP_ADMIN_STATE_LOCKED |\n                   3 - COMP_ADMIN_STATE_SHUTTING_DOWN |\n                   4 - COMP_ADMIN_STATE_UNLOCKED &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: StartManagingDeviceResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Hw Management Service Start Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>StopManagingDevice\x3c/i> from <i>NativeHWManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StopManagingDeviceRequest\n  'name': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StopManagingDeviceResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Management Service Stop Managing Device","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetMetric\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: GetMetricRequest\n  'meta_data': {    # type: MetricMetaData\n    'device_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_uuid': {    # type: Uuid\n      'uuid': &lt;string&gt;,\n    }\n    'component_name': &lt;string&gt;,\n  }\n  'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                   1 - METRIC_FAN_SPEED |\n                 100 - METRIC_CPU_TEMP |\n                 101 - METRIC_CPU_USAGE_PERCENTAGE |\n                 200 - METRIC_TRANSCEIVER_TEMP |\n                 201 - METRIC_TRANSCEIVER_VOLTAGE |\n                 202 - METRIC_TRANSCEIVER_BIAS |\n                 203 - METRIC_TRANSCEIVER_RX_POWER |\n                 204 - METRIC_TRANSCEIVER_TX_POWER |\n                 205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                 300 - METRIC_DISK_TEMP |\n                 301 - METRIC_DISK_CAPACITY |\n                 302 - METRIC_DISK_USAGE |\n                 303 - METRIC_DISK_USAGE_PERCENTAGE |\n                 304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                 305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                 400 - METRIC_RAM_TEMP |\n                 401 - METRIC_RAM_CAPACITY |\n                 402 - METRIC_RAM_USAGE |\n                 403 - METRIC_RAM_USAGE_PERCENTAGE |\n                 500 - METRIC_POWER_MAX |\n                 501 - METRIC_POWER_USAGE |\n                 502 - METRIC_POWER_USAGE_PERCENTAGE |\n                 600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetMetricResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'metric': {    # type: Metric\n    'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                     1 - METRIC_FAN_SPEED |\n                   100 - METRIC_CPU_TEMP |\n                   101 - METRIC_CPU_USAGE_PERCENTAGE |\n                   200 - METRIC_TRANSCEIVER_TEMP |\n                   201 - METRIC_TRANSCEIVER_VOLTAGE |\n                   202 - METRIC_TRANSCEIVER_BIAS |\n                   203 - METRIC_TRANSCEIVER_RX_POWER |\n                   204 - METRIC_TRANSCEIVER_TX_POWER |\n                   205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                   300 - METRIC_DISK_TEMP |\n                   301 - METRIC_DISK_CAPACITY |\n                   302 - METRIC_DISK_USAGE |\n                   303 - METRIC_DISK_USAGE_PERCENTAGE |\n                   304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                   305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                   400 - METRIC_RAM_TEMP |\n                   401 - METRIC_RAM_CAPACITY |\n                   402 - METRIC_RAM_USAGE |\n                   403 - METRIC_RAM_USAGE_PERCENTAGE |\n                   500 - METRIC_POWER_MAX |\n                   501 - METRIC_POWER_USAGE |\n                   502 - METRIC_POWER_USAGE_PERCENTAGE |\n                   600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n    'metric_metadata': {    # type: MetricMetaData\n      'device_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_uuid': {    # type: Uuid\n        'uuid': &lt;string&gt;,\n      }\n      'component_name': &lt;string&gt;,\n    }\n    'value': {    # type: ComponentSensorData\n      'value': &lt;int32&gt;,\n      'type': &lt;  0 - VALUE_TYPE_UNDEFINED |\n                 1 - VALUE_TYPE_OTHER |\n                 2 - VALUE_TYPE_UNKNOWN |\n                 3 - VALUE_TYPE_VOLTS_AC |\n                 4 - VALUE_TYPE_VOLTS_DC |\n                 5 - VALUE_TYPE_AMPERES |\n                 6 - VALUE_TYPE_WATTS |\n                 7 - VALUE_TYPE_HERTZ |\n                 8 - VALUE_TYPE_CELSIUS |\n                 9 - VALUE_TYPE_PERCENT_RH |\n                10 - VALUE_TYPE_RPM |\n                11 - VALUE_TYPE_CMM |\n                12 - VALUE_TYPE_TRUTH_VALUE &gt;\n      'scale': &lt;  0 - VALUE_SCALE_UNDEFINED |\n                  1 - VALUE_SCALE_YOCTO |\n                  2 - VALUE_SCALE_ZEPTO |\n                  3 - VALUE_SCALE_ATTO |\n                  4 - VALUE_SCALE_FEMTO |\n                  5 - VALUE_SCALE_PICO |\n                  6 - VALUE_SCALE_NANO |\n                  7 - VALUE_SCALE_MICRO |\n                  8 - VALUE_SCALE_MILLI |\n                  9 - VALUE_SCALE_UNITS |\n                 10 - VALUE_SCALE_KILO |\n                 11 - VALUE_SCALE_MEGA |\n                 12 - VALUE_SCALE_GIGA |\n                 13 - VALUE_SCALE_TERA |\n                 14 - VALUE_SCALE_PETA |\n                 15 - VALUE_SCALE_EXA |\n                 16 - VALUE_SCALE_ZETTA |\n                 17 - VALUE_SCALE_YOTTA &gt;\n      'precision': &lt;int32&gt;,\n      'status': &lt; 0 - SENSOR_STATUS_UNDEFINED |\n                  1 - SENSOR_STATUS_OK |\n                  2 - SENSOR_STATUS_UNAVAILABLE |\n                  3 - SENSOR_STATUS_NONOPERATIONAL &gt;\n      'units_display': &lt;string&gt;,\n      'timestamp': &lt;google.protobuf.Timestamp&gt;,\n      'value_update_rate': &lt;uint32&gt;,\n      'data_type': &lt;string&gt;,\n    }\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Get Metric","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ListMetrics\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: ListMetricsResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'metrics': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service List Metrics","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateMetricsConfiguration\x3c/i> from <i>NativeMetricsManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict: <b>Note\x3c/b>: Bold dictionary keys are cases of an ONEOF type that is not transmitted in gRPC.\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: MetricsConfigurationRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  '<i>ONEOF operation\x3c/i>: <b>changes\x3c/b>': {    # type: MetricsConfig\n    'metrics': [    # list of:\n      {    # type: MetricConfig\n        'metric_id': &lt;   0 - METRIC_NAME_UNDEFINED |\n                         1 - METRIC_FAN_SPEED |\n                       100 - METRIC_CPU_TEMP |\n                       101 - METRIC_CPU_USAGE_PERCENTAGE |\n                       200 - METRIC_TRANSCEIVER_TEMP |\n                       201 - METRIC_TRANSCEIVER_VOLTAGE |\n                       202 - METRIC_TRANSCEIVER_BIAS |\n                       203 - METRIC_TRANSCEIVER_RX_POWER |\n                       204 - METRIC_TRANSCEIVER_TX_POWER |\n                       205 - METRIC_TRANSCEIVER_WAVELENGTH |\n                       300 - METRIC_DISK_TEMP |\n                       301 - METRIC_DISK_CAPACITY |\n                       302 - METRIC_DISK_USAGE |\n                       303 - METRIC_DISK_USAGE_PERCENTAGE |\n                       304 - METRIC_DISK_READ_WRITE_PERCENTAGE |\n                       305 - METRIC_DISK_FAULTY_CELLS_PERCENTAGE |\n                       400 - METRIC_RAM_TEMP |\n                       401 - METRIC_RAM_CAPACITY |\n                       402 - METRIC_RAM_USAGE |\n                       403 - METRIC_RAM_USAGE_PERCENTAGE |\n                       500 - METRIC_POWER_MAX |\n                       501 - METRIC_POWER_USAGE |\n                       502 - METRIC_POWER_USAGE_PERCENTAGE |\n                       600 - METRIC_INNER_SURROUNDING_TEMP &gt;\n        'is_configured': &lt;bool&gt;,\n        'poll_interval': &lt;uint32&gt;,\n      }\n    ]\n  }\n  '<i>ONEOF operation\x3c/i>: <b>reset_to_default\x3c/b>': &lt;bool&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: MetricsConfigurationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Hw Metrics Mgmt Service Update Metrics Configuration","shortdoc":"","tags":[]},{"args":[],"doc":"<p>Retrieve the version of the currently running library instance.\x3c/p>\n<p><b>Return\x3c/b>: version string consisting of three dot-separated numbers (x.y.z)\x3c/p>","matched":true,"name":"Library Version Get","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>ActivateImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Activate Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>DownloadImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: DownloadImageRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'image_info': {    # type: ImageInformation\n    'image': {    # type: ImageVersion\n      'image_name': &lt;string&gt;,\n      'version': &lt;string&gt;,\n    }\n    'image_install_script': &lt;string&gt;,\n    'image_url': &lt;string&gt;,\n    'sha256sum': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Download Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetSoftwareVersion\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: GetSoftwareVersionInformationResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'info': {    # type: SoftwareVersionInformation\n    'active_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n    'standby_versions': [    # list of:\n      {    # type: ImageVersion\n        'image_name': &lt;string&gt;,\n        'version': &lt;string&gt;,\n      }\n    ]\n  }\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Software Version","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>GetStartupConfigurationInfo\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: StartupConfigInfoRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n{    # type: StartupConfigInfoResponse\n  'status': &lt; 0 - UNDEFINED_STATUS |\n              1 - OK_STATUS |\n              2 - ERROR_STATUS &gt;\n  'reason': &lt; 0 - UNDEFINED_REASON |\n              1 - UNKNOWN_DEVICE |\n              2 - INTERNAL_ERROR |\n              3 - DEVICE_UNREACHABLE &gt;\n  'config_url': &lt;string&gt;,\n  'version': &lt;string&gt;,\n  'reason_detail': &lt;string&gt;,\n}\n\x3c/pre>","matched":true,"name":"Sw Management Service Get Startup Configuration Info","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>RevertToStandbyImage\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: HardwareID\n  'uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ImageStatus\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - ERROR_IN_REQUEST |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_IN_WRONG_STATE |\n                4 - INVALID_IMAGE |\n                5 - WRONG_IMAGE_CHECKSUM |\n                6 - OPERATION_ALREADY_IN_PROGRESS |\n                7 - UNKNOWN_DEVICE |\n                8 - DEVICE_NOT_REACHABLE &gt;\n    'state': &lt; 0 - UNDEFINED_STATE |\n               1 - COPYING_IMAGE |\n               2 - INSTALLING_IMAGE |\n               3 - COMMITTING_IMAGE |\n               4 - REBOOTING_DEVICE |\n               5 - UPGRADE_COMPLETE |\n               6 - UPGRADE_FAILED |\n               7 - ACTIVATION_COMPLETE |\n               8 - ACTIVATION_FAILED &gt;\n    'description': &lt;string&gt;,\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Revert To Standby Image","shortdoc":"","tags":[]},{"args":["param_dict","**kwargs"],"doc":"<p>RPC <i>UpdateStartupConfiguration\x3c/i> from <i>NativeSoftwareManagementService\x3c/i>.\x3c/p>\n<p><b>Parameters\x3c/b>:\x3c/p>\n<ul>\n<li>param_dict:\x3c/li>\n\x3c/ul>\n<pre>\n{    # type: ConfigRequest\n  'device_uuid': {    # type: Uuid\n    'uuid': &lt;string&gt;,\n  }\n  'config_url': &lt;string&gt;,\n}\n\x3c/pre>\n<p><b>Named parameters\x3c/b>:\x3c/p>\n<ul>\n<li>return_enum_integer: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the enum values as integer values rather than their labels. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>return_defaults: &lt;bool&gt; or &lt;string&gt;; Whether or not to return the default values. Default: <i>${FALSE}\x3c/i> or <i>false\x3c/i>.\x3c/li>\n\x3c/ul>\n<ul>\n<li>timeout: &lt;int&gt; or &lt;string&gt;; Number of seconds to wait for the response. Default: The timeout value set by keywords <i>Connection Open\x3c/i> and <i>Connection Parameters Set\x3c/i>.\x3c/li>\n\x3c/ul>\n<p><b>Return\x3c/b>:\x3c/p>\n<pre>\n[    # list of:\n  {    # type: ConfigResponse\n    'status': &lt; 0 - UNDEFINED_STATUS |\n                1 - OK_STATUS |\n                2 - ERROR_STATUS &gt;\n    'reason': &lt; 0 - UNDEFINED_REASON |\n                1 - UNKNOWN_DEVICE |\n                2 - INTERNAL_ERROR |\n                3 - DEVICE_UNREACHABLE &gt;\n    'reason_detail': &lt;string&gt;,\n  }\n]\n\x3c/pre>","matched":true,"name":"Sw Management Service Update Startup Configuration","shortdoc":"","tags":[]}],"name":"grpc_robot.Dmi","named_args":true,"scope":"test suite","version":"unknown"};
 </script>
 <title></title>
 </head>
@@ -638,26 +571,18 @@
     $(document).ready(function() {
         parseTemplates();
         document.title = libdoc.name;
-        storage.init('libdoc');
         renderTemplate('base', libdoc, $('body'));
         if (libdoc.inits.length) {
             renderTemplate('importing', libdoc);
         }
         renderTemplate('shortcuts', libdoc);
-        initShortcutListStyle('shortcut', libdoc.keywords);
         if (libdoc.contains_tags) {
             renderTemplate('tags', libdoc);
-            initShortcutListStyle('tag', libdoc.all_tags);
         }
         renderTemplate('keywords', libdoc);
         renderTemplate('footer', libdoc);
-        params = util.parseQueryString(window.location.search.slice(1));
-        if ("tag" in params) {
-            tagSearch(params["tag"], window.location.hash);
-        }
         scrollToHash();
-        $(document).bind('keydown', handleKeyDown);
-        workaroundFirefoxWidthBug();
+        $(document).bind('keydown', handleKeydown);
     });
 
     function parseTemplates() {
@@ -677,27 +602,7 @@
         $.tmpl(name + '-template', arguments).appendTo(container);
     }
 
-    function workaroundFirefoxWidthBug() {
-        // https://github.com/robotframework/robotframework/issues/3456
-        // https://bugzilla.mozilla.org/show_bug.cgi?id=1613163
-        $('.shortcuts a').width('max-content');
-    }
-
-    function initShortcutListStyle(name, items) {
-        var style = storage.get(name + '-list-style', 'compact');
-        if (style != 'compact' && items.length > 1) {
-            $('.' + name + '-list-separator').html('<br>');
-            $('.' + name + '-list-toggle .switch').prop('checked', true);
-        }
-    }
-
-    function setShortcutListStyle(name) {
-        var compact = !$('.' + name + '-list-toggle .switch').prop('checked');
-        $('.' + name + '-list-separator').html(compact ? '&middot;' : '<br>');
-        storage.set(name + '-list-style', compact ? 'compact' : 'expanded');
-    }
-
-    function handleKeyDown(event) {
+    function handleKeydown(event) {
         event = event || window.event;
         var keyCode = event.keyCode || event.which;
         if (keyCode === 27)  // esc
@@ -714,14 +619,11 @@
         }
     }
 
-    function tagSearch(tag, hash) {
+    function tagSearch(tag) {
         var include = {tags: true, tagsExact: true};
-        var url = window.location.pathname + "?tag=" + tag + (hash || "");
         markMatches(tag, include);
         highlightMatches(tag, include);
         $('#keywords-container').find('.kw-row').addClass('hide-unmatched');
-        history.replaceState && history.replaceState(null, '', url);
-        document.getElementById('Shortcuts').scrollIntoView();
     }
 
     function doSearch() {
@@ -791,7 +693,6 @@
         $('#altogether-count').hide();
         if (matchCount == 0)
             $('#keywords-container').find('table').empty();
-        setTimeout(workaroundFirefoxWidthBug, 100);
     }
 
     function highlightMatches(string, include) {
@@ -833,7 +734,10 @@
 
     function resetSearch() {
         $('#search-string').val('');
-        $('#search input:checkbox').prop({'checked': true, 'disabled': false});
+        $('#include-name').prop('checked', true);
+        $('#include-args').prop('checked', true);
+        $('#include-doc').prop('checked', true);
+        $('#hide-unmatched').prop('checked', false);
         resetKeywords();
     }
 
@@ -845,9 +749,6 @@
         }
         $('#match-count').hide();
         $('#altogether-count').show();
-        history.replaceState && history.replaceState(null, '', location.pathname + location.hash);
-        setTimeout(workaroundFirefoxWidthBug, 100);
-        scrollToHash();
     }
 
     function setMatchVisibility() {
@@ -924,7 +825,7 @@
         <tr class="kw-row">
             <td class="args">
             {{each args}}
-              <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+              <span>${$value}</span>{{if $index < args.length-1}}, {{/if}}
             {{/each}}
             </td>
             <td class="doc">{{html $value.doc}}</td>
@@ -935,48 +836,25 @@
 
 <script type="text/x-jquery-tmpl" id="shortcuts-template">
     <h2 id="Shortcuts">Shortcuts</h2>
-    {{if keywords.length > 1}}
-    <div class="shortcut-list-toggle">
-        <b>List style:</b>&nbsp; Compact
-        <label title="Switch between compact list and expanded list">
-            <input type="checkbox" class="switch" onclick="setShortcutListStyle('shortcut');">
-            <span class="slider"></span>
-        </label>
-        Expanded
-    </div>
-    {{/if}}
     <div class='shortcuts'>
         {{each keywords}}
         <a href="#${encodeURIComponent($value.name)}"
            class="{{if $value.matched === false}}no-{{/if}}match"
            title="${$value.shortdoc}">${$value.name}</a>
-        {{if $index < keywords.length-1}}
-        <span class="shortcut-list-separator">&middot;</span>
-        {{/if}}
+        {{if $index < keywords.length-1}} &middot; {{/if}}
         {{/each}}
     </div>
 </script>
 
 <script type="text/x-jquery-tmpl" id="tags-template">
     <h2 id="Tags">Tags</h2>
-    {{if all_tags.length > 1}}
-    <div class="tag-list-toggle">
-        <b>List style:</b>&nbsp; Compact
-        <label title="Switch between compact list and expanded list">
-            <input type="checkbox" class="switch" onclick="setShortcutListStyle('tag');">
-            <span class="slider"></span>
-        </label>
-        Expanded
-    </div>
-    {{/if}}
     <div class='shortcuts'>
         {{each all_tags}}
         <a href="javascript:tagSearch('${$value}')"
-           title="Show keywords with this tag">${$value}</a>
-        <span class="tag-list-separator">&middot;</span>
+           title="Show tests with this tag">${$value}</a> &middot;
         {{/each}}
         <a href="javascript:resetKeywords()" class="normal-first-letter"
-           title="Show all keywords">[Reset]</a>
+           title="Show all tests">[Reset]</a>
     </div>
 </script>
 
@@ -1005,14 +883,14 @@
         </td>
         <td class="args">
             {{each args}}
-            <span>${$value}</span>{{if $index < args.length-1}},<br>{{/if}}
+            <span>${$value}</span>{{if $index < args.length-1}}, {{/if}}
             {{/each}}
         </td>
         {{if libdoc.contains_tags}}
         <td class="tags">
             {{each tags}}
             <a href="javascript:tagSearch('${$value}')"
-               title="Show keywords with this tag">${$value}</a>{{if $index < tags.length-1}},<br>{{/if}}
+               title="Show tests with this tag">${$value}</a>{{if $index < tags.length-1}}, {{/if}}
             {{/each}}
         </td>
         {{/if}}
