function serviceHeader(){return new ServiceHeader(1,"Google","Google's free online language translation service instantly translates text and web pages."+Const.NL2+serviceHost()+Const.NL2+"\u00a9 2020 Google",Capability.TRANSLATE|Capability.DETECT_LANGUAGE|Capability.LISTEN)}function serviceHost(a,b,c){return"https://translate.google."+(Options.PreferredDomain||Options.GoogleDomain||"com")}
function serviceLink(a,b,c){var h=serviceHost()+"/";a&&(b=isLanguage(b)?codeFromLanguage(b):"auto",c=isLanguage(c)?codeFromLanguage(c):"auto",h+=format("#{0}/{1}/{2}",b,c,encodeGetParam(a)));return h}
SupportedLanguages=[-1,"auto","af","az","sq","ar","hy","eu","be","bg","ca","zh-CN","zh-TW","hr","cs","da","nl","en","et","fi","tl","fr","gl","de","el","ht","iw","hi","hu","is","id","it","ga","ja","ka","ko","lv","lt","mk","ms","mt","no","fa","pl","pt","ro","ru","sr","sk","sl","es","sw","sv","th","tr","uk","ur","vi","cy","yi","eo","hmn","la","lo","kk","uz","si","tg","te","km","mn","kn","ta","mr"];
function tk(a){function b(a,b){for(var d=0;d<b.length-2;d+=3){var c=b.charAt(d+2),c="a"<=c?c.charCodeAt(0)-87:Number(c),c="+"==b.charAt(d+1)?a>>>c:a<<c;a="+"==b.charAt(d)?a+c&4294967295:a^c}return a}for(var c=(Options.GoogleTkk||"0.0").split("."),h=Number(c[0])||0,g=[],d=0,e=0;e<a.length;e++){var f=a.charCodeAt(e);128>f?g[d++]=f:(2048>f?g[d++]=f>>6|192:(55296==(f&64512)&&e+1<a.length&&56320==(a.charCodeAt(e+1)&64512)?(f=65536+((f&1023)<<10)+(a.charCodeAt(++e)&1023),g[d++]=f>>18|240,g[d++]=f>>12&63|
128):g[d++]=f>>12|224,g[d++]=f>>6&63|128),g[d++]=f&63|128)}a=h;for(d=0;d<g.length;d++)a+=g[d],a=b(a,"+-a^+6");a=b(a,"+-3^+b+-f");a^=Number(c[1])||0;0>a&&(a=(a&2147483647)+2147483648);a%=1E6;return a.toString()+"."+(a^h)}
function serviceDetectLanguageRequest(a){a.length>Const.MAX_QUERY_LEN&&(a=a.slice(0,Const.MAX_QUERY_LEN));var b=tk(a);a=encodeUriParam(a);var c=a.length>Const.MAX_URI_LEN||a.length>Const.MAX_QUERY_LEN?HttpMethod.POST:HttpMethod.GET;return new RequestData(c,"/translate_a/single?client=webapp&sl=auto&dt=ld&ie=UTF-8&oe=UTF-8&tk="+b+(c===HttpMethod.POST?"":"&q="+a),c===HttpMethod.POST?"q="+a:null)}function serviceDetectLanguageResponse(a){a=parseJSON(a);return getSourceLanguage(a)}
function serviceTranslateRequest(a,b,c){a.length>Const.MAX_QUERY_LEN&&(a=a.slice(0,Const.MAX_QUERY_LEN));var h=tk(a);a=encodeUriParam(a);var g=a.length>Const.MAX_URI_LEN||a.length>Const.MAX_QUERY_LEN?HttpMethod.POST:HttpMethod.GET;b=format("/translate_a/single?client=webapp&sl={0}&tl={1}&hl={2}&dt=bd&dt=t&dt=ld&dt=rm&ie=UTF-8&oe=UTF-8&tk={3}",codeFromLanguage(b),codeFromLanguage(c),Options.LanguageCode,h);g===HttpMethod.GET&&(b+="&q="+a);return new RequestData(g,b,g===HttpMethod.POST?"q="+a:null)}
function serviceTranslateResponse(a,b,c,h){a=parseJSON(b);var g=b="",d,e;if(a){var f=a[0];if(f)for(d=0;d<f.length;d++)(e=f[d])&&0!==e.length&&(b+=e[0]||"",2<e.length&&d===f.length-1&&(g=e[2]||""));if(f=a[1])for(d=0;d<f.length;d++)if(e=f[d],!(3>e.length)){b+=Const.NL2+e[0]+":";var l=e[2];for(e=0;e<l.length;e++){var k=l[e];1<k.length&&(b+=Const.NL+"    "+k[0],(k=k[1])&&0<k.length&&(b+=" ("+k.join(", ")+")"))}}isLanguage(c)||(c=getSourceLanguage(a))}return new ResponseData(b,c,h,g)}
function getSourceLanguage(a){return!a||9>a.length?UNKNOWN_LANGUAGE:(a=a[8])&&0!==a.length?languageFromCode(a[0][0]):UNKNOWN_LANGUAGE}function serviceListenRequest(a,b,c){a=format("/translate_tts?ie=UTF-8&q={0}&tl={1}&client=webapp&tk={2}",encodeGetParam(a),codeFromLanguage(b),tk(a));c&&(a+="&ttsspeed=0.24");return new RequestData(HttpMethod.GET,a)};
