summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Tay <samctay@pm.me>2021-06-30 00:01:20 -0400
committerSam Tay <samctay@pm.me>2021-06-30 00:01:20 -0400
commit0e27fbe38f44155096f5c5c1d934d70d6e21eb7e (patch)
treef5f35bf6d6eab0ca6a2b71088ed0a471fcb89acd
parent8d8ee4ecf6e15a6dba4084d6865254f967b9115a (diff)
Fix google parser
-rw-r--r--Cargo.toml4
-rw-r--r--src/stackexchange/scraper.rs31
-rw-r--r--test/google/exit-vim.html327
-rw-r--r--test/google/parsing-q.html325
4 files changed, 376 insertions, 311 deletions
diff --git a/Cargo.toml b/Cargo.toml
index fbffa24..4cc43d6 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -21,12 +21,12 @@ criterion = "0.3"
[[bench]]
name = "html_parsing"
-path = "html_parsing.rs"
+path = "benches/html_parsing.rs"
harness = false
[[bench]]
name = "md_parsing"
-path = "md_parsing.rs"
+path = "benches/md_parsing.rs"
harness = false
[dependencies]
diff --git a/src/stackexchange/scraper.rs b/src/stackexchange/scraper.rs
index e67f0f6..97c4bef 100644
--- a/src/stackexchange/scraper.rs
+++ b/src/stackexchange/scraper.rs
@@ -85,7 +85,7 @@ impl Scraper for Google {
sites: &HashMap<String, String>,
limit: u16,
) -> Result<ScrapedData> {
- let anchors = Selector::parse("div.r > a").unwrap();
+ let anchors = Selector::parse("a").unwrap();
parse_with_selector(anchors, html, sites, limit)
}
@@ -139,23 +139,24 @@ fn parse_with_selector(
let mut ordering: HashMap<String, usize> = HashMap::new();
let mut count = 0;
for anchor in fragment.select(&anchors) {
- let url = anchor
+ if let Some(url) = anchor
.value()
.attr("href")
- .ok_or_else(|| Error::ScrapingError("Anchor with no href".to_string()))
- .map(|href| percent_decode_str(href).decode_utf8_lossy().into_owned())?;
- sites.iter().find_map(|(site_code, site_url)| {
- let id = question_url_to_id(site_url, &url)?;
- ordering.insert(id.to_owned(), count);
- match question_ids.entry(site_code.to_owned()) {
- Entry::Occupied(mut o) => o.get_mut().push(id),
- Entry::Vacant(o) => {
- o.insert(vec![id]);
+ .map(|href| percent_decode_str(href).decode_utf8_lossy())
+ {
+ sites.iter().find_map(|(site_code, site_url)| {
+ let id = question_url_to_id(site_url, &url)?;
+ ordering.insert(id.to_owned(), count);
+ match question_ids.entry(site_code.to_owned()) {
+ Entry::Occupied(mut o) => o.get_mut().push(id),
+ Entry::Vacant(o) => {
+ o.insert(vec![id]);
+ }
}
- }
- count += 1;
- Some(())
- });
+ count += 1;
+ Some(())
+ });
+ }
if count >= limit as usize {
break;
}
diff --git a/test/google/exit-vim.html b/test/google/exit-vim.html
index bd74d4c..90abdf3 100644
--- a/test/google/exit-vim.html
+++ b/test/google/exit-vim.html
@@ -1,201 +1,230 @@
-<!doctype html><html itemscope="" itemtype="http://schema.org/SearchResultsPage" lang="en"><head><meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image"><title>(site:askubuntu.com OR site:stackoverflow.com) how do i exit nvim - Google Search</title><script nonce="VnsFleiriCwplgyln3sgFw==">(function(){window.google={kEI:'qLHzXumUMvmOr7wPx-mB2Ag',kEXPI:'31',kBL:'tdrq'};google.sn='web';google.kHL='en';})();(function(){google.lc=[];google.li=0;google.getEI=function(a){for(var c;a&&(!a.getAttribute||!(c=a.getAttribute("eid")));)a=a.parentNode;return c||google.kEI};google.getLEI=function(a){for(var c=null;a&&(!a.getAttribute||!(c=a.getAttribute("leid")));)a=a.parentNode;return c};google.ml=function(){return null};google.time=function(){return Date.now()};google.log=function(a,c,b,d,g){if(b=google.logUrl(a,c,b,d,g)){a=new Image;var e=google.lc,f=google.li;e[f]=a;a.onerror=a.onload=a.onabort=function(){delete e[f]};google.vel&&google.vel.lu&&google.vel.lu(b);a.src=b;google.li=f+1}};google.logUrl=function(a,c,b,d,g){var e="",f=google.ls||"";b||-1!=c.search("&ei=")||(e="&ei="+google.getEI(d),-1==c.search("&lei=")&&(d=google.getLEI(d))&&(e+="&lei="+d));d="";!b&&google.cshid&&-1==c.search("&cshid=")&&"slh"!=a&&(d="&cshid="+google.cshid);b=b||"/"+(g||"gen_204")+"?atyp=i&ct="+a+"&cad="+c+e+f+"&zx="+google.time()+d;/^http:/i.test(b)&&"https:"==window.location.protocol&&(google.ml(Error("a"),!1,{src:b,glmm:1}),b="");return b};}).call(this);(function(){google.y={};google.x=function(a,b){if(a)var c=a.id;else{do c=Math.random();while(google.y[c])}google.y[c]=[a,b];return!1};google.lm=[];google.plm=function(a){google.lm.push.apply(google.lm,a)};google.lq=[];google.load=function(a,b,c){google.lq.push([[a],b,c])};google.loadAll=function(a,b){google.lq.push([a,b])};}).call(this);google.f={};(function(){
-document.documentElement.addEventListener("submit",function(b){var a;if(a=b.target){var c=a.getAttribute("data-submitfalse");a="1"==c||"q"==c&&!a.elements.q.value?!0:!1}else a=!1;a&&(b.preventDefault(),b.stopPropagation())},!0);document.documentElement.addEventListener("click",function(b){var a;a:{for(a=b.target;a&&a!=document.documentElement;a=a.parentElement)if("A"==a.tagName){a="1"==a.getAttribute("data-nohref");break a}a=!1}a&&b.preventDefault()},!0);}).call(this);(function(){google.hs={h:true,sie:false};})();var h="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a},k=function(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("a");},l=k(this),m=function(a,b){if(b)a:{var c=l;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];if(!(e in
-c))break a;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&h(c,a,{configurable:!0,writable:!0,value:b})}};m("String.prototype.startsWith",function(a){return a?a:function(b,c){if(null==this)throw new TypeError("The 'this' value for String.prototype.startsWith must not be null or undefined");if(b instanceof RegExp)throw new TypeError("First argument to String.prototype.startsWith must not be a regular expression");var d=this+"";b+="";var e=d.length,g=b.length;c=Math.max(0,Math.min(c|0,d.length));for(var f=0;f<g&&c<e;)if(d[c++]!=b[f++])return!1;return f>=g}});google.arwt=function(a){a.href=document.getElementById(a.id.substring(a.id.startsWith("vcs")?3:1)).href;return!0};(function(){
-var f=this||self,h=Date.now;
-
-var x={};var aa=function(a,c){if(null===c)return!1;if("contains"in a&&1==c.nodeType)return a.contains(c);if("compareDocumentPosition"in a)return a==c||!!(a.compareDocumentPosition(c)&16);for(;c&&a!=c;)c=c.parentNode;return c==a};var ba=function(a,c){return function(d){d||(d=window.event);return c.call(a,d)}},z=function(a){a=a.target||a.srcElement;!a.getAttribute&&a.parentNode&&(a=a.parentNode);return a},A="undefined"!=typeof navigator&&/Macintosh/.test(navigator.userAgent),ca="undefined"!=typeof navigator&&!/Opera/.test(navigator.userAgent)&&/WebKit/.test(navigator.userAgent),da={A:1,INPUT:1,TEXTAREA:1,SELECT:1,BUTTON:1},ea=function(){this._mouseEventsPrevented=!0},F={A:13,BUTTON:0,CHECKBOX:32,COMBOBOX:13,FILE:0,GRIDCELL:13,LINK:13,LISTBOX:13,MENU:0,MENUBAR:0,MENUITEM:0,MENUITEMCHECKBOX:0,MENUITEMRADIO:0,OPTION:0,RADIO:32,RADIOGROUP:32,RESET:0,SUBMIT:0,SWITCH:32,TAB:0,TREE:13,TREEITEM:13},G={CHECKBOX:!0,FILE:!0,OPTION:!0,RADIO:!0},H={COLOR:!0,DATE:!0,DATETIME:!0,"DATETIME-LOCAL":!0,EMAIL:!0,MONTH:!0,NUMBER:!0,PASSWORD:!0,RANGE:!0,SEARCH:!0,TEL:!0,TEXT:!0,TEXTAREA:!0,TIME:!0,URL:!0,WEEK:!0},fa={A:!0,AREA:!0,BUTTON:!0,DIALOG:!0,IMG:!0,INPUT:!0,LINK:!0,MENU:!0,OPTGROUP:!0,OPTION:!0,PROGRESS:!0,SELECT:!0,TEXTAREA:!0};
-var I=function(){this.h=this.a=null},K=function(a,c){var d=J;d.a=a;d.h=c;return d};I.prototype.g=function(){var a=this.a;this.a&&this.a!=this.h?this.a=this.a.__owner||this.a.parentNode:this.a=null;return a};var L=function(){this.i=[];this.a=0;this.h=null;this.j=!1};L.prototype.g=function(){if(this.j)return J.g();if(this.a!=this.i.length){var a=this.i[this.a];this.a++;a!=this.h&&a&&a.__owner&&(this.j=!0,K(a.__owner,this.h));return a}return null};var J=new I,M=new L;
-var O=function(){this.o=[];this.a=[];this.g=[];this.j={};this.h=null;this.i=[];N(this,"_custom")},ha="undefined"!=typeof navigator&&/iPhone|iPad|iPod/.test(navigator.userAgent),P=String.prototype.trim?function(a){return a.trim()}:function(a){return a.replace(/^\s+/,"").replace(/\s+$/,"")},ia=/\s*;\s*/,ma=function(a,c){return function p(b,g){g=void 0===g?!0:g;var m=c;if("_custom"==m){m=b.detail;if(!m||!m._type)return;m=m._type}if("click"==m&&(A&&b.metaKey||!A&&b.ctrlKey||2==b.which||null==b.which&&
-4==b.button||b.shiftKey))m="clickmod";else{var l=b.which||b.keyCode;ca&&3==l&&(l=13);if(13!=l&&32!=l)l=!1;else{var e=z(b),n;(n="keydown"!=b.type||!!(!("getAttribute"in e)||(e.getAttribute("type")||e.tagName).toUpperCase()in H||"BUTTON"==e.tagName.toUpperCase()||e.type&&"FILE"==e.type.toUpperCase()||e.isContentEditable)||b.ctrlKey||b.shiftKey||b.altKey||b.metaKey||(e.getAttribute("type")||e.tagName).toUpperCase()in G&&32==l)||((n=e.tagName in da)||(n=e.getAttributeNode("tabindex"),n=null!=n&&n.specified),n=!(n&&!e.disabled));if(n)l=!1;else{n=(e.getAttribute("role")||e.type||e.tagName).toUpperCase();var q=!(n in F)&&13==l;e="INPUT"!=e.tagName.toUpperCase()||!!e.type;l=(0==F[n]%l||q)&&e}}l&&(m="clickkey")}e=b.srcElement||b.target;l=Q(m,b,e,"",null);b.path?(M.i=b.path,M.a=0,M.h=this,M.j=!1,n=M):n=K(e,this);for(;q=n.g();){var k=q;var r=void 0;var u=k;q=m;var t=u.__jsaction;if(!t){var y;t=null;"getAttribute"in u&&(t=u.getAttribute("jsaction"));if(y=t){t=x[y];if(!t){t={};for(var B=y.split(ia),ja=B?B.length:0,C=0;C<ja;C++){var w=B[C];if(w){var D=w.indexOf(":"),R=-1!=D,ka=R?P(w.substr(0,D)):"click";w=R?P(w.substr(D+1)):w;t[ka]=w}}x[y]=t}u.__jsaction=t}else t=la,u.__jsaction=t}u=t;"maybe_click"==q&&u.click?(r=q,q="click"):"clickkey"==q?q="click":"click"!=q||u.click||(q="clickonly");r={m:r?r:q,action:u[q]||"",event:null,s:!1};l=Q(r.m,r.event||b,e,r.action||"",k,l.timeStamp);if(r.s||r.action)break}l&&"touchend"==l.eventType&&(l.event._preventMouseEvents=ea);if(r&&r.action){if(e="clickkey"==m)e=z(b),e=(e.type||
-e.tagName).toUpperCase(),(e=32==(b.which||b.keyCode)&&"CHECKBOX"!=e)||(e=z(b),n=e.tagName.toUpperCase(),r=(e.getAttribute("role")||"").toUpperCase(),e="BUTTON"===n||"BUTTON"===r?!0:!(e.tagName.toUpperCase()in fa)||"A"===n||"SELECT"===n||(e.getAttribute("type")||e.tagName).toUpperCase()in G||(e.getAttribute("type")||e.tagName).toUpperCase()in H?!1:!0);e&&(b.preventDefault?b.preventDefault():b.returnValue=!1);if("mouseenter"==m||"mouseleave"==m)if(e=b.relatedTarget,!("mouseover"==b.type&&"mouseenter"==
-m||"mouseout"==b.type&&"mouseleave"==m)||e&&(e===k||aa(k,e)))l.action="",l.actionElement=null;else{m={};for(var v in b)"function"!==typeof b[v]&&"srcElement"!==v&&"target"!==v&&(m[v]=b[v]);m.type="mouseover"==b.type?"mouseenter":"mouseleave";m.target=m.srcElement=k;m.bubbles=!1;l.event=m;l.targetElement=k}}else l.action="",l.actionElement=null;k=l;a.h&&!k.event.a11ysgd&&(v=Q(k.eventType,k.event,k.targetElement,k.action,k.actionElement,k.timeStamp),"clickonly"==v.eventType&&(v.eventType="click"),a.h(v,!0));if(k.actionElement){if(a.h){if(!k.actionElement||"A"!=k.actionElement.tagName||"click"!=k.eventType&&"clickmod"!=k.eventType||(b.preventDefault?b.preventDefault():b.returnValue=!1),(b=a.h(k))&&g){p.call(this,b,!1);return}}else{if((g=f.document)&&!g.createEvent&&g.createEventObject)try{var E=g.createEventObject(b)}catch(pa){E=b}else E=b;k.event=E;a.i.push(k)}if("touchend"==k.event.type&&k.event._mouseEventsPrevented){b=k.event;for(var qa in b);h()}}}},Q=function(a,c,d,b,g,p){return{eventType:a,event:c,targetElement:d,action:b,actionElement:g,timeStamp:p||h()}},la={},na=function(a,c){return function(d){var b=a,g=c,p=!1;"mouseenter"==b?b="mouseover":"mouseleave"==b&&(b="mouseout");if(d.addEventListener){if("focus"==b||"blur"==b||"error"==b||"load"==b)p=!0;d.addEventListener(b,g,p)}else d.attachEvent&&("focus"==b?b="focusin":"blur"==b&&(b="focusout"),g=ba(d,g),d.attachEvent("on"+b,g));return{m:b,l:g,capture:p}}},N=function(a,c){if(!a.j.hasOwnProperty(c)){var d=ma(a,c),b=na(c,d);a.j[c]=d;a.o.push(b);for(d=0;d<a.a.length;++d){var g=a.a[d];g.g.push(b.call(null,g.a))}"click"==c&&N(a,"keydown")}};O.prototype.l=function(a){return this.j[a]};var V=function(a,c){var d=new oa(c);a:{for(var b=0;b<a.a.length;b++)if(S(a.a[b],c)){c=!0;break a}c=!1}if(c)return a.g.push(d),d;T(a,d);a.a.push(d);U(a);return d},U=function(a){for(var c=a.g.concat(a.a),d=[],b=[],g=0;g<a.a.length;++g){var p=a.a[g];W(p,c)?(d.push(p),X(p)):b.push(p)}for(g=0;g<a.g.length;++g)p=a.g[g],W(p,c)?d.push(p):(b.push(p),T(a,p));a.a=b;a.g=d},T=function(a,c){var d=c.a;ha&&(d.style.cursor="pointer");for(d=0;d<a.o.length;++d)c.g.push(a.o[d].call(null,c.a))},Y=function(a,c){a.h=c;a.i&&(0<a.i.length&&c(a.i),a.i=null)},oa=function(a){this.a=a;this.g=[]},S=function(a,c){for(a=a.a;a!=c&&c.parentNode;)c=c.parentNode;return a==c},W=function(a,c){for(var d=0;d<c.length;++d)if(c[d].a!=a.a&&S(c[d],a.a))return!0;return!1},X=function(a){for(var c=0;c<a.g.length;++c){var d=a.a,b=a.g[c];d.removeEventListener?d.removeEventListener(b.m,b.l,b.capture):d.detachEvent&&d.detachEvent("on"+b.m,b.l)}a.g=[]};var Z=new O;V(Z,window.document.documentElement);N(Z,"click");N(Z,"focus");N(Z,"focusin");N(Z,"blur");N(Z,"focusout");N(Z,"error");N(Z,"load");N(Z,"change");N(Z,"dblclick");N(Z,"input");N(Z,"keyup");N(Z,"keydown");N(Z,"keypress");N(Z,"mousedown");N(Z,"mouseenter");N(Z,"mouseleave");N(Z,"mouseout");N(Z,"mouseover");N(Z,"mouseup");N(Z,"paste");N(Z,"touchstart");N(Z,"touchend");N(Z,"touchcancel");N(Z,"speech");(function(a){google.jsad=function(c){Y(a,c)};google.jsaac=function(c){return V(a,c)};google.jsarc=function(c){X(c);for(var d=!1,b=0;b<a.a.length;++b)if(a.a[b]===c){a.a.splice(b,1);d=!0;break}if(!d)for(d=0;d<a.g.length;++d)if(a.g[d]===c){a.g.splice(d,1);break}U(a)}})(Z);window.gws_wizbind=function(a){return{trigger:function(c){var d=a.l(c.type);d||(N(a,c.type),d=a.l(c.type));var b=c.target||c.srcElement;d&&d.call(b.ownerDocument.documentElement,c)},bind:function(c){Y(a,c)}}}(Z);}).call(this);(function(){
-var b=[];google.jsc={xx:b,x:function(a){b.push(a)},mm:[],m:function(a){google.jsc.mm.length||(google.jsc.mm=a)}};}).call(this);(function(){google.c={gl:false,inp:false,lhc:false,slp:false,uio:false,ust:false};(function(){
-var e=window.performance;var g=function(a,b,c,d){a.addEventListener?a.removeEventListener(b,c,d||!1):a.attachEvent&&a.detachEvent("on"+b,c)},h=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d||!1):a.attachEvent&&a.attachEvent("on"+b,c)};google.timers={};google.startTick=function(a){google.timers[a]={t:{start:google.time()},e:{},m:{}}};google.tick=function(a,b,c){google.timers[a]||google.startTick(a);c=void 0!==c?c:google.time();b instanceof Array||(b=[b]);for(var d=0,f;f=b[d++];)google.timers[a].t[f]=c};google.c.e=function(a,b,c){google.timers[a].e[b]=c};google.c.b=function(a){var b=google.timers.load.m;b[a]&&google.ml(Error("a"),!1,{m:a});b[a]=!0};google.c.u=function(a){var b=google.timers.load.m;if(b[a]){b[a]=!1;for(a in b)if(b[a])return;google.csiReport()}else google.ml(Error("b"),!1,{m:a})};google.rll=function(a,b,c){var d=function(f){c(f);g(a,"load",d);g(a,"error",d)};h(a,"load",d);b&&h(a,"error",d)};google.aft=function(a){a.setAttribute("data-iml",google.time())};google.startTick("load");var k=google.timers.load;a:{var l=k.t;if(e){var m=e.timing;if(m){var n=m.navigationStart,p=m.responseStart;if(p>n&&p<=l.start){l.start=p;k.wsrt=p-n;break a}}e.now&&(k.wsrt=Math.floor(e.now()))}}google.c.b("pr");google.c.b("xe");if(google.c.gl){var q=function(a){a&&google.aft(a.target)};h(document.documentElement,"load",q,!0);google.c.glu=function(){g(document.documentElement,"load",q,!0)}};}).call(this);})();</script><style>[dir='ltr'],[dir='rtl']{unicode-bidi:-moz-isolate;unicode-bidi:isolate}bdo[dir='ltr'],bdo[dir='rtl']{unicode-bidi:bidi-override;unicode-bidi:-moz-isolate-override;unicode-bidi:isolate-override}#logocont{z-index:1;padding-left:16px;padding-right:10px;margin-top:-2px;padding-top:7px}#logocont.ddl{padding-top:3px}.big #logocont{padding-left:16px;padding-right:12px}#searchform #logocont{padding-top:11px;padding-right:28px;padding-left:30px}.sbibod{background-color:#fff;height:44px;vertical-align:top;border:1px solid #dfe1e5;border-radius:8px;box-shadow:none;transition:box-shadow 200ms cubic-bezier(0.4, 0.0, 0.2, 1);}.lst{border:0;margin-top:5px;margin-bottom:0}.lst:focus{outline:none}#lst-ib{color:#000}.gsfi,.lst{font:16px arial,sans-serif;line-height:34px;height:34px !important}.lst-c{overflow:hidden}#gs_st0{line-height:44px;padding:0 8px;margin-top:-1px;position:static}.srp #gs_st0{padding:0 2px 0 8px}.gsfs{font:17px arial,sans-serif}.lsb{background:transparent;border:0;font-size:0;height:30px;outline:0;text-align:left;width:100%}.sbico{display:inline-block;height:0px;width:0px;cursor:pointer;vertical-align:middle;color:#4285f4}.sbico-c{background:transparent;border:0;float:right;height:44px;line-height:44px;margin-top:-1px;outline:0;padding-right:16px;position:relative;top:-1px}.hp .sbico-c{display:none}#sblsbb{border-bottom-left-radius:0;border-top-left-radius:0;height:44px;margin:0;padding:0;}#sbds{border:0;margin-left:-1px}.hp .nojsb,.srp .jsb{display:none}#sfopt{display:inline-block;line-height:normal}.lsd{font-size:11px;position:absolute;top:3px;left:16px}.tsf{background:none}#sform{height:65px}#searchform{width:100%}.minidiv #gb{top:2px}.minidiv .sfbg{background:#fff;box-shadow:0 1px 6px 0 rgba(32,33,36,.28);height:72px;}.minidiv .sbibod{height:32px;margin:10px 0;border-radius:16px}.minidiv .visible-suggestions{border-bottom-left-radius:0;border-bottom-right-radius:0}.minidiv .sbico-c{height:32px;line-height:32px}.minidiv .sbib_b{padding-top:0}.minidiv .gsfi{font-size:14px;line-height:32px}.minidiv .gsfs{font-size:14px}.minidiv #logo img{height:28px;width:86px}#searchform.minidiv #logocont{padding:17px 34px 0}.minidiv li.sbsb_c .sbse{padding:0px 0}.minidiv .sbdd_a .sbdd_b,.minidiv .sbsb_a{border-bottom-left-radius:16px;border-bottom-right-radius:16px}.minidiv #gs_st0{line-height:32px !important}.minidiv .sbdd_a{top:32px !important}.minidiv .gsri_a{background-size:20px 20px;height:20px;width:16px}.minidiv .sbico-c .sbico{height:20px;width:20px}.hp #searchform{position:absolute;top:311px}@media only screen and (max-height:768px){.hp #searchform{top:269px}}.srp #searchform{position:absolute;top:20px;}.sfbg{height:69px;left:0;position:absolute;width:100%}.sfbgg{height:65px}#cnt{padding-top:20px;}</style><style id="gstyle">body{background:#fff;color:#000;margin:0}.link{color:#1a0dab !important}.ts{border-collapse:collapse}.ts td{padding:0}.g{line-height:1.2;text-align:left;width:600px}#rhs{padding-bottom:15px}a:link,.q:active,.q:visited{color:#1a0dab}a:visited{color:#609}.b{font-weight:bold}.s{max-width:48em}.sl{font-size:82%}.f,.f a:link{color:#70757a;line-height:1.58}.c h2{color:#666}.mslg cite{display:none}h1,ol,ul,li{margin:0;padding:0}.g,body,html,input,.std,h1{font-family:arial,sans-serif}.g,body,input,.std,h1{font-size:14px}.c h2,h1{font-weight:normal}h3,.med{font-size:medium;font-weight:normal;margin:0;padding:0}#res h3,#extrares h3{font-size:20px;line-height:1.3;}#cnt{clear:both}#res{margin:0 16px}ol li{list-style:none}.gl,#foot a,.nobr{white-space:nowrap}.sl,.r{font-weight:normal;margin:0}.r{font-size:medium}h4.r{font-size:small}.gic{position:relative;overflow:hidden;z-index:0}#rhs{display:block;margin-left:712px;padding-bottom:10px;min-width:268px}.mdm #rhs{margin-left:732px}.big #rhs{margin-left:792px}#rhs .scrt.rhsvw,#rhs table.rhsvw{border:0}#rhs .rhsvw{border:1px solid #ebebeb;padding-left:17px;padding-right:16px;position:relative;width:457px;-moz-box-sizing:border-box}#center_col .rhsl4,#center_col .rhsl5{display:none}#rhs.rhstc4 .rhsvw{width:369px}.rhstc4 .rhsg4{background:none !important;display:none !important}.rhstc5 .rhsl5,.rhstc5 .rhsl4,.rhstc4 .rhsl4{background:none !important;display:none !important}.nrgt{margin-left:22px;margin-left:0;margin-bottom:4px}.mslg .vsc{-moz-transition:opacity .2s ease;transition:opacity .2s ease;width:304px;border:1px solid #dadce0;border-radius:8px;border-radius:8px;min-height:66px;}.mslg .vsc:hover{background-color:#fafafa}.mslg>td{padding-right:8px;padding-top:8px;}.vsc{display:block;position:relative;width:100%}#res h3.r{display:block;overflow:hidden;text-overflow:ellipsis;-moz-text-overflow:ellipsis;white-space:nowrap;line-height:22px}em{font-weight:bold;font-style:normal}ol,ul,li{border:0;margin:0;padding:0}.g{margin-top:0;margin-bottom:28px}.tsw{width:595px}#cnt{min-width:833px;margin-left:0}.mw{max-width:1197px}.big .mw{max-width:1280px}.tsf-p{padding-left:180px;margin-right:46px;max-width:739px}.big .tsf-p{margin-right:322px;padding-left:180px}.col{float:left}#leftnavc,#center_col,#rhs{position:relative}#center_col{margin-left:138px;margin-right:264px;}.big #center_col{margin-left:138px;}#res{border:0;margin:0;}a:link,.q:active,.q:visited{cursor:pointer}.gl a,#tsf a,a.gl,a.fl,.bc a,#appbar a{text-decoration:none}.gl a:hover,#tsf a:hover,a.gl:hover,a.fl:hover,.bc a:hover{text-decoration:underline}#tads a,#tadsb a,#res a,#rhs a,#taw a,#brs a,.nsa,.fl,#botstuff a,#rhs .gl a{text-decoration:none}#foot{visibility:hidden}#fll a,#bfl a{color:#1a0dab;margin:0 12px;text-decoration:none}body{color:#222}.s{color:#4d5156}.s .st em,.st.s.std em{color:#5f6368}.s a:visited em{color:#609}.s a:active em{color:#dd4b39}#tsf{width:833px;}.big #tsf{width:1109px}.st{line-height:1.58;word-wrap:break-word}.sbc{padding:0 2px;min-width:30px}#rcnt{margin-top:0px;}#appbar,.rhscol{min-width:1261px}#appbar{background:#fff;-webkit-box-sizing:border-box;width:100%}#main{width:100%}#cnt #center_col,#cnt #foot{width:652px}#center_col{clear:both}#cnt #center_col,.mw #center_col{margin-left:180px}#rso{margin-top:6px}.mw #rhs{margin-left:892px;padding-right:8px}.th{border:1px solid #ebebeb}.ellip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}</style><style>@-webkit-keyframes qs-timer {0%{}}.fp-f{bottom:0;height:auto;left:0;position:fixed !important;right:0;top:0;width:auto;z-index:127}.fp-h:not(.fp-nh):not(.goog-modalpopup-bg):not(.goog-modalpopup){display:none !important}.fp-zh.fp-h:not(.fp-nh):not(.goog-modalpopup-bg):not(.goog-modalpopup){display:block !important;height:0;overflow:hidden;transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0)}.fp-i .fp-c{display:block;min-height:100vh}li.fp-c{list-style:none}.fp-w{box-sizing:border-box;left:0;margin-left:auto;margin-right:auto;max-width:1217px;right:0}</style><script nonce="VnsFleiriCwplgyln3sgFw==">(function(){
+<!doctype html><html itemscope="" itemtype="http://schema.org/SearchResultsPage" lang="en"><head><meta charset="UTF-8"><meta content="origin" name="referrer"><meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image"><title>(site:askubuntu.com OR site:stackoverflow.com) how do i exit nvim - Google Search</title><script nonce="In7VDeF63vWTOgXvt2+7ww==">(function(){window.google={kEI:'eOrbYMyVON-mqtsPg5Oy0AQ',kEXPI:'31',u:'754a5db3',kBL:'agTH'};google.sn='web';google.kHL='en';})();(function(){
+var f=this||self;var h,k=[];function l(a){for(var b;a&&(!a.getAttribute||!(b=a.getAttribute("eid")));)a=a.parentNode;return b||h}function m(a){for(var b=null;a&&(!a.getAttribute||!(b=a.getAttribute("leid")));)a=a.parentNode;return b}
+function n(a,b,c,d,g){var e="";c||-1!==b.search("&ei=")||(e="&ei="+l(d),-1===b.search("&lei=")&&(d=m(d))&&(e+="&lei="+d));d="";!c&&f._cshid&&-1===b.search("&cshid=")&&"slh"!==a&&(d="&cshid="+f._cshid);c=c||"/"+(g||"gen_204")+"?atyp=i&ct="+a+"&cad="+b+e+"&zx="+Date.now()+d;/^http:/i.test(c)&&"https:"===window.location.protocol&&(google.ml&&google.ml(Error("a"),!1,{src:c,glmm:1}),c="");return c};h=google.kEI;google.getEI=l;google.getLEI=m;google.ml=function(){return null};google.log=function(a,b,c,d,g){if(c=n(a,b,c,d,g)){a=new Image;var e=k.length;k[e]=a;a.onerror=a.onload=a.onabort=function(){delete k[e]};a.src=c}};google.logUrl=n;}).call(this);(function(){
+google.y={};google.sy=[];google.x=function(a,b){if(a)var c=a.id;else{do c=Math.random();while(google.y[c])}google.y[c]=[a,b];return!1};google.sx=function(a){google.sy.push(a)};google.lm=[];google.plm=function(a){google.lm.push.apply(google.lm,a)};google.lq=[];google.load=function(a,b,c){google.lq.push([[a],b,c])};google.loadAll=function(a,b){google.lq.push([a,b])};google.bx=!1;google.lx=function(){};}).call(this);google.f={};(function(){
+document.documentElement.addEventListener("submit",function(b){var a;if(a=b.target){var c=a.getAttribute("data-submitfalse");a="1"==c||"q"==c&&!a.elements.q.value?!0:!1}else a=!1;a&&(b.preventDefault(),b.stopPropagation())},!0);document.documentElement.addEventListener("click",function(b){var a;a:{for(a=b.target;a&&a!=document.documentElement;a=a.parentElement)if("A"==a.tagName){a="1"==a.getAttribute("data-nohref");break a}a=!1}a&&b.preventDefault()},!0);}).call(this);(function(){google.hs={h:true,peh:true,sie:false};})();(function(){google.c={biml:true,btfi:false,datfo:false,gl:false,lhc:false,wve:false};(function(){
+var e=window.performance;google.timers={};google.startTick=function(a){google.timers[a]={t:{start:Date.now()},e:{},m:{}}};google.tick=function(a,b,c){google.timers[a]||google.startTick(a);c=void 0!==c?c:Date.now();b instanceof Array||(b=[b]);for(var d=0,f;f=b[d++];)google.timers[a].t[f]=c};google.c.e=function(a,b,c){google.timers[a].e[b]=c};google.c.b=function(a){var b=google.timers.load.m;b[a]&&google.ml(Error("a"),!1,{m:a});b[a]=!0};google.c.u=function(a){var b=google.timers.load.m;if(b[a]){b[a]=!1;for(a in b)if(b[a])return;google.csiReport()}else google.ml(Error("b"),!1,{m:a})};function g(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d||!1):a.attachEvent&&a.attachEvent("on"+b,c)}function h(a,b,c,d){a.addEventListener?a.removeEventListener(b,c,d||!1):a.attachEvent&&a.detachEvent("on"+b,c)}google.rll=function(a,b,c){var d=function(f){c(f);h(a,"load",d);h(a,"error",d)};g(a,"load",d);b&&g(a,"error",d)};google.aft=function(a){a.setAttribute("data-iml",Date.now())};google.startTick("load");var k=google.timers.load;a:{var l=k.t;if(e){var m=e.timing;if(m){var n=m.navigationStart,p=m.responseStart;if(p>n&&p<=l.start){l.start=p;k.wsrt=p-n;break a}}e.now&&(k.wsrt=Math.floor(e.now()))}}
+if(google.c.wve){google.c.fh=Infinity;var q=function(a){return"hidden"==document.visibilityState?(google.c.fh=a,!0):!1},r=function(a){q(a.timeStamp)&&h(document,"visibilitychange",r,!0)};g(document,"visibilitychange",r,!0);q(0)}google.c.b("pr");google.c.b("xe");if(google.c.gl){var t=function(a){a&&google.aft(a.target)};g(document.documentElement,"load",t,!0);google.c.glu=function(){h(document.documentElement,"load",t,!0)}};}).call(this);})();(function(){
+function n(){return window.performance&&window.performance.navigation&&window.performance.navigation.type};function p(a,d){if(!a||q(a))return 0;if(!a.getBoundingClientRect)return 1;var c=function(b){return b.getBoundingClientRect()};return r(a,d,c)?0:t(a,d,c)}function r(a,d,c){a:{for(var b=a;b&&b!==d;b=b.parentElement)if("hidden"===b.style.overflow){d=b;break a}d=null}if(!d)return!1;a=c(a);c=c(d);return a.bottom<c.top||a.top>=c.bottom||a.right<c.left||a.left>=c.right}
+function q(a){return"none"===a.style.display?!0:document.defaultView&&document.defaultView.getComputedStyle?(a=document.defaultView.getComputedStyle(a),!!a&&("hidden"===a.visibility||"0px"===a.height&&"0px"===a.width)):!1}
+function t(a,d,c){var b=c(a),f=b.left+window.pageXOffset,g=b.top+window.pageYOffset,h=b.width,l=b.height,e=0;if(0>=l&&0>=h)return e;var m=window.innerHeight||document.documentElement.clientHeight;0>g+l?e=2:g>=m&&(e=4);if(0>f+h||f>=(window.innerWidth||document.documentElement.clientWidth))e|=8;else if(d){for(b=b.left;a&&a!==d;a=a.parentElement)b+=a.scrollLeft;d=c(d);if(b+h<d.left||b>=d.right)e|=8}e||(e=1,g+l>m&&(e|=4));return e};var u=window.location,v="aft frt hct prt pprt sct".split(" ");function w(a){return(a=u.search.match(new RegExp("[?&]"+a+"=(\\d+)")))?Number(a[1]):-1};var x=window.innerHeight||document.documentElement.clientHeight,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=!0,J=!0,K=-1;function L(a,d,c,b){var f=google.timers.load.t[a];f&&(c||b&&null!=d&&d<f)||google.tick("load",a,d)}function M(a,d,c,b){a&&(L("frt",b,!1,!0),++C,N());d&&(L("aft",b,!1,!0),++E,c&&++G,N());L("iml",b,!1,!0);++z;(google.c.biml||d)&&O()}function O(){var a=google.c.biml?z==y:D==E;!J&&a&&google.c.u("il")}
+function N(){if(!H){var a=C==A,d=G==F;if(E==D&&a){google.c.e("load","ima",String(D));google.c.e("load","imad",String(F));google.c.e("load","aftp",String(Math.round(K)));var c=google.timers.load,b=c.m;if(!b||!b.prs){var f=n()?0:w("qsubts");0<f&&(b=w("fbts"),0<b&&(c.t.start=Math.max(f,b)));var g=c.t,h=g.start;b={wsrt:c.wsrt};for(var l=0,e;e=v[l++];){var m=g[e];m&&h&&(b[e]=m-h)}0<f&&(b.gsasrt=c.t.start-f);f=c.e;c="/gen_204?s="+google.sn+"&t=aft&atyp=csi&ei="+google.kEI+"&rt=";g="";for(k in b)c+=""+g+
+k+"."+b[k],g=",";for(var I in f)c+="&"+I+"="+f[I];window._cshid&&(c+="&cshid="+window._cshid);2===n()&&(c+="&bb=1");1===n()&&(c+="&r=1");if("gsasrt"in b){var k=w("qsd");0<k&&(c+="&qsd="+k)}google.kBL&&(c+="&bl="+google.kBL);k=c;navigator.sendBeacon?navigator.sendBeacon(k,""):google.log("","",k)}}if(null!==google.aftq&&(k=2===google.fevent||3===google.fevent?google.fevent:1,2===k&&a||1===k&&d||3===k&&(d||a))){var B;for(a=0;d=null===(B=google.aftq)||void 0===B?void 0:B[a++];)try{d()}catch(P){google.ml(P,!1)}google.aftq=null}}}var Q="src bsrc url ll image img-url".split(" ");function R(a){for(var d=0,c;c=Q[d++];)if(a.getAttribute("data-"+c))return!0;return!1}google.c.b("il");google.c.setup=function(a,d,c){var b=a.getAttribute("data-atf");if(b)return Number(b);var f="string"!=typeof a.src||!a.src,g=!!a.getAttribute("data-bsrc"),h=!!a.getAttribute("data-deferred"),l=!h&&R(a);l&&a.setAttribute("data-lzy_",1);for(b=a;b&&"center_col"!=b.id;)b=b.parentElement;b=p(a,b);a.setAttribute("data-atf",b);var e=!!(b&1);f=(f||a.complete)&&!h&&!g&&!(e&&l);g=!google.c.lhc&&Number(a.getAttribute("data-iml"))||0;var m=d&&0!=b&&!(b&8);++y;if(f&&!g||a.hasAttribute("data-noaft"))++z;else{if(d=
+google.c.btfi&&b&4&&g&&K<x)l=a.getBoundingClientRect().top+window.pageYOffset,!c||l<c?K=e?x:l:d=!1;e&&(++D,h&&++F);m&&++A;d&&L("aft",g,!1,!0);f&&g?M(m,e,h,google.c.btfi?0:g):(e&&(!c||c>=x)&&(K=x),google.rll(a,!0,function(){M(m,e,h,Date.now())}))}return b};google.c.ubr=function(a,d,c){0>K&&(c&&(K=c),google.c.btfi&&L("aft",d));L("aft",d,!0);H&&(H=!1,N());a&&J&&(L("prt",d),L("iml",d,!0),J=!1,O(),google.c.setup=function(){return 0},google.c.ubr=function(){})};}).call(this);(function(){
var b=[function(){google.tick&&google.tick("load","dcl")}];google.dclc=function(a){b.length?b.push(a):a()};function c(){for(var a;a=b.shift();)a()}window.addEventListener?(document.addEventListener("DOMContentLoaded",c,!1),window.addEventListener("load",c,!1)):window.attachEvent&&window.attachEvent("onload",c);}).call(this);(function(){
-window.rwt=function(){return!0};}).call(this);(function(){window.jsarwt=function(){return!1};}).call(this);</script><style>div#searchform{min-width:1261px;z-index:127}#gb{height:0;padding-left:16px;padding-right:16px}</style> <script nonce="VnsFleiriCwplgyln3sgFw==">;this.gbar_={CONFIG:[[[0,"www.gstatic.com","og.qtm.en_US.Y2mHzZ7HU2E.O","com","en","1",1,[4,2,".40.40.40.40.40.40.","","1300102,3700243,3700697","317576115","0"],null,"qLHzXpW9M5PemAX5x6rACg",null,0,"og.qtm.-6ob9ysgt00dy.L.F4.O","AA2YrTuHxZSD4tXZcAmap_MDWGJq1F-pSg","AA2YrTuy2osiv-z56S2oNPKLgdL_hQ5WLQ","",2,1,200,"USA",null,null,"1","1",1],null,[1,0.1000000014901161,2,1],[1,0.001000000047497451,1],[0,0,0,null,"","","",""],[0,0,"",1,0,0,0,0,0,0,0,0,0,null,0,0,null,null,0,0,0,"","","","","","",null,0,0,0,0,0,null,null,null,"rgba(32,33,36,1)","rgba(255,255,255,1)",0,0,1,1,1],null,null,["1","gci_91f30755d6a6b787dcc2a4062e6e9824.js","googleapis.client:plusone:gapi.iframes","","en"],null,null,null,null,["m;/_/scs/abc-static/_/js/k=gapi.gapi.en.yyhByYeMTAc.O/am=AAY/d=1/ct=zgms/rs=AHpOoo-O470EQdZ-4tpWpppyTQmeOEUv-g/m=__features__","https://apis.google.com","","","","",null,1,"es_plusone_gc_20200601.0_p0","en",null,0,0],[0.009999999776482582,"com","1",[null,"","0",null,1,5184000,null,null,"",0,1,"",0,0,0,0,0,0,1,0,0,0,0,0,0,0],null,[["","","0",0,0,-1]],null,0,null,null,["5061451","google\\.(com|ru|ca|by|kz|com\\.mx|com\\.tr)$",1]],[1,1,null,40400,1,"USA","en","317576115.0",8,0.009999999776482582,0,0,null,null,0,0,"",null,null,null,"qLHzXpW9M5PemAX5x6rACg",0],[[null,null,null,"https://www.gstatic.com/og/_/js/k=og.qtm.en_US.Y2mHzZ7HU2E.O/rt=j/m=qabr,q_d,qcwid,qmutsd,qapid/exm=qaaw,qadd,qaid,qein,qhaw,qhbr,qhch,qhga,qhid,qhin,qhpr/d=1/ed=1/rs=AA2YrTuHxZSD4tXZcAmap_MDWGJq1F-pSg"],[null,null,null,"https://www.gstatic.com/og/_/ss/k=og.qtm.-6ob9ysgt00dy.L.F4.O/m=qcwid/excm=qaaw,qadd,qaid,qein,qhaw,qhbr,qhch,qhga,qhid,qhin,qhpr/d=1/ed=1/ct=zgms/rs=AA2YrTuy2osiv-z56S2oNPKLgdL_hQ5WLQ"]],null,null,[""],[[[null,null,[null,null,null,"https://ogs.google.com/widget/app/so?gm2"],0,448,328,57,4,1,0,0,63,64,8000,"https://www.google.com/intl/en/about/products?tab=wh",67,1,69,null,1,70,"Can't seem to load the app launcher right now. Try again or go to the %1$sGoogle Products%2$s page.",3,1,0,74,0,null,null,null,null,null,null,1]],0,[null,null,null,"https://www.gstatic.com/og/_/js/k=og.qtm.en_US.Y2mHzZ7HU2E.O/rt=j/m=qdsh/d=1/ed=1/rs=AA2YrTuHxZSD4tXZcAmap_MDWGJq1F-pSg"],"1","1",1,0,null,"en",0]]],};this.gbar_=this.gbar_||{};(function(_){var window=this;
+var b=[];google.jsc={xx:b,x:function(a){b.push(a)},mm:[],m:function(a){google.jsc.mm.length||(google.jsc.mm=a)}};}).call(this);(function(){
+var e=this||self;
+
+var g={};function w(a,b){if(null===b)return!1;if("contains"in a&&1==b.nodeType)return a.contains(b);if("compareDocumentPosition"in a)return a==b||!!(a.compareDocumentPosition(b)&16);for(;b&&a!=b;)b=b.parentNode;return b==a};var y=function(a,b){return function(d){d||(d=window.event);return b.call(a,d)}},D="undefined"!=typeof navigator&&/Macintosh/.test(navigator.userAgent),E=function(){this._mouseEventsPrevented=!0};
+var F=function(){this.h=this.g=null},H=function(a,b){var d=G;d.g=a;d.h=b;return d};F.prototype.i=function(){var a=this.g;this.g&&this.g!=this.h?this.g=this.g.__owner||this.g.parentNode:this.g=null;return a};var I=function(){this.j=[];this.g=0;this.h=null;this.l=!1};I.prototype.i=function(){if(this.l)return G.i();if(this.g!=this.j.length){var a=this.j[this.g];this.g++;a!=this.h&&a&&a.__owner&&(this.l=!0,H(a.__owner,this.h));return a}return null};var G=new F,J=new I;
+var N=function(){this.v=[];this.g=[];this.h=[];this.l={};this.i=null;this.j=[];K(this,"_custom")},O="undefined"!=typeof navigator&&/iPhone|iPad|iPod/.test(navigator.userAgent),P=String.prototype.trim?function(a){return a.trim()}:function(a){return a.replace(/^\s+/,"").replace(/\s+$/,"")},Q=/\s*;\s*/,da=function(a,b){return function l(c,f){f=void 0===f?!0:f;var k=b;if("_custom"==k){k=c.detail;if(!k||!k._type)return;k=k._type}var m=k;"click"==m&&(D&&c.metaKey||!D&&c.ctrlKey||2==c.which||null==c.which&&
+4==c.button||c.shiftKey)?m="clickmod":"keydown"==m&&!c.a11ysc&&(m="maybe_click");var u=c.srcElement||c.target;k=R(m,c,u,"",null);if(c.path){J.j=c.path;J.g=0;J.h=this;J.l=!1;var L=J}else L=H(u,this);for(var p;p=L.i();){var h=p;var q=void 0;var r=h;p=m;var n=r.__jsaction;if(!n){var x;n=null;"getAttribute"in r&&(n=r.getAttribute("jsaction"));if(x=n){n=g[x];if(!n){n={};for(var z=x.split(Q),aa=z?z.length:0,A=0;A<aa;A++){var v=z[A];if(v){var B=v.indexOf(":"),M=-1!=B,ba=M?P(v.substr(0,B)):"click";v=M?P(v.substr(B+
+1)):v;n[ba]=v}}g[x]=n}r.__jsaction=n}else n=ca,r.__jsaction=n}r=n;"maybe_click"==p&&r.click?(q=p,p="click"):"clickkey"==p?p="click":"click"!=p||r.click||(p="clickonly");q={s:q?q:p,action:r[p]||"",event:null,A:!1};k=R(q.s,q.event||c,u,q.action||"",h,k.timeStamp);if(q.A||q.action)break}k&&"touchend"==k.eventType&&(k.event._preventMouseEvents=E);if(q&&q.action){if("mouseenter"==m||"mouseleave"==m)if(u=c.relatedTarget,!("mouseover"==c.type&&"mouseenter"==m||"mouseout"==c.type&&"mouseleave"==m)||u&&(u===
+h||w(h,u)))k.action="",k.actionElement=null;else{m={};for(var t in c)"function"!==typeof c[t]&&"srcElement"!==t&&"target"!==t&&(m[t]=c[t]);m.type="mouseover"==c.type?"mouseenter":"mouseleave";m.target=m.srcElement=h;m.bubbles=!1;k.event=m;k.targetElement=h}}else k.action="",k.actionElement=null;h=k;a.i&&!h.event.a11ysgd&&(t=R(h.eventType,h.event,h.targetElement,h.action,h.actionElement,h.timeStamp),"clickonly"==t.eventType&&(t.eventType="click"),a.i(t,!0));if(h.actionElement||"maybe_click"==h.eventType)if(a.i)!h.actionElement||
+"A"!=h.actionElement.tagName||"click"!=h.eventType&&"clickmod"!=h.eventType||(c.preventDefault?c.preventDefault():c.returnValue=!1),(c=a.i(h))&&f&&l.call(this,c,!1);else{if((f=e.document)&&!f.createEvent&&f.createEventObject)try{var C=f.createEventObject(c)}catch(ha){C=c}else C=c;h.event=C;a.j.push(h)}}},R=function(a,b,d,c,f,l){return{eventType:a,event:b,targetElement:d,action:c,actionElement:f,timeStamp:l||Date.now()}},ca={},ea=function(a,b){return function(d){var c=a,f=b,l=!1;"mouseenter"==c?c=
+"mouseover":"mouseleave"==c&&(c="mouseout");if(d.addEventListener){if("focus"==c||"blur"==c||"error"==c||"load"==c)l=!0;d.addEventListener(c,f,l)}else d.attachEvent&&("focus"==c?c="focusin":"blur"==c&&(c="focusout"),f=y(d,f),d.attachEvent("on"+c,f));return{s:c,o:f,capture:l}}},K=function(a,b){if(!a.l.hasOwnProperty(b)){var d=da(a,b),c=ea(b,d);a.l[b]=d;a.v.push(c);for(d=0;d<a.g.length;++d){var f=a.g[d];f.h.push(c.call(null,f.g))}"click"==b&&K(a,"keydown")}};N.prototype.o=function(a){return this.l[a]};var V=function(a,b){var d=new fa(b);a:{for(var c=0;c<a.g.length;c++)if(S(a.g[c],b)){b=!0;break a}b=!1}if(b)return a.h.push(d),d;T(a,d);a.g.push(d);U(a);return d},U=function(a){for(var b=a.h.concat(a.g),d=[],c=[],f=0;f<a.g.length;++f){var l=a.g[f];W(l,b)?(d.push(l),X(l)):c.push(l)}for(f=0;f<a.h.length;++f)l=a.h[f],W(l,b)?d.push(l):(c.push(l),T(a,l));a.g=c;a.h=d},T=function(a,b){var d=b.g;O&&(d.style.cursor="pointer");for(d=0;d<a.v.length;++d)b.h.push(a.v[d].call(null,b.g))},Y=function(a,b){a.i=b;a.j&&
+(0<a.j.length&&b(a.j),a.j=null)},fa=function(a){this.g=a;this.h=[]},S=function(a,b){for(a=a.g;a!=b&&b.parentNode;)b=b.parentNode;return a==b},W=function(a,b){for(var d=0;d<b.length;++d)if(b[d].g!=a.g&&S(b[d],a.g))return!0;return!1},X=function(a){for(var b=0;b<a.h.length;++b){var d=a.g,c=a.h[b];d.removeEventListener?d.removeEventListener(c.s,c.o,c.capture):d.detachEvent&&d.detachEvent("on"+c.s,c.o)}a.h=[]};var Z=new N;V(Z,window.document.documentElement);K(Z,"click");K(Z,"focus");K(Z,"focusin");K(Z,"blur");K(Z,"focusout");K(Z,"error");K(Z,"load");K(Z,"change");K(Z,"dblclick");K(Z,"input");K(Z,"keyup");K(Z,"keydown");K(Z,"keypress");K(Z,"mousedown");K(Z,"mouseenter");K(Z,"mouseleave");K(Z,"mouseout");K(Z,"mouseover");K(Z,"mouseup");K(Z,"paste");K(Z,"touchstart");K(Z,"touchend");K(Z,"touchcancel");K(Z,"speech");(function(a){google.jsad=function(b){Y(a,b)};google.jsaac=function(b){return V(a,b)};google.jsarc=function(b){X(b);for(var d=!1,c=0;c<a.g.length;++c)if(a.g[c]===b){a.g.splice(c,1);d=!0;break}if(!d)for(d=0;d<a.h.length;++d)if(a.h[d]===b){a.h.splice(d,1);break}U(a)}})(Z);window.gws_wizbind=function(a){return{trigger:function(b){var d=a.o(b.type);d||(K(a,b.type),d=a.o(b.type));var c=b.target||b.srcElement;d&&d.call(c.ownerDocument.documentElement,b)},bind:function(b){Y(a,b)}}}(Z);}).call(this);(function(){
+window.rwt=function(){return!0};}).call(this);(function(){
+window.jsarwt=function(){return!1};}).call(this);
+var h="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a},k=function(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("a");},l=k(this),m=function(a,b){if(b)a:{var c=l;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];if(!(e in
+c))break a;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&h(c,a,{configurable:!0,writable:!0,value:b})}};m("String.prototype.startsWith",function(a){return a?a:function(b,c){if(null==this)throw new TypeError("The 'this' value for String.prototype.startsWith must not be null or undefined");if(b instanceof RegExp)throw new TypeError("First argument to String.prototype.startsWith must not be a regular expression");var d=this+"";b+="";var e=d.length,g=b.length;c=Math.max(0,Math.min(c|0,d.length));for(var f=0;f<g&&c<e;)if(d[c++]!=b[f++])return!1;return f>=g}});google.arwt=function(a){a.href=document.getElementById(a.id.substring(a.id.startsWith("vcs")?3:1)).href;return!0};</script><style>html,body,h1{font-family:arial,sans-serif}body,h1{font-family:arial,sans-serif;font-size:14px;}h1{font-weight:normal;margin:0;padding:0}h3{font-size:medium;font-weight:normal;margin:0;padding:0}body{margin:0;background:#fff;color:#202124;}a{color:#1a0dab;text-decoration:none;-webkit-tap-highlight-color:rgba(0,0,0,.10)}a:visited{color:#609}a:hover{text-decoration:underline}a:hover h3{text-decoration:underline}cite,cite a:link,cite a:visited{color:#202124;font-style:normal}button{margin:0}ol li{list-style:none}ol,ul,li{margin:0;padding:0}input{font-family:arial,sans-serif;font-size:14px}input:focus{outline:none}input::-moz-focus-inner{border:0}em{font-weight:bold;font-style:normal}.aCOpRe em,.yXK7lf em,.st em{color:#5f6368;}.aCOpRe a em,.st a em{color:inherit}@-webkit-keyframes qs-timer {0%{}}html:not(.zAoYTe) [tabindex]{outline:0}html:not(.zAoYTe) [href],html:not(.zAoYTe) button,html:not(.zAoYTe) iframe,html:not(.zAoYTe) input,html:not(.zAoYTe) select,html:not(.zAoYTe) textarea{outline:0}html:not(.zAoYTe) .hide-focus-ring{outline:0}.z1asCe{display:inline-block;fill:currentColor;height:24px;line-height:24px;position:relative;width:24px}.z1asCe svg{display:block;height:100%;width:100%}.u9DLmf{font-family:Google Sans,arial,sans-serif !important;}.mfMhoc{font-family:Google Sans,arial,sans-serif !important;}.DsryEe{font-family:Google Sans,arial,sans-serif !important;color:#fff !important;text-transform:none !important}.V88cHc{font-family:Google Sans,arial,sans-serif !important;}.TVtOme{font-family:Google Sans,arial,sans-serif !important;}.gzfeS{font-family:Google Sans,arial,sans-serif !important;}.h1QFOe{font-family:Google Sans,arial,sans-serif !important;}.XcVN5d{font-family:Google Sans,arial,sans-serif !important;}.iUh30{font-size:14px;line-height:1.3}.f{color:#70757a;line-height:1.58}a.fl:link,.fl a,.gl a:link{color:#1a0dab}.r a.fl{font-size:14px}.r{font-weight:inherit;font-size:small;margin:0;line-height:1.58;}.std,.g{font-family:arial,sans-serif;font-size:14px;}.g{line-height:1.2;text-align:left}.s{color:#4d5156;line-height:1.58;}h4.r{font-size:small}.st{line-height:1.58;word-wrap:break-word}.st sup{line-height:0.9}.ChOqnd,.ChOqnd a{color:#70757a !important;text-decoration:none}.ChOqnd a:hover{text-decoration:underline}.ChOqnd{font-size:11px !important;}.vk_c a{text-decoration:none}.vk_gn{color:#1e8e3e !important}.vk_rd{color:#ea4335 !important}.vk_gy{color:#70757a !important}.vk_bk{color:#222}.dDoNo{font-weight:lighter !important;font-size:xx-large !important;}.vk_h{font-weight:lighter !important;font-size:x-large !important;}.vk_sh{font-weight:lighter !important;font-size:medium !important;}.Uekwlc{font-weight:lighter !important;font-size:14px;}.wf-b #cnt,.wf-b #cnt .g,.wf-b #cnt .std,.wf-b #cnt h1,.wf-b #cnt input,.wf-b #cnt select{font-family:}#res h3,#botstuff h3{font-size:20px;line-height:1.3;}a.a-no-hover-decoration:hover{text-decoration:none}.g,.KIy09e{width:600px;margin-top:0;margin-bottom:30px;}.s{max-width:48em}.iUh30{padding-top:1px;}.di8g3{padding:6px 8px;}#center_col .di8g3{margin:0 -35px 0 -8px;padding:6px 20px 0}#rhs .di8g3{margin-left:2px;padding-bottom:5px;padding-top:5px}.FzvWSb{margin-bottom:5px}.vk_c{position:relative;padding:20px 16px 24px;background-color:#fff;width:618px;}#rhs .fIcnad{border:none;margin-left:0}.vk_c,#rhs .fIcnad{border-radius:8px;border:1px solid #dfe1e5;box-shadow:none}.vk_c .vk_c{border-radius:0;box-shadow:none;background-color:transparent;border:0;box-shadow:none;margin:0;padding:0;position:static}.vkc_np{margin-left:-16px;margin-right:-16px}.WIDPrb{padding-left:16px}.iiFzhd{padding-right:16px}.vk_gbt{border-top:1px solid #ebebeb}.vk_spc{height:16px;width:100%}.pVFdhc{background-color:#ebebeb;height:1px}.vk_tbl{border-collapse:collapse}.vk_tbl td{padding:0}#cnt{clear:both;min-width:833px;margin-left:0;padding-top:20px;box-sizing:border-box;position:relative;min-height:100vh;}.D6j0vc{float:left;width:0}#center_col{clear:both;position:relative;margin-left:180px;width:652px}#rso{margin-top:6px}.vk_arc{border-top:1px solid #ebebeb;cursor:pointer;height:0;margin-bottom:-19px;overflow:hidden;padding:20px 0;text-align:center}.vk_ard{top:-11px}.vk_aru{bottom:-6px}.vk_ard,.vk_aru{background-color:#DFE1E5;margin-left:auto;margin-right:auto;position:relative;height:6px;width:64px}.vk_ard:after,.vk_ard:before,.vk_aru:after,.vk_aru:before{content:' ';height:0;left:0;position:absolute;width:0;border-left:32px solid rgba(255,255,255,0);border-right:32px solid rgba(255,255,255,0)}.vk_ard:before{border-top:16px solid #DFE1E5;top:6px}.vk_aru:before{border-bottom:16px solid #DFE1E5;bottom:6px}.vk_ard:after{top:0;border-top:16px solid #fff}.vk_aru:after{bottom:0;border-bottom:16px solid #fff}.jC7Epd.vk_ard,.jC7Epd.vk_aru{background-color:#202124}.jC7Epd.vk_ard:before{border-top-color:#202124}.jC7Epd.vk_aru:before{border-bottom-color:#202124}.xpdclps,.xpdxpnd{overflow:hidden}.xpdclps,.xpdxpnd{transition:max-height 0.3s}.xpdxpnd,.xpdopen .xpdclps,.xpdopen .xpdxpnd.xpdnoxpnd{max-height:0}.xpdopen .xpdxpnd{max-height:none}.xpdopen .xpdbox .xpdxpnd,.xpdopen .xpdbox.xpdopen .xpdclps{max-height:0}.xpdopen .xpdbox.xpdopen .xpdxpnd,.xpdopen .xpdbox .xpdclps{max-height:none}.xpdclose .k5nfEc{display:none}.fp-i .SzDvzc{display:none}.fp-f{bottom:0;height:auto;left:0;position:fixed !important;right:0;top:0;width:auto;z-index:127}.fp-h:not(.fp-nh):not(.goog-modalpopup-bg):not(.goog-modalpopup){display:none !important}.fp-zh.fp-h:not(.fp-nh):not(.goog-modalpopup-bg):not(.goog-modalpopup){display:block !important;height:0;overflow:hidden;transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.fp-i .fp-c{display:block;min-height:100vh}li.fp-c{list-style:none}.fp-w{box-sizing:border-box;left:0;margin-left:auto;margin-right:auto;max-width:1217px;right:0}.ellip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Jb0Zif .BDNLRc{margin:16px 16px -11px}.gl:visited{color:#666}.RUXr2d{display:inline}.MTB56{margin-right:12px;vertical-align:middle}.qpGQpf{clear:both;padding-top:6px}.tcPEUc .MTB56{display:none}.uo4vr{color:#70757a;line-height:1.58}.IjZ7ze{display:inline-block;color:#70757a;font-size:12px;line-height:1.34;white-space:nowrap}.P1usbc{display:table;white-space:nowrap;margin:5px 0;line-height:1.58;color:#70757a}.G1Rrjc{display:table-cell;padding-left:15px;vertical-align:baseline}.i4vd5e{display:table-cell}.wrBvFf{overflow:hidden;text-overflow:ellipsis}.VNLkW{display:table-row;vertical-align:top}.h7mcFf{color:#70757a}.k6DEPe{display:table-row;width:100%}.TXwUJf{color:#70757a}.PcHvNb{position:absolute}.N3nEGc{background-color:#fff;float:left;margin-top:4px}.wEQKyf.N3nEGc{float:right;margin:7px 0 5px 12px}.wEQKyf.Ik9SRc.N3nEGc{margin:2px 0 0 0}.Ixi80c{margin-top:0}.i0PvJb{background-color:#000}.mWTy7c{border-top-left-radius:2px;bottom:0;font-size:11px;font-weight:bold;padding:1px 3px;position:absolute;right:0;text-align:right;text-decoration:none;background-color:rgba(0,0,0,.70);color:#fff}.rGhul{display:block;position:relative;overflow:hidden}.rGhul:focus{outline-style:solid;outline-width:2px}.TbwUpd a.fl{font-size:14px}.TQc1id .qLRx3b{font-size:14px;line-height:1.58}.TbwUpd{display:inline-block;padding-bottom:2px;padding-top:1px;-webkit-text-size-adjust:none}.NJjxre{position:absolute;left:0;top:0}.OhScic{margin:0px}.zsYMMe{padding:0px}.GHDvEf,.GHDvEf:hover,.GHDvEf.selected,.GHDvEf.selected:hover{display:inline-block;background-color:#fff;height:12px;margin-top:1px;user-select:none;width:13px}.action-menu .gTl8xb{border-color:#202124 transparent;margin-top:-3px;margin-left:3px;left:0;border-color:#70757a transparent}.action-menu{display:inline;margin:0 3px;position:relative;user-select:none;margin-top:1px;vertical-align:middle}.action-menu-panel{position:absolute;left:0;top:12px;visibility:hidden;background:#fff;border:1px solid rgba(0,0,0,.20);font-size:13px;white-space:nowrap;z-index:3;transition:opacity 0.218s;box-shadow:0 2px 4px rgba(0,0,0,.2)}.action-menu-item{cursor:pointer;user-select:none}.action-menu-item:hover{background-color:#f8f9fa}#rcnt .action-menu-item a.fl,.action-menu-item a.fl{color:#3c4043;display:block;padding:7px 18px;text-decoration:none;outline:0}.action-menu-panel:focus,.action-menu-item:focus,.action-menu-item a:focus{outline:none}.action-menu-item{-moz-user-select:none;}.action-menu-item.selected{background-color:#f8f9fa}.Uo8X3b{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px;z-index:-1000;user-select:none}#rhs{float:left;min-width:268px;display:block;position:relative;padding-bottom:15px;margin-left:892px;padding-right:8px}@media (min-width:1459px) and (max-width:1539px){#rhs{margin-left:calc(50vw + 163px)}}@media (min-width:1539px){#rhs{margin-left:932px}}#rhs .scrt.VjDLd,#rhs table.VjDLd{border:0}#rhs .VjDLd{border:1px solid #f8f9fa;padding-left:17px;padding-right:16px;position:relative;width:369px;box-sizing:border-box}#rhs.hSOk2e .VjDLd{width:369px}#center_col .rhsl5{display:none}#rhs.rhstc4 .VjDLd{width:369px}#rhs.rhstc5 .VjDLd{width:457px}.rhstc4 .rhsg4{background:none !important;display:none !important}.rhstc5 .rhsl5{background:none !important;display:none !important}.gke0pe{min-width:1261px}.GLcBOb{color:#70757a;font-size:14px;font-family:Google Sans,arial,sans-serif;border-bottom:1px solid #ebebeb;margin-top:-21px;position:relative;z-index:126}#hdtb-msb{position:relative;white-space:nowrap;align-items:baseline;display:flex;-ms-flex-pack:justify;float:left;justify-content:space-between;min-width:832px;}.MUFPAc{display:inline;margin-left:169px;}.MbEPDb{vertical-align:text-bottom;margin-left:-4px}.hdtb-mitem .GOE98c,.hdtb-mitem a,.hdtb-mitem.hdtb-msel,.t2vtad{color:#5f6368;text-decoration:none;display:inline-block;padding:0 12px;padding:8px 16px 8px 16px;padding:17px 12px 11px 10px;}.hdtb-mitem{height:16px;line-height:16px;margin:11px 1px 0;display:inline-block}.hdtb-mitem a:active{color:#1a73e8}.hdtb-mitem.hdtb-msel{color:#1a73e8;}.cCvmNd .hdtb-mitem.hdtb-msel{border-bottom:none}.hdtb-mitem.hdtb-msel:hover{cursor:pointer}.hdtb-mitem.hdtb-msel:active{background:none}.hdtb-mitem a{color:#5f6368}#hdtb-msb>.hdtb-mitem:first-child{margin-left:180px}.t2vtad{border:1px solid transparent;text-align:center;border-radius:2px;line-height:19px;cursor:pointer;margin-left:-1px;padding:4px 11px;margin-right:-11px;}.t2vtad:not(.hdtb-tl-sel):hover{box-shadow:0 1px 1px rgba(0,0,0,0.1);transition:all 0.0s;background-color:#f8f9fa;background-image:linear-gradient(top,#f8f9fa,#f8f9fa);border:1px solid #dadce0;color:#202124}.t2vtad:active,.t2vtad:not(.hdtb-tl-sel):hover:active{background-color:#f8f9fa;background-image:linear-gradient(top,#f8f9fa,#f8f9fa);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.YTDezd{background:#1a73e8;height:3px;margin-top:11px;}.bmaJhd{margin-right:5px;vertical-align:text-bottom}[dir='ltr'],[dir='rtl']{unicode-bidi:isolate;unicode-bidi:isolate}bdo[dir='ltr'],bdo[dir='rtl']{unicode-bidi:bidi-override;unicode-bidi:isolate-override;unicode-bidi:isolate-override}.GyAeWb{position:relative;margin-top:0px;clear:both;}.eqAnXb{font-size:medium;font-weight:normal;border:0;margin:0;}.main{width:100%;}.D6j0vc,.big .D6j0vc{max-width:1539px}.CvDJxb{min-width:1261px;z-index:128}.dodTBe{height:65px;margin:6px 0 4px}.appbar{background:#fff;min-width:1261px;-webkit-box-sizing:border-box;width:100%}</style></head><body jsmodel="TvHxbe" class="srp wf-b vasq" jscontroller="Eox39d" marginheight="3" topmargin="3" jsaction="rcuQ6b:npT2md" id="gsr"><style>.wYq63b{display:flex;left:0;position:absolute;top:0;z-index:1001}.S6VXfe{align-items:center;background-color:#fff;border-radius:0 2px 2px 0;box-shadow:0 2px 2px 0 rgba(0,0,0,.16),0 0 0 1px rgba(0,0,0,.08);display:flex;margin:80px auto 8px 0;overflow:hidden}.gyPpGe,.gyPpGe:visited,.qlVNAd{border:2px solid rgba(0,0,0,.16);border-radius:2px;color:#4b11a8;cursor:pointer;display:inline-block;font-size:14px;line-height:20px;margin:6px 11px;min-height:32px;text-decoration:underline;text-align:center;width:106px}.gyPpGe:not(:focus){clip:rect(1px,1px,1px,1px);overflow:hidden;position:absolute;pa