if(window.jstiming){window.jstiming.beaconImageReferences_={};window.jstiming.reportCounter_=1;var getTick=function(c,a,g){a=c.t[a];c=c.t.start;if(!a||!(c||g))return undefined;if(g!=undefined)c=g;return a-c},getReportUri=function(c,a,g){var b="";if(window.jstiming.pt){b+="&srt="+window.jstiming.pt;delete window.jstiming.pt}try{if(window.external&&window.external.tran)b+="&tran="+window.external.tran;else if(window.gtbExternal&&window.gtbExternal.tran)b+="&tran="+window.gtbExternal.tran();else if(window.chrome&&
window.chrome.csi)b+="&tran="+window.chrome.csi().tran}catch(d){}var e=window.chrome;if(e)if(e=e.loadTimes){if(e().wasFetchedViaSpdy)b+="&p=s";if(e().wasNpnNegotiated)b+="&npn=1";if(e().wasAlternateProtocolAvailable)b+="&apa=1"}if(c.dapperCookie_)b+="&"+c.dapperCookie_;e=c.t;var i=e.start,k=[];for(var r in e)r!="start"&&i&&k.push(r+"."+getTick(c,r));delete e.start;if(a)for(var s in a)b+="&"+s+"="+a[s];return c=[g?g:"http://csi.gstatic.com/csi","?v=3","&s="+(window.jstiming.sn||"codesite")+"&action=",
c.name,b,"&rt=",k.join(",")].join("")};window.jstiming.report=function(c,a,g){c=getReportUri(c,a,g);if(!c)return"";a=new Image;var b=window.jstiming.reportCounter_++;window.jstiming.beaconImageReferences_[b]=a;a.onload=a.onerror=function(){delete window.jstiming.beaconImageReferences_[b]};a.src=c;a=null;return c}};/*
 Copyright (C) 2006 Google Inc.

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
*/
window.PR_SHOULD_USE_CONTINUATION=true;window.PR_TAB_WIDTH=8;window.PR_normalizedHtml=window.PR=window.prettyPrintOne=window.prettyPrint=void 0;window._pr_isIE6=function(){var c=navigator&&navigator.userAgent&&navigator.userAgent.match(/\bMSIE ([678])\./);c=c?+c[1]:false;window._pr_isIE6=function(){return c};return c};
(function(){var c=function(){for(var f=["!","!=","!==","#","%","%=","&","&&","&&=","&=","(","*","*=","+=",",","-=","->","/","/=",":","::",";","<","<<","<<=","<=","=","==","===",">",">=",">>",">>=",">>>",">>>=","?","@","[","^","^=","^^","^^=","{","|","|=","||","||=","~","break","case","continue","delete","do","else","finally","instanceof","return","throw","try","typeof"],h="(?:^^|[+-]",l=0;l<f.length;++l)h+="|"+f[l].replace(/([^=<>:&a-z])/g,"\\$1");h+=")\\s*";return h}(),a=/&/g,g=/</g,b=/>/g,d=/\"/g;
function e(f){return f.replace(a,"&amp;").replace(g,"&lt;").replace(b,"&gt;").replace(d,"&quot;")}function i(f){return f.replace(a,"&amp;").replace(g,"&lt;").replace(b,"&gt;")}var k=/&lt;/g,r=/&gt;/g,s=/&apos;/g,B=/&quot;/g,C=/&amp;/g,H=/&nbsp;/g;function I(f){var h=f.indexOf("&");if(h<0)return f;for(--h;(h=f.indexOf("&#",h+1))>=0;){var l=f.indexOf(";",h);if(l>=0){var m=f.substring(h+3,l),q=10;if(m&&m.charAt(0)==="x"){m=m.substring(1);q=16}m=parseInt(m,q);isNaN(m)||(f=f.substring(0,h)+String.fromCharCode(m)+
f.substring(l+1))}}return f.replace(k,"<").replace(r,">").replace(s,"'").replace(B,'"').replace(H," ").replace(C,"&")}function N(f){return"XMP"===f.tagName}var G=/[\r\n]/g;function M(f,h){if("PRE"===f.tagName)return true;if(!G.test(h))return true;h="";if(f.currentStyle)h=f.currentStyle.whiteSpace;else if(window.getComputedStyle)h=window.getComputedStyle(f,null).whiteSpace;return!h||h==="pre"}function R(f,h,l){switch(f.nodeType){case 1:var m=f.tagName.toLowerCase();h.push("<",m);var q=f.attributes,
w=q.length;if(w){if(l){for(var n=[],z=w;--z>=0;)n[z]=q[z];n.sort(function(y,A){return y.name<A.name?-1:y.name===A.name?0:1});q=n}for(z=0;z<w;++z){n=q[z];n.specified&&h.push(" ",n.name.toLowerCase(),'="',e(n.value),'"')}}h.push(">");for(q=f.firstChild;q;q=q.nextSibling)R(q,h,l);if(f.firstChild||!/^(?:br|link|img)$/.test(m))h.push("</",m,">");break;case 3:case 4:h.push(i(f.nodeValue));break}}function W(f){for(var h=0,l=false,m=false,q=0,w=f.length;q<w;++q){var n=f[q];if(n.ignoreCase)m=true;else if(/[a-z]/i.test(n.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi,
""))){l=true;m=false;break}}function z(p){if(p.charAt(0)!=="\\")return p.charCodeAt(0);switch(p.charAt(1)){case "b":return 8;case "t":return 9;case "n":return 10;case "v":return 11;case "f":return 12;case "r":return 13;case "u":case "x":return parseInt(p.substring(2),16)||p.charCodeAt(1);case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":return parseInt(p.substring(1),8);default:return p.charCodeAt(1)}}function y(p){if(p<32)return(p<16?"\\x0":"\\x")+p.toString(16);p=String.fromCharCode(p);
if(p==="\\"||p==="-"||p==="["||p==="]")p="\\"+p;return p}function A(p){var t=p.substring(1,p.length-1).match(new RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g"));p=[];for(var u=[],x=t[0]==="^",j=x?1:0,v=t.length;j<v;++j){var o=t[j];switch(o){case "\\B":case "\\b":case "\\D":case "\\d":case "\\S":case "\\s":case "\\W":case "\\w":p.push(o);continue}o=z(o);var D;if(j+2<v&&"-"===t[j+1]){D=z(t[j+2]);j+=2}else D=o;u.push([o,D]);if(!(D<65||
o>122)){D<65||o>90||u.push([Math.max(65,o)|32,Math.min(D,90)|32]);D<97||o>122||u.push([Math.max(97,o)&-33,Math.min(D,122)&-33])}}u.sort(function(L,O){return L[0]-O[0]||O[1]-L[1]});t=[];o=[NaN,NaN];for(j=0;j<u.length;++j){v=u[j];if(v[0]<=o[1]+1)o[1]=Math.max(o[1],v[1]);else t.push(o=v)}u=["["];x&&u.push("^");u.push.apply(u,p);for(j=0;j<t.length;++j){v=t[j];u.push(y(v[0]));if(v[1]>v[0]){v[1]+1>v[0]&&u.push("-");u.push(y(v[1]))}}u.push("]");return u.join("")}function F(p){for(var t=p.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)",
"g")),u=t.length,x=[],j=0,v=0;j<u;++j){var o=t[j];if(o==="(")++v;else if("\\"===o.charAt(0))if((o=+o.substring(1))&&o<=v)x[o]=-1}for(j=1;j<x.length;++j)if(-1===x[j])x[j]=++h;for(v=j=0;j<u;++j){o=t[j];if(o==="("){++v;if(x[v]===undefined)t[j]="(?:"}else if("\\"===o.charAt(0))if((o=+o.substring(1))&&o<=v)t[j]="\\"+x[v]}for(v=j=0;j<u;++j)if("^"===t[j]&&"^"!==t[j+1])t[j]="";if(p.ignoreCase&&l)for(j=0;j<u;++j){o=t[j];p=o.charAt(0);if(o.length>=2&&p==="[")t[j]=A(o);else if(p!=="\\")t[j]=o.replace(/[a-zA-Z]/g,
function(D){D=D.charCodeAt(0);return"["+String.fromCharCode(D&-33,D|32)+"]"})}return t.join("")}var E=[];q=0;for(w=f.length;q<w;++q){n=f[q];if(n.global||n.multiline)throw new Error(""+n);E.push("(?:"+F(n)+")")}return new RegExp(E.join("|"),m?"gi":"g")}var T=null;function ba(f){if(null===T){var h=document.createElement("PRE");h.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));T=!/</.test(h.innerHTML)}if(T){h=f.innerHTML;if(N(f))h=i(h);else M(f,h)||(h=h.replace(/(<br\s*\/?>)[\r\n]+/g,
"$1").replace(/(?:[\r\n]+[ \t]*)+/g," "));return h}h=[];for(f=f.firstChild;f;f=f.nextSibling)R(f,h);return h.join("")}function ca(f){var h=0;return function(l){for(var m=null,q=0,w=0,n=l.length;w<n;++w){var z=l.charAt(w);switch(z){case "\t":m||(m=[]);m.push(l.substring(q,w));q=f-h%f;for(h+=q;q>=0;q-=16)m.push("                ".substring(0,q));q=w+1;break;case "\n":h=0;break;default:++h}}if(!m)return l;m.push(l.substring(q));return m.join("")}}var da=new RegExp("[^<]+|<!--[\\s\\S]*?--\>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>|</?[a-zA-Z](?:[^>\"']|'[^']*'|\"[^\"]*\")*>|<",
"g"),ea=/^<\!--/,fa=/^<!\[CDATA\[/,ga=/^<br\b/i,X=/^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/;function ha(f){f=f.match(da);var h=[],l=0,m=[];if(f)for(var q=0,w=f.length;q<w;++q){var n=f[q];if(n.length>1&&n.charAt(0)==="<"){if(!ea.test(n))if(fa.test(n)){h.push(n.substring(9,n.length-3));l+=n.length-12}else if(ga.test(n)){h.push("\n");++l}else if(n.indexOf("nocode")>=0&&ia(n)){var z=n.match(X)[2],y=1,A;A=q+1;a:for(;A<w;++A){var F=f[A].match(X);if(F&&F[2]===z)if(F[1]==="/"){if(--y===0)break a}else++y}if(A<w){m.push(l,
f.slice(q,A+1).join(""));q=A}else m.push(l,n)}else m.push(l,n)}else{n=I(n);h.push(n);l+=n.length}}return{source:h.join(""),tags:m}}function ia(f){return!!f.replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,' $1="$2$3$4"').match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/)}function U(f,h,l,m){if(h){f={source:h,basePos:f};l(f);m.push.apply(m,f.decorations)}}function P(f,h){var l={},m;(function(){for(var n=f.concat(h),z=[],y={},A=0,F=n.length;A<F;++A){var E=n[A],p=E[3];if(p)for(var t=p.length;--t>=
0;)l[p.charAt(t)]=E;E=E[1];p=""+E;if(!y.hasOwnProperty(p)){z.push(E);y[p]=null}}z.push(/[\0-\uffff]/);m=W(z)})();var q=h.length,w=function(n){var z=n.source,y=n.basePos,A=[y,"pln"],F=0;z=z.match(m)||[];for(var E={},p=0,t=z.length;p<t;++p){var u=z[p],x=E[u],j=void 0,v;if(typeof x==="string")v=false;else{var o=l[u.charAt(0)];if(o){j=u.match(o[1]);x=o[0]}else{for(v=0;v<q;++v){o=h[v];if(j=u.match(o[1])){x=o[0];break}}j||(x="pln")}if((v=x.length>=5&&"lang-"===x.substring(0,5))&&!(j&&typeof j[1]==="string")){v=
false;x="src"}v||(E[u]=x)}o=F;F+=u.length;if(v){v=j[1];var D=u.indexOf(v),L=D+v.length;if(j[2]){L=u.length-j[2].length;D=L-v.length}x=x.substring(5);U(y+o,u.substring(0,D),w,A);U(y+o+D,v,Y(x,v),A);U(y+o+L,u.substring(L),w,A)}else A.push(y+o,x)}n.decorations=A};return w}function K(f){var h=[],l=[];if(f.tripleQuotedStrings)h.push(["str",/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
null,"'\""]);else f.multiLineStrings?h.push(["str",/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"]):h.push(["str",/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"]);f.verbatimStrings&&l.push(["str",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);var m=f.hashComments;if(m)if(f.cStyleComments){m>1?h.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"]):h.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
null,"#"]);l.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else h.push(["com",/^#[^\r\n]*/,null,"#"]);if(f.cStyleComments){l.push(["com",/^\/\/[^\r\n]*/,null]);l.push(["com",/^\/\*[\s\S]*?(?:\*\/|$)/,null])}f.regexLiterals&&l.push(["lang-regex",new RegExp("^"+c+"(/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/)")]);f=f.keywords.replace(/^\s+|\s+$/g,"");f.length&&l.push(["kwd",new RegExp("^(?:"+f.replace(/\s+/g,
"|")+")\\b"),null]);h.push(["pln",/^\s+/,null," \r\n\t\u00a0"]);l.push(["lit",/^@[a-z_$][a-z_$@0-9]*/i,null],["typ",/^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/,null],["pln",/^[a-z_$][a-z_$@0-9]*/i,null],["lit",/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],["pun",/^.[^\s\w\.$@\'\"\`\/\#]*/,null]);return P(h,l)}var ja=K({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending dynamic event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END break continue do else for if return while case done elif esac eval fi function in local set then until ",
hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function ka(f){var h=f.source,l=f.extractedTags,m=f.decorations,q=f.numberLines,w=f.sourceNode,n=[],z=0,y=null,A=null,F=0,E=0,p=ca(window.PR_TAB_WIDTH),t=/([\r\n ]) /g,u=/(^| ) /gm,x=/\r\n?|\n/g,j=/[ \r\n]$/,v=true,o=window._pr_isIE6();w=o?w&&w.tagName==="PRE"?o===6?"&#160;\r\n":o===7?"&#160;<br />\r":o===8?"&#160;<br />":"&#160;\r":"&#160;<br />":"<br />";var D;if(q){var L=[];for(o=0;o<10;++o)L[o]=w+'</li><li class="L'+
o+'">';var O=typeof q==="number"?q-1:0;n.push('<ol class="linenums"><li class="L',O%10,'"');O&&n.push(' value="',O+1,'"');n.push(">");D=function(){var Q=L[++O%10];return y?"</span>"+Q+'<span class="'+y+'">':Q}}else D=w;function V(Q){if(Q>z){if(y&&y!==A){n.push("</span>");y=null}if(!y&&A){y=A;n.push('<span class="',y,'">')}var Z=i(p(h.substring(z,Q))).replace(v?u:t,"$1&#160;");v=j.test(Z);n.push(Z.replace(x,D));z=Q}}for(;1;)if(w=F<l.length?E<m.length?l[F]<=m[E]:true:false){V(l[F]);if(y){n.push("</span>");
y=null}n.push(l[F+1]);F+=2}else if(E<m.length){V(m[E]);A=m[E+1];E+=2}else break;V(h.length);y&&n.push("</span>");q&&n.push("</li></ol>");f.prettyPrintedHtml=n.join("")}var S={};function J(f,h){for(var l=h.length;--l>=0;){var m=h[l];if(S.hasOwnProperty(m))"console"in window&&console.warn("cannot override language handler %s",m);else S[m]=f}}function Y(f,h){f&&S.hasOwnProperty(f)||(f=/^\s*</.test(h)?"default-markup":"default-code");return S[f]}J(ja,["default-code"]);J(P([],[["pln",/^[^<?]+/],["dec",
/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);J(P([["pln",/^[\s]+/,null," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,
null,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],["pun",/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);J(P([],[["atv",/^[\s\S]+/]]),["uq.val"]);J(K({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where ",
hashComments:true,cStyleComments:true}),["c","cc","cpp","cxx","cyc","m"]);J(K({keywords:"null true false"}),["json"]);J(K({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending dynamic event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var ",
hashComments:true,cStyleComments:true,verbatimStrings:true}),["cs"]);J(K({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient ",
cStyleComments:true}),["java"]);J(K({keywords:"break continue do else for if return while case done elif esac eval fi function in local set then until ",hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);J(K({keywords:"break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None ",hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);
J(K({keywords:"caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END ",hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);J(K({keywords:"break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END ",hashComments:true,
multiLineStrings:true,regexLiterals:true}),["rb"]);J(K({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN ",cStyleComments:true,regexLiterals:true}),["js"]);J(K({keywords:"all and by catch class else extends false finally for if in is isnt loop new no not null of off on or return super then true try unless until when while yes ",
hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);J(P([],[["str",/^[\s\S]+/]]),["regex"]);function aa(f){var h=f.sourceCodeHtml,l=f.langExtension;f.prettyPrintedHtml=h;try{var m=ha(h),q=m.source;f.source=q;f.basePos=0;f.extractedTags=m.tags;Y(l,q)(f);ka(f)}catch(w){if("console"in window)console.log(w&&w.stack?w.stack:w)}}function la(f,h,l){f={sourceCodeHtml:f,langExtension:h,numberLines:l};aa(f);return f.prettyPrintedHtml}function ma(f){function h(p){return document.getElementsByTagName(p)}
for(var l=[h("pre"),h("code"),h("xmp")],m=[],q=0;q<l.length;++q)for(var w=0,n=l[q].length;w<n;++w)m.push(l[q][w]);l=null;var z=Date;z.now||(z={now:function(){return(new Date).getTime()}});var y=0,A;function F(){for(var p=window.PR_SHOULD_USE_CONTINUATION?z.now()+250:Infinity;y<m.length&&z.now()<p;y++){var t=m[y];if(t.className&&t.className.indexOf("prettyprint")>=0){var u=t.className.match(/\blang-(\w+)\b/);if(u)u=u[1];for(var x=false,j=t.parentNode;j;j=j.parentNode)if((j.tagName==="pre"||j.tagName===
"code"||j.tagName==="xmp")&&j.className&&j.className.indexOf("prettyprint")>=0){x=true;break}if(!x){x=ba(t);x=x.replace(/(?:\r\n?|\n)$/,"");j=t.className.match(/\blinenums\b(?::(\d+))?/);A={sourceCodeHtml:x,langExtension:u,sourceNode:t,numberLines:j?j[1]&&j[1].length?+j[1]:true:false};aa(A);E()}}}if(y<m.length)setTimeout(F,250);else f&&f()}function E(){var p=A.prettyPrintedHtml;if(p){var t=A.sourceNode;if(N(t)){for(var u=document.createElement("PRE"),x=0;x<t.attributes.length;++x){var j=t.attributes[x];
if(j.specified){var v=j.name.toLowerCase();if(v==="class")u.className=j.value;else u.setAttribute(j.name,j.value)}}u.innerHTML=p;t.parentNode.replaceChild(u,t)}else t.innerHTML=p}}F()}window.PR_normalizedHtml=R;window.prettyPrintOne=la;window.prettyPrint=ma;window.PR={combinePrefixPatterns:W,createSimpleLexer:P,registerLangHandler:J,sourceDecorator:K,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",
PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();(function(){var c={dictionariesList:["products","programs","searchSuggest","searchResultTabs"],products:{includeInSearchSuggest:true,entries:{afa:{title:"AdSense for Ajax",url:"/apis/afa/",keywords:{ads:10,adsense:10}},afsadsonly:{title:"AdSense for Search Ads Only",url:"/apis/afs-ads-only/",keywords:{ads:10,adsense:10}},charttools:{title:"Chart Tools",url:"/apis/charttools/",keywords:{chart:10,graph:10}},android:{title:"Android",groupsTitle:"Android Groups",url:"/android/",keywords:{mobile:10}},
gdata:{title:"Google Data Protocol",groupsTitle:"Google Data Protocol Groups",url:"/apis/gdata/",keywords:{feed:1,entry:1,entries:6,"data api":10,gdata:10,data:6,protocol:4,atom:1,atompub:1,json:1}},blogger:{title:"Blogger Data API (Labs)",groupsTitle:"Blogger Data API Groups",url:"/apis/blogger/",keywords:{apis:1,feed:1,entries:2,gentries:1,"data apis":4}},buzz:{title:"Google Buzz API (Labs)",groupsTitle:"Google Buzz API Groups",url:"/apis/buzz/",keywords:{apis:1,feed:1,entries:2,social:1,gentries:1}},
chrome:{title:"Google Chrome",groupsTitle:"Chrome Groups",url:"/chrome/",keywords:{browser:10,chrome:10,"chrome os":5,HTML5:7,"web standards":1,"open web":1}},chromium:{title:"Chromium",groupsTitle:"Chromium Groups",url:"/chromium/",keywords:{browser:10,chrome:1,chromium:10,v8:1}},chromeframe:{title:"Google Chrome Frame",groupsTitle:"Chrome Frame Groups",url:"/chrome/chromeframe/",keywords:{browser:5,chrome:4,chromium:1,v8:1,html5:3,ie:1,"internet explorer":1}},chromeextensions:{title:"Google Chrome Extensions (Labs)",
groupsTitle:"Google Chrome Extensions Groups",url:"/chrome/extensions/",keywords:{chrome:5,chromium:1,browser:1,html5:1,extensions:8}},chromeapps:{title:"Installable Web Apps (Labs)",groupsTitle:"Web App Groups",url:"/chrome/apps/",keywords:{chrome:5,chromium:1,html5:2,app:8,"chrome web store":5,store:2}},chromewebstore:{title:"Chrome Web Store (Labs)",groupsTitle:"Chrome Web Store Groups",url:"/chrome/webstore/",keywords:{chrome:5,chromium:1,app:5,extension:5,"chrome web store":10,store:8}},chromedevtools:{title:"Chrome Developer Tools",
groupsTitle:"Chromium Groups",url:"/chrome/devtools/",keywords:{chrome:5,chromium:1,html5:2,firebug:5,"developer tools":10,"web inspector":5}},feedburner:{title:"Feedburner APIs (Labs)",groupsTitle:"FeedBurner Groups",url:"/apis/feedburner/",keywords:{feed:10}},accounts:{title:"Google Account Authentication",groupsTitle:"Google Account Authentication Groups",url:"/apis/accounts/",keywords:{apis:1,feed:1,entries:1,gentries:1}},adsense:{title:"Google AdSense API",groupsTitle:"Google AdSense API Groups",
url:"/apis/adsense/",keywords:{ads:1,apis:1}},adwords:{title:"Google AdWords API",groupsTitle:"Google AdWords API Groups",url:"/apis/adwords/",keywords:{ads:2,apis:1}},ajaxfeeds:{title:"Google Feed API",groupsTitle:"Google Feed API Groups",url:"/apis/feed/",keywords:{apis:5,feed:6}},ajaxlanguage:{title:"Google Language API",groupsTitle:"Google Language API Groups",url:"/apis/language/",keywords:{apis:5,language:10}},libraries:{title:"Google Libraries API",groupsTitle:"Google AJAX APIs Groups",url:"/apis/libraries/",
keywords:{apis:5,libraries:6,"chrome frame":4,dojo:4,"ext core":4,jquery:4,jqueryui:4,mootools:4,prototype:4,scriptaculous:4,SWFObject:4,"yahoo user interface library":4,YUI:4,webfont:4}},analytics:{title:"Google Analytics",groupsTitle:"Google Analytics Groups",url:"/apis/analytics/",keywords:{tools:1,apis:1,"data apis":1}},appengine:{title:"Google App Engine",groupsTitle:"Google App Engine Groups",url:"/appengine/",keywords:{apis:5,tools:1,java:8,eclipse:1,app:8,"app engine":10,plugin:1}},appsscript:{title:"Google Apps Script",
url:"/googleapps/appsscript/",keywords:{"google apps":1,"apps script":10,scripts:10,enterprise:1,javascript:1,business:1,automation:1,automate:1}},storage:{title:"Google Storage for Developers (Labs)",url:"/apis/storage/",keywords:{storage:10,"google storage":10,apis:1,"storage apis":10}},predict:{title:"Google Prediction API (Labs)",url:"/apis/predict/",keywords:{prediction:10,"machine learning":10,"predictive modelling":10,"data analysis":5}},bigquery:{title:"BigQuery (Labs)",url:"/apis/bigquery/",
keywords:{"data analysis":10,"data modelling":10,"structured data":5}},googleapps:{title:"Google Apps",url:"/googleapps/",keywords:{"google apps":10,gadgets:1,enterprise:1,"app engine":1,business:1,firewall:1,sdc:1}},marketplace:{title:"Google Apps Marketplace",url:"/googleapps/marketplace/",keywords:{"google apps":9,marketplace:10,enterprise:1,business:1,saas:1,isv:1}},gmail:{title:"Gmail APIs and Tools (Labs)",url:"/apis/gmail/",keywords:{gmail:10,contextual:10,gadgets:1}},base:{title:"Google Base Data API (Labs)",
groupsTitle:"Google Base Data API Groups",url:"/apis/base/",keywords:{apis:1,feed:1,entries:2,gentries:1,"data apis":2}},books:{title:"Google Book Search APIs (Labs)",groupsTitle:"Google Book Search APIs Groups",url:"/apis/books/",keywords:{ajax:9,apis:10,search:1,feeds:1,books:1}},calendar:{title:"Google Calendar APIs and Tools",groupsTitle:"Google Calendar APIs and Tools Groups",url:"/apis/calendar/",keywords:{apis:1,feed:5,entries:2,gadgets:3,gentries:1,"data apis":3,tools:1}},checkout:{title:"Google Checkout",
groupsTitle:"Google Checkout API Groups",url:"/apis/checkout/",keywords:{apis:5,sell:5,buy:5,ecommerce:5}},closure:{title:"Closure Tools (Labs)",url:"/closure/",keywords:{javascript:1,template:1,compiler:1,minifier:1}},cloudprint:{title:"Google Cloud Print (Labs)",url:"/apis/cloudprint/",keywords:{chrome:5,chromium:1,html5:2,app:8}},codesearch:{title:"Google Code Search Data API (Labs)",groupsTitle:"Google Code Search Data API Groups",url:"/apis/codesearch/",keywords:{apis:1,feed:1,entries:1,gentries:1,
search:1}},commercesearch:{title:"Google Commerce Search",url:"/apis/commercesearch/",keywords:{commercesearch:10,"commerce search":10,enterprise:1,gcs:1,product:1}},customsearch:{title:"Google Custom Search API",groupsTitle:"Google Custom Search API Groups",url:"/apis/customsearch/",keywords:{apis:1,ads:1,custom:1,search:3,cse:1}},contacts:{title:"Google Contacts APIs",groupsTitle:"Google Contacts APIs Groups",url:"/apis/contacts/",keywords:{apis:1,feed:1,entries:2,gentries:1,contacts:1,"data apis":4}},
desktop:{title:"Google Desktop APIs (Labs)",searchTabTitle:"Google Desktop APIs",groupsTitle:"Google Desktop APIs Groups",url:"/apis/desktop/",keywords:{gadgets:1,search:1}},dfa:{title:"Google's DoubleClick for Advertisers",groupsTitle:"Google's DoubleClick for Advertisers API Forum",url:"/apis/dfa/",keywords:{ads:2,apis:1}},dfp:{title:"Google's DoubleClick for Publishers (Labs)",groupsTitle:"Google's DoubleClick for Publishers API Forum",url:"/apis/dfp/",keywords:{ads:2,apis:1}},documents:{title:"Google Documents List Data API",
groupsTitle:"Google Documents List Data API Groups",url:"/apis/documents/",keywords:{apis:1,feed:1,entries:2,gentries:1,"data apis":3}},gtt:{title:"Google Translator Toolkit Data API (Labs)",groupsTitle:"Google Translator Toolkit Data API Help Forum",url:"/apis/gtt/",keywords:{apis:1,feed:1,entries:2,"data apis":3,toolkit:5,translate:8,"translator toolkit":10}},ima:{title:"Google Interactive Media Ads (Labs)",url:"/apis/ima/",keywords:{apis:1,DoubleClick:10,"interactive media ads":10,ima:10,ads:1,
video:1,flash:1,silverlight:1}},earth:{title:"Google Earth API",groupsTitle:"Google Earth API Groups",url:"/apis/earth/",keywords:{apis:4,developer:1,"developer day":1,geo:6,maps:6,kml:6}},eclipse:{title:"Google Plugin for Eclipse",url:"/eclipse/",keywords:{java:3,gwt:1,"app engine":1,"plug-in":10}},finance:{title:"Google Finance Data API (Labs)",url:"/apis/finance/",keywords:{apis:4,feeds:1,"data apis":1}},flashmaps:{title:"Google Maps API For Flash",url:"/apis/maps/documentation/flash/",keywords:{ajax:7,
apis:4,actionscript:1,geo:6,maps:6}},friendconnect:{title:"Google Friend Connect APIs (Labs)",url:"/apis/friendconnect/",keywords:{apis:5,gadgets:5,social:10,friend:10}},fusion:{title:"Google Fusion Tables API (Labs)",url:"/apis/fusiontables/",keywords:{tables:1}},gadgets:{title:"Gadgets API",groupsTitle:"Gadgets API Groups",url:"/apis/gadgets/",keywords:{finance:1,apis:8,gadgets:6}},googletv:{title:"Google TV Optimization Guides",url:"/tv/",keywords:{googletv:10,"google tv":10,tv:10}},health:{title:"Google Health API",
groupsTitle:"Google Health Developers Groups",url:"/apis/health/",keywords:{"data apis":3,feed:1,health:1,java:1}},igoogle:{title:"iGoogle Developer Home (Labs)",groupsTitle:"iGoogle Developers Groups",url:"/apis/igoogle/",keywords:{ads:3,apis:1,gadgets:1,social:1}},javadevtools:{title:"Google Java Developer Tools",url:"/javadevtools",keywords:{Java:10,WindowBuilder:10,WindowTester:10,CodePro:10,"GUI Building":7,testing:7,eclipse:7,"GWT Designer":10,"SWT Designer":10,"Swing Designer":10,Instantiations:10,
GWT:5,"Google Web Toolkit":5,"Java Developer Tools":10}},themes:{title:"iGoogle Themes API (Labs)",url:"/apis/themes/",keywords:{apis:1}},kml:{title:"KML",groupsTitle:"KML Groups",url:"/apis/kml/",keywords:{apis:1,geo:4,maps:1}},latitude:{title:"Google Latitude API (Labs)",groupsTitle:"Google Latitude API Group",url:"/apis/latitude/",keywords:{apis:1,geo:4,maps:1,mobile:3,location:10}},moderator:{title:"Google Moderator API (Labs)",groupsTitle:"Google Moderator API Group",url:"/apis/moderator/",keywords:{apis:1,
moderator:1,question:3,vote:2}},geocoding:{title:"Google Geocoding API",groupsTitle:"Google Maps API Group",url:"/apis/maps/documentation/geocoding/",keywords:{maps:7,geo:6,geocoding:10,apis:3}},directions:{title:"Google Directions API",groupsTitle:"Google Maps API Group",url:"/apis/maps/documentation/directions/",keywords:{maps:7,geo:6,directions:10,apis:3}},maps:{title:"Google Javascript Maps API",groupsTitle:"Google Maps Javascript API V3 Group",url:"/apis/maps/documentation/javascript/",keywords:{maps:7,
geo:6,ajax:3,apis:3,mobile:5}},projecthosting:{title:"Google Project Hosting",groupsTitle:"Hosting at Google Code Group",url:"/projecthosting/",keywords:{"web hosting":6,"code hosting":10,subversion:6}},opensocial:{title:"OpenSocial",groupsTitle:"OpenSocial Groups",url:"/apis/opensocial/",keywords:{social:10,"open source":2,apis:8}},orkut:{title:"Orkut Developer Home",searchTabTitle:"Orkut",groupsTitle:"Orkut Groups",url:"/apis/orkut/",keywords:{social:8}},safebrowsing:{title:"Google Safe Browsing APIs (Labs)",
groupsTitle:"Google Safe Browsing APIs Groups",url:"/apis/safebrowsing/",keywords:{apis:1,feed:1,entries:1,gentries:1}},securedataconnector:{title:"Google Secure Data Connector",groupsTitle:"Google Apps API Discussion Groups",url:"/securedataconnector/",keywords:{"data apis":3,sdc:10,gadgets:1,firewall:10,enterprise:1,"app engine":1,network:1,"google apps":2}},sidewiki:{title:"Google Sidewiki API (Labs)",groupsTitle:"Google Sidewiki API Groups",url:"/apis/sidewiki/",keywords:{toolbar:1,gdata:1}},
sites:{title:"Google Sites Data API (Labs)",groupsTitle:"Google Sites Data API Groups",url:"/apis/sites/",keywords:{toolbar:1,gdata:1}},sketchup:{title:"Google SketchUp Ruby API",groupsTitle:"Google SketchUp Ruby API Groups",url:"/apis/sketchup/",keywords:{apis:1,geo:3}},socialgraph:{title:"Social Graph API (Labs)",groupsTitle:"Social Graph API Groups",url:"/apis/socialgraph/",keywords:{social:9}},spreadsheets:{title:"Google Spreadsheets Data API (Labs)",groupsTitle:"Google Spreadsheets Data API Groups",
url:"/apis/spreadsheets/",keywords:{apis:1,feed:1,entries:2,gentries:1,"data apis":4}},staticmaps:{title:"Google Static Maps API",url:"/apis/maps/documentation/staticmaps/",keywords:{apis:1,geo:6,maps:2}},talk:{title:"Google Talk for Developers (Labs)",groupsTitle:"Google Talk XMPP Groups",url:"/apis/talk/",keywords:{apis:1}},transit:{title:"Google Transit Feed Specification",groupsTitle:"Google Transit Feed Groups",url:"/transit/spec/transit_feed_specification.html",keywords:{feed:1,geo:1,maps:1}},
webtoolkit:{title:"Google Web Toolkit",groupsTitle:"Google Web Toolkit Groups",url:"/webtoolkit/",keywords:{ajax:6,java:1,tools:6,eclipse:1,gwt:10}},picasaweb:{title:"Picasa Web Albums Data API",groupsTitle:"Picasa Web Albums Data API Groups",url:"/apis/picasaweb/",keywords:{feed:1,entries:1,gentries:1,"data apis":3}},powermeter:{title:"Google PowerMeter API (Labs)",url:"/apis/powermeter/",keywords:{apis:1,feed:1,entries:2,gentries:1,"data apis":2}},pubsubhubbub:{title:"PubSubHubbub (Labs)",url:"/apis/pubsubhubbub/",
keywords:{feed:4,atom:8,rss:8,"real time":10}},recaptcha:{title:"reCAPTCHA (Labs)",url:"/apis/recaptcha/",keywords:{apis:1,ajax:1,captcha:5,recaptcha:5,mailhide:5,security:3}},urlshortener:{title:"Google URL Shortener API (Labs)",url:"/apis/urlshortener/",keywords:{"URL Shortener":10,urlshortener:10,"goo.gl":10}},v8:{title:"V8",url:"/apis/v8/",keywords:{apis:1,browser:1,chrome:1,chromium:1,tools:1}},wave:{title:"Google Wave API (Labs)",groupsTitle:"Google Wave API Groups",url:"/apis/wave",keywords:{wave:10,
robots:5,gadgets:1,embed:3,extensions:1}},webelements:{title:"Google Web Elements",url:"http://www.google.com/webelements/",keywords:{elements:10,news:1,calendar:1,maps:1,youtube:1,spreadsheets:1,presentations:1,search:1}},webmastertools:{title:"Google Webmaster Tools Data API (Labs)",groupsTitle:"Webmaster Tools Data API Groups",url:"/apis/webmastertools/",keywords:{"data apis":1,search:1,tools:1}},youtube:{title:"YouTube APIs",groupsTitle:"YouTube Data API Groups",url:"/apis/youtube/",keywords:{feed:4,
entries:2,gentries:6}},mobile:{title:"Mobile Homepage",url:"/mobile/",keywords:{mobile:10}},afma:{title:"AdSense for Mobile Applications (Labs)",groupsTitle:"AFMA Developer Group",url:"/mobile/ads",keywords:{ads:10,mobile:9}},admob:{title:"AdMob",groupsTitle:"AdMob Publisher Discuss",url:"http://www.admob.com",keywords:{ads:10,mobile:10}},analyticsmobile:{title:"Google Analytics for Mobile (Labs)",url:"/mobile/analytics",keywords:{tools:1,apis:1,"data apis":1,mobile:7}},mapspremier:{title:"Google Maps API Premier",
url:"/apis/maps/documentation/premier/",keywords:{maps:10,premier:10,enterprise:10}},blogsearch:{title:"Blog Search API",url:"/apis/blogsearch/",keywords:{blog:10,search:5}},imagesearch:{title:"Image Search API",url:"/apis/imagesearch/",keywords:{image:10,search:5}},newssearch:{title:"News Search API",url:"/apis/newssearch/",keywords:{news:10,search:5}},patentsearch:{title:"Patent Search API",url:"/apis/patentsearch/",keywords:{patent:10,search:5}},websearch:{title:"Web Search API (Deprecated)",url:"/apis/websearch/",
keywords:{web:10,search:5}},videosearch:{title:"Video Search API",url:"/apis/videosearch/",keywords:{video:10,search:5}}}},programs:{includeInSearchSuggest:true,entries:{publicdns:{title:"Public DNS",url:"/speed/public-dns/",keywords:{"public dns":10}},opensource:{title:"OpenSource",url:"/opensource/",keywords:{"open source":10}},soc:{title:"Google Summer of Code",url:"/soc/",keywords:{"open source":5}},codejam:{title:"Google Code Jam",url:"/codejam/",keywords:{competition:6}},playground:{title:"Code Playground",
url:"/apis/ajax/playground/",keywords:{samples:10,"sample code":10,"run code":1}},hosting:{title:"Project Hosting on Google Code",url:"/hosting/",keywords:{"open source":6}},edu:{title:"Google Code University",groupsTitle:"Google Code University Groups",url:"/edu/",keywords:{educators:1}},doctype:{title:"Google DocType",groupsTitle:"Google DocType Groups",url:"/doctype/",keywords:{educators:1}},speed:{title:"Let's make the web faster",groupsTitle:"Make the web fast",url:"/speed/",keywords:{speed:8,
performance:9}},"page-speed":{title:"Page Speed",groupsTitle:"Page Speed Community",url:"/speed/page-speed/",keywords:{speed:8,performance:9}},webmaster:{title:"Google Webmaster Central",url:"http://www.google.com/webmasters/",keywords:{crawling:1,indexing:1}},csearch:{title:"Google Code Search (Labs)",url:"http://www.google.com/codesearch",keywords:{search:1}},events:{title:"Developer Events",url:"/events/",keywords:{developer:1,gdd:1,"developer day":1}},googleio:{title:"Google I/O",url:"/events/io/",
keywords:{apis:1,gentries:1,"google io":10,events:10,io:10}},gtug:{title:"Google Technology User Groups",url:"http://www.gtugs.org/",keywords:{gtug:10,events:9,group:1,technology:1,user:1}},developerday:{title:"Developer Days",url:"/events/developerday/",keywords:{developer:1,"developer days":1,gdd:10,events:2,"google developer day":10}},qualify:{title:"Developer Qualification",url:"/qualify/",keywords:{qualify:10,certification:10,training:10}},campfire:{title:"Google Campfire One",url:"/campfire/",
keywords:{developer:1}},go:{title:"Go Programming Language",url:"http://www.golang.org",keywords:{golang:2,language:3,compiler:2,parallel:1,concurrent:1,concurrency:1}},html5rocks:{title:"HTML5 Rocks",url:"http://www.html5rocks.com",keywords:{html5:10,css3:8,webapps:8,samples:5,"sample code":5,webgl:4,chrome:1,chromium:1,webkit:2,opensource:1}},webp:{title:"WebP Image Format",url:"/speed/webp",keywords:{image:7,WebP:10}}}},searchSuggest:{includeInSearchSuggest:true,entries:{adsenseforaudio:{title:"Google AdSense for Audio API (Deprecated)",
url:"/apis/adsenseforaudio/",keywords:{ads:1,apis:1}},notebook:{title:"Google Notebook Data API (Deprecated)",url:"/apis/notebook/",keywords:{apis:1,feed:1,entries:1,gentries:1,"data apis":3}},gra:{title:"Google Radio Automation API (Deprecated)",url:"/apis/gra/",keywords:{java:1,apis:1,radio:10,automation:3}},support:{title:"Knowledge Base",url:"/support/",keywords:{faq:1}},codeblog:{title:"Google Code Blog",url:"http://google-code-updates.blogspot.com/",keywords:{developer:1}},featuredprojects:{title:"Featured Projects",
url:"http://google-code-featured.blogspot.com/",keywords:{developer:1}},labs:{title:"Google Code Labs",url:"/labs/",keywords:{labs:10,experimental:1}},opensourceprojects:{title:"Open Source Projects",url:"/hosting/projects.html",keywords:{"open source":1}},protocolbuffers:{title:"Protocol Buffers",groupsTitle:"Protocol Buffers Groups",url:"/apis/protocolbuffers/",keywords:{serialization:10,"open source":4,apis:8,"structured data":10,data:1}}}},searchResultTabs:{includeInSearchSuggest:false,entries:{google_code:{title:"Google Code Website"},
discussion:{title:"Google Code Groups",groupsTitle:"Google Code Groups"},project_hosting:{title:"Project Hosting"},developer_videos:{title:"Developer Videos"}}}};window.CODESITE_productDictionary_default=c;window.CODESITE_productDictionary=c})();(function(){window.CODESITE_CSIReportDelay=500;window.CODESITE_reportedToCSI=false;function c(){if(jQuery("body.gc-documentation").length>0)return"product_doc";if(window._homepageGadgetData_)return"codesite_home";if(jQuery("#gc-home").length>0)return"product_home";return"other"}function a(){var b=["codesite","sc"],d=c(),e=CODESITE_getProduct();if(e)if(e=="more")b.push("site_directory");else if(e=="search")b.push("cse");else if(e=="support")b.push(e);else if(e=="events")b.push(e);else if(d=="product_doc"){b.push(d);
b.push(e+"_doc")}else{if(d=="product_home"){b.push(d);b.push(e+"_home")}}else d=="codesite_home"&&b.push(d);b.push("intl_"+CODESITE_langLoc);return b.join(",")}function g(){if(!CODESITE_reportedToCSI){var b=a();CODESITE_CSITimer.load.name=b;CODESITE_CSITimer.toc.name=b;window.setTimeout(function(){for(var d in CODESITE_CSITimer)window.jstiming.report(CODESITE_CSITimer[d])},CODESITE_CSIReportDelay);window.CODESITE_reportedToCSI=true}}jQuery(document).ready(function(){CODESITE_CSITimer.load.tick("dom")});
jQuery(window).load(function(){CODESITE_CSITimer.load.tick("plt");g()})})(jQuery);window.CODESITE_langCode={en:"English",de:"Deutsch",es:"Espa\u00f1ol",fa:"\u0641\u0627\u0631\u0633\u06cc",ja:"\u65e5\u672c\u8a9e",ko:"\ud55c\uad6d\uc5b4","pt-BR":"Portugu\u00eas (Brasil)",ru:"P\u0443\u0441\u0441\u043a\u0438\u0439",vi:"Ti\u1ebfng Vi\u1ec7t","zh-CN":"\u4e2d\u6587 (\u7b80\u4f53)","zh-TW":"\u4e2d\u6587 (\u7e41\u9ad4)"};
window.CODESITE_prodLang=[{url:"/apis/orkut/",langloc:["en","es","ja","ko","pt-BR","ru","vi","zh-CN","zh-TW"]},{url:"/apis/maps/",langloc:["en","es","de","ja","ko","pt-BR","ru","zh-CN","zh-TW"]},{url:"/apis/ajaxlanguage/",langloc:["en","es","de","ja","fa","pt-BR","zh-CN"]}];(function(){var c=/\/\/([^\/]*)?(\/intl\/[^\/]*)?(\/.*)?/,a=/\/intl\/(([a-zA-Z]+)(-[a-zA-Z]+)?)(_[a-zA-Z]+)?/,g=a.exec(window.location.href);if(g==null){window.CODESITE_langLoc="en";window.CODESITE_langUrl=""}else{window.CODESITE_langLoc=g[1];window.CODESITE_langUrl=g[0].replace(/_ALL/,"")}jQuery(document).ready(window.CODESITE_langSelectInit=function(b,d){var e=b("#lang-dropdown")[0];if(e){var i=null;d=d||window.location;d=c.exec(d.href);for(var k=0;k<window.CODESITE_prodLang.length;k++)if(d[3].indexOf(window.CODESITE_prodLang[k].url)>=
0){i=window.CODESITE_prodLang[k].langloc;break}i||(i=["en","es","ja","ko","pt-BR","ru","zh-CN","zh-TW"]);e=new Menu(e,null,null,function(){CODESITE_click("/gb/sc/langselect/"+CODESITE_langLoc)});for(d=0;d<i.length;d++){k=i[d];var r=CODESITE_localeRedirect(k,window.location,false);e.addItem(window.CODESITE_langCode[k],r)}b("body").append(e.menu)}});window.CODESITE_localeRedirect=function(b,d,e){d=d||window.location;var i=c.exec(d.href);e=e==null?true:false;var k=d.href;if(i){k=i[3]?"http://"+i[1]+
"/intl/"+b+i[3]:"http://"+i[1]+"/intl/"+b+"/";if(e)d.href=k}return k};window.CODESITE_redirectToI18nContent=function(b,d){d=d||CODESITE_localeRedirect;b=(b=a.exec(b.href))&&b[1]||"en";d(b,null);return false}})(jQuery);(function(){function c(b){return window.encodeURIComponent?encodeURIComponent(b):escape(b)}function a(b){return window.decodeURIComponent?decodeURIComponent(b):unescape(b)}RegExp.escape=function(){var b=["/",".","*","+","?","|","(",")","[","]","{","}","\\"],d=new RegExp("(\\"+b.join("|\\")+")","g");return function(e){return e.replace(d,"\\$1")}}();window.CODESITE_minWidth=function(){var b=[],d=function(){if(CODESITE_minWidth)for(var e=0,i=b[0]||null;e<b.length;++e,i=b[e])try{if(i.parent_.offsetWidth<=
i.minWidth_){i.style.width=i.minWidth_+"px";i.style.overflow="hidden"}else{i.style.width="";i.style.overflow=""}}catch(k){}};if(jQuery.browser.msie){jQuery(window).resize(d);jQuery(d)}return function(e,i){if(jQuery.browser.msie){e=jQuery(e)[0];e.minWidth_=i-0;e.parent_=e.parentNode;b.push(e)}}}();window.CODESITE_createImageBar=function(b,d){b=new google.feeds.Feed(b);b.setResultFormat(google.feeds.Feed.XML_FORMAT);b.setNumEntries(2);b.load(function(e){if(!e.error){var i=jQuery(d);e=jQuery("item",
e.xmlDocument);var k=0;if(e.length>=2)k=2;for(var r=['<div class="post techtalk"><div class="screenshot"><a href="@link"><img alt="@origTitle" src="@thumb" height="80" width="90"></a></div><div class="info"><div class="name"><a href="@link" title="@origTitle">@title</a></div><div class="author videodateformat">',CODESITE_msgs.imagebar.POSTED_ON," @date</div></div></div>"].join(""),s=jQuery('<div class="g-section g-tpl-50-50 gc-techtalk"><div class="g-unit g-first">&nbsp;</div><div class="g-unit">&nbsp;</div></div>'),
B=0;B<k;B++){var C=jQuery("title:first",e[B]).text(),H=C,I=jQuery("link:first",e[B]).text(),N=I.substring(31),G;if((G=e.eq(B).find("atom\\:updated, updated")).length){var M=G.eq(0).text().replace(/(\d{4})-(\d{2})-(\d{2})T.*/,"$2 $3 $1").split(" ");G=new Date;G.setFullYear(M[2],M[0]-1,M[1])}else if((G=e.eq(B).find("dc\\:date, date")).length)G=new Date(G.eq(0).text());M=google.feeds.getElementsByTagNameNS(e[B],"http://search.yahoo.com/mrss/","thumbnail")[0];var R=M.getAttribute("url");M.getAttribute("width");
M.getAttribute("height");G=G.getMonth()+1+"/"+G.getDate()+"/"+G.getFullYear();C=jQuery(r.replace(/@link/g,I).replace(/@videoid/g,N).replace(/@thumb/g,R).replace(/@origTitle/g,C).replace(/@title/g,H).replace(/@date/g,G));jQuery(".g-unit:eq("+B+")",s).prepend(C)}i.append(s)}})};window.CODESITE_loadFeedAPI=function(){google.load("feeds","1",{callback:CODESITE_initFeedAPI})};jQuery(function(){jQuery("#searchForm").show();jQuery("#searchForm2").hide()});window.CODESITE_initFeedAPI=function(){if(CODESITE_codeVideoDiv.length)if(typeof _homepageGadgetData_!==
"undefined"){CODESITE_createImageBar(_homepageGadgetData_.homepageVideoFeedUrl,"#gc-codevideo");CODESITE_minWidth("#codesiteContent",1000)}if(CODESITE_macRecentChangesDiv.length){var b=new BlogPreview(document.getElementById("recentchanges"));b.show("http://googlemacplayground.blogspot.com/atom.xml","changes")}};function g(){var b="http://google-code-feed-gadget.googlecode.com/svn/build/prod/feedgadget/feedgadget.xml",d="",e="#parent="+escape(/[^?]*/.exec(window.location));if(/gadgettest=1/.exec(window.location)){b=
b.replace("/prod/","/test/");d="&debug=1&nocache=1"}var i=/\/intl\/(.*?)\//.exec(document.location);i=i?["&lang=",i[1]].join(""):"";b="http://www.gmodules.com/gadgets/ifr?synd=code&url="+b+i+d+e+"&";function k(I){var N="",G;if(typeof I=="string"){if(I!="")N="&"+c(I)}else for(G in I)N+=["&",G,"=",c(I[G])].join("");return N}if(CODESITE_codeBlogDiv.length){var r=[];e=window._apiGadgetData_||window._homepageGadgetData_;i=e.blogOptions;var s=410,B="100%",C="__MSG_blogs__";d="";if(i){B=i.width||B;s=i.height||
s;C=i.up_gadgetTitle||C;d=i.xtraFeeds||d}if(e.blogFeedUrl&&e.blogFeedUrl.length){if(!e.blogFeedName||e.blogFeedName.length==0)e.blogFeedName="__MSG_blogs__";r.push(c([e.blogFeedName,":",jQuery.trim(e.blogFeedUrl)].join("")))}e.googleCodeBlogIntlFeedUrl&&e.googleCodeBlogIntlFeedUrl.length&&r.push(c(["__MSG_blogs.local__:",jQuery.trim(e.googleCodeBlogIntlFeedUrl)].join("")));e.googleCodeBlogFeedUrl&&e.googleCodeBlogFeedUrl.length&&r.push(c(["__MSG_blogs.googleCode__:",jQuery.trim(e.googleCodeBlogFeedUrl)].join("")));
e.relatedDeveloperBlogsFeedUrl&&e.relatedDeveloperBlogsFeedUrl.length&&r.push(c(["__MSG_blogs.related__:",jQuery.trim(e.relatedDeveloperBlogsFeedUrl)].join("")));if(d.length){d=a(d).split("|");for(e=0;e<d.length;e++)r.push(c(jQuery.trim(d[e])))}if(r.length)jQuery('<iframe frameborder="0">').attr({src:[b,"up_showaddbutton=true&up_random=true&up_defer=true&up_gadgetTitle=",c(C),"&up_feeds=",r.join("|"),k(i||"")].join(""),frameborder:"0",width:B,height:s}).css({border:"none"}).appendTo(CODESITE_codeBlogDiv)}if(CODESITE_featuredDiv.length){var H=
[];e=window._apiGadgetData_||window._homepageGadgetData_;i=e.groupOptions;s=410;B="100%";C="__MSG_groups.community__";d="";if(i){B=i.width||B;s=i.height||s;C=i.up_gadgetTitle||C;d=i.xtraFeeds||d}e.featuredProjectsFeedUrl&&e.featuredProjectsFeedUrl.length&&H.push(c(["featured:__MSG_featured.projects__:",jQuery.trim(e.featuredProjectsFeedUrl)].join("")));if(e.groupFeedUrl&&e.groupFeedUrl.length){if(!e.groupFeedName||e.groupFeedName.length==0)e.groupFeedName="__MSG_groups.community__";H.push(c([e.groupFeedName,
":",jQuery.trim(e.groupFeedUrl)].join("")))}e.featureFeedUrl&&e.featureFeedUrl.length&&H.push(c(["featured:__MSG_featured.projects__:",jQuery.trim(e.featureFeedUrl)].join("")));e.articleFeedUrl&&e.articleFeedUrl.length&&H.push(c(["__MSG_articles__:",jQuery.trim(e.articleFeedUrl)].join("")));e.userGroupsFeedUrl&&e.userGroupsFeedUrl.length&&H.push(c(["__MSG_groups.user__:",jQuery.trim(e.userGroupsFeedUrl)].join("")));if(d.length){d=a(d).split("|");for(e=0;e<d.length;e++)H.push(c(jQuery.trim(d[e])))}if(H.length)jQuery('<iframe frameborder="0">').attr({src:[b,
"up_showaddbutton=true&up_defer=true&up_gadgetTitle=",c(C),"&up_feeds=",H.join("|"),k(i||"")].join(""),frameborder:"0",width:B,height:s}).css({border:"none"}).appendTo(CODESITE_featuredDiv)}}jQuery(function(){try{prettyPrint()}catch(b){}});jQuery(function(){var b=jQuery("#gc-pagecontent"),d=jQuery("#gc-toc");if(b.length){var e=jQuery('<div id="gc-collapsible-arrow">'),i=jQuery('<div id="gc-collapsible">'),k=function(r){var s=b.offset();e.css({left:s.left+"px",top:(r.pageY||r.clientY)+"px"})};b.css("position",
"relative").append(i);jQuery(document.body).append(e);jQuery.browser.msie&&jQuery.browser.version<7&&b.css("left","-5px");b.is(".skip-collapsible")||i.mouseover(function(r){i.addClass("hover");if(d.is(":hidden")){i.css("left","-3px");e.addClass("collapsed")}else e.removeClass("collapsed");e.show();k(r)}).mousemove(function(r){k(r)}).mouseout(function(){i.removeClass("hover");i.css("left","");e.hide()}).click(function(){e.hide();i.removeClass("hover").css("left","");d.toggle();if(d.is(":visible")){b.css("margin-left",
"");jQuery.browser.msie&&jQuery.browser.version<7&&b.css("left","-5px")}else{b.css("margin-left","0px");jQuery.browser.msie&&jQuery.browser.version<7&&b.css("left","")}});i.height(b.height())}});jQuery(window.CODESITE_createVideoAndGadgets=function(){CODESITE_codeBlogDiv=jQuery("#gc-blog-gadget");CODESITE_featuredDiv=jQuery("#gc-community-gadget");CODESITE_codeVideoDiv=jQuery("#gc-codevideo");CODESITE_macRecentChangesDiv=jQuery("#recentchanges");if(CODESITE_codeVideoDiv.length||CODESITE_macRecentChangesDiv.length)if(typeof window.google===
"undefined"||typeof window.google.feeds==="undefined"){var b=document.createElement("script");b.src="http://www.google.com/jsapi?key=internal-codesite&callback=CODESITE_loadFeedAPI";b.type="text/javascript";document.getElementsByTagName("head")[0].appendChild(b)}else CODESITE_loadFeedAPI();if(CODESITE_codeBlogDiv.length||CODESITE_featuredDiv.length)g()});window.CODESITE_getIntlUrl=function(b){var d=["/intl/","/p/","/u/","/hosting/","/support/","/soc/","/codejam/","/apis/youtube/dashboard/"];if(b.indexOf("/")==
0){for(var e in d)if(b.indexOf(d[e])>=0)return b;return CODESITE_langUrl+b}else return b};window.CODESITE_getProduct=function(b){b=b||window.location.href;var d=/https?:\/\/[^\/]*(\/intl\/[^\/]*)?(\/apis)?(\/([a-z0-9]*))?\//;b=d.exec(b);if(!b)return"";return(b=b[4])?b:""};window.CODESITE_click=function(b){_gaq.push(["siteTracker._trackEvent",b,"clicked"])}})(jQuery);var CSE={QUERY_REGEX_HASH:/([^\#]*)\#(p=([^&]*)&)?q=(.*)$/,QUERY_REGEX_QUES:/([^\?]*)\?(p=([^&]*)&)?q=(.*)$/,CSE_URL:"http://code.google.com/cse/googlecode-context.xml",searchControl:{},recentQuery:"",showingSearchResults:false,iframeUrlInSync:true,init:function(){CSE.searchControl=new GSearchControl;CSE.searchControl.setResultSetSize(GSearch.LARGE_RESULTSET);CSE.searchControl.setLinkTarget(GSearch.LINK_TARGET_TOP);var c=CSE.getProductParam();if(CODESITE_getSearchTabTitle(c)!=null){CSE.addSearcher(c,
false);CODESITE_getSearchTabTitle(c,true)!=null&&CSE.addSearcher(c,true)}CSE.addSearcher("google_code",false);CSE.addSearcher("discussion",true);CSE.addSearcher("project_hosting",false);c=new GvideoSearch;c.setQueryAddition("ytchannel:GoogleDevelopers");c.setResultSetSize(GSearch.SMALL_RESULTSET);c.setUserDefinedLabel(CODESITE_getSearchTabTitle("developer_videos"));CSE.searchControl.addSearcher(c);c=document.getElementById("searchControl");var a=new GdrawOptions;a.setDrawMode(GSearchControl.DRAW_MODE_TABBED);
CSE.searchControl.draw(c,a);CSE.checkHash(CSE.QUERY_REGEX_HASH,window.location.href)},addSearcher:function(c,a){var g=new GwebSearch;a?g.setSiteRestriction({crefUrl:CSE.CSE_URL},c+"_groups"):g.setSiteRestriction({crefUrl:CSE.CSE_URL},c);g.setUserDefinedLabel(CODESITE_getSearchTabTitle(c,a));CSE.searchControl.addSearcher(g)},checkHash:function(c,a){if(c=c.exec(a)){c=decodeURI(c[4]);if(c!=""&&c!=CSE.recentQuery){jQuery("#gsearchInput").attr("value",c);CSE.executeQuery(c)}}else{if(CSE.showingSearchResults){jQuery("#searchControl").hide();
jQuery("#codesiteContent").show();CSE.recentQuery="";CSE.showingSearchResults=false;window.history.back(-1)}return false}return true},getProductParam:function(){var c=CSE.QUERY_REGEX_HASH.exec(window.location.href),a="";if(c&&c[4]){a=decodeURI(c[3]);if(CODESITE_getSearchTabTitle(a)==null)a=""}return a},executeQuery:function(c){if(c!="")if(CSE.iframeUrlInSync){var a=CSE.getProductParam();CSE.handleAnalytics(c,a);a=a!=""?"p="+encodeURI(a)+"&q="+encodeURI(c):"q="+encodeURI(c);jQuery.browser.msie&&CSE.handleIeHistory(a);
CSE.recentQuery=c;CODESITE_setURL("#"+a);jQuery("#searchControl").show();jQuery("#codesiteContent").hide();CSE.showingSearchResults=true;a=CSE.makeNoResultsHtml(c);CSE.searchControl.setNoResultsString(a);CSE.searchControl.execute(c)}},handleIeHistory:function(c){CSE.iframeUrlInSync=false;window.backiFrame.location.search=c;var a=window.setInterval(g,window.CODESITE_backButton.IFRAME_POLLING_INTERVAL);function g(){if(window.backiFrame.location.search.substring(1)==c){CSE.iframeUrlInSync=true;window.clearInterval(a)}}
},makeNoResultsHtml:function(c){for(var a=[CODESITE_msgs.search.NO_RESULTS_FOUND,"<b>",CSE.escapeHtml(c),"</b><br><br>",CODESITE_msgs.search.SUGGESTIONS_TITLE,":<br><br><ul>"].join(""),g=0,b=CODESITE_msgs.search.SUGGESTIONS_ITEMS.length;g<b;g++)a=[a,"<li>",CODESITE_msgs.search.SUGGESTIONS_ITEMS[g],"</li>"].join("");return[a,'</ul><br><a href="',CODESITE_msgs.search.SEARCH_URL,encodeURI(c),'">',CODESITE_msgs.search.TRY_WEBSEARCH,"</a>."].join("")},handleAnalytics:function(c,a){var g=jQuery("#searchControl").css("display")==
"block"?jQuery("div.gsc-tabhActive").text():"";c="/search/?q="+c+"&product="+a+"&tab="+g;if(window.siteTracker)try{siteTracker._trackPageview(c)}catch(b){}},escapeHtml:function(c){return c.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\'/g,"&#039;").replace(/\"/g,"&quot;")},pollHash:function(){if(jQuery.browser.msie)CSE.iframeUrlInSync&&CSE.checkHash(CSE.QUERY_REGEX_QUES,window.backiFrame.location.href)&&CSE.checkHash(CSE.QUERY_REGEX_HASH,window.location.href);else CSE.checkHash(CSE.QUERY_REGEX_HASH,
window.location.href)}};window.CODESITE_CSE=CSE;window.CODESITE_setURL=function(c){location.href=c};window.executeGSearch=function(c){if(c!="")if(CODESITE_CSE.iframeUrlInSync){var a=CODESITE_getProduct();if(a=="query")CODESITE_CSE.executeQuery(c);else{if(CODESITE_getSearchTabTitle(a)==null)a="";c=a!=""?"p="+encodeURI(a)+"&q="+encodeURI(c):"q="+encodeURI(c);CODESITE_setURL(CODESITE_langUrl+"/query/#"+c)}}};
window.CODESITE_getSearchTabTitle=function(c,a){if(!c)return null;var g=CODESITE_productDictionary.dictionariesList;for(var b in g){var d=CODESITE_productDictionary[g[b]].entries[c];if(d)if(a){if(d.groupsTitle)return d.groupsTitle}else return d.searchTabTitle||d.title}g=CODESITE_productDictionary.dictionariesList;for(b in g)if(d=CODESITE_productDictionary_default[g[b]].entries[c])if(a){if(d.groupsTitle)return d.groupsTitle}else return d.searchTabTitle||d.title;return null};(function(){function c(a,g){this.results_=[];this.buttonEl_=jQuery("#"+g);this.inputFieldEl_=jQuery("#"+a);var b=this;jQuery(this.buttonEl_).focus(function(){b.hideResultsWindow_()});this.searchResultsEl_=jQuery('<div id="cs-searchresults">');this.searchResultsEl_.click(function(d){(event||d).cancelBubble=true});this.searchResultsEl_.appendTo(document.body);jQuery('<div id="cs-recommended">').html(CODESITE_msgs.search.SUGGESTIONS).appendTo(this.searchResultsEl_);a=0;for(g=1;a<this.MAX_RESULTS_;a++,
g++)jQuery('<div id="searchResult'+g+'">').appendTo(this.searchResultsEl_);jQuery(document.body).click(function(d){return b.handleBodyClick_.call(b,d)});jQuery(document).keydown(function(d){return b.handleBodyKeyDown_.call(b,d)}).keypress(function(d){return b.handleBodyKeyPress_.call(b,d)}).keyup(function(d){return b.handleBodyKeyUp_.call(b,d)});jQuery(window).resize(function(d){b.handleBodyResize_.call(b,d)});window.onpageshow=function(d){d.persisted&&b.hideResultsWindow_()};this.inputFieldEl_.keyup(function(d){return b.handleInputKeyUp_.call(b,
d)}).focus(function(d){return b.handleInputFocus_.call(b,d)}).blur(function(d){return b.handleInputBlur_.call(b,d)}).click(function(d){return b.handleInputClick_.call(b,d)}).attr("autocomplete","off");this.initialized_=!!(this.inputFieldEl_.length&&this.searchResultsEl_.length&&this.buttonEl_.length)}c.prototype={results_:null,initialized_:false,searchActive_:true,resultsWindowHidden_:true,inputFieldEl_:0,searchResultsEl_:0,inputFieldHasFocus_:0,activeResult_:0,arrowKeyProcessed_:false,typedQuery_:"",
backgroundHover:"#3366CC",foregroundHover:"#ffffff",backgroundOff:"#ffffff",foregroundOff:"#000000",MAX_RESULTS_:7,FIRST_RESULT_:1,getQueryFromInputField_:function(){return jQuery.trim(this.inputFieldEl_.val().toLowerCase())},querySearch_:function(){if(this.searchActive_)if(this.typedQuery_.length==0)this.hideResultsWindow_();else{this.results_.splice(0,this.results_.length);var a=CODESITE_productDictionary.dictionariesList;for(var g in a){var b=CODESITE_productDictionary[a[g]];if(b.includeInSearchSuggest)for(var d in b.entries){var e=
b.entries[d],i=0,k=new RegExp("(?:\\s|^)"+RegExp.escape(this.typedQuery_)),r=e.title.toLowerCase().match(k);if(r!=null)i=2;for(var s in e.keywords){r=s.match(k);if(r!=null)i+=e.keywords[s];r=this.typedQuery_.split(" ");if(r.length>1)for(d=0;d<r.length;d++){var B=new RegExp("(?:\\s|^)"+r[d]);B=s.match(B);if(B!=null)i+=e.keywords[s]}}i>0&&this.results_.push({match:i,title:e.title,url:CODESITE_getIntlUrl(e.url)})}}this.results_.sort(this.sortMatches_);this.results_.length=Math.min(this.results_.length,
6);this.prepareResultsWindow_()}},sortMatches_:function(a,g){g=g.match;a=a.match;return g<a?-1:g>a?1:0},createSearchResultDiv:function(a){var g=a+1,b=this,d=jQuery("#searchResult"+g);d.attr("class","cs-searchresult").css({display:"block",textAlign:"left",zoom:"1"}).html(['<a tabindex="-1" id="searchResultLink',g,'" href="',this.results_[a].url,'">',this.results_[a].title,"</a>"].join("")).unbind().mouseover(function(){b.deactivateAllResults_();b.activateSearchResult_(g)}).mouseout(function(){b.deactivateSearchResult_(g)}).click(function(){window.location.href=
b.results_[a].url})},prepareResultsWindow_:function(){this.activeResult_=0;if(this.results_.length==0)this.hideResultsWindow_();else{for(var a=0;a<this.results_.length;a++)this.createSearchResultDiv(a);this.deactivateAllResults_();var g=this.results_.length+1;a=jQuery("#searchResult"+g);var b=this;a.attr("class","").css({textAlign:"right",display:"block",zoom:"1"}).html('<a style="color: #0000ff; text-decoration: underline;" id="searchResultLink'+g+'"> '+CODESITE_msgs.search.MORE+" &raquo;</a>").unbind().mouseup(function(){b.hideResultsWindow_();
executeGSearch(b.inputFieldEl_.val())}).mouseover(function(){b.deactivateAllResults_();b.activateSearchResult_(g)}).mouseout(function(){b.deactivateSearchResult_(g)});for(a=g+1;a<=this.MAX_RESULTS_;a++)jQuery("#searchResult"+a).hide();this.resultsWindowHidden_&&this.showResultsWindow_()}},updateDimensions_:function(){if(this.searchActive_){var a=this.inputFieldEl_.offset();a.left+=3;this.searchResultsEl_.css({left:a.left+"px",top:a.top+this.inputFieldEl_[0].offsetHeight+2+"px",width:this.inputFieldEl_.css("width")})}},
showResultsWindow_:function(){if(this.searchActive_){this.searchResultsEl_.css("visibility","hidden");this.updateDimensions_();this.searchResultsEl_.css("display","block");this.searchResultsEl_.css("visibility","visible");this.resultsWindowHidden_=false}},hideResultsWindow_:function(){if(!this.resultsWindowHidden_){this.searchResultsEl_.hide();this.resultsWindowHidden_=true;this.activeResult_=0}},activateSearchResult_:function(a){this.inputFieldEl_[0].blur();var g=jQuery("#searchResult"+a);a=jQuery("#searchResultLink"+
a);g.length&&g.css("backgroundColor",this.backgroundHover);a.length&&a.css("color","white")},deactivateSearchResult_:function(a){var g=jQuery("#searchResult"+a),b=jQuery("#searchResultLink"+a);g&&g.css("background",this.backgroundOff);if(b&&a==this.results_.length+1)b.css("color","#0000ff");else b&&b.css("color",this.foregroundOff)},deactivateAllResults_:function(){for(var a=0,g=this.results_.length+1;a<g;a++)this.deactivateSearchResult_(a+1)},activateNextSearchResult_:function(){if(this.results_.length>
0)if(this.activeResult_<=this.results_.length){this.deactivateSearchResult_(this.activeResult_);this.activeResult_++;this.activateSearchResult_(this.activeResult_)}},activatePrevSearchResult_:function(){if(this.results_.length>0)if(this.activeResult_==this.FIRST_RESULT_){this.deactivateSearchResult_(this.activeResult_);this.activeResult_=0;this.inputFieldEl_[0].focus()}else if(this.activeResult_>this.FIRST_RESULT_){this.deactivateSearchResult_(this.activeResult_);this.activeResult_--;this.activateSearchResult_(this.activeResult_)}},
handleInputKeyUp_:function(a){if(this.initialized_)if(this.searchActive_){a=a||window.event;a=a.which?a.which:a.keyCode;if(a==13){this.hideResultsWindow_();executeGSearch(this.inputFieldEl_.val())}else{a=this.getQueryFromInputField_();if(a!=this.typedQuery_){this.typedQuery_=a;this.querySearch_()}return true}}},handleBodyKeyDown_:function(a){var g=true,b=false;if(this.initialized_){a=a||window.event;var d=a.which?a.which:a.keyCode;a=a.target?a.target:a.srcElement;for(var e=jQuery("#searchResultLink"+
this.activeResult_),i=[this.inputFieldEl_[0],document.documentElement,document.body],k=0;k<i.length;k++)if(a==i[k])b=true;if(!b)return true;switch(d){case 13:if(this.activeResult_>=0){if(this.activeResult_==this.results_.length+1){this.hideResultsWindow_();executeGSearch(this.inputFieldEl_.val())}else if(e.length)location.href=e.attr("href");g=false}break;case 27:if(this.searchActive_){this.resultsWindowHidden_?this.inputFieldEl_.val(""):this.hideResultsWindow_();g=false}else{this.searchActive_=true;
this.inputFieldEl_[0].focus();g=true}break;case 40:case 63233:if(this.resultsWindowHidden_&&this.inputFieldHasFocus_&&d!=39){this.searchActive_=true;this.querySearch_();g=false}else if(!this.resultsWindowHidden_&&(this.activeResult_>0||d!=39)){this.deactivateAllResults_();this.activateNextSearchResult_();g=false;this.arrowKeyProcessed_=true}break;case 38:case 63235:if(!this.resultsWindowHidden_){this.deactivateAllResults_();this.activatePrevSearchResult_();g=false;this.arrowKeyProcessed_=true}break;
case 37:case 39:if(!this.inputFieldHasFocus_&&!this.resultsWindowHidden_){this.arrowKeyProcessed_=false;this.inputFieldEl_[0].focus()}}}return g},handleBodyKeyPress_:function(a){if(this.initialized_){a=a||window.event;a=a.which?a.which:a.keyCode;if(this.arrowKeyProcessed_&&a>=37&&a<=40)return false;return true}},handleBodyKeyUp_:function(a){var g=true;a=a||window.event;this.arrowKeyProcessed_=false;return g},handleBodyResize_:function(){this.updateDimensions_();return true},handleInputBlur_:function(){this.inputFieldHasFocus_=
0},handleInputFocus_:function(){this.inputFieldHasFocus_=0.5;this.initialized_&&this.deactivateAllResults_()},handleInputClick_:function(a){a=a||window.event;this.searchActive_=a.cancelBubble=true;if(this.inputFieldHasFocus_==1)this.resultsWindowHidden_&&this.querySearch_();else this.inputFieldHasFocus_=1},handleBodyClick_:function(a){a=a||window.event;(a=a.target?a.target:a.srcElement)&&a.parentNode&&this.hideResultsWindow_()}};window.CODESITE_asYouTypeSearch=c;jQuery(function(){try{new c("gsearchInput",
"gsearchButton")}catch(a){}})})(jQuery);(function(){var c={POLLING_INTERVAL:450,IFRAME_POLLING_INTERVAL:50,init:function(){var a=window.location.href.match(/\/query\//);if(jQuery.browser.msie||jQuery.browser.mozilla||navigator.userAgent.indexOf("Chrome")!=-1||jQuery.browser.safari&&navigator.userAgent.indexOf("Version/")!=-1)c.poll(a)},poll:function(a){a&&window.setInterval(function(){a&&window.CODESITE_CSE.pollHash()},c.POLLING_INTERVAL)}};window.CODESITE_backButton=c})(jQuery);jQuery(document).ready(function(){window.CODESITE_backButton.init()});(function(){function c(a){this.parentElem=a.parent;this.controlsElem=a.controls;this.contentElem=a.content;if(!(!this.parentElem||!this.controlsElem||!this.contentElem)){c.active[this.index=c.active.length]=this;var g=this;this.toggleElem=jQuery('<img src="images/cleardot.gif">').addClass("collapsible-control").mouseover(function(){var b=jQuery(this);b.addClass("collapsible-hover")}).mouseout(function(){var b=jQuery(this);b.removeClass("collapsible-hover")});this.controlsElem.mousedown(function(){var b=
jQuery(g.toggleElem),d=jQuery(g.contentElem);if(d.is(":visible")){b.addClass("collapsible-plus").removeClass("collapsible-minus");d.hide()}else{b.addClass("collapsible-minus").removeClass("collapsible-plus");d.show()}});if(this.parentElem.is(".closed"))a.opened=false;if(this.parentElem.is(".opened"))a.opened=true;if(a.opened===true)this.toggleElem.addClass("collapsible-minus");else{this.toggleElem.addClass("collapsible-plus");this.contentElem.hide()}this.controlsElem.prepend(this.toggleElem);this.parentElem.addClass("collapsible-done")}}
c.prototype={index:-1,parentElem:null,controlsElem:null,contentElem:null,toggleElem:null};jQuery.extend(c,{active:[],convert:function(){for(var a=jQuery(".collapsible"),g=0;g<a.length;g++)if(a[g].className.indexOf("collapsible-done")==-1){var b=jQuery(".collapsible-controls",a[g]),d=jQuery(".collapsible-content",a[g]);b.length&&d.length&&new c({parent:jQuery(a[g]),controls:b,content:d})}}});window.CODESITE_collapsible=c;jQuery(function(){CODESITE_collapsible.convert()})})();(function(){var c=function(k,r,s){this.numCompleteTranslations=0;this.contentContainers=k;this.originalText=[];this.translatedText=[];this.srcLang=r;this.destLang=s;for(k=0;k<this.contentContainers.length;k++)this.originalText.push(this.contentContainers[k].innerHTML)};c.prototype.translationComplete=function(k,r,s,B){if(s==200&&!B){for(s=0;s<r.length;s++)if(r[s].responseStatus!=200){r.slice(s);s--}this.translatedText[k]=r;this.numCompleteTranslations++;if(this.numCompleteTranslations==this.numTranslations){k=
[];for(s=0;s<this.translatedText.length;s++)k=k.concat(this.translatedText[s]);this.translatedText=k;for(s=0;s<this.translatedText.length;s++)if(this.translatedText[s].responseStatus==200)this.contentContainers[s].innerHTML=this.translatedText[s].responseData.translatedText}}};c.prototype.createScriptURLs=function(){var k=this.contentContainers,r=this.srcLang,s=this.destLang,B=[];r="http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&callback=CODESITE_newsBlogTH.translationComplete&langpair="+
r+"%7C"+s;s=0;for(var C=r+"&context="+s,H=0;H<k.length;H++){var I=encodeURIComponent(k[H].innerHTML);if(I)if((C+I).length<1800)C+="&q="+I;else{B.push(C);s++;C=r+"&context="+s;if((C+I).length<1800)C+="&q="+I}}B.push(C);return B};c.prototype.translate=function(){if(this.translatedText.length>0)for(var k=0;k<this.translatedText.length;k++){if(this.translatedText[k].responseStatus==200)this.contentContainers[k].innerHTML=this.translatedText[k].responseData.translatedText}else{var r=this.createScriptURLs();
this.numTranslations=r.length;for(k=0;k<r.length;k++)jQuery.ajax({type:"GET",url:r[k],dataType:"script"})}};c.prototype.revert=function(){for(var k=0;k<this.contentContainers.length;k++)jQuery(this.contentContainers[k]).text(this.originalText[k])};function a(){window.CODESITE_newsBlogTH.translate();jQuery("#gc-translate-direction").html("&nbsp;&larr;");jQuery(this).unbind();jQuery(this).click(g)}function g(){window.CODESITE_newsBlogTH.revert();jQuery("#gc-translate-direction").html("&nbsp;&rarr;");
jQuery(this).unbind();jQuery(this).click(a)}function b(k){switch(k){case "pt-BR":return"pt-PT";default:return k}}var d=document.getElementById("news")||null;if(d&&CODESITE_langLoc&&typeof window.CODESITE_langCode[CODESITE_langLoc]!=="undefined"){d=d.getElementsByTagName("p");for(var e=[],i=0;i<d.length;i++)d[i].className.indexOf("blog-entry-summary")!=-1&&e.push(d[i]);window.CODESITE_newsBlogTH=new c(e,"",b(CODESITE_langLoc));c=jQuery("#gc-translate-blogs");c.text(window.CODESITE_langCode[CODESITE_langLoc]);
c.click(a)}})(jQuery);(function(c){function a(){var g=window.location.pathname.replace(/\/index[.]html$/,"/");return"http://"+window.location.hostname+g}window.CODESITE_displayComments=function(){var g=c('<h2 id="commentWidgetTitle">User Notes</h2>'+CODESITE_zipItDesc+'<div id="commentwidget"></div>');c("#gc-pagecontent").append(g);g=a();google.annotations.create("CommentThread","commentwidget",{entity:{url:g},inline:true,qualityScore:0.415,comparisonType:3,collapsiblePoster:true,commentTemplate:'<div class="commentHeader"><z:Nickname/> - <z:DateTime/> <z:NumUsersFoundThisHelpful/></div><div class="commentContent"><z:CommentDisplay/></div><div class="commentHelpful">Was this note helpful? <z:VotingEditor/></div><div class="commentSpam"><z:ReportSpamLink/></div>'});
google.annotations.fetch()};window.CODESITE_initComments=function(g,b,d){g=g||"http://www.google.com";b=b||window.location;var e=d||c.getScript;if(b.pathname.indexOf("/intl/")==-1){d="&callback=CODESITE_displayComments&appid=92";if(b.hostname!="code.google.com")d+="&dev=1";var i=g+"/reviews/scripts/annotations_bootstrap.js?"+d;c(function(){e(i)})}}})(jQuery);
