maritime-pirate-attacks/exploration.html

353 lines
1.3 MiB
HTML
Raw Normal View History

2021-12-21 04:59:17 +00:00
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
<title>R Notebook</title>
<script src="data:application/javascript;base64,Ly8gUGFuZG9jIDIuOSBhZGRzIGF0dHJpYnV0ZXMgb24gYm90aCBoZWFkZXIgYW5kIGRpdi4gV2UgcmVtb3ZlIHRoZSBmb3JtZXIgKHRvCi8vIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgYmVoYXZpb3Igb2YgUGFuZG9jIDwgMi44KS4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKGUpIHsKICB2YXIgaHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXYuc2VjdGlvbltjbGFzcyo9J2xldmVsJ10gPiA6Zmlyc3QtY2hpbGQiKTsKICB2YXIgaSwgaCwgYTsKICBmb3IgKGkgPSAwOyBpIDwgaHMubGVuZ3RoOyBpKyspIHsKICAgIGggPSBoc1tpXTsKICAgIGlmICghL15oWzEtNl0kL2kudGVzdChoLnRhZ05hbWUpKSBjb250aW51ZTsgIC8vIGl0IHNob3VsZCBiZSBhIGhlYWRlciBoMS1oNgogICAgYSA9IGguYXR0cmlidXRlczsKICAgIHdoaWxlIChhLmxlbmd0aCA+IDApIGgucmVtb3ZlQXR0cmlidXRlKGFbMF0ubmFtZSk7CiAgfQp9KTsK"></script>
<script src="data:application/javascript;base64,LyohIGpRdWVyeSB2My42LjAgfCAoYykgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwohZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZS5kb2N1bWVudD90KGUsITApOmZ1bmN0aW9uKGUpe2lmKCFlLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiB0KGUpfTp0KGUpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihDLGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1bXSxyPU9iamVjdC5nZXRQcm90b3R5cGVPZixzPXQuc2xpY2UsZz10LmZsYXQ/ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZmxhdC5jYWxsKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gdC5jb25jYXQuYXBwbHkoW10sZSl9LHU9dC5wdXNoLGk9dC5pbmRleE9mLG49e30sbz1uLnRvU3RyaW5nLHY9bi5oYXNPd25Qcm9wZXJ0eSxhPXYudG9TdHJpbmcsbD1hLmNhbGwoT2JqZWN0KSx5PXt9LG09ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJudW1iZXIiIT10eXBlb2YgZS5ub2RlVHlwZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUuaXRlbX0seD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmZT09PWUud2luZG93fSxFPUMuZG9jdW1lbnQsYz17dHlwZTohMCxzcmM6ITAsbm9uY2U6ITAsbm9Nb2R1bGU6ITB9O2Z1bmN0aW9uIGIoZSx0LG4pe3ZhciByLGksbz0obj1ufHxFKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtpZihvLnRleHQ9ZSx0KWZvcihyIGluIGMpKGk9dFtyXXx8dC5nZXRBdHRyaWJ1dGUmJnQuZ2V0QXR0cmlidXRlKHIpKSYmby5zZXRBdHRyaWJ1dGUocixpKTtuLmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX1mdW5jdGlvbiB3KGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZT9uW28uY2FsbChlKV18fCJvYmplY3QiOnR5cGVvZiBlfXZhciBmPSIzLjYuMCIsUz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgUy5mbi5pbml0KGUsdCl9O2Z1bmN0aW9uIHAoZSl7dmFyIHQ9ISFlJiYibGVuZ3RoImluIGUmJmUubGVuZ3RoLG49dyhlKTtyZXR1cm4hbShlKSYmIXgoZSkmJigiYXJyYXkiPT09bnx8MD09PXR8fCJudW1iZXIiPT10eXBlb2YgdCYmMDx0JiZ0LTEgaW4gZSl9Uy5mbj1TLnByb3RvdHlwZT17anF1ZXJ5OmYsY29uc3RydWN0b3I6UyxsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHMuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3MuY2FsbCh0aGlzKTplPDA/dGhpc1tlK3RoaXMubGVuZ3RoXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9Uy5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVjdD10aGlzLHR9LGVhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIFMuZWFjaCh0aGlzLGUpfSxtYXA6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMubWFwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5jYWxsKGUsdCxlKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2socy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxldmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQrMSklMn0pKX0sb2RkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQlMn0pKX0sZXE6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sZW5ndGgsbj0rZSsoZTwwP3Q6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKDA8PW4mJm48dD9bdGhpc1tuXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6dSxzb3J0OnQuc29ydCxzcGxpY2U6dC5zcGxpY2V9LFMuZXh0ZW5kPVMuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaSxvLGE9YXJndW1lbnRzWzBdfHx7fSxzPTEsdT1hcmd1bWVudHMubGVuZ3RoLGw9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGEmJihsPWEsYT1hcmd1bWVudHNbc118fHt9LHMrKyksIm9iamVjdCI9PXR5cGVvZiBhfHxtKGEpfHwoYT17fSkscz09PXUmJihhPXRoaXMscy0tKTtzPHU7cysrKWlmKG51bGwhPShlPWFyZ3VtZW50c1tzXSkpZm9yKHQgaW4gZSlyPWVbdF0sIl9fcHJvdG9fXyIhPT10JiZhIT09ciYmKGwmJnImJihTLmlzUGxhaW5PYmplY3Qocil8fChpPUFycmF5LmlzQXJyYXkocikpKT8obj1hW3RdLG89aSYmIUFycmF5LmlzQXJyYXkobik/W106aXx8Uy5pc1BsYWluT2JqZWN0KG4pP246e30saT0hMSxhW3RdPVMuZXh0ZW5kKGwsbyxyKSk6dm9pZCAwIT09ciYmKGFbdF09cikpO3JldHVybiBhfSxTLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisoZitNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihlKX0sbm9vcDpmdW5jdGlvbigpe30saXNQbGFpbk9iamVjdDpmdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiEoIWV8fCJbb2JqZWN0IE9iamVjdF0iIT09by5jYWxsKGUpKSYmKCEodD1yKGUpKXx8ImZ1bmN0aW9uIj09dHlwZW9mKG49di5jYWxsKHQsImNvbnN0cnVjdG9yIikmJnQuY29uc3RydWN0b3IpJiZhLmNhbGwobik9PT1sKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlKXJldHVybiExO3JldHVybiEwfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGUsdCxuKXtiKGUse25vbmNlOnQmJnQubm9uY2V9LG4pfSxlYWNoOmZ1bmN0aW9uKGU
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="data:text/css,html%7Bfont%2Dfamily%3Asans%2Dserif%3B%2Dwebkit%2Dtext%2Dsize%2Dadjust%3A100%25%3B%2Dms%2Dtext%2Dsize%2Dadjust%3A100%25%7Dbody%7Bmargin%3A0%7Darticle%2Caside%2Cdetails%2Cfigcaption%2Cfigure%2Cfooter%2Cheader%2Chgroup%2Cmain%2Cmenu%2Cnav%2Csection%2Csummary%7Bdisplay%3Ablock%7Daudio%2Ccanvas%2Cprogress%2Cvideo%7Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Abaseline%7Daudio%3Anot%28%5Bcontrols%5D%29%7Bdisplay%3Anone%3Bheight%3A0%7D%5Bhidden%5D%2Ctemplate%7Bdisplay%3Anone%7Da%7Bbackground%2Dcolor%3Atransparent%7Da%3Aactive%2Ca%3Ahover%7Boutline%3A0%7Dabbr%5Btitle%5D%7Bborder%2Dbottom%3A1px%20dotted%7Db%2Cstrong%7Bfont%2Dweight%3A700%7Ddfn%7Bfont%2Dstyle%3Aitalic%7Dh1%7Bmargin%3A%2E67em%200%3Bfont%2Dsize%3A2em%7Dmark%7Bcolor%3A%23000%3Bbackground%3A%23ff0%7Dsmall%7Bfont%2Dsize%3A80%25%7Dsub%2Csup%7Bposition%3Arelative%3Bfont%2Dsize%3A75%25%3Bline%2Dheight%3A0%3Bvertical%2Dalign%3Abaseline%7Dsup%7Btop%3A%2D%2E5em%7Dsub%7Bbottom%3A%2D%2E25em%7Dimg%7Bborder%3A0%7Dsvg%3Anot%28%3Aroot%29%7Boverflow%3Ahidden%7Dfigure%7Bmargin%3A1em%2040px%7Dhr%7Bheight%3A0%3B%2Dwebkit%2Dbox%2Dsizing%3Acontent%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Acontent%2Dbox%3Bbox%2Dsizing%3Acontent%2Dbox%7Dpre%7Boverflow%3Aauto%7Dcode%2Ckbd%2Cpre%2Csamp%7Bfont%2Dfamily%3Amonospace%2Cmonospace%3Bfont%2Dsize%3A1em%7Dbutton%2Cinput%2Coptgroup%2Cselect%2Ctextarea%7Bmargin%3A0%3Bfont%3Ainherit%3Bcolor%3Ainherit%7Dbutton%7Boverflow%3Avisible%7Dbutton%2Cselect%7Btext%2Dtransform%3Anone%7Dbutton%2Chtml%20input%5Btype%3Dbutton%5D%2Cinput%5Btype%3Dreset%5D%2Cinput%5Btype%3Dsubmit%5D%7B%2Dwebkit%2Dappearance%3Abutton%3Bcursor%3Apointer%7Dbutton%5Bdisabled%5D%2Chtml%20input%5Bdisabled%5D%7Bcursor%3Adefault%7Dbutton%3A%3A%2Dmoz%2Dfocus%2Dinner%2Cinput%3A%3A%2Dmoz%2Dfocus%2Dinner%7Bpadding%3A0%3Bborder%3A0%7Dinput%7Bline%2Dheight%3Anormal%7Dinput%5Btype%3Dcheckbox%5D%2Cinput%5Btype%3Dradio%5D%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%3Bpadding%3A0%7Dinput%5Btype%3Dnumber%5D%3A%3A%2Dwebkit%2Dinner%2Dspin%2Dbutton%2Cinput%5Btype%3Dnumber%5D%3A%3A%2Dwebkit%2Douter%2Dspin%2Dbutton%7Bheight%3Aauto%7Dinput%5Btype%3Dsearch%5D%7B%2Dwebkit%2Dbox%2Dsizing%3Acontent%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Acontent%2Dbox%3Bbox%2Dsizing%3Acontent%2Dbox%3B%2Dwebkit%2Dappearance%3Atextfield%7Dinput%5Btype%3Dsearch%5D%3A%3A%2Dwebkit%2Dsearch%2Dcancel%2Dbutton%2Cinput%5Btype%3Dsearch%5D%3A%3A%2Dwebkit%2Dsearch%2Ddecoration%7B%2Dwebkit%2Dappearance%3Anone%7Dfieldset%7Bpadding%3A%2E35em%20%2E625em%20%2E75em%3Bmargin%3A0%202px%3Bborder%3A1px%20solid%20silver%7Dlegend%7Bpadding%3A0%3Bborder%3A0%7Dtextarea%7Boverflow%3Aauto%7Doptgroup%7Bfont%2Dweight%3A700%7Dtable%7Bborder%2Dspacing%3A0%3Bborder%2Dcollapse%3Acollapse%7Dtd%2Cth%7Bpadding%3A0%7D%40media%20print%7B%2A%2C%3Aafter%2C%3Abefore%7Bcolor%3A%23000%21important%3Btext%2Dshadow%3Anone%21important%3Bbackground%3A0%200%21important%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%21important%3Bbox%2Dshadow%3Anone%21important%7Da%2Ca%3Avisited%7Btext%2Ddecoration%3Aunderline%7Da%5Bhref%5D%3Aafter%7Bcontent%3A%22%20%28%22%20attr%28href%29%20%22%29%22%7Dabbr%5Btitle%5D%3Aafter%7Bcontent%3A%22%20%28%22%20attr%28title%29%20%22%29%22%7Da%5Bhref%5E%3D%22javascript%3A%22%5D%3Aafter%2Ca%5Bhref%5E%3D%22%23%22%5D%3Aafter%7Bcontent%3A%22%22%7Dblockquote%2Cpre%7Bborder%3A1px%20solid%20%23999%3Bpage%2Dbreak%2Dinside%3Aavoid%7Dthead%7Bdisplay%3Atable%2Dheader%2Dgroup%7Dimg%2Ctr%7Bpage%2Dbreak%2Dinside%3Aavoid%7Dimg%7Bmax%2Dwidth%3A100%25%21important%7Dh2%2Ch3%2Cp%7Borphans%3A3%3Bwidows%3A3%7Dh2%2Ch3%7Bpage%2Dbreak%2Dafter%3Aavoid%7D%2Enavbar%7Bdisplay%3Anone%7D%2Ebtn%3E%2Ecaret%2C%2Edropup%3E%2Ebtn%3E%2Ecaret%7Bborder%2Dtop%2Dcolor%3A%23000%21important%7D%2Elabel%7Bborder%3A1px%20solid%20%23000%7D%2Etable%7Bborder%2Dcollapse%3Acollapse%21important%7D%2Etable%20td%2C%2Etable%20th%7Bbackground%2Dcolor%3A%23fff%21important%7D%2Etable%2Dbordered%20td%2C%2Etable%2Dbordered%20th%7Bborder%3A1px%20solid%20%23ddd%21important%7D%7D%40font%2Dface%7Bfont%2Dfamily%3A%27Glyphicons%20Halflings%27%3Bsrc%3Aurl%
<script src="data:application/javascript;base64,LyohCiAqIEJvb3RzdHJhcCB2My4zLjUgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE1IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCiAqLwppZigidW5kZWZpbmVkIj09dHlwZW9mIGpRdWVyeSl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5Iik7K2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1hLmZuLmpxdWVyeS5zcGxpdCgiICIpWzBdLnNwbGl0KCIuIik7aWYoYlswXTwyJiZiWzFdPDl8fDE9PWJbMF0mJjk9PWJbMV0mJmJbMl08MSl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5IHZlcnNpb24gMS45LjEgb3IgaGlnaGVyIil9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYm9vdHN0cmFwIiksYj17V2Via2l0VHJhbnNpdGlvbjoid2Via2l0VHJhbnNpdGlvbkVuZCIsTW96VHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCIsT1RyYW5zaXRpb246Im9UcmFuc2l0aW9uRW5kIG90cmFuc2l0aW9uZW5kIix0cmFuc2l0aW9uOiJ0cmFuc2l0aW9uZW5kIn07Zm9yKHZhciBjIGluIGIpaWYodm9pZCAwIT09YS5zdHlsZVtjXSlyZXR1cm57ZW5kOmJbY119O3JldHVybiExfWEuZm4uZW11bGF0ZVRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24oYil7dmFyIGM9ITEsZD10aGlzO2EodGhpcykub25lKCJic1RyYW5zaXRpb25FbmQiLGZ1bmN0aW9uKCl7Yz0hMH0pO3ZhciBlPWZ1bmN0aW9uKCl7Y3x8YShkKS50cmlnZ2VyKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCl9O3JldHVybiBzZXRUaW1lb3V0KGUsYiksdGhpc30sYShmdW5jdGlvbigpe2Euc3VwcG9ydC50cmFuc2l0aW9uPWIoKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGEuZXZlbnQuc3BlY2lhbC5ic1RyYW5zaXRpb25FbmQ9e2JpbmRUeXBlOmEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxkZWxlZ2F0ZVR5cGU6YS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGhhbmRsZTpmdW5jdGlvbihiKXtyZXR1cm4gYShiLnRhcmdldCkuaXModGhpcyk/Yi5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGU9Yy5kYXRhKCJicy5hbGVydCIpO2V8fGMuZGF0YSgiYnMuYWxlcnQiLGU9bmV3IGQodGhpcykpLCJzdHJpbmciPT10eXBlb2YgYiYmZVtiXS5jYWxsKGMpfSl9dmFyIGM9J1tkYXRhLWRpc21pc3M9ImFsZXJ0Il0nLGQ9ZnVuY3Rpb24oYil7YShiKS5vbigiY2xpY2siLGMsdGhpcy5jbG9zZSl9O2QuVkVSU0lPTj0iMy4zLjUiLGQuVFJBTlNJVElPTl9EVVJBVElPTj0xNTAsZC5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gYygpe2cuZGV0YWNoKCkudHJpZ2dlcigiY2xvc2VkLmJzLmFsZXJ0IikucmVtb3ZlKCl9dmFyIGU9YSh0aGlzKSxmPWUuYXR0cigiZGF0YS10YXJnZXQiKTtmfHwoZj1lLmF0dHIoImhyZWYiKSxmPWYmJmYucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7dmFyIGc9YShmKTtiJiZiLnByZXZlbnREZWZhdWx0KCksZy5sZW5ndGh8fChnPWUuY2xvc2VzdCgiLmFsZXJ0IikpLGcudHJpZ2dlcihiPWEuRXZlbnQoImNsb3NlLmJzLmFsZXJ0IikpLGIuaXNEZWZhdWx0UHJldmVudGVkKCl8fChnLnJlbW92ZUNsYXNzKCJpbiIpLGEuc3VwcG9ydC50cmFuc2l0aW9uJiZnLmhhc0NsYXNzKCJmYWRlIik/Zy5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYykuZW11bGF0ZVRyYW5zaXRpb25FbmQoZC5UUkFOU0lUSU9OX0RVUkFUSU9OKTpjKCkpfTt2YXIgZT1hLmZuLmFsZXJ0O2EuZm4uYWxlcnQ9YixhLmZuLmFsZXJ0LkNvbnN0cnVjdG9yPWQsYS5mbi5hbGVydC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYWxlcnQ9ZSx0aGlzfSxhKGRvY3VtZW50KS5vbigiY2xpY2suYnMuYWxlcnQuZGF0YS1hcGkiLGMsZC5wcm90b3R5cGUuY2xvc2UpfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMuYnV0dG9uIiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5idXR0b24iLGU9bmV3IGModGhpcyxmKSksInRvZ2dsZSI9PWI/ZS50b2dnbGUoKTpiJiZlLnNldFN0YXRlKGIpfSl9dmFyIGM9ZnVuY3Rpb24oYixkKXt0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy5pc0xvYWRpbmc9ITF9O2MuVkVSU0lPTj0iMy4zLjUiLGMuREVGQVVMVFM9e2xvYWRpbmdUZXh0OiJsb2FkaW5nLi4uIn0sYy5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oYil7dmFyIGM9ImRpc2FibGVkIixkPXRoaXMuJGVsZW1lbnQsZT1kLmlzKCJpbnB1dCIpPyJ2YWwiOiJodG1sIixmPWQuZGF0YSgpO2IrPSJUZXh0IixudWxsPT1mLnJlc2V0VGV4dCYmZC5kYXRhKCJyZXNldFRleHQiLGRbZV0oKSksc2V0VGltZW91dChhLnByb3h5KGZ1bmN0aW9uKCl7ZFtlXShudWxsPT1mW2JdP3RoaXMub3B0aW9uc1tiXTpmW2JdKSwibG9hZGluZ1RleHQiPT1iPyh0aGlzLmlzTG9hZGluZz0hMCxkLmFkZENsYXNzKGMpLmF0dHIoYyxjKSk6dGhpcy5pc0xvYWRpbmcmJih0aGlzLmlzTG9hZGluZz0hMSxkLnJlbW92ZUNsYXNzKGMpLnJlbW92ZUF0dHIoYykpfSx0aGlzKSwwKX0sYy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKCl7dmFyIGE9ITAsYj10aGlzLiRlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdJyk7aWYoYi5sZW5ndGgpe3ZhciBjPXRoaXMuJGVsZW1lbnQuZmluZCgiaW5wdXQiKTsicmFkaW8iPT1jLnByb3AoInR5cGUiKT8oYy5wcm9wKCJjaGVja2VkIikmJihhPSExKSxiLmZpbmQoIi5
<script src="data:application/javascript;base64,LyoqCiogQHByZXNlcnZlIEhUTUw1IFNoaXYgMy43LjIgfCBAYWZhcmthcyBAamRhbHRvbiBAam9uX25lYWwgQHJlbSB8IE1JVC9HUEwyIExpY2Vuc2VkCiovCi8vIE9ubHkgcnVuIHRoaXMgY29kZSBpbiBJRSA4CmlmICghIXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKCJNU0lFIDgiKSkgewohZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7dmFyIGM9YS5jcmVhdGVFbGVtZW50KCJwIiksZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGEuZG9jdW1lbnRFbGVtZW50O3JldHVybiBjLmlubmVySFRNTD0ieDxzdHlsZT4iK2IrIjwvc3R5bGU+IixkLmluc2VydEJlZm9yZShjLmxhc3RDaGlsZCxkLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGQoKXt2YXIgYT10LmVsZW1lbnRzO3JldHVybiJzdHJpbmciPT10eXBlb2YgYT9hLnNwbGl0KCIgIik6YX1mdW5jdGlvbiBlKGEsYil7dmFyIGM9dC5lbGVtZW50czsic3RyaW5nIiE9dHlwZW9mIGMmJihjPWMuam9pbigiICIpKSwic3RyaW5nIiE9dHlwZW9mIGEmJihhPWEuam9pbigiICIpKSx0LmVsZW1lbnRzPWMrIiAiK2EsaihiKX1mdW5jdGlvbiBmKGEpe3ZhciBiPXNbYVtxXV07cmV0dXJuIGJ8fChiPXt9LHIrKyxhW3FdPXIsc1tyXT1iKSxifWZ1bmN0aW9uIGcoYSxjLGQpe2lmKGN8fChjPWIpLGwpcmV0dXJuIGMuY3JlYXRlRWxlbWVudChhKTtkfHwoZD1mKGMpKTt2YXIgZTtyZXR1cm4gZT1kLmNhY2hlW2FdP2QuY2FjaGVbYV0uY2xvbmVOb2RlKCk6cC50ZXN0KGEpPyhkLmNhY2hlW2FdPWQuY3JlYXRlRWxlbShhKSkuY2xvbmVOb2RlKCk6ZC5jcmVhdGVFbGVtKGEpLCFlLmNhbkhhdmVDaGlsZHJlbnx8by50ZXN0KGEpfHxlLnRhZ1Vybj9lOmQuZnJhZy5hcHBlbmRDaGlsZChlKX1mdW5jdGlvbiBoKGEsYyl7aWYoYXx8KGE9YiksbClyZXR1cm4gYS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Yz1jfHxmKGEpO2Zvcih2YXIgZT1jLmZyYWcuY2xvbmVOb2RlKCksZz0wLGg9ZCgpLGk9aC5sZW5ndGg7aT5nO2crKyllLmNyZWF0ZUVsZW1lbnQoaFtnXSk7cmV0dXJuIGV9ZnVuY3Rpb24gaShhLGIpe2IuY2FjaGV8fChiLmNhY2hlPXt9LGIuY3JlYXRlRWxlbT1hLmNyZWF0ZUVsZW1lbnQsYi5jcmVhdGVGcmFnPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxiLmZyYWc9Yi5jcmVhdGVGcmFnKCkpLGEuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihjKXtyZXR1cm4gdC5zaGl2TWV0aG9kcz9nKGMsYSxiKTpiLmNyZWF0ZUVsZW0oYyl9LGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudD1GdW5jdGlvbigiaCxmIiwicmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49Zi5jbG9uZU5vZGUoKSxjPW4uY3JlYXRlRWxlbWVudDtoLnNoaXZNZXRob2RzJiYoIitkKCkuam9pbigpLnJlcGxhY2UoL1tcd1wtOl0rL2csZnVuY3Rpb24oYSl7cmV0dXJuIGIuY3JlYXRlRWxlbShhKSxiLmZyYWcuY3JlYXRlRWxlbWVudChhKSwnYygiJythKyciKSd9KSsiKTtyZXR1cm4gbn0iKSh0LGIuZnJhZyl9ZnVuY3Rpb24gaihhKXthfHwoYT1iKTt2YXIgZD1mKGEpO3JldHVybiF0LnNoaXZDU1N8fGt8fGQuaGFzQ1NTfHwoZC5oYXNDU1M9ISFjKGEsImFydGljbGUsYXNpZGUsZGlhbG9nLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsaGdyb3VwLG1haW4sbmF2LHNlY3Rpb257ZGlzcGxheTpibG9ja31tYXJre2JhY2tncm91bmQ6I0ZGMDtjb2xvcjojMDAwfXRlbXBsYXRle2Rpc3BsYXk6bm9uZX0iKSksbHx8aShhLGQpLGF9dmFyIGssbCxtPSIzLjcuMiIsbj1hLmh0bWw1fHx7fSxvPS9ePHxeKD86YnV0dG9ufG1hcHxzZWxlY3R8dGV4dGFyZWF8b2JqZWN0fGlmcmFtZXxvcHRpb258b3B0Z3JvdXApJC9pLHA9L14oPzphfGJ8Y29kZXxkaXZ8ZmllbGRzZXR8aDF8aDJ8aDN8aDR8aDV8aDZ8aXxsYWJlbHxsaXxvbHxwfHF8c3BhbnxzdHJvbmd8c3R5bGV8dGFibGV8dGJvZHl8dGR8dGh8dHJ8dWwpJC9pLHE9Il9odG1sNXNoaXYiLHI9MCxzPXt9OyFmdW5jdGlvbigpe3RyeXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImEiKTthLmlubmVySFRNTD0iPHh5ej48L3h5ej4iLGs9ImhpZGRlbiJpbiBhLGw9MT09YS5jaGlsZE5vZGVzLmxlbmd0aHx8ZnVuY3Rpb24oKXtiLmNyZWF0ZUVsZW1lbnQoImEiKTt2YXIgYT1iLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGEuY2xvbmVOb2RlfHwidW5kZWZpbmVkIj09dHlwZW9mIGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudHx8InVuZGVmaW5lZCI9PXR5cGVvZiBhLmNyZWF0ZUVsZW1lbnR9KCl9Y2F0Y2goYyl7az0hMCxsPSEwfX0oKTt2YXIgdD17ZWxlbWVudHM6bi5lbGVtZW50c3x8ImFiYnIgYXJ0aWNsZSBhc2lkZSBhdWRpbyBiZGkgY2FudmFzIGRhdGEgZGF0YWxpc3QgZGV0YWlscyBkaWFsb2cgZmlnY2FwdGlvbiBmaWd1cmUgZm9vdGVyIGhlYWRlciBoZ3JvdXAgbWFpbiBtYXJrIG1ldGVyIG5hdiBvdXRwdXQgcGljdHVyZSBwcm9ncmVzcyBzZWN0aW9uIHN1bW1hcnkgdGVtcGxhdGUgdGltZSB2aWRlbyIsdmVyc2lvbjptLHNoaXZDU1M6bi5zaGl2Q1NTIT09ITEsc3VwcG9ydHNVbmtub3duRWxlbWVudHM6bCxzaGl2TWV0aG9kczpuLnNoaXZNZXRob2RzIT09ITEsdHlwZToiZGVmYXVsdCIsc2hpdkRvY3VtZW50OmosY3JlYXRlRWxlbWVudDpnLGNyZWF0ZURvY3VtZW50RnJhZ21lbnQ6aCxhZGRFbGVtZW50czplfTthLmh0bWw1PXQsaihiKX0odGhpcyxkb2N1bWVudCk7Cn07Cg=="></script>
<script src="data:application/javascript;base64,LyohIFJlc3BvbmQuanMgdjEuNC4yOiBtaW4vbWF4LXdpZHRoIG1lZGlhIHF1ZXJ5IHBvbHlmaWxsICogQ29weXJpZ2h0IDIwMTMgU2NvdHQgSmVobAogKiBMaWNlbnNlZCB1bmRlciBodHRwczovL2dpdGh1Yi5jb20vc2NvdHRqZWhsL1Jlc3BvbmQvYmxvYi9tYXN0ZXIvTElDRU5TRS1NSVQKICogICovCgovLyBPbmx5IHJ1biB0aGlzIGNvZGUgaW4gSUUgOAppZiAoISF3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgiTVNJRSA4IikpIHsKIWZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjthLm1hdGNoTWVkaWE9YS5tYXRjaE1lZGlhfHxmdW5jdGlvbihhKXt2YXIgYixjPWEuZG9jdW1lbnRFbGVtZW50LGQ9Yy5maXJzdEVsZW1lbnRDaGlsZHx8Yy5maXJzdENoaWxkLGU9YS5jcmVhdGVFbGVtZW50KCJib2R5IiksZj1hLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBmLmlkPSJtcS10ZXN0LTEiLGYuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7dG9wOi0xMDBlbSIsZS5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIixlLmFwcGVuZENoaWxkKGYpLGZ1bmN0aW9uKGEpe3JldHVybiBmLmlubmVySFRNTD0nJnNoeTs8c3R5bGUgbWVkaWE9IicrYSsnIj4gI21xLXRlc3QtMSB7IHdpZHRoOiA0MnB4OyB9PC9zdHlsZT4nLGMuaW5zZXJ0QmVmb3JlKGUsZCksYj00Mj09PWYub2Zmc2V0V2lkdGgsYy5yZW1vdmVDaGlsZChlKSx7bWF0Y2hlczpiLG1lZGlhOmF9fX0oYS5kb2N1bWVudCl9KHRoaXMpLGZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKCl7dSghMCl9dmFyIGM9e307YS5yZXNwb25kPWMsYy51cGRhdGU9ZnVuY3Rpb24oKXt9O3ZhciBkPVtdLGU9ZnVuY3Rpb24oKXt2YXIgYj0hMTt0cnl7Yj1uZXcgYS5YTUxIdHRwUmVxdWVzdH1jYXRjaChjKXtiPW5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGJ9fSgpLGY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1lKCk7YyYmKGMub3BlbigiR0VUIixhLCEwKSxjLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQhPT1jLnJlYWR5U3RhdGV8fDIwMCE9PWMuc3RhdHVzJiYzMDQhPT1jLnN0YXR1c3x8YihjLnJlc3BvbnNlVGV4dCl9LDQhPT1jLnJlYWR5U3RhdGUmJmMuc2VuZChudWxsKSl9O2lmKGMuYWpheD1mLGMucXVldWU9ZCxjLnJlZ2V4PXttZWRpYTovQG1lZGlhW15ce10rXHsoW15ce1x9XSpce1teXH1ce10qXH0pKy9naSxrZXlmcmFtZXM6L0AoPzpcLSg/Om98bW96fHdlYmtpdClcLSk/a2V5ZnJhbWVzW15ce10rXHsoPzpbXlx7XH1dKlx7W15cfVx7XSpcfSkrW15cfV0qXH0vZ2ksdXJsczovKHVybFwoKVsnIl0/KFteXC9cKSciXVteOlwpJyJdKylbJyJdPyhcKSkvZyxmaW5kU3R5bGVzOi9AbWVkaWEgKihbXlx7XSspXHsoW1xTXHNdKz8pJC8sb25seTovKG9ubHlccyspPyhbYS16QS1aXSspXHM/LyxtaW53Oi9cKFtcc10qbWluXC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpLyxtYXh3Oi9cKFtcc10qbWF4XC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpL30sYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQ9YS5tYXRjaE1lZGlhJiZudWxsIT09YS5tYXRjaE1lZGlhKCJvbmx5IGFsbCIpJiZhLm1hdGNoTWVkaWEoIm9ubHkgYWxsIikubWF0Y2hlcywhYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQpe3ZhciBnLGgsaSxqPWEuZG9jdW1lbnQsaz1qLmRvY3VtZW50RWxlbWVudCxsPVtdLG09W10sbj1bXSxvPXt9LHA9MzAscT1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGsscj1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJiYXNlIilbMF0scz1xLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIiksdD1mdW5jdGlvbigpe3ZhciBhLGI9ai5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPWouYm9keSxkPWsuc3R5bGUuZm9udFNpemUsZT1jJiZjLnN0eWxlLmZvbnRTaXplLGY9ITE7cmV0dXJuIGIuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Zm9udC1zaXplOjFlbTt3aWR0aDoxZW0iLGN8fChjPWY9ai5jcmVhdGVFbGVtZW50KCJib2R5IiksYy5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIiksay5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5hcHBlbmRDaGlsZChiKSxmJiZrLmluc2VydEJlZm9yZShjLGsuZmlyc3RDaGlsZCksYT1iLm9mZnNldFdpZHRoLGY/ay5yZW1vdmVDaGlsZChjKTpjLnJlbW92ZUNoaWxkKGIpLGsuc3R5bGUuZm9udFNpemU9ZCxlJiYoYy5zdHlsZS5mb250U2l6ZT1lKSxhPWk9cGFyc2VGbG9hdChhKX0sdT1mdW5jdGlvbihiKXt2YXIgYz0iY2xpZW50V2lkdGgiLGQ9a1tjXSxlPSJDU1MxQ29tcGF0Ij09PWouY29tcGF0TW9kZSYmZHx8ai5ib2R5W2NdfHxkLGY9e30sbz1zW3MubGVuZ3RoLTFdLHI9KG5ldyBEYXRlKS5nZXRUaW1lKCk7aWYoYiYmZyYmcD5yLWcpcmV0dXJuIGEuY2xlYXJUaW1lb3V0KGgpLGg9YS5zZXRUaW1lb3V0KHUscCksdm9pZCAwO2c9cjtmb3IodmFyIHYgaW4gbClpZihsLmhhc093blByb3BlcnR5KHYpKXt2YXIgdz1sW3ZdLHg9dy5taW53LHk9dy5tYXh3LHo9bnVsbD09PXgsQT1udWxsPT09eSxCPSJlbSI7eCYmKHg9cGFyc2VGbG9hdCh4KSooeC5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSkseSYmKHk9cGFyc2VGbG9hdCh5KSooeS5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSksdy5oYXNxdWVyeSYmKHomJkF8fCEoenx8ZT49eCl8fCEoQXx8eT49ZSkpfHwoZlt3Lm1lZGlhXXx8KGZbdy5tZWRpYV09W10pLGZbdy5tZWRpYV0ucHVzaChtW3cucnVsZXNdKSl9Zm9yKHZhciBDIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShDKSYmbltDXSYmbltDXS5wYXJlbnROb2RlPT09cSYmcS5yZW1vdmVDaGlsZChuW0NdKTtuLmxlbmd0aD0wO2Zvcih2YXIgRCBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoRCkpe3ZhciBFPWouY3JlYXRlRWxlbWVudCgic3R5bGUiKSxGPWZbRF0uam9pbigiXG4iKTtFLnR5cGU9InRleHQvY3NzIixFLm1lZGlhPUQscS5pbnNlcnR
<style>h1 {font-size: 34px;}
h1.title {font-size: 38px;}
h2 {font-size: 30px;}
h3 {font-size: 24px;}
h4 {font-size: 18px;}
h5 {font-size: 16px;}
h6 {font-size: 12px;}
code {color: inherit; background-color: rgba(0, 0, 0, 0.04);}
pre:not([class]) { background-color: white }</style>
<script src="data:application/javascript;base64,CgovKioKICogalF1ZXJ5IFBsdWdpbjogU3RpY2t5IFRhYnMKICoKICogQGF1dGhvciBBaWRhbiBMaXN0ZXIgPGFpZGFuQHBocC5uZXQ+CiAqIGFkYXB0ZWQgYnkgUnViZW4gQXJzbGFuIHRvIGFjdGl2YXRlIHBhcmVudCB0YWJzIHRvbwogKiBodHRwOi8vd3d3LmFpZGFubGlzdGVyLmNvbS8yMDE0LzAzL3BlcnNpc3RpbmctdGhlLXRhYi1zdGF0ZS1pbi1ib290c3RyYXAvCiAqLwooZnVuY3Rpb24oJCkgewogICJ1c2Ugc3RyaWN0IjsKICAkLmZuLnJtYXJrZG93blN0aWNreVRhYnMgPSBmdW5jdGlvbigpIHsKICAgIHZhciBjb250ZXh0ID0gdGhpczsKICAgIC8vIFNob3cgdGhlIHRhYiBjb3JyZXNwb25kaW5nIHdpdGggdGhlIGhhc2ggaW4gdGhlIFVSTCwgb3IgdGhlIGZpcnN0IHRhYgogICAgdmFyIHNob3dTdHVmZkZyb21IYXNoID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2g7CiAgICAgIHZhciBzZWxlY3RvciA9IGhhc2ggPyAnYVtocmVmPSInICsgaGFzaCArICciXScgOiAnbGkuYWN0aXZlID4gYSc7CiAgICAgIHZhciAkc2VsZWN0b3IgPSAkKHNlbGVjdG9yLCBjb250ZXh0KTsKICAgICAgaWYoJHNlbGVjdG9yLmRhdGEoJ3RvZ2dsZScpID09PSAidGFiIikgewogICAgICAgICRzZWxlY3Rvci50YWIoJ3Nob3cnKTsKICAgICAgICAvLyB3YWxrIHVwIHRoZSBhbmNlc3RvcnMgb2YgdGhpcyBlbGVtZW50LCBzaG93IGFueSBoaWRkZW4gdGFicwogICAgICAgICRzZWxlY3Rvci5wYXJlbnRzKCcuc2VjdGlvbi50YWJzZXQnKS5lYWNoKGZ1bmN0aW9uKGksIGVsbSkgewogICAgICAgICAgdmFyIGxpbmsgPSAkKCdhW2hyZWY9IiMnICsgJChlbG0pLmF0dHIoJ2lkJykgKyAnIl0nKTsKICAgICAgICAgIGlmKGxpbmsuZGF0YSgndG9nZ2xlJykgPT09ICJ0YWIiKSB7CiAgICAgICAgICAgIGxpbmsudGFiKCJzaG93Iik7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH07CgoKICAgIC8vIFNldCB0aGUgY29ycmVjdCB0YWIgd2hlbiB0aGUgcGFnZSBsb2FkcwogICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CgogICAgLy8gU2V0IHRoZSBjb3JyZWN0IHRhYiB3aGVuIGEgdXNlciB1c2VzIHRoZWlyIGJhY2svZm9yd2FyZCBidXR0b24KICAgICQod2luZG93KS5vbignaGFzaGNoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICBzaG93U3R1ZmZGcm9tSGFzaChjb250ZXh0KTsKICAgIH0pOwoKICAgIC8vIENoYW5nZSB0aGUgVVJMIHdoZW4gdGFicyBhcmUgY2xpY2tlZAogICAgJCgnYScsIGNvbnRleHQpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgdGhpcy5ocmVmKTsKICAgICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CiAgICB9KTsKCiAgICByZXR1cm4gdGhpczsKICB9Owp9KGpRdWVyeSkpOwoKd2luZG93LmJ1aWxkVGFic2V0cyA9IGZ1bmN0aW9uKHRvY0lEKSB7CgogIC8vIGJ1aWxkIGEgdGFic2V0IGZyb20gYSBzZWN0aW9uIGRpdiB3aXRoIHRoZSAudGFic2V0IGNsYXNzCiAgZnVuY3Rpb24gYnVpbGRUYWJzZXQodGFic2V0KSB7CgogICAgLy8gY2hlY2sgZm9yIGZhZGUgYW5kIHBpbGxzIG9wdGlvbnMKICAgIHZhciBmYWRlID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtZmFkZSIpOwogICAgdmFyIHBpbGxzID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtcGlsbHMiKTsKICAgIHZhciBuYXZDbGFzcyA9IHBpbGxzID8gIm5hdi1waWxscyIgOiAibmF2LXRhYnMiOwoKICAgIC8vIGRldGVybWluZSB0aGUgaGVhZGluZyBsZXZlbCBvZiB0aGUgdGFic2V0IGFuZCB0YWJzCiAgICB2YXIgbWF0Y2ggPSB0YWJzZXQuYXR0cignY2xhc3MnKS5tYXRjaCgvbGV2ZWwoXGQpIC8pOwogICAgaWYgKG1hdGNoID09PSBudWxsKQogICAgICByZXR1cm47CiAgICB2YXIgdGFic2V0TGV2ZWwgPSBOdW1iZXIobWF0Y2hbMV0pOwogICAgdmFyIHRhYkxldmVsID0gdGFic2V0TGV2ZWwgKyAxOwoKICAgIC8vIGZpbmQgYWxsIHN1YmhlYWRpbmdzIGltbWVkaWF0ZWx5IGJlbG93CiAgICB2YXIgdGFicyA9IHRhYnNldC5maW5kKCJkaXYuc2VjdGlvbi5sZXZlbCIgKyB0YWJMZXZlbCk7CiAgICBpZiAoIXRhYnMubGVuZ3RoKQogICAgICByZXR1cm47CgogICAgLy8gY3JlYXRlIHRhYmxpc3QgYW5kIHRhYi1jb250ZW50IGVsZW1lbnRzCiAgICB2YXIgdGFiTGlzdCA9ICQoJzx1bCBjbGFzcz0ibmF2ICcgKyBuYXZDbGFzcyArICciIHJvbGU9InRhYmxpc3QiPjwvdWw+Jyk7CiAgICAkKHRhYnNbMF0pLmJlZm9yZSh0YWJMaXN0KTsKICAgIHZhciB0YWJDb250ZW50ID0gJCgnPGRpdiBjbGFzcz0idGFiLWNvbnRlbnQiPjwvZGl2PicpOwogICAgJCh0YWJzWzBdKS5iZWZvcmUodGFiQ29udGVudCk7CgogICAgLy8gYnVpbGQgdGhlIHRhYnNldAogICAgdmFyIGFjdGl2ZVRhYiA9IDA7CiAgICB0YWJzLmVhY2goZnVuY3Rpb24oaSkgewoKICAgICAgLy8gZ2V0IHRoZSB0YWIgZGl2CiAgICAgIHZhciB0YWIgPSAkKHRhYnNbaV0pOwoKICAgICAgLy8gZ2V0IHRoZSBpZCB0aGVuIHNhbml0aXplIGl0IGZvciB1c2Ugd2l0aCBib290c3RyYXAgdGFicwogICAgICB2YXIgaWQgPSB0YWIuYXR0cignaWQnKTsKCiAgICAgIC8vIHNlZSBpZiB0aGlzIGlzIG1hcmtlZCBhcyB0aGUgYWN0aXZlIHRhYgogICAgICBpZiAodGFiLmhhc0NsYXNzKCdhY3RpdmUnKSkKICAgICAgICBhY3RpdmVUYWIgPSBpOwoKICAgICAgLy8gcmVtb3ZlIGFueSB0YWJsZSBvZiBjb250ZW50cyBlbnRyaWVzIGFzc29jaWF0ZWQgd2l0aAogICAgICAvLyB0aGlzIElEIChzaW5jZSB3ZSdsbCBiZSByZW1vdmluZyB0aGUgaGVhZGluZyBlbGVtZW50KQogICAgICAkKCJkaXYjIiArIHRvY0lEICsgIiBsaSBhW2hyZWY9JyMiICsgaWQgKyAiJ10iKS5wYXJlbnQoKS5yZW1vdmUoKTsKCiAgICAgIC8vIHNhbml0aXplIHRoZSBpZCBmb3IgdXNlIHdpdGggYm9vdHN0cmFwIHRhYnMKICAgICAgaWQgPSBpZC5yZXBsYWNlKC9bLlwvPyYhIzw+XS9nLCAnJykucmVwbGFjZSgvXHMvZywgJ18
<link href="data:text/css,%2Ehljs%2Dliteral%20%7B%0Acolor%3A%20%23990073%3B%0A%7D%0A%2Ehljs%2Dnumber%20%7B%0Acolor%3A%20%23099%3B%0A%7D%0A%2Ehljs%2Dcomment%20%7B%0Acolor%3A%20%23998%3B%0Afont%2Dstyle%3A%20italic%3B%0A%7D%0A%2Ehljs%2Dkeyword%20%7B%0Acolor%3A%20%23900%3B%0Afont%2Dweight%3A%20bold%3B%0A%7D%0A%2Ehljs%2Dstring%20%7B%0Acolor%3A%20%23d14%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,LyohIGhpZ2hsaWdodC5qcyB2OS4xMi4wIHwgQlNEMyBMaWNlbnNlIHwgZ2l0LmlvL2hsanNsaWNlbnNlICovCiFmdW5jdGlvbihlKXt2YXIgbj0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93fHwib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGY7InVuZGVmaW5lZCIhPXR5cGVvZiBleHBvcnRzP2UoZXhwb3J0cyk6biYmKG4uaGxqcz1lKHt9KSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm4gbi5obGpzfSkpfShmdW5jdGlvbihlKXtmdW5jdGlvbiBuKGUpe3JldHVybiBlLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1mdW5jdGlvbiB0KGUpe3JldHVybiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gcihlLG4pe3ZhciB0PWUmJmUuZXhlYyhuKTtyZXR1cm4gdCYmMD09PXQuaW5kZXh9ZnVuY3Rpb24gYShlKXtyZXR1cm4gay50ZXN0KGUpfWZ1bmN0aW9uIGkoZSl7dmFyIG4sdCxyLGksbz1lLmNsYXNzTmFtZSsiICI7aWYobys9ZS5wYXJlbnROb2RlP2UucGFyZW50Tm9kZS5jbGFzc05hbWU6IiIsdD1CLmV4ZWMobykpcmV0dXJuIHcodFsxXSk/dFsxXToibm8taGlnaGxpZ2h0Ijtmb3Iobz1vLnNwbGl0KC9ccysvKSxuPTAscj1vLmxlbmd0aDtyPm47bisrKWlmKGk9b1tuXSxhKGkpfHx3KGkpKXJldHVybiBpfWZ1bmN0aW9uIG8oZSl7dmFyIG4sdD17fSxyPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtmb3IobiBpbiBlKXRbbl09ZVtuXTtyZXR1cm4gci5mb3JFYWNoKGZ1bmN0aW9uKGUpe2ZvcihuIGluIGUpdFtuXT1lW25dfSksdH1mdW5jdGlvbiB1KGUpe3ZhciBuPVtdO3JldHVybiBmdW5jdGlvbiByKGUsYSl7Zm9yKHZhciBpPWUuZmlyc3RDaGlsZDtpO2k9aS5uZXh0U2libGluZykzPT09aS5ub2RlVHlwZT9hKz1pLm5vZGVWYWx1ZS5sZW5ndGg6MT09PWkubm9kZVR5cGUmJihuLnB1c2goe2V2ZW50OiJzdGFydCIsb2Zmc2V0OmEsbm9kZTppfSksYT1yKGksYSksdChpKS5tYXRjaCgvYnJ8aHJ8aW1nfGlucHV0Lyl8fG4ucHVzaCh7ZXZlbnQ6InN0b3AiLG9mZnNldDphLG5vZGU6aX0pKTtyZXR1cm4gYX0oZSwwKSxufWZ1bmN0aW9uIGMoZSxyLGEpe2Z1bmN0aW9uIGkoKXtyZXR1cm4gZS5sZW5ndGgmJnIubGVuZ3RoP2VbMF0ub2Zmc2V0IT09clswXS5vZmZzZXQ/ZVswXS5vZmZzZXQ8clswXS5vZmZzZXQ/ZTpyOiJzdGFydCI9PT1yWzBdLmV2ZW50P2U6cjplLmxlbmd0aD9lOnJ9ZnVuY3Rpb24gbyhlKXtmdW5jdGlvbiByKGUpe3JldHVybiIgIitlLm5vZGVOYW1lKyc9IicrbihlLnZhbHVlKS5yZXBsYWNlKCciJywiJnF1b3Q7IikrJyInfXMrPSI8Iit0KGUpK0UubWFwLmNhbGwoZS5hdHRyaWJ1dGVzLHIpLmpvaW4oIiIpKyI+In1mdW5jdGlvbiB1KGUpe3MrPSI8LyIrdChlKSsiPiJ9ZnVuY3Rpb24gYyhlKXsoInN0YXJ0Ij09PWUuZXZlbnQ/bzp1KShlLm5vZGUpfWZvcih2YXIgbD0wLHM9IiIsZj1bXTtlLmxlbmd0aHx8ci5sZW5ndGg7KXt2YXIgZz1pKCk7aWYocys9bihhLnN1YnN0cmluZyhsLGdbMF0ub2Zmc2V0KSksbD1nWzBdLm9mZnNldCxnPT09ZSl7Zi5yZXZlcnNlKCkuZm9yRWFjaCh1KTtkbyBjKGcuc3BsaWNlKDAsMSlbMF0pLGc9aSgpO3doaWxlKGc9PT1lJiZnLmxlbmd0aCYmZ1swXS5vZmZzZXQ9PT1sKTtmLnJldmVyc2UoKS5mb3JFYWNoKG8pfWVsc2Uic3RhcnQiPT09Z1swXS5ldmVudD9mLnB1c2goZ1swXS5ub2RlKTpmLnBvcCgpLGMoZy5zcGxpY2UoMCwxKVswXSl9cmV0dXJuIHMrbihhLnN1YnN0cihsKSl9ZnVuY3Rpb24gbChlKXtyZXR1cm4gZS52JiYhZS5jYWNoZWRfdmFyaWFudHMmJihlLmNhY2hlZF92YXJpYW50cz1lLnYubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBvKGUse3Y6bnVsbH0sbil9KSksZS5jYWNoZWRfdmFyaWFudHN8fGUuZVcmJltvKGUpXXx8W2VdfWZ1bmN0aW9uIHMoZSl7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZSYmZS5zb3VyY2V8fGV9ZnVuY3Rpb24gdCh0LHIpe3JldHVybiBuZXcgUmVnRXhwKG4odCksIm0iKyhlLmNJPyJpIjoiIikrKHI/ImciOiIiKSl9ZnVuY3Rpb24gcihhLGkpe2lmKCFhLmNvbXBpbGVkKXtpZihhLmNvbXBpbGVkPSEwLGEuaz1hLmt8fGEuYkssYS5rKXt2YXIgbz17fSx1PWZ1bmN0aW9uKG4sdCl7ZS5jSSYmKHQ9dC50b0xvd2VyQ2FzZSgpKSx0LnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLnNwbGl0KCJ8Iik7b1t0WzBdXT1bbix0WzFdP051bWJlcih0WzFdKToxXX0pfTsic3RyaW5nIj09dHlwZW9mIGEuaz91KCJrZXl3b3JkIixhLmspOngoYS5rKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3UoZSxhLmtbZV0pfSksYS5rPW99YS5sUj10KGEubHx8L1x3Ky8sITApLGkmJihhLmJLJiYoYS5iPSJcXGIoIithLmJLLnNwbGl0KCIgIikuam9pbigifCIpKyIpXFxiIiksYS5ifHwoYS5iPS9cQnxcYi8pLGEuYlI9dChhLmIpLGEuZXx8YS5lV3x8KGEuZT0vXEJ8XGIvKSxhLmUmJihhLmVSPXQoYS5lKSksYS50RT1uKGEuZSl8fCIiLGEuZVcmJmkudEUmJihhLnRFKz0oYS5lPyJ8IjoiIikraS50RSkpLGEuaSYmKGEuaVI9dChhLmkpKSxudWxsPT1hLnImJihhLnI9MSksYS5jfHwoYS5jPVtdKSxhLmM9QXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhLmMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBsKCJzZWxmIj09PWU/YTplKX0pKSxhLmMuZm9yRWFjaChmdW5jdGlvbihlKXtyKGUsYSl9KSxhLnN0YXJ0cyYmcihhLnN0YXJ0cyxpKTt2YXIgYz1hLmMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJLPyJcXC4/KCIrZS5iKyIpXFwuPyI6ZS5ifSkuY29uY2F0KFthLnRFLGEuaV0pLm1hcChuKS5maWx0ZXIoQm9vbGVhbik7YS50PWMubGVuZ3RoP3QoYy5qb2luKCJ8IiksITApOntleGVjOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fX19cihlKX1mdW5jdGlvbiBmKGUsdCxhLGkpe2Z1bmN0aW9uIG8oZSxuKXt2YXIgdCxhO2Zvcih0PTAsYT1uLmMubGVuZ3RoO2E+dDt0Kys
<link href="data:text/css,%2Epagedtable%20%7B%0Aoverflow%3A%20auto%3B%0Apadding%2Dleft%3A%208px%3B%0Apadding%2Dright%3A%208px%3B%0A%7D%0A%2Epagedtable%2Dwrapper%20%7B%0Aborder%3A%201px%20solid%20%23ccc%3B%0Aborder%2Dradius%3A%204px%3B%0Amargin%2Dbottom%3A%2010px%3B%0A%7D%0A%2Epagedtable%20table%20%7B%0Awidth%3A%20100%25%3B%0Amax%2Dwidth%3A%20100%25%3B%0Amargin%3A%200%3B%0A%7D%0A%2Epagedtable%20th%20%7B%0Apadding%3A%200%205px%200%205px%3B%0Aborder%3A%20none%3B%0Aborder%2Dbottom%3A%202px%20solid%20%23dddddd%3B%0Amin%2Dwidth%3A%2045px%3B%0A%7D%0A%2Epagedtable%2Dempty%20th%20%7B%0Adisplay%3A%20none%3B%0A%7D%0A%2Epagedtable%20td%20%7B%0Apadding%3A%200%204px%200%204px%3B%0A%7D%0A%2Epagedtable%20%2Eeven%20%7B%0Abackground%2Dcolor%3A%20rgba%28140%2C%20140%2C%20140%2C%200%2E1%29%3B%0A%7D%0A%2Epagedtable%2Dpadding%2Dcol%20%7B%0Adisplay%3A%20none%3B%0A%7D%0A%2Epagedtable%20a%20%7B%0A%2Dwebkit%2Dtouch%2Dcallout%3A%20none%3B%0A%2Dwebkit%2Duser%2Dselect%3A%20none%3B%0A%2Dkhtml%2Duser%2Dselect%3A%20none%3B%0A%2Dmoz%2Duser%2Dselect%3A%20none%3B%0A%2Dms%2Duser%2Dselect%3A%20none%3B%0Auser%2Dselect%3A%20none%3B%0A%7D%0A%2Epagedtable%2Dindex%2Dnav%20%7B%0Acursor%3A%20pointer%3B%0Apadding%3A%200%205px%200%205px%3B%0Afloat%3A%20right%3B%0Aborder%3A%200%3B%0A%7D%0A%2Epagedtable%2Dindex%2Dnav%2Ddisabled%20%7B%0Acursor%3A%20default%3B%0Atext%2Ddecoration%3A%20none%3B%0Acolor%3A%20%23999%3B%0A%7D%0Aa%2Epagedtable%2Dindex%2Dnav%2Ddisabled%3Ahover%20%7B%0Atext%2Ddecoration%3A%20none%3B%0Acolor%3A%20%23999%3B%0A%7D%0A%2Epagedtable%2Dindexes%20%7B%0Acursor%3A%20pointer%3B%0Afloat%3A%20right%3B%0Aborder%3A%200%3B%0A%7D%0A%2Epagedtable%2Dindex%2Dcurrent%20%7B%0Acursor%3A%20default%3B%0Atext%2Ddecoration%3A%20none%3B%0Afont%2Dweight%3A%20bold%3B%0Acolor%3A%20%23333%3B%0Aborder%3A%200%3B%0A%7D%0Aa%2Epagedtable%2Dindex%2Dcurrent%3Ahover%20%7B%0Atext%2Ddecoration%3A%20none%3B%0Afont%2Dweight%3A%20bold%3B%0Acolor%3A%20%23333%3B%0A%7D%0A%2Epagedtable%2Dindex%20%7B%0Awidth%3A%2030px%3B%0Adisplay%3A%20inline%2Dblock%3B%0Atext%2Dalign%3A%20center%3B%0Aborder%3A%200%3B%0A%7D%0A%2Epagedtable%2Dindex%2Dseparator%2Dleft%20%7B%0Adisplay%3A%20inline%2Dblock%3B%0Acolor%3A%20%23333%3B%0Afont%2Dsize%3A%209px%3B%0Apadding%3A%200%200%200%200%3B%0Acursor%3A%20default%3B%0A%7D%0A%2Epagedtable%2Dindex%2Dseparator%2Dright%20%7B%0Adisplay%3A%20inline%2Dblock%3B%0Acolor%3A%20%23333%3B%0Afont%2Dsize%3A%209px%3B%0Apadding%3A%200%204px%200%200%3B%0Acursor%3A%20default%3B%0A%7D%0A%2Epagedtable%2Dfooter%20%7B%0Apadding%2Dtop%3A%204px%3B%0Apadding%2Dbottom%3A%205px%3B%0A%7D%0A%2Epagedtable%2Dnot%2Dempty%20%2Epagedtable%2Dfooter%20%7B%0Aborder%2Dtop%3A%202px%20solid%20%23dddddd%3B%0A%7D%0A%2Epagedtable%2Dinfo%20%7B%0Aoverflow%3A%20hidden%3B%0Acolor%3A%20%23999%3B%0Awhite%2Dspace%3A%20nowrap%3B%0Atext%2Doverflow%3A%20ellipsis%3B%0A%7D%0A%2Epagedtable%2Dheader%2Dname%20%7B%0Aoverflow%3A%20hidden%3B%0Atext%2Doverflow%3A%20ellipsis%3B%0A%7D%0A%2Epagedtable%2Dheader%2Dtype%20%7B%0Acolor%3A%20%23999%3B%0Afont%2Dweight%3A%20400%3B%0A%7D%0A%2Epagedtable%2Dna%2Dcell%20%7B%0Afont%2Dstyle%3A%20italic%3B%0Aopacity%3A%200%2E3%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,Ly8gUHJvZHVjdGlvbiBzdGVwcyBvZiBFQ01BLTI2MiwgRWRpdGlvbiA1LCAxNS40LjQuMTgKLy8gUmVmZXJlbmNlOiBodHRwOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjQuNC4xOAppZiAoIUFycmF5LnByb3RvdHlwZS5mb3JFYWNoKSB7CgogIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHsKCiAgICB2YXIgVCwgazsKCiAgICBpZiAodGhpcyA9PT0gbnVsbCkgewogICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCcgdGhpcyBpcyBudWxsIG9yIG5vdCBkZWZpbmVkJyk7CiAgICB9CgogICAgLy8gMS4gTGV0IE8gYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRvT2JqZWN0KCkgcGFzc2luZyB0aGUKICAgIC8vIHx0aGlzfCB2YWx1ZSBhcyB0aGUgYXJndW1lbnQuCiAgICB2YXIgTyA9IE9iamVjdCh0aGlzKTsKCiAgICAvLyAyLiBMZXQgbGVuVmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBHZXQoKSBpbnRlcm5hbAogICAgLy8gbWV0aG9kIG9mIE8gd2l0aCB0aGUgYXJndW1lbnQgImxlbmd0aCIuCiAgICAvLyAzLiBMZXQgbGVuIGJlIHRvVWludDMyKGxlblZhbHVlKS4KICAgIHZhciBsZW4gPSBPLmxlbmd0aCA+Pj4gMDsKCiAgICAvLyA0LiBJZiBpc0NhbGxhYmxlKGNhbGxiYWNrKSBpcyBmYWxzZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgLy8gU2VlOiBodHRwOi8vZXM1LmdpdGh1Yi5jb20vI3g5LjExCiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKSB7CiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoY2FsbGJhY2sgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7CiAgICB9CgogICAgLy8gNS4gSWYgdGhpc0FyZyB3YXMgc3VwcGxpZWQsIGxldCBUIGJlIHRoaXNBcmc7IGVsc2UgbGV0CiAgICAvLyBUIGJlIHVuZGVmaW5lZC4KICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkgewogICAgICBUID0gdGhpc0FyZzsKICAgIH0KCiAgICAvLyA2LiBMZXQgayBiZSAwCiAgICBrID0gMDsKCiAgICAvLyA3LiBSZXBlYXQsIHdoaWxlIGsgPCBsZW4KICAgIHdoaWxlIChrIDwgbGVuKSB7CgogICAgICB2YXIga1ZhbHVlOwoKICAgICAgLy8gYS4gTGV0IFBrIGJlIFRvU3RyaW5nKGspLgogICAgICAvLyAgICBUaGlzIGlzIGltcGxpY2l0IGZvciBMSFMgb3BlcmFuZHMgb2YgdGhlIGluIG9wZXJhdG9yCiAgICAgIC8vIGIuIExldCBrUHJlc2VudCBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIEhhc1Byb3BlcnR5CiAgICAgIC8vICAgIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggYXJndW1lbnQgUGsuCiAgICAgIC8vICAgIFRoaXMgc3RlcCBjYW4gYmUgY29tYmluZWQgd2l0aCBjCiAgICAgIC8vIGMuIElmIGtQcmVzZW50IGlzIHRydWUsIHRoZW4KICAgICAgaWYgKGsgaW4gTykgewoKICAgICAgICAvLyBpLiBMZXQga1ZhbHVlIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgR2V0IGludGVybmFsCiAgICAgICAgLy8gbWV0aG9kIG9mIE8gd2l0aCBhcmd1bWVudCBQay4KICAgICAgICBrVmFsdWUgPSBPW2tdOwoKICAgICAgICAvLyBpaS4gQ2FsbCB0aGUgQ2FsbCBpbnRlcm5hbCBtZXRob2Qgb2YgY2FsbGJhY2sgd2l0aCBUIGFzCiAgICAgICAgLy8gdGhlIHRoaXMgdmFsdWUgYW5kIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyBrVmFsdWUsIGssIGFuZCBPLgogICAgICAgIGNhbGxiYWNrLmNhbGwoVCwga1ZhbHVlLCBrLCBPKTsKICAgICAgfQogICAgICAvLyBkLiBJbmNyZWFzZSBrIGJ5IDEuCiAgICAgIGsrKzsKICAgIH0KICAgIC8vIDguIHJldHVybiB1bmRlZmluZWQKICB9Owp9CgovLyBQcm9kdWN0aW9uIHN0ZXBzIG9mIEVDTUEtMjYyLCBFZGl0aW9uIDUsIDE1LjQuNC4xOQovLyBSZWZlcmVuY2U6IGh0dHA6Ly9lczUuZ2l0aHViLmlvLyN4MTUuNC40LjE5CmlmICghQXJyYXkucHJvdG90eXBlLm1hcCkgewoKICBBcnJheS5wcm90b3R5cGUubWFwID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHsKCiAgICB2YXIgVCwgQSwgazsKCiAgICBpZiAodGhpcyA9PSBudWxsKSB7CiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJyB0aGlzIGlzIG51bGwgb3Igbm90IGRlZmluZWQnKTsKICAgIH0KCiAgICAvLyAxLiBMZXQgTyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9PYmplY3QgcGFzc2luZyB0aGUgfHRoaXN8CiAgICAvLyAgICB2YWx1ZSBhcyB0aGUgYXJndW1lbnQuCiAgICB2YXIgTyA9IE9iamVjdCh0aGlzKTsKCiAgICAvLyAyLiBMZXQgbGVuVmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBHZXQgaW50ZXJuYWwKICAgIC8vICAgIG1ldGhvZCBvZiBPIHdpdGggdGhlIGFyZ3VtZW50ICJsZW5ndGgiLgogICAgLy8gMy4gTGV0IGxlbiBiZSBUb1VpbnQzMihsZW5WYWx1ZSkuCiAgICB2YXIgbGVuID0gTy5sZW5ndGggPj4+IDA7CgogICAgLy8gNC4gSWYgSXNDYWxsYWJsZShjYWxsYmFjaykgaXMgZmFsc2UsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgIC8vIFNlZTogaHR0cDovL2VzNS5naXRodWIuY29tLyN4OS4xMQogICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykgewogICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGNhbGxiYWNrICsgJyBpcyBub3QgYSBmdW5jdGlvbicpOwogICAgfQoKICAgIC8vIDUuIElmIHRoaXNBcmcgd2FzIHN1cHBsaWVkLCBsZXQgVCBiZSB0aGlzQXJnOyBlbHNlIGxldCBUIGJlIHVuZGVmaW5lZC4KICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkgewogICAgICBUID0gdGhpc0FyZzsKICAgIH0KCiAgICAvLyA2LiBMZXQgQSBiZSBhIG5ldyBhcnJheSBjcmVhdGVkIGFzIGlmIGJ5IHRoZSBleHByZXNzaW9uIG5ldyBBcnJheShsZW4pCiAgICAvLyAgICB3aGVyZSBBcnJheSBpcyB0aGUgc3RhbmRhcmQgYnVpbHQtaW4gY29uc3RydWN0b3Igd2l0aCB0aGF0IG5hbWUgYW5kCiAgICAvLyAgICBsZW4gaXMgdGhlIHZhbHVlIG9mIGxlbi4KICAgIEEgPSBuZXcgQXJyYXkobGVuKTsKCiAgICAvLyA3LiBMZXQgayBiZSAwCiAgICBrID0gMDsKCiAgICAvLyA4LiB
<script src="data:application/javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEFkZCBhIG1ldGhvZCB0byBkZWxlZ2F0b3IgdGhhdCwgd2hlbiBpbnZva2VkLCBjYWxscwogIC8vIGRlbGVnYXRlZS5tZXRob2ROYW1lLiBJZiB0aGVyZSBpcyBubyBzdWNoIG1ldGhvZCBvbgogIC8vIHRoZSBkZWxlZ2F0ZWUsIGJ1dCB0aGVyZSB3YXMgb25lIG9uIGRlbGVnYXRvciBiZWZvcmUKICAvLyBkZWxlZ2F0ZU1ldGhvZCB3YXMgY2FsbGVkLCB0aGVuIHRoZSBvcmlnaW5hbCB2ZXJzaW9uCiAgLy8gaXMgaW52b2tlZCBpbnN0ZWFkLgogIC8vIEZvciBleGFtcGxlOgogIC8vCiAgLy8gdmFyIGEgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2ExJyk7IH0KICAvLyAgIG1ldGhvZDI6IGZ1bmN0aW9
<link href="data:text/css,%2Eleaflet%2Dpane%2C%2Eleaflet%2Dtile%2C%2Eleaflet%2Dmarker%2Dicon%2C%2Eleaflet%2Dmarker%2Dshadow%2C%2Eleaflet%2Dtile%2Dcontainer%2C%2Eleaflet%2Dpane%20%3E%20svg%2C%2Eleaflet%2Dpane%20%3E%20canvas%2C%2Eleaflet%2Dzoom%2Dbox%2C%2Eleaflet%2Dimage%2Dlayer%2C%2Eleaflet%2Dlayer%20%7Bposition%3A%20absolute%3Bleft%3A%200%3Btop%3A%200%3B%7D%2Eleaflet%2Dcontainer%20%7Boverflow%3A%20hidden%3B%7D%2Eleaflet%2Dtile%2C%2Eleaflet%2Dmarker%2Dicon%2C%2Eleaflet%2Dmarker%2Dshadow%20%7B%2Dwebkit%2Duser%2Dselect%3A%20none%3B%2Dmoz%2Duser%2Dselect%3A%20none%3Buser%2Dselect%3A%20none%3B%2Dwebkit%2Duser%2Ddrag%3A%20none%3B%7D%2Eleaflet%2Dsafari%20%2Eleaflet%2Dtile%20%7Bimage%2Drendering%3A%20%2Dwebkit%2Doptimize%2Dcontrast%3B%7D%2Eleaflet%2Dsafari%20%2Eleaflet%2Dtile%2Dcontainer%20%7Bwidth%3A%201600px%3Bheight%3A%201600px%3B%2Dwebkit%2Dtransform%2Dorigin%3A%200%200%3B%7D%2Eleaflet%2Dmarker%2Dicon%2C%2Eleaflet%2Dmarker%2Dshadow%20%7Bdisplay%3A%20block%3B%7D%2Eleaflet%2Dcontainer%20%2Eleaflet%2Doverlay%2Dpane%20svg%2C%2Eleaflet%2Dcontainer%20%2Eleaflet%2Dmarker%2Dpane%20img%2C%2Eleaflet%2Dcontainer%20%2Eleaflet%2Dshadow%2Dpane%20img%2C%2Eleaflet%2Dcontainer%20%2Eleaflet%2Dtile%2Dpane%20img%2C%2Eleaflet%2Dcontainer%20img%2Eleaflet%2Dimage%2Dlayer%20%7Bmax%2Dwidth%3A%20none%20%21important%3Bmax%2Dheight%3A%20none%20%21important%3B%7D%2Eleaflet%2Dcontainer%2Eleaflet%2Dtouch%2Dzoom%20%7B%2Dms%2Dtouch%2Daction%3A%20pan%2Dx%20pan%2Dy%3Btouch%2Daction%3A%20pan%2Dx%20pan%2Dy%3B%7D%2Eleaflet%2Dcontainer%2Eleaflet%2Dtouch%2Ddrag%20%7B%2Dms%2Dtouch%2Daction%3A%20pinch%2Dzoom%3Btouch%2Daction%3A%20none%3Btouch%2Daction%3A%20pinch%2Dzoom%3B%7D%2Eleaflet%2Dcontainer%2Eleaflet%2Dtouch%2Ddrag%2Eleaflet%2Dtouch%2Dzoom%20%7B%2Dms%2Dtouch%2Daction%3A%20none%3Btouch%2Daction%3A%20none%3B%7D%2Eleaflet%2Dcontainer%20%7B%2Dwebkit%2Dtap%2Dhighlight%2Dcolor%3A%20transparent%3B%7D%2Eleaflet%2Dcontainer%20a%20%7B%2Dwebkit%2Dtap%2Dhighlight%2Dcolor%3A%20rgba%2851%2C%20181%2C%20229%2C%200%2E4%29%3B%7D%2Eleaflet%2Dtile%20%7Bfilter%3A%20inherit%3Bvisibility%3A%20hidden%3B%7D%2Eleaflet%2Dtile%2Dloaded%20%7Bvisibility%3A%20inherit%3B%7D%2Eleaflet%2Dzoom%2Dbox%20%7Bwidth%3A%200%3Bheight%3A%200%3B%2Dmoz%2Dbox%2Dsizing%3A%20border%2Dbox%3Bbox%2Dsizing%3A%20border%2Dbox%3Bz%2Dindex%3A%20800%3B%7D%2Eleaflet%2Doverlay%2Dpane%20svg%20%7B%2Dmoz%2Duser%2Dselect%3A%20none%3B%7D%2Eleaflet%2Dpane%20%7B%20z%2Dindex%3A%20400%3B%20%7D%2Eleaflet%2Dtile%2Dpane%20%7B%20z%2Dindex%3A%20200%3B%20%7D%2Eleaflet%2Doverlay%2Dpane%20%7B%20z%2Dindex%3A%20400%3B%20%7D%2Eleaflet%2Dshadow%2Dpane%20%7B%20z%2Dindex%3A%20500%3B%20%7D%2Eleaflet%2Dmarker%2Dpane%20%7B%20z%2Dindex%3A%20600%3B%20%7D%2Eleaflet%2Dtooltip%2Dpane%20%7B%20z%2Dindex%3A%20650%3B%20%7D%2Eleaflet%2Dpopup%2Dpane%20%7B%20z%2Dindex%3A%20700%3B%20%7D%2Eleaflet%2Dmap%2Dpane%20canvas%20%7B%20z%2Dindex%3A%20100%3B%20%7D%2Eleaflet%2Dmap%2Dpane%20svg%20%7B%20z%2Dindex%3A%20200%3B%20%7D%2Eleaflet%2Dvml%2Dshape%20%7Bwidth%3A%201px%3Bheight%3A%201px%3B%7D%2Elvml%20%7Bbehavior%3A%20url%28%23default%23VML%29%3Bdisplay%3A%20inline%2Dblock%3Bposition%3A%20absolute%3B%7D%2Eleaflet%2Dcontrol%20%7Bposition%3A%20relative%3Bz%2Dindex%3A%20800%3Bpointer%2Devents%3A%20visiblePainted%3B%20pointer%2Devents%3A%20auto%3B%7D%2Eleaflet%2Dtop%2C%2Eleaflet%2Dbottom%20%7Bposition%3A%20absolute%3Bz%2Dindex%3A%201000%3Bpointer%2Devents%3A%20none%3B%7D%2Eleaflet%2Dtop%20%7Btop%3A%200%3B%7D%2Eleaflet%2Dright%20%7Bright%3A%200%3B%7D%2Eleaflet%2Dbottom%20%7Bbottom%3A%200%3B%7D%2Eleaflet%2Dleft%20%7Bleft%3A%200%3B%7D%2Eleaflet%2Dcontrol%20%7Bfloat%3A%20left%3Bclear%3A%20both%3B%7D%2Eleaflet%2Dright%20%2Eleaflet%2Dcontrol%20%7Bfloat%3A%20right%3B%7D%2Eleaflet%2Dtop%20%2Eleaflet%2Dcontrol%20%7Bmargin%2Dtop%3A%2010px%3B%7D%2Eleaflet%2Dbottom%20%2Eleaflet%2Dcontrol%20%7Bmargin%2Dbottom%3A%2010px%3B%7D%2Eleaflet%2Dleft%20%2Eleaflet%2Dcontrol%20%7Bmargin%2Dleft%3A%2010px%3B%7D%2Eleaflet%2Dright%20%2Eleaflet%2Dcontrol%20%7Bmargin%2Dright%3A%2010px%3B%7D%2Eleaflet%2Dfade%2Danim%20%2Eleaflet%2Dtile%20%7Bwill%2Dchange%3A%20opacity%3B%7D%2Eleaflet%2Dfade%2Danim%20%
<script src="data:application/javascript;base64,LyogQHByZXNlcnZlCiAqIExlYWZsZXQgMS4zLjErRGV0YWNoZWQ6IGJhNmY5N2ZmZjg2NDdlNzI0ZTRkZmU2NmQyZWQ3ZGExMWY5MDg5ODkuYmE2Zjk3ZiwgYSBKUyBsaWJyYXJ5IGZvciBpbnRlcmFjdGl2ZSBtYXBzLiBodHRwczovL2xlYWZsZXRqcy5jb20KICogKGMpIDIwMTAtMjAxNyBWbGFkaW1pciBBZ2Fmb25raW4sIChjKSAyMDEwLTIwMTEgQ2xvdWRNYWRlCiAqLwohZnVuY3Rpb24odCxpKXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlP2koZXhwb3J0cyk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJleHBvcnRzIl0saSk6aSh0Lkw9e30pfSh0aGlzLGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKHQpe3ZhciBpLGUsbixvO2ZvcihlPTEsbj1hcmd1bWVudHMubGVuZ3RoO2U8bjtlKyspe289YXJndW1lbnRzW2VdO2ZvcihpIGluIG8pdFtpXT1vW2ldfXJldHVybiB0fWZ1bmN0aW9uIGUodCxpKXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2U7aWYodC5iaW5kKXJldHVybiB0LmJpbmQuYXBwbHkodCxlLmNhbGwoYXJndW1lbnRzLDEpKTt2YXIgbj1lLmNhbGwoYXJndW1lbnRzLDIpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KGksbi5sZW5ndGg/bi5jb25jYXQoZS5jYWxsKGFyZ3VtZW50cykpOmFyZ3VtZW50cyl9fWZ1bmN0aW9uIG4odCl7cmV0dXJuIHQuX2xlYWZsZXRfaWQ9dC5fbGVhZmxldF9pZHx8Kyt0aSx0Ll9sZWFmbGV0X2lkfWZ1bmN0aW9uIG8odCxpLGUpe3ZhciBuLG8scyxyO3JldHVybiByPWZ1bmN0aW9uKCl7bj0hMSxvJiYocy5hcHBseShlLG8pLG89ITEpfSxzPWZ1bmN0aW9uKCl7bj9vPWFyZ3VtZW50czoodC5hcHBseShlLGFyZ3VtZW50cyksc2V0VGltZW91dChyLGkpLG49ITApfX1mdW5jdGlvbiBzKHQsaSxlKXt2YXIgbj1pWzFdLG89aVswXSxzPW4tbztyZXR1cm4gdD09PW4mJmU/dDooKHQtbyklcytzKSVzK299ZnVuY3Rpb24gcigpe3JldHVybiExfWZ1bmN0aW9uIGEodCxpKXt2YXIgZT1NYXRoLnBvdygxMCx2b2lkIDA9PT1pPzY6aSk7cmV0dXJuIE1hdGgucm91bmQodCplKS9lfWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQudHJpbT90LnRyaW0oKTp0LnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX1mdW5jdGlvbiB1KHQpe3JldHVybiBoKHQpLnNwbGl0KC9ccysvKX1mdW5jdGlvbiBsKHQsaSl7dC5oYXNPd25Qcm9wZXJ0eSgib3B0aW9ucyIpfHwodC5vcHRpb25zPXQub3B0aW9ucz9RdCh0Lm9wdGlvbnMpOnt9KTtmb3IodmFyIGUgaW4gaSl0Lm9wdGlvbnNbZV09aVtlXTtyZXR1cm4gdC5vcHRpb25zfWZ1bmN0aW9uIGModCxpLGUpe3ZhciBuPVtdO2Zvcih2YXIgbyBpbiB0KW4ucHVzaChlbmNvZGVVUklDb21wb25lbnQoZT9vLnRvVXBwZXJDYXNlKCk6bykrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0W29dKSk7cmV0dXJuKGkmJi0xIT09aS5pbmRleE9mKCI/Iik/IiYiOiI/Iikrbi5qb2luKCImIil9ZnVuY3Rpb24gXyh0LGkpe3JldHVybiB0LnJlcGxhY2UoaWksZnVuY3Rpb24odCxlKXt2YXIgbj1pW2VdO2lmKHZvaWQgMD09PW4pdGhyb3cgbmV3IEVycm9yKCJObyB2YWx1ZSBwcm92aWRlZCBmb3IgdmFyaWFibGUgIit0KTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbiYmKG49bihpKSksbn0pfWZ1bmN0aW9uIGQodCxpKXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKylpZih0W2VdPT09aSlyZXR1cm4gZTtyZXR1cm4tMX1mdW5jdGlvbiBwKHQpe3JldHVybiB3aW5kb3dbIndlYmtpdCIrdF18fHdpbmRvd1sibW96Iit0XXx8d2luZG93WyJtcyIrdF19ZnVuY3Rpb24gbSh0KXt2YXIgaT0rbmV3IERhdGUsZT1NYXRoLm1heCgwLDE2LShpLW9pKSk7cmV0dXJuIG9pPWkrZSx3aW5kb3cuc2V0VGltZW91dCh0LGUpfWZ1bmN0aW9uIGYodCxpLG4pe2lmKCFufHxzaSE9PW0pcmV0dXJuIHNpLmNhbGwod2luZG93LGUodCxpKSk7dC5jYWxsKGkpfWZ1bmN0aW9uIGcodCl7dCYmcmkuY2FsbCh3aW5kb3csdCl9ZnVuY3Rpb24gdigpe31mdW5jdGlvbiB5KHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgTCYmTCYmTC5NaXhpbil7dD1laSh0KT90Olt0XTtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKyl0W2ldPT09TC5NaXhpbi5FdmVudHMmJmNvbnNvbGUud2FybigiRGVwcmVjYXRlZCBpbmNsdWRlIG9mIEwuTWl4aW4uRXZlbnRzOiB0aGlzIHByb3BlcnR5IHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgcmVsZWFzZXMsIHBsZWFzZSBpbmhlcml0IGZyb20gTC5FdmVudGVkIGluc3RlYWQuIiwobmV3IEVycm9yKS5zdGFjayl9fWZ1bmN0aW9uIHgodCxpLGUpe3RoaXMueD1lP01hdGgucm91bmQodCk6dCx0aGlzLnk9ZT9NYXRoLnJvdW5kKGkpOml9ZnVuY3Rpb24gdyh0LGksZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiB4P3Q6ZWkodCk/bmV3IHgodFswXSx0WzFdKTp2b2lkIDA9PT10fHxudWxsPT09dD90OiJvYmplY3QiPT10eXBlb2YgdCYmIngiaW4gdCYmInkiaW4gdD9uZXcgeCh0LngsdC55KTpuZXcgeCh0LGksZSl9ZnVuY3Rpb24gUCh0LGkpe2lmKHQpZm9yKHZhciBlPWk/W3QsaV06dCxuPTAsbz1lLmxlbmd0aDtuPG87bisrKXRoaXMuZXh0ZW5kKGVbbl0pfWZ1bmN0aW9uIGIodCxpKXtyZXR1cm4hdHx8dCBpbnN0YW5jZW9mIFA/dDpuZXcgUCh0LGkpfWZ1bmN0aW9uIFQodCxpKXtpZih0KWZvcih2YXIgZT1pP1t0LGldOnQsbj0wLG89ZS5sZW5ndGg7bjxvO24rKyl0aGlzLmV4dGVuZChlW25dKX1mdW5jdGlvbiB6KHQsaSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBUP3Q6bmV3IFQodCxpKX1mdW5jdGlvbiBNKHQsaSxlKXtpZihpc05hTih0KXx8aXNOYU4oaSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIExhdExuZyBvYmplY3Q6ICgiK3QrIiwgIitpKyIpIik7dGhpcy5sYXQ9K3QsdGhpcy5sbmc9K2ksdm9pZCAwIT09ZSYmKHRoaXMuYWx0PStlKX1mdW5jdGlvbiBDKHQsaSxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIE0/dDplaSh0KSYmIm9iamVjdCIhPXR5cGVvZiB0WzBdPzM9PT10Lmxlbmd0aD9uZXc
<link href="data:text/css,%0Aimg%2Eleaflet%2Dtile%20%7B%0Apadding%3A%200%3B%0Amargin%3A%200%3B%0Aborder%2Dradius%3A%200%3B%0Aborder%3A%20none%3B%0A%7D%0A%2Einfo%20%7B%0Apadding%3A%206px%208px%3B%0Afont%3A%2014px%2F16px%20Arial%2C%20Helvetica%2C%20sans%2Dserif%3B%0Abackground%3A%20white%3B%0Abackground%3A%20rgba%28255%2C255%2C255%2C0%2E8%29%3B%0Abox%2Dshadow%3A%200%200%2015px%20rgba%280%2C0%2C0%2C0%2E2%29%3B%0Aborder%2Dradius%3A%205px%3B%0A%7D%0A%2Elegend%20%7B%0Aline%2Dheight%3A%2018px%3B%0Acolor%3A%20%23555%3B%0A%7D%0A%2Elegend%20svg%20text%20%7B%0Afill%3A%20%23555%3B%0A%7D%0A%2Elegend%20svg%20line%20%7B%0Astroke%3A%20%23555%3B%0A%7D%0A%2Elegend%20i%20%7B%0Awidth%3A%2018px%3B%0Aheight%3A%2018px%3B%0Amargin%2Dright%3A%204px%3B%0Aopacity%3A%200%2E7%3B%0Adisplay%3A%20inline%2Dblock%3B%0Avertical%2Dalign%3A%20top%3B%0A%0Azoom%3A%201%3B%0A%2Adisplay%3A%20inline%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,IWZ1bmN0aW9uKHQscyl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1zKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUocyk6dC5wcm9qND1zKCl9KHRoaXMsZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gayh0LHMpe2lmKHRbc10pcmV0dXJuIHRbc107Zm9yKHZhciBpLGE9T2JqZWN0LmtleXModCksaD1zLnRvTG93ZXJDYXNlKCkucmVwbGFjZShILCIiKSxlPS0xOysrZTxhLmxlbmd0aDspaWYoKGk9YVtlXSkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKEgsIiIpPT09aClyZXR1cm4gdFtpXX1mdW5jdGlvbiBlKHQpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHN0cmluZyIpO3RoaXMudGV4dD10LnRyaW0oKSx0aGlzLmxldmVsPTAsdGhpcy5wbGFjZT0wLHRoaXMucm9vdD1udWxsLHRoaXMuc3RhY2s9W10sdGhpcy5jdXJyZW50T2JqZWN0PW51bGwsdGhpcy5zdGF0ZT1LfWZ1bmN0aW9uIGgodCxzLGkpe0FycmF5LmlzQXJyYXkocykmJihpLnVuc2hpZnQocykscz1udWxsKTt2YXIgYT1zP3t9OnQsaD1pLnJlZHVjZShmdW5jdGlvbih0LHMpe3JldHVybiBuKHMsdCksdH0sYSk7cyYmKHRbc109aCl9ZnVuY3Rpb24gbih0LHMpe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBpLGE9dC5zaGlmdCgpO2lmKCJQQVJBTUVURVIiPT09YSYmKGE9dC5zaGlmdCgpKSwxPT09dC5sZW5ndGgpcmV0dXJuIEFycmF5LmlzQXJyYXkodFswXSk/KHNbYV09e30sdm9pZCBuKHRbMF0sc1thXSkpOnZvaWQoc1thXT10WzBdKTtpZih0Lmxlbmd0aClpZigiVE9XR1M4NCIhPT1hKXtpZigiQVhJUyI9PT1hKXJldHVybiBhIGluIHN8fChzW2FdPVtdKSx2b2lkIHNbYV0ucHVzaCh0KTtzd2l0Y2goQXJyYXkuaXNBcnJheShhKXx8KHNbYV09e30pLGEpe2Nhc2UiVU5JVCI6Y2FzZSJQUklNRU0iOmNhc2UiVkVSVF9EQVRVTSI6cmV0dXJuIHNbYV09e25hbWU6dFswXS50b0xvd2VyQ2FzZSgpLGNvbnZlcnQ6dFsxXX0sdm9pZCgzPT09dC5sZW5ndGgmJm4odFsyXSxzW2FdKSk7Y2FzZSJTUEhFUk9JRCI6Y2FzZSJFTExJUFNPSUQiOnJldHVybiBzW2FdPXtuYW1lOnRbMF0sYTp0WzFdLHJmOnRbMl19LHZvaWQoND09PXQubGVuZ3RoJiZuKHRbM10sc1thXSkpO2Nhc2UiUFJPSkVDVEVEQ1JTIjpjYXNlIlBST0pDUlMiOmNhc2UiR0VPR0NTIjpjYXNlIkdFT0NDUyI6Y2FzZSJQUk9KQ1MiOmNhc2UiTE9DQUxfQ1MiOmNhc2UiR0VPRENSUyI6Y2FzZSJHRU9ERVRJQ0NSUyI6Y2FzZSJHRU9ERVRJQ0RBVFVNIjpjYXNlIkVEQVRVTSI6Y2FzZSJFTkdJTkVFUklOR0RBVFVNIjpjYXNlIlZFUlRfQ1MiOmNhc2UiVkVSVENSUyI6Y2FzZSJWRVJUSUNBTENSUyI6Y2FzZSJDT01QRF9DUyI6Y2FzZSJDT01QT1VORENSUyI6Y2FzZSJFTkdJTkVFUklOR0NSUyI6Y2FzZSJFTkdDUlMiOmNhc2UiRklUVEVEX0NTIjpjYXNlIkxPQ0FMX0RBVFVNIjpjYXNlIkRBVFVNIjpyZXR1cm4gdFswXT1bIm5hbWUiLHRbMF1dLHZvaWQgaChzLGEsdCk7ZGVmYXVsdDpmb3IoaT0tMTsrK2k8dC5sZW5ndGg7KWlmKCFBcnJheS5pc0FycmF5KHRbaV0pKXJldHVybiBuKHQsc1thXSk7cmV0dXJuIGgocyxhLHQpfX1lbHNlIHNbYV09dDtlbHNlIHNbYV09ITB9ZWxzZSBzW3RdPSEwfWZ1bmN0aW9uIHIodCl7cmV0dXJuIHQqaXR9ZnVuY3Rpb24gbyhlKXtmdW5jdGlvbiB0KHQpe3JldHVybiB0KihlLnRvX21ldGVyfHwxKX1pZigiR0VPR0NTIj09PWUudHlwZT9lLnByb2pOYW1lPSJsb25nbGF0IjoiTE9DQUxfQ1MiPT09ZS50eXBlPyhlLnByb2pOYW1lPSJpZGVudGl0eSIsZS5sb2NhbD0hMCk6Im9iamVjdCI9PXR5cGVvZiBlLlBST0pFQ1RJT04/ZS5wcm9qTmFtZT1PYmplY3Qua2V5cyhlLlBST0pFQ1RJT04pWzBdOmUucHJvak5hbWU9ZS5QUk9KRUNUSU9OLGUuQVhJUyl7Zm9yKHZhciBzPSIiLGk9MCxhPWUuQVhJUy5sZW5ndGg7aTxhOysraSl7dmFyIGg9ZS5BWElTW2ldWzBdLnRvTG93ZXJDYXNlKCk7LTEhPT1oLmluZGV4T2YoIm5vcnRoIik/cys9Im4iOi0xIT09aC5pbmRleE9mKCJzb3V0aCIpP3MrPSJzIjotMSE9PWguaW5kZXhPZigiZWFzdCIpP3MrPSJlIjotMSE9PWguaW5kZXhPZigid2VzdCIpJiYocys9InciKX0yPT09cy5sZW5ndGgmJihzKz0idSIpLDM9PT1zLmxlbmd0aCYmKGUuYXhpcz1zKX1lLlVOSVQmJihlLnVuaXRzPWUuVU5JVC5uYW1lLnRvTG93ZXJDYXNlKCksIm1ldHJlIj09PWUudW5pdHMmJihlLnVuaXRzPSJtZXRlciIpLGUuVU5JVC5jb252ZXJ0JiYoIkdFT0dDUyI9PT1lLnR5cGU/ZS5EQVRVTSYmZS5EQVRVTS5TUEhFUk9JRCYmKGUudG9fbWV0ZXI9ZS5VTklULmNvbnZlcnQqZS5EQVRVTS5TUEhFUk9JRC5hKTplLnRvX21ldGVyPWUuVU5JVC5jb252ZXJ0KSk7dmFyIG49ZS5HRU9HQ1M7IkdFT0dDUyI9PT1lLnR5cGUmJihuPWUpLG4mJihuLkRBVFVNP2UuZGF0dW1Db2RlPW4uREFUVU0ubmFtZS50b0xvd2VyQ2FzZSgpOmUuZGF0dW1Db2RlPW4ubmFtZS50b0xvd2VyQ2FzZSgpLCJkXyI9PT1lLmRhdHVtQ29kZS5zbGljZSgwLDIpJiYoZS5kYXR1bUNvZGU9ZS5kYXR1bUNvZGUuc2xpY2UoMikpLCJuZXdfemVhbGFuZF9nZW9kZXRpY19kYXR1bV8xOTQ5IiE9PWUuZGF0dW1Db2RlJiYibmV3X3plYWxhbmRfMTk0OSIhPT1lLmRhdHVtQ29kZXx8KGUuZGF0dW1Db2RlPSJuemdkNDkiKSwid2dzXzE5ODQiIT09ZS5kYXR1bUNvZGUmJiJ3b3JsZF9nZW9kZXRpY19zeXN0ZW1fMTk4NCIhPT1lLmRhdHVtQ29kZXx8KCJNZXJjYXRvcl9BdXhpbGlhcnlfU3BoZXJlIj09PWUuUFJPSkVDVElPTiYmKGUuc3BoZXJlPSEwKSxlLmRhdHVtQ29kZT0id2dzODQiKSwiX2ZlcnJvIj09PWUuZGF0dW1Db2RlLnNsaWNlKC02KSYmKGUuZGF0dW1Db2RlPWUuZGF0dW1Db2RlLnNsaWNlKDAsLTYpKSwiX2pha2FydGEiPT09ZS5kYXR1bUNvZGUuc2xpY2UoLTgpJiYoZS5kYXR1bUNvZGU9ZS5kYXR1bUNvZGUuc2xpY2UoMCwtOCkpLH5lLmRhdHVtQ29kZS5pbmRleE9
<script src="data:application/javascript;base64,KGZ1bmN0aW9uIChmYWN0b3J5KSB7DQoJdmFyIEwsIHByb2o0Ow0KCWlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHsNCgkJLy8gQU1EDQoJCWRlZmluZShbJ2xlYWZsZXQnLCAncHJvajQnXSwgZmFjdG9yeSk7DQoJfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlLmV4cG9ydHMgPT09ICJvYmplY3QiKSB7DQoJCS8vIE5vZGUvQ29tbW9uSlMNCgkJTCA9IHJlcXVpcmUoJ2xlYWZsZXQnKTsNCgkJcHJvajQgPSByZXF1aXJlKCdwcm9qNCcpOw0KCQltb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoTCwgcHJvajQpOw0KCX0gZWxzZSB7DQoJCS8vIEJyb3dzZXIgZ2xvYmFscw0KCQlpZiAodHlwZW9mIHdpbmRvdy5MID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2Ygd2luZG93LnByb2o0ID09PSAndW5kZWZpbmVkJykNCgkJCXRocm93ICdMZWFmbGV0IGFuZCBwcm9qNCBtdXN0IGJlIGxvYWRlZCBmaXJzdCc7DQoJCWZhY3Rvcnkod2luZG93LkwsIHdpbmRvdy5wcm9qNCk7DQoJfQ0KfShmdW5jdGlvbiAoTCwgcHJvajQpIHsNCglpZiAocHJvajQuX19lc01vZHVsZSAmJiBwcm9qNC5kZWZhdWx0KSB7DQoJCS8vIElmIHByb2o0IHdhcyBidW5kbGVkIGFzIGFuIEVTNiBtb2R1bGUsIHVud3JhcCBpdCB0byBnZXQNCgkJLy8gdG8gdGhlIGFjdHVhbCBtYWluIHByb2o0IG9iamVjdC4NCgkJLy8gU2VlIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL2thcnRlbmEvUHJvajRMZWFmbGV0L3B1bGwvMTQ3DQoJCXByb2o0ID0gcHJvajQuZGVmYXVsdDsNCgl9DQogDQoJTC5Qcm9qID0ge307DQoNCglMLlByb2ouX2lzUHJvajRPYmogPSBmdW5jdGlvbihhKSB7DQoJCXJldHVybiAodHlwZW9mIGEuaW52ZXJzZSAhPT0gJ3VuZGVmaW5lZCcgJiYNCgkJCXR5cGVvZiBhLmZvcndhcmQgIT09ICd1bmRlZmluZWQnKTsNCgl9Ow0KDQoJTC5Qcm9qLlByb2plY3Rpb24gPSBMLkNsYXNzLmV4dGVuZCh7DQoJCWluaXRpYWxpemU6IGZ1bmN0aW9uKGNvZGUsIGRlZiwgYm91bmRzKSB7DQoJCQl2YXIgaXNQNCA9IEwuUHJvai5faXNQcm9qNE9iaihjb2RlKTsNCgkJCXRoaXMuX3Byb2ogPSBpc1A0ID8gY29kZSA6IHRoaXMuX3Byb2pGcm9tQ29kZURlZihjb2RlLCBkZWYpOw0KCQkJdGhpcy5ib3VuZHMgPSBpc1A0ID8gZGVmIDogYm91bmRzOw0KCQl9LA0KDQoJCXByb2plY3Q6IGZ1bmN0aW9uIChsYXRsbmcpIHsNCgkJCXZhciBwb2ludCA9IHRoaXMuX3Byb2ouZm9yd2FyZChbbGF0bG5nLmxuZywgbGF0bG5nLmxhdF0pOw0KCQkJcmV0dXJuIG5ldyBMLlBvaW50KHBvaW50WzBdLCBwb2ludFsxXSk7DQoJCX0sDQoNCgkJdW5wcm9qZWN0OiBmdW5jdGlvbiAocG9pbnQsIHVuYm91bmRlZCkgew0KCQkJdmFyIHBvaW50MiA9IHRoaXMuX3Byb2ouaW52ZXJzZShbcG9pbnQueCwgcG9pbnQueV0pOw0KCQkJcmV0dXJuIG5ldyBMLkxhdExuZyhwb2ludDJbMV0sIHBvaW50MlswXSwgdW5ib3VuZGVkKTsNCgkJfSwNCg0KCQlfcHJvakZyb21Db2RlRGVmOiBmdW5jdGlvbihjb2RlLCBkZWYpIHsNCgkJCWlmIChkZWYpIHsNCgkJCQlwcm9qNC5kZWZzKGNvZGUsIGRlZik7DQoJCQl9IGVsc2UgaWYgKHByb2o0LmRlZnNbY29kZV0gPT09IHVuZGVmaW5lZCkgew0KCQkJCXZhciB1cm4gPSBjb2RlLnNwbGl0KCc6Jyk7DQoJCQkJaWYgKHVybi5sZW5ndGggPiAzKSB7DQoJCQkJCWNvZGUgPSB1cm5bdXJuLmxlbmd0aCAtIDNdICsgJzonICsgdXJuW3Vybi5sZW5ndGggLSAxXTsNCgkJCQl9DQoJCQkJaWYgKHByb2o0LmRlZnNbY29kZV0gPT09IHVuZGVmaW5lZCkgew0KCQkJCQl0aHJvdyAnTm8gcHJvamVjdGlvbiBkZWZpbml0aW9uIGZvciBjb2RlICcgKyBjb2RlOw0KCQkJCX0NCgkJCX0NCg0KCQkJcmV0dXJuIHByb2o0KGNvZGUpOw0KCQl9DQoJfSk7DQoNCglMLlByb2ouQ1JTID0gTC5DbGFzcy5leHRlbmQoew0KCQlpbmNsdWRlczogTC5DUlMsDQoNCgkJb3B0aW9uczogew0KCQkJdHJhbnNmb3JtYXRpb246IG5ldyBMLlRyYW5zZm9ybWF0aW9uKDEsIDAsIC0xLCAwKQ0KCQl9LA0KDQoJCWluaXRpYWxpemU6IGZ1bmN0aW9uKGEsIGIsIGMpIHsNCgkJCXZhciBjb2RlLA0KCQkJICAgIHByb2osDQoJCQkgICAgZGVmLA0KCQkJICAgIG9wdGlvbnM7DQoNCgkJCWlmIChMLlByb2ouX2lzUHJvajRPYmooYSkpIHsNCgkJCQlwcm9qID0gYTsNCgkJCQljb2RlID0gcHJvai5zcnNDb2RlOw0KCQkJCW9wdGlvbnMgPSBiIHx8IHt9Ow0KDQoJCQkJdGhpcy5wcm9qZWN0aW9uID0gbmV3IEwuUHJvai5Qcm9qZWN0aW9uKHByb2osIG9wdGlvbnMuYm91bmRzKTsNCgkJCX0gZWxzZSB7DQoJCQkJY29kZSA9IGE7DQoJCQkJZGVmID0gYjsNCgkJCQlvcHRpb25zID0gYyB8fCB7fTsNCgkJCQl0aGlzLnByb2plY3Rpb24gPSBuZXcgTC5Qcm9qLlByb2plY3Rpb24oY29kZSwgZGVmLCBvcHRpb25zLmJvdW5kcyk7DQoJCQl9DQoNCgkJCUwuVXRpbC5zZXRPcHRpb25zKHRoaXMsIG9wdGlvbnMpOw0KCQkJdGhpcy5jb2RlID0gY29kZTsNCgkJCXRoaXMudHJhbnNmb3JtYXRpb24gPSB0aGlzLm9wdGlvbnMudHJhbnNmb3JtYXRpb247DQoNCgkJCWlmICh0aGlzLm9wdGlvbnMub3JpZ2luKSB7DQoJCQkJdGhpcy50cmFuc2Zvcm1hdGlvbiA9DQoJCQkJCW5ldyBMLlRyYW5zZm9ybWF0aW9uKDEsIC10aGlzLm9wdGlvbnMub3JpZ2luWzBdLA0KCQkJCQkJLTEsIHRoaXMub3B0aW9ucy5vcmlnaW5bMV0pOw0KCQkJfQ0KDQoJCQlpZiAodGhpcy5vcHRpb25zLnNjYWxlcykgew0KCQkJCXRoaXMuX3NjYWxlcyA9IHRoaXMub3B0aW9ucy5zY2FsZXM7DQoJCQl9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy5yZXNvbHV0aW9ucykgew0KCQkJCXRoaXMuX3NjYWxlcyA9IFtdOw0KCQkJCWZvciAodmFyIGkgPSB0aGlzLm9wdGlvbnMucmVzb2x1dGlvbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsNCgkJCQkJaWYgKHRoaXMub3B0aW9ucy5yZXNvbHV0aW9uc1tpXSkgew0KCQkJCQkJdGhpcy5fc2NhbGVzW2ldID0gMSAvIHRoaXMub3B0aW9ucy5
<link href="data:text/css,%2Eleaflet%2Dtooltip%2Eleaflet%2Dtooltip%2Dtext%2Donly%2C%0A%2Eleaflet%2Dtooltip%2Eleaflet%2Dtooltip%2Dtext%2Donly%3Abefore%2C%0A%2Eleaflet%2Dtooltip%2Eleaflet%2Dtooltip%2Dtext%2Donly%3Aafter%20%7B%0Abackground%3A%20none%3B%0Aborder%3A%20none%3B%0Abox%2Dshadow%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dtooltip%2Eleaflet%2Dtooltip%2Dtext%2Donly%2Eleaflet%2Dtooltip%2Dleft%20%7B%0Amargin%2Dleft%3A%205px%3B%0A%7D%0A%2Eleaflet%2Dtooltip%2Eleaflet%2Dtooltip%2Dtext%2Donly%2Eleaflet%2Dtooltip%2Dright%20%7B%0Amargin%2Dleft%3A%20%2D5px%3B%0A%7D%0A%2Eleaflet%2Dtooltip%3Aafter%20%7B%0Aborder%2Dright%3A%206px%20solid%20transparent%3B%0A%0A%7D%0A%2Eleaflet%2Dpopup%2Dpane%20%2Eleaflet%2Dpopup%2Dtip%2Dcontainer%20%7B%0A%0Apointer%2Devents%3A%20all%3B%0A%0Acursor%3A%20pointer%3B%0A%7D%0A%0A%2Eleaflet%2Dmap%2Dpane%20%7B%0Az%2Dindex%3A%20auto%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLG4sdCl7ZnVuY3Rpb24gbyhpLGYpe2lmKCFuW2ldKXtpZighZVtpXSl7dmFyIGM9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitpKyInIik7dGhyb3cgYS5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsaT0wO2k8dC5sZW5ndGg7aSsrKW8odFtpXSk7cmV0dXJuIG99cmV0dXJuIHJ9KSgpKHsxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKInVzZSBzdHJpY3QiOwoKT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgewogIHZhbHVlOiB0cnVlCn0pOwpleHBvcnRzWyJkZWZhdWx0Il0gPSB1bmRlZmluZWQ7Cgp2YXIgX3V0aWwgPSByZXF1aXJlKCIuL3V0aWwiKTsKCmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIik7IH0gfQoKZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoInZhbHVlIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0KCmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9Cgp2YXIgQ2x1c3RlckxheWVyU3RvcmUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIENsdXN0ZXJMYXllclN0b3JlKGdyb3VwKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ2x1c3RlckxheWVyU3RvcmUpOwoKICAgIHRoaXMuX2xheWVycyA9IHt9OwogICAgdGhpcy5fZ3JvdXAgPSBncm91cDsKICB9CgogIF9jcmVhdGVDbGFzcyhDbHVzdGVyTGF5ZXJTdG9yZSwgW3sKICAgIGtleTogImFkZCIsCiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkKGxheWVyLCBpZCkgewogICAgICBpZiAodHlwZW9mIGlkICE9PSAidW5kZWZpbmVkIiAmJiBpZCAhPT0gbnVsbCkgewogICAgICAgIGlmICh0aGlzLl9sYXllcnNbaWRdKSB7CiAgICAgICAgICB0aGlzLl9ncm91cC5yZW1vdmVMYXllcih0aGlzLl9sYXllcnNbaWRdKTsKICAgICAgICB9CgogICAgICAgIHRoaXMuX2xheWVyc1tpZF0gPSBsYXllcjsKICAgICAgfQoKICAgICAgdGhpcy5fZ3JvdXAuYWRkTGF5ZXIobGF5ZXIpOwogICAgfQogIH0sIHsKICAgIGtleTogInJlbW92ZSIsCiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlKGlkKSB7CiAgICAgIGlmICh0eXBlb2YgaWQgPT09ICJ1bmRlZmluZWQiIHx8IGlkID09PSBudWxsKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBpZCA9ICgwLCBfdXRpbC5hc0FycmF5KShpZCk7CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlkLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKHRoaXMuX2xheWVyc1tpZFtpXV0pIHsKICAgICAgICAgIHRoaXMuX2dyb3VwLnJlbW92ZUxheWVyKHRoaXMuX2xheWVyc1tpZFtpXV0pOwoKICAgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXllcnNbaWRbaV1dOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sIHsKICAgIGtleTogImNsZWFyIiwKICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhcigpIHsKICAgICAgdGhpcy5fbGF5ZXJzID0ge307CgogICAgICB0aGlzLl9ncm91cC5jbGVhckxheWVycygpOwogICAgfQogIH1dKTsKCiAgcmV0dXJuIENsdXN0ZXJMYXllclN0b3JlOwp9KCk7CgpleHBvcnRzWyJkZWZhdWx0Il0gPSBDbHVzdGVyTGF5ZXJTdG9yZTsKCgp9LHsiLi91dGlsIjoxN31dLDI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewoidXNlIHN0cmljdCI7CgpPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7CiAgdmFsdWU6IHRydWUKfSk7CgpmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpOyB9IH0KCmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCJ2YWx1ZSIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9CgpmdW5
<link href="data:text/css,%2Eleaflet%2Dcluster%2Danim%20%2Eleaflet%2Dmarker%2Dicon%2C%20%2Eleaflet%2Dcluster%2Danim%20%2Eleaflet%2Dmarker%2Dshadow%20%7B%0A%2Dwebkit%2Dtransition%3A%20%2Dwebkit%2Dtransform%200%2E3s%20ease%2Dout%2C%20opacity%200%2E3s%20ease%2Din%3B%0A%2Dmoz%2Dtransition%3A%20%2Dmoz%2Dtransform%200%2E3s%20ease%2Dout%2C%20opacity%200%2E3s%20ease%2Din%3B%0A%2Do%2Dtransition%3A%20%2Do%2Dtransform%200%2E3s%20ease%2Dout%2C%20opacity%200%2E3s%20ease%2Din%3B%0Atransition%3A%20transform%200%2E3s%20ease%2Dout%2C%20opacity%200%2E3s%20ease%2Din%3B%0A%7D%0A%2Eleaflet%2Dcluster%2Dspider%2Dleg%20%7B%0A%0A%2Dwebkit%2Dtransition%3A%20%2Dwebkit%2Dstroke%2Ddashoffset%200%2E3s%20ease%2Dout%2C%20%2Dwebkit%2Dstroke%2Dopacity%200%2E3s%20ease%2Din%3B%0A%2Dmoz%2Dtransition%3A%20%2Dmoz%2Dstroke%2Ddashoffset%200%2E3s%20ease%2Dout%2C%20%2Dmoz%2Dstroke%2Dopacity%200%2E3s%20ease%2Din%3B%0A%2Do%2Dtransition%3A%20%2Do%2Dstroke%2Ddashoffset%200%2E3s%20ease%2Dout%2C%20%2Do%2Dstroke%2Dopacity%200%2E3s%20ease%2Din%3B%0Atransition%3A%20stroke%2Ddashoffset%200%2E3s%20ease%2Dout%2C%20stroke%2Dopacity%200%2E3s%20ease%2Din%3B%0A%7D%0A" rel="stylesheet" />
<link href="data:text/css,%2Emarker%2Dcluster%2Dsmall%20%7B%0Abackground%2Dcolor%3A%20rgba%28181%2C%20226%2C%20140%2C%200%2E6%29%3B%0A%7D%0A%2Emarker%2Dcluster%2Dsmall%20div%20%7B%0Abackground%2Dcolor%3A%20rgba%28110%2C%20204%2C%2057%2C%200%2E6%29%3B%0A%7D%0A%2Emarker%2Dcluster%2Dmedium%20%7B%0Abackground%2Dcolor%3A%20rgba%28241%2C%20211%2C%2087%2C%200%2E6%29%3B%0A%7D%0A%2Emarker%2Dcluster%2Dmedium%20div%20%7B%0Abackground%2Dcolor%3A%20rgba%28240%2C%20194%2C%2012%2C%200%2E6%29%3B%0A%7D%0A%2Emarker%2Dcluster%2Dlarge%20%7B%0Abackground%2Dcolor%3A%20rgba%28253%2C%20156%2C%20115%2C%200%2E6%29%3B%0A%7D%0A%2Emarker%2Dcluster%2Dlarge%20div%20%7B%0Abackground%2Dcolor%3A%20rgba%28241%2C%20128%2C%2023%2C%200%2E6%29%3B%0A%7D%0A%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dsmall%20%7B%0Abackground%2Dcolor%3A%20rgb%28181%2C%20226%2C%20140%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dsmall%20div%20%7B%0Abackground%2Dcolor%3A%20rgb%28110%2C%20204%2C%2057%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dmedium%20%7B%0Abackground%2Dcolor%3A%20rgb%28241%2C%20211%2C%2087%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dmedium%20div%20%7B%0Abackground%2Dcolor%3A%20rgb%28240%2C%20194%2C%2012%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dlarge%20%7B%0Abackground%2Dcolor%3A%20rgb%28253%2C%20156%2C%20115%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dlarge%20div%20%7B%0Abackground%2Dcolor%3A%20rgb%28241%2C%20128%2C%2023%29%3B%0A%7D%0A%2Emarker%2Dcluster%20%7B%0Abackground%2Dclip%3A%20padding%2Dbox%3B%0Aborder%2Dradius%3A%2020px%3B%0A%7D%0A%2Emarker%2Dcluster%20div%20%7B%0Awidth%3A%2030px%3B%0Aheight%3A%2030px%3B%0Amargin%2Dleft%3A%205px%3B%0Amargin%2Dtop%3A%205px%3B%0Atext%2Dalign%3A%20center%3B%0Aborder%2Dradius%3A%2015px%3B%0Afont%3A%2012px%20%22Helvetica%20Neue%22%2C%20Arial%2C%20Helvetica%2C%20sans%2Dserif%3B%0A%7D%0A%2Emarker%2Dcluster%20span%20%7B%0Aline%2Dheight%3A%2030px%3B%0A%7D" rel="stylesheet" />
<script src="data:application/javascript;base64,LyoKIExlYWZsZXQubWFya2VyY2x1c3RlciwgUHJvdmlkZXMgQmVhdXRpZnVsIEFuaW1hdGVkIE1hcmtlciBDbHVzdGVyaW5nIGZ1bmN0aW9uYWxpdHkgZm9yIExlYWZsZXQsIGEgSlMgbGlicmFyeSBmb3IgaW50ZXJhY3RpdmUgbWFwcy4KIGh0dHBzOi8vZ2l0aHViLmNvbS9MZWFmbGV0L0xlYWZsZXQubWFya2VyY2x1c3RlcgogKGMpIDIwMTItMjAxNywgRGF2ZSBMZWF2ZXIKKi8KIWZ1bmN0aW9uKGUsdCxpKXtMLk1hcmtlckNsdXN0ZXJHcm91cD1MLkZlYXR1cmVHcm91cC5leHRlbmQoe29wdGlvbnM6e21heENsdXN0ZXJSYWRpdXM6ODAsaWNvbkNyZWF0ZUZ1bmN0aW9uOm51bGwsY2x1c3RlclBhbmU6TC5NYXJrZXIucHJvdG90eXBlLm9wdGlvbnMucGFuZSxzcGlkZXJmeU9uTWF4Wm9vbTohMCxzaG93Q292ZXJhZ2VPbkhvdmVyOiEwLHpvb21Ub0JvdW5kc09uQ2xpY2s6ITAsc2luZ2xlTWFya2VyTW9kZTohMSxkaXNhYmxlQ2x1c3RlcmluZ0F0Wm9vbTpudWxsLHJlbW92ZU91dHNpZGVWaXNpYmxlQm91bmRzOiEwLGFuaW1hdGU6ITAsYW5pbWF0ZUFkZGluZ01hcmtlcnM6ITEsc3BpZGVyZnlEaXN0YW5jZU11bHRpcGxpZXI6MSxzcGlkZXJMZWdQb2x5bGluZU9wdGlvbnM6e3dlaWdodDoxLjUsY29sb3I6IiMyMjIiLG9wYWNpdHk6LjV9LGNodW5rZWRMb2FkaW5nOiExLGNodW5rSW50ZXJ2YWw6MjAwLGNodW5rRGVsYXk6NTAsY2h1bmtQcm9ncmVzczpudWxsLHBvbHlnb25PcHRpb25zOnt9fSxpbml0aWFsaXplOmZ1bmN0aW9uKGUpe0wuVXRpbC5zZXRPcHRpb25zKHRoaXMsZSksdGhpcy5vcHRpb25zLmljb25DcmVhdGVGdW5jdGlvbnx8KHRoaXMub3B0aW9ucy5pY29uQ3JlYXRlRnVuY3Rpb249dGhpcy5fZGVmYXVsdEljb25DcmVhdGVGdW5jdGlvbiksdGhpcy5fZmVhdHVyZUdyb3VwPUwuZmVhdHVyZUdyb3VwKCksdGhpcy5fZmVhdHVyZUdyb3VwLmFkZEV2ZW50UGFyZW50KHRoaXMpLHRoaXMuX25vblBvaW50R3JvdXA9TC5mZWF0dXJlR3JvdXAoKSx0aGlzLl9ub25Qb2ludEdyb3VwLmFkZEV2ZW50UGFyZW50KHRoaXMpLHRoaXMuX2luWm9vbUFuaW1hdGlvbj0wLHRoaXMuX25lZWRzQ2x1c3RlcmluZz1bXSx0aGlzLl9uZWVkc1JlbW92aW5nPVtdLHRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcz1udWxsLHRoaXMuX3F1ZXVlPVtdLHRoaXMuX2NoaWxkTWFya2VyRXZlbnRIYW5kbGVycz17ZHJhZ3N0YXJ0OnRoaXMuX2NoaWxkTWFya2VyRHJhZ1N0YXJ0LG1vdmU6dGhpcy5fY2hpbGRNYXJrZXJNb3ZlZCxkcmFnZW5kOnRoaXMuX2NoaWxkTWFya2VyRHJhZ0VuZH07dmFyIHQ9TC5Eb21VdGlsLlRSQU5TSVRJT04mJnRoaXMub3B0aW9ucy5hbmltYXRlO0wuZXh0ZW5kKHRoaXMsdD90aGlzLl93aXRoQW5pbWF0aW9uOnRoaXMuX25vQW5pbWF0aW9uKSx0aGlzLl9tYXJrZXJDbHVzdGVyPXQ/TC5NYXJrZXJDbHVzdGVyOkwuTWFya2VyQ2x1c3Rlck5vbkFuaW1hdGVkfSxhZGRMYXllcjpmdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2YgTC5MYXllckdyb3VwKXJldHVybiB0aGlzLmFkZExheWVycyhbZV0pO2lmKCFlLmdldExhdExuZylyZXR1cm4gdGhpcy5fbm9uUG9pbnRHcm91cC5hZGRMYXllcihlKSx0aGlzLmZpcmUoImxheWVyYWRkIix7bGF5ZXI6ZX0pLHRoaXM7aWYoIXRoaXMuX21hcClyZXR1cm4gdGhpcy5fbmVlZHNDbHVzdGVyaW5nLnB1c2goZSksdGhpcy5maXJlKCJsYXllcmFkZCIse2xheWVyOmV9KSx0aGlzO2lmKHRoaXMuaGFzTGF5ZXIoZSkpcmV0dXJuIHRoaXM7dGhpcy5fdW5zcGlkZXJmeSYmdGhpcy5fdW5zcGlkZXJmeSgpLHRoaXMuX2FkZExheWVyKGUsdGhpcy5fbWF4Wm9vbSksdGhpcy5maXJlKCJsYXllcmFkZCIse2xheWVyOmV9KSx0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY2FsY3VsYXRlQm91bmRzKCksdGhpcy5fcmVmcmVzaENsdXN0ZXJzSWNvbnMoKTt2YXIgdD1lLGk9dGhpcy5fem9vbTtpZihlLl9fcGFyZW50KWZvcig7dC5fX3BhcmVudC5fem9vbT49aTspdD10Ll9fcGFyZW50O3JldHVybiB0aGlzLl9jdXJyZW50U2hvd25Cb3VuZHMuY29udGFpbnModC5nZXRMYXRMbmcoKSkmJih0aGlzLm9wdGlvbnMuYW5pbWF0ZUFkZGluZ01hcmtlcnM/dGhpcy5fYW5pbWF0aW9uQWRkTGF5ZXIoZSx0KTp0aGlzLl9hbmltYXRpb25BZGRMYXllck5vbkFuaW1hdGVkKGUsdCkpLHRoaXN9LHJlbW92ZUxheWVyOmZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgTC5MYXllckdyb3VwP3RoaXMucmVtb3ZlTGF5ZXJzKFtlXSk6ZS5nZXRMYXRMbmc/dGhpcy5fbWFwP2UuX19wYXJlbnQ/KHRoaXMuX3Vuc3BpZGVyZnkmJih0aGlzLl91bnNwaWRlcmZ5KCksdGhpcy5fdW5zcGlkZXJmeUxheWVyKGUpKSx0aGlzLl9yZW1vdmVMYXllcihlLCEwKSx0aGlzLmZpcmUoImxheWVycmVtb3ZlIix7bGF5ZXI6ZX0pLHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjYWxjdWxhdGVCb3VuZHMoKSx0aGlzLl9yZWZyZXNoQ2x1c3RlcnNJY29ucygpLGUub2ZmKHRoaXMuX2NoaWxkTWFya2VyRXZlbnRIYW5kbGVycyx0aGlzKSx0aGlzLl9mZWF0dXJlR3JvdXAuaGFzTGF5ZXIoZSkmJih0aGlzLl9mZWF0dXJlR3JvdXAucmVtb3ZlTGF5ZXIoZSksZS5jbHVzdGVyU2hvdyYmZS5jbHVzdGVyU2hvdygpKSx0aGlzKTp0aGlzOighdGhpcy5fYXJyYXlTcGxpY2UodGhpcy5fbmVlZHNDbHVzdGVyaW5nLGUpJiZ0aGlzLmhhc0xheWVyKGUpJiZ0aGlzLl9uZWVkc1JlbW92aW5nLnB1c2goe2xheWVyOmUsbGF0bG5nOmUuX2xhdGxuZ30pLHRoaXMuZmlyZSgibGF5ZXJyZW1vdmUiLHtsYXllcjplfSksdGhpcyk6KHRoaXMuX25vblBvaW50R3JvdXAucmVtb3ZlTGF5ZXIoZSksdGhpcy5maXJlKCJsYXllcnJlbW92ZSIse2xheWVyOmV9KSx0aGlzKX0sYWRkTGF5ZXJzOmZ1bmN0aW9uKGUsdCl7aWYoIUwuVXRpbC5pc0FycmF5KGUpKXJldHVybiB0aGlzLmFkZExheWVyKGUpO3ZhciBpLG49dGhpcy5fZmVhdHVyZUdyb3VwLHI9dGhpcy5fbm9uUG9pbnRHcm91cCxzPXRoaXMub3B0aW9ucy5jaHVua2VkTG9hZGluZyxvPXRoaXMub3B0aW9ucy5jaHVua0ludGVydmFsLGE
<script src="data:application/javascript;base64,LyohCiBMZWFmbGV0Lk1hcmtlckNsdXN0ZXIuRnJlZXphYmxlIDEuMC4wKzlkYjgwYTMKIChjKSAyMDE1LTIwMTYgQm9yaXMgU2VhbmcKIExpY2Vuc2UgTUlUCiAqLwohZnVuY3Rpb24oZSxpKXsiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImxlYWZsZXQiXSxpKTppKCJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz9yZXF1aXJlKCJsZWFmbGV0Iik6ZS5MKX0odGhpcyxmdW5jdGlvbihlLGkpe2UuTWFya2VyQ2x1c3Rlckdyb3VwLmluY2x1ZGUoe19vcmlnaW5hbE9uQWRkRnJlZXphYmxlOmUuTWFya2VyQ2x1c3Rlckdyb3VwLnByb3RvdHlwZS5vbkFkZCxvbkFkZDpmdW5jdGlvbihlKXt2YXIgaT10aGlzLl96b29tO3RoaXMuX29yaWdpbmFsT25BZGRGcmVlemFibGUoZSksdGhpcy5fZnJvemVuJiYoaT49MCYmaSE9PXRoaXMuX3pvb20mJih0aGlzLl9mZWF0dXJlR3JvdXAuY2xlYXJMYXllcnMoKSx0aGlzLl96b29tPWksdGhpcy5hZGRMYXllcnMoW10pKSxlLm9mZigiem9vbWVuZCIsdGhpcy5fem9vbUVuZCx0aGlzKSxlLm9mZigibW92ZWVuZCIsdGhpcy5fbW92ZUVuZCx0aGlzKSxlLm9uKCJ6b29tZW5kIG1vdmVlbmQiLHRoaXMuX3ZpZXdDaGFuZ2VFbmROb3RDbHVzdGVyaW5nLHRoaXMpKX0sX29yaWdpbmFsT25SZW1vdmU6ZS5NYXJrZXJDbHVzdGVyR3JvdXAucHJvdG90eXBlLm9uUmVtb3ZlLG9uUmVtb3ZlOmZ1bmN0aW9uKGUpe2Uub2ZmKCJ6b29tZW5kIG1vdmVlbmQiLHRoaXMuX3ZpZXdDaGFuZ2VFbmROb3RDbHVzdGVyaW5nLHRoaXMpLHRoaXMuX29yaWdpbmFsT25SZW1vdmUoZSl9LGRpc2FibGVDbHVzdGVyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZnJlZXplQXRab29tKHRoaXMuX21heFpvb20rMSl9LGRpc2FibGVDbHVzdGVyaW5nS2VlcFNwaWRlcmZ5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZnJlZXplQXRab29tKHRoaXMuX21heFpvb20pfSxlbmFibGVDbHVzdGVyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5mcmVlemUoKX0sdW5mcmVlemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mcmVlemVBdFpvb20oITEpfSxmcmVlemVBdFpvb206ZnVuY3Rpb24oZSl7dGhpcy5fcHJvY2Vzc1F1ZXVlKCk7dmFyIG89dGhpcy5fbWFwO2U9PT1pfHxlPT09ITB8fGUhPT1lP2U9bz9NYXRoLnJvdW5kKG8uZ2V0Wm9vbSgpKTotMToibWF4Ij09PWU/ZT10aGlzLl9tYXhab29tKzE6Im1heEtlZXBTcGlkZXJmeSI9PT1lJiYoZT10aGlzLl9tYXhab29tKTt2YXIgdD0ibnVtYmVyIj09dHlwZW9mIGU7aWYodGhpcy5fZnJvemVuKXtpZighdClyZXR1cm4gdGhpcy5fdW5mcmVlemUoKSx0aGlzfWVsc2V7aWYoIXQpcmV0dXJuIHRoaXM7dGhpcy5faW5pdGlhdGVGcmVlemUoKX1yZXR1cm4gdGhpcy5fYXJ0aWZpY2lhbFpvb21TYWZlKHRoaXMuX3pvb20sZSksdGhpc30sX2luaXRpYXRlRnJlZXplOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbWFwO3RoaXMuX2Zyb3plbj0hMCxlJiYoZS5vZmYoInpvb21lbmQiLHRoaXMuX3pvb21FbmQsdGhpcyksZS5vZmYoIm1vdmVlbmQiLHRoaXMuX21vdmVFbmQsdGhpcyksZS5vbigiem9vbWVuZCBtb3ZlZW5kIix0aGlzLl92aWV3Q2hhbmdlRW5kTm90Q2x1c3RlcmluZyx0aGlzKSl9LF91bmZyZWV6ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX21hcDt0aGlzLl9mcm96ZW49ITEsZSYmKGUub2ZmKCJ6b29tZW5kIG1vdmVlbmQiLHRoaXMuX3ZpZXdDaGFuZ2VFbmROb3RDbHVzdGVyaW5nLHRoaXMpLGUub24oInpvb21lbmQiLHRoaXMuX3pvb21FbmQsdGhpcyksZS5vbigibW92ZWVuZCIsdGhpcy5fbW92ZUVuZCx0aGlzKSx0aGlzLl9leGVjdXRlQWZ0ZXJVbnNwaWRlcmZ5KGZ1bmN0aW9uKCl7dGhpcy5fem9vbUVuZCgpfSx0aGlzKSl9LF9leGVjdXRlQWZ0ZXJVbnNwaWRlcmZ5OmZ1bmN0aW9uKGUsaSl7cmV0dXJuIHRoaXMuX3Vuc3BpZGVyZnkmJnRoaXMuX3NwaWRlcmZpZWQ/KHRoaXMub25jZSgiYW5pbWF0aW9uZW5kIixmdW5jdGlvbigpe2UuY2FsbChpKX0pLHZvaWQgdGhpcy5fdW5zcGlkZXJmeSgpKTp2b2lkIGUuY2FsbChpKX0sX2FydGlmaWNpYWxab29tU2FmZTpmdW5jdGlvbihlLGkpe3RoaXMuX3pvb209aSx0aGlzLl9tYXAmJmUhPT1pJiZ0aGlzLl9leGVjdXRlQWZ0ZXJVbnNwaWRlcmZ5KGZ1bmN0aW9uKCl7dGhpcy5fYXJ0aWZpY2lhbFpvb20oZSxpKX0sdGhpcyl9LF9hcnRpZmljaWFsWm9vbTpmdW5jdGlvbihlLGkpe2U8aT8odGhpcy5fYW5pbWF0aW9uU3RhcnQoKSx0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5UmVtb3ZlQ2hpbGRyZW5Gcm9tTWFwKHRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcyx0aGlzLl9tYXAuZ2V0TWluWm9vbSgpLGUsdGhpcy5fZ2V0RXhwYW5kZWRWaXNpYmxlQm91bmRzKCkpLHRoaXMuX2FuaW1hdGlvblpvb21JbihlLGkpKTplPmkmJih0aGlzLl9hbmltYXRpb25TdGFydCgpLHRoaXMuX2FuaW1hdGlvblpvb21PdXQoZSxpKSl9LF92aWV3Q2hhbmdlRW5kTm90Q2x1c3RlcmluZzpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2ZlYXR1cmVHcm91cCxpPXRoaXMuX2dldEV4cGFuZGVkVmlzaWJsZUJvdW5kcygpLG89dGhpcy5fem9vbTtlLmVhY2hMYXllcihmdW5jdGlvbih0KXshaS5jb250YWlucyh0Ll9sYXRsbmcpJiZ0Ll9fcGFyZW50JiZ0Ll9fcGFyZW50Ll96b29tPG8mJmUucmVtb3ZlTGF5ZXIodCl9KSx0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5KGksLTEsbyxmdW5jdGlvbih0KXtpZih0Ll96b29tIT09bylmb3IodmFyIG4scj10Ll9tYXJrZXJzLHM9MDtzPHIubGVuZ3RoO3MrKyluPXQuX21hcmtlcnNbc10saS5jb250YWlucyhuLl9sYXRsbmcpJiZlLmFkZExheWVyKG4pfSxmdW5jdGlvbihlKXtlLl9hZGRUb01hcCgpfSksdGhpcy5fY3VycmVudFNob3duQm91bmRzPWl9LF9vcmlnaW5hbFpvb21PclNwaWRlcmZ5OmUuTWFya2VyQ2x1c3Rlckdyb3VwLnByb3RvdHlwZS5fem9vbU9yU3BpZGVyZnksX3pvb21PclNwaWRlcmZ5OmZ1bmN0aW9uKGUpe3RoaXMuX2Zyb3plbiYmdGhpcy5
<script src="data:application/javascript;base64,LyohCiBMZWFmbGV0Lk1hcmtlckNsdXN0ZXIuTGF5ZXJTdXBwb3J0IDEuMC41Kzg3ZjM4NDgKIChjKSAyMDE1LTIwMTcgQm9yaXMgU2VhbmcKIExpY2Vuc2UgTUlUCiAqLwohZnVuY3Rpb24oZSxyKXsiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImxlYWZsZXQiXSxyKTpyKCJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz9yZXF1aXJlKCJsZWFmbGV0Iik6ZS5MKX0odGhpcyxmdW5jdGlvbihlLHIpe2UuTWFya2VyQ2x1c3Rlckdyb3VwLkxheWVyU3VwcG9ydD1lLk1hcmtlckNsdXN0ZXJHcm91cC5leHRlbmQoe29wdGlvbnM6e3NpbmdsZUFkZFJlbW92ZUJ1ZmZlckR1cmF0aW9uOjEwMH0saW5pdGlhbGl6ZTpmdW5jdGlvbihyKXtlLk1hcmtlckNsdXN0ZXJHcm91cC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsciksdGhpcy5fZmVhdHVyZUdyb3VwPW5ldyBvLHRoaXMuX2ZlYXR1cmVHcm91cC5hZGRFdmVudFBhcmVudCh0aGlzKSx0aGlzLl9ub25Qb2ludEdyb3VwPW5ldyBvLHRoaXMuX25vblBvaW50R3JvdXAuYWRkRXZlbnRQYXJlbnQodGhpcyksdGhpcy5fbGF5ZXJzPXt9LHRoaXMuX3Byb3h5TGF5ZXJHcm91cHM9e30sdGhpcy5fcHJveHlMYXllckdyb3Vwc05lZWRSZW1vdmluZz17fSx0aGlzLl9zaW5nbGVBZGRSZW1vdmVCdWZmZXI9W119LGNoZWNrSW46ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5fdG9BcnJheShlKTtyZXR1cm4gdGhpcy5fY2hlY2tJbkdldFNlcGFyYXRlZChyKSx0aGlzfSxjaGVja091dDpmdW5jdGlvbihyKXt2YXIgbyx0LGk9dGhpcy5fdG9BcnJheShyKSxhPXRoaXMuX3NlcGFyYXRlU2luZ2xlRnJvbUdyb3VwTGF5ZXJzKGkse2dyb3VwczpbXSxzaW5nbGVzOltdfSkscz1hLmdyb3VwcyxuPWEuc2luZ2xlcztmb3Iobz0wO288bi5sZW5ndGg7bysrKXQ9bltvXSxkZWxldGUgdGhpcy5fbGF5ZXJzW2Uuc3RhbXAodCldLGRlbGV0ZSB0Ll9tY2dMYXllclN1cHBvcnRHcm91cDtmb3IodGhpcy5fb3JpZ2luYWxSZW1vdmVMYXllcnMobiksbz0wO288cy5sZW5ndGg7bysrKXQ9c1tvXSx0aGlzLl9kaXNtaXNzUHJveHlMYXllckdyb3VwKHQpO3JldHVybiB0aGlzfSxhZGRMYXllcnM6ZnVuY3Rpb24ocil7dmFyIG8sdCxpLGE9dGhpcy5fdG9BcnJheShyKSxzPXRoaXMuX2NoZWNrSW5HZXRTZXBhcmF0ZWQoYSksbj1zLmdyb3Vwcztmb3IodGhpcy5fb3JpZ2luYWxBZGRMYXllcnMocy5zaW5nbGVzKSxvPTA7bzxuLmxlbmd0aDtvKyspdD1uW29dLGk9ZS5zdGFtcCh0KSx0aGlzLl9wcm94eUxheWVyR3JvdXBzW2ldPXQsZGVsZXRlIHRoaXMuX3Byb3h5TGF5ZXJHcm91cHNOZWVkUmVtb3ZpbmdbaV0sdGhpcy5fbWFwJiZ0aGlzLl9tYXAuX29yaWdpbmFsQWRkTGF5ZXIodCl9LGFkZExheWVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9idWZmZXJTaW5nbGVBZGRSZW1vdmUoZSwiYWRkTGF5ZXJzIiksdGhpc30sX29yaWdpbmFsQWRkTGF5ZXI6ZS5NYXJrZXJDbHVzdGVyR3JvdXAucHJvdG90eXBlLmFkZExheWVyLF9vcmlnaW5hbEFkZExheWVyczplLk1hcmtlckNsdXN0ZXJHcm91cC5wcm90b3R5cGUuYWRkTGF5ZXJzLHJlbW92ZUxheWVyczpmdW5jdGlvbihyKXt2YXIgbyx0LGk9dGhpcy5fdG9BcnJheShyKSxhPXRoaXMuX3NlcGFyYXRlU2luZ2xlRnJvbUdyb3VwTGF5ZXJzKGkse2dyb3VwczpbXSxzaW5nbGVzOltdfSkscz1hLmdyb3VwcyxuPWEuc2luZ2xlcyxwPTA7Zm9yKHRoaXMuX29yaWdpbmFsUmVtb3ZlTGF5ZXJzKG4pO3A8cy5sZW5ndGg7cCsrKW89c1twXSx0PWUuc3RhbXAobyksZGVsZXRlIHRoaXMuX3Byb3h5TGF5ZXJHcm91cHNbdF0sdGhpcy5fbWFwP3RoaXMuX21hcC5fb3JpZ2luYWxSZW1vdmVMYXllcihvKTp0aGlzLl9wcm94eUxheWVyR3JvdXBzTmVlZFJlbW92aW5nW3RdPW87cmV0dXJuIHRoaXN9LHJlbW92ZUxheWVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9idWZmZXJTaW5nbGVBZGRSZW1vdmUoZSwicmVtb3ZlTGF5ZXJzIiksdGhpc30sX29yaWdpbmFsUmVtb3ZlTGF5ZXI6ZS5NYXJrZXJDbHVzdGVyR3JvdXAucHJvdG90eXBlLnJlbW92ZUxheWVyLF9vcmlnaW5hbFJlbW92ZUxheWVyczplLk1hcmtlckNsdXN0ZXJHcm91cC5wcm90b3R5cGUucmVtb3ZlTGF5ZXJzLG9uQWRkOmZ1bmN0aW9uKHIpe3IuX29yaWdpbmFsQWRkTGF5ZXI9ci5fb3JpZ2luYWxBZGRMYXllcnx8ci5hZGRMYXllcixyLl9vcmlnaW5hbFJlbW92ZUxheWVyPXIuX29yaWdpbmFsUmVtb3ZlTGF5ZXJ8fHIucmVtb3ZlTGF5ZXIsZS5leHRlbmQocixpKTt2YXIgbyx0LGEscz10aGlzLl9yZW1vdmVQcmVBZGRlZExheWVycyhyKTt0aGlzLl9vcmlnaW5hbE9uQWRkLmNhbGwodGhpcyxyKTtmb3IobyBpbiB0aGlzLl9wcm94eUxheWVyR3JvdXBzKXQ9dGhpcy5fcHJveHlMYXllckdyb3Vwc1tvXSxyLl9vcmlnaW5hbEFkZExheWVyKHQpO2ZvcihvIGluIHRoaXMuX3Byb3h5TGF5ZXJHcm91cHNOZWVkUmVtb3ZpbmcpdD10aGlzLl9wcm94eUxheWVyR3JvdXBzTmVlZFJlbW92aW5nW29dLHIuX29yaWdpbmFsUmVtb3ZlTGF5ZXIodCksZGVsZXRlIHRoaXMuX3Byb3h5TGF5ZXJHcm91cHNOZWVkUmVtb3Zpbmdbb107Zm9yKGE9MDthPHMubGVuZ3RoO2ErKylyLmFkZExheWVyKHNbYV0pfSxfb3JpZ2luYWxPbkFkZDplLk1hcmtlckNsdXN0ZXJHcm91cC5wcm90b3R5cGUub25BZGQsX2J1ZmZlclNpbmdsZUFkZFJlbW92ZTpmdW5jdGlvbihyLG8pe3ZhciB0LGk9dGhpcy5vcHRpb25zLnNpbmdsZUFkZFJlbW92ZUJ1ZmZlckR1cmF0aW9uO2k+MD8odGhpcy5fc2luZ2xlQWRkUmVtb3ZlQnVmZmVyLnB1c2goe3R5cGU6byxsYXllcjpyfSksdGhpcy5fc2luZ2xlQWRkUmVtb3ZlQnVmZmVyVGltZW91dHx8KHQ9ZS5iaW5kKHRoaXMuX3Byb2Nlc3NTaW5nbGVBZGRSZW1vdmVCdWZmZXIsdGhpcyksdGhpcy5fc2luZ2xlQWRkUmVtb3ZlQnVmZmVyVGltZW91dD1zZXRUaW1lb3V0KHQsaSkpKTp0aGlzW29dKHIpfSxfcHJvY2Vzc1NpbmdsZUFkZFJlbW92ZUJ1ZmZlcjpmdW5jdGlvbigpe2Zvcih
<style type="text/css">
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
</style>
<style type="text/css">code{white-space: pre;}</style>
<script type="text/javascript">
if (window.hljs) {
hljs.configure({languages: []});
hljs.initHighlightingOnLoad();
if (document.readyState && document.readyState === "complete") {
window.setTimeout(function() { hljs.initHighlighting(); }, 0);
}
}
</script>
<style type="text/css">
.main-container {
max-width: 940px;
margin-left: auto;
margin-right: auto;
}
img {
max-width:100%;
}
.tabbed-pane {
padding-top: 12px;
}
.html-widget {
margin-bottom: 20px;
}
button.code-folding-btn:focus {
outline: none;
}
summary {
display: list-item;
}
pre code {
padding: 0;
}
</style>
<!-- tabsets -->
<style type="text/css">
.tabset-dropdown > .nav-tabs {
display: inline-table;
max-height: 500px;
min-height: 44px;
overflow-y: auto;
border: 1px solid #ddd;
border-radius: 4px;
}
.tabset-dropdown > .nav-tabs > li.active:before {
content: "";
font-family: 'Glyphicons Halflings';
display: inline-block;
padding: 10px;
border-right: 1px solid #ddd;
}
.tabset-dropdown > .nav-tabs.nav-tabs-open > li.active:before {
content: "";
border: none;
}
.tabset-dropdown > .nav-tabs.nav-tabs-open:before {
content: "";
font-family: 'Glyphicons Halflings';
display: inline-block;
padding: 10px;
border-right: 1px solid #ddd;
}
.tabset-dropdown > .nav-tabs > li.active {
display: block;
}
.tabset-dropdown > .nav-tabs > li > a,
.tabset-dropdown > .nav-tabs > li > a:focus,
.tabset-dropdown > .nav-tabs > li > a:hover {
border: none;
display: inline-block;
border-radius: 4px;
background-color: transparent;
}
.tabset-dropdown > .nav-tabs.nav-tabs-open > li {
display: block;
float: none;
}
.tabset-dropdown > .nav-tabs > li {
display: none;
}
</style>
<!-- code folding -->
</head>
<body>
<div class="container-fluid main-container">
<div id="header">
<h1 class="title toc-ignore">R Notebook</h1>
</div>
<pre class="r"><code>library(tidyverse)</code></pre>
<pre><code>## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──</code></pre>
<pre><code>## ✓ ggplot2 3.3.5 ✓ purrr 0.3.4
## ✓ tibble 3.1.4 ✓ dplyr 1.0.7
## ✓ tidyr 1.1.3 ✓ stringr 1.4.0
## ✓ readr 2.0.1 ✓ forcats 0.5.1</code></pre>
<pre><code>## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()</code></pre>
<pre class="r"><code>library(lubridate)</code></pre>
<pre><code>##
## Attachement du package : &#39;lubridate&#39;</code></pre>
<pre><code>## Les objets suivants sont masqués depuis &#39;package:base&#39;:
##
## date, intersect, setdiff, union</code></pre>
<pre class="r"><code>library(sf)</code></pre>
<pre><code>## Linking to GEOS 3.9.1, GDAL 3.3.1, PROJ 8.0.1</code></pre>
<pre class="r"><code>library(leaflet)
library(dataReporter)</code></pre>
<pre><code>##
## Attachement du package : &#39;dataReporter&#39;</code></pre>
<pre><code>## L&#39;objet suivant est masqué depuis &#39;package:dplyr&#39;:
##
## summarize</code></pre>
<pre class="r"><code>source(&quot;importer_donnees_csv.R&quot;)</code></pre>
<pre><code>## Warning: One or more parsing issues, see `problems()` for details</code></pre>
<pre class="r"><code>source(&quot;pirateIcon.R&quot;)</code></pre>
<pre class="r"><code>glimpse(pirate_attacks_sf, width = 67)</code></pre>
<pre><code>## Rows: 7,511
## Columns: 15
## $ date &lt;date&gt; 1993-01-02, 1993-01-04, 1993-01-06,…
## $ time &lt;chr&gt; NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ attack_type &lt;chr&gt; NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ location_description &lt;chr&gt; &quot;Hong Kong - Luzon - Hainan&quot;, &quot;Hong …
## $ nearest_country &lt;chr&gt; &quot;CHN&quot;, &quot;CHN&quot;, &quot;CHN&quot;, &quot;CHN&quot;, &quot;PHL&quot;, &quot;
## $ eez_country &lt;chr&gt; &quot;TWN&quot;, &quot;CHN&quot;, &quot;TWN&quot;, &quot;CHN&quot;, &quot;PHL&quot;, &quot;
## $ shore_distance &lt;dbl&gt; 357.5023726, 47.4315725, 280.8118709…
## $ shore_longitude &lt;dbl&gt; 115.825956, 115.825956, 114.302501, …
## $ shore_latitude &lt;dbl&gt; 22.746644, 22.746644, 22.044867, 29.…
## $ attack_description &lt;chr&gt; NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ vessel_name &lt;chr&gt; &quot;Mv Cosmic Leader&quot;, &quot;Mv Tricolor Sta…
## $ vessel_type &lt;chr&gt; NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ vessel_status &lt;chr&gt; NA, NA, NA, NA, NA, NA, NA, NA, &quot;Anc…
## $ data_source &lt;chr&gt; &quot;mappingpiracy&quot;, &quot;mappingpiracy&quot;, &quot;m…
## $ geometry &lt;POINT&gt; POINT (116.9667 19.7), POINT (116 …</code></pre>
<pre class="r"><code>pirate_attacks_sf_ss &lt;- pirate_attacks_sf %&gt;%
filter(data_source == &quot;imb&quot;) %&gt;%
select(
date,
attack_type,
shore_distance,
vessel_type,
vessel_status
) %&gt;%
replace_na(list(vessel_status=&quot;Underway&quot;)) %&gt;%
mutate(month_event = month(date),
year_event = year(date))</code></pre>
<div id="statistiques-descriptives" class="section level2">
<h2>Statistiques descriptives</h2>
<pre class="r"><code>makeDataReport(pirate_attacks_sf_ss, replace = TRUE)</code></pre>
<pre><code>## Data report generation is finished. Please wait while your output file is being rendered.</code></pre>
</div>
<div id="exporter-les-types-de-navires" class="section level2">
<h2>Exporter les types de navires</h2>
<pre class="r"><code>pirate_attacks_sf_ss %&gt;%
group_by(vessel_type) %&gt;%
st_set_geometry(NULL) %&gt;%
count() %&gt;%
arrange(desc(n)) %&gt;%
write_csv(&quot;vessel_types.csv&quot;)</code></pre>
</div>
<div id="traitement-manuel" class="section level2">
<h2>Traitement manuel</h2>
<p>Je crée manuellement des catégories plus larges, puis je réimporte</p>
<pre class="r"><code>custom_vessel_categories &lt;-
read_csv(
&quot;data/csv/custom_vessel_categories.csv&quot;,
col_types = cols(vessel_type = col_character(),
vessel_category = col_character())
)</code></pre>
<pre class="r"><code>pirate_attacks_sf_ss2 &lt;- pirate_attacks_sf_ss %&gt;%
left_join(custom_vessel_categories)</code></pre>
<pre><code>## Joining, by = &quot;vessel_type&quot;</code></pre>
<pre class="r"><code>pirate_attacks_sf_ss2 %&gt;% sf::write_sf(&quot;data/geojson/pirate_attacks_sf_ss2.geojson&quot;)</code></pre>
<pre><code>## Warning in CPL_write_ogr(obj, dsn, layer, driver,
## as.character(dataset_options), : GDAL Error 6: DeleteLayer() not supported by
## this dataset.</code></pre>
</div>
<div id="filtrage" class="section level2">
<h2>Filtrage</h2>
<pre class="r"><code>pirate_attacks_sf_maps &lt;- pirate_attacks_sf_ss2 %&gt;%
filter(year_event == 2015, month_event==1)</code></pre>
<pre class="r"><code>m &lt;- leaflet(pirate_attacks_sf_maps) %&gt;%
addTiles() %&gt;%
addMarkers(
popup = paste0(
&quot;Type: &quot;,
pirate_attacks_sf_maps$vessel_category,
&quot;&lt;br&gt;&quot;,
&quot;Statut: &quot;,
pirate_attacks_sf_maps$vessel_status,
&quot;&lt;br&gt;&quot;,
&quot;Type d&#39;attaque: &quot;,
pirate_attacks_sf_maps$attack_type,
&quot;&lt;br&gt;&quot;,
&quot;Distance de la côte: &quot;,
round(pirate_attacks_sf_maps$shore_distance, 2),
&quot;km&quot;,
&quot;&lt;br&gt;&quot;,
&quot;Date: &quot;,
pirate_attacks_sf_maps$date
),
icon = pirateIcon,
clusterOptions = markerClusterOptions()
)</code></pre>
<pre class="r"><code>m</code></pre>
<div id="htmlwidget-b40cf1beef6ab9657476" style="width:672px;height:480px;" class="leaflet html-widget"></div>
<script type="application/json" data-for="htmlwidget-b40cf1beef6ab9657476">{"x":{"options":{"crs":{"crsClass":"L.CRS.EPSG3857","code":null,"proj4def":null,"projectedBounds":null,"options":{}}},"calls":[{"method":"addTiles","args":["//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",null,null,{"minZoom":0,"maxZoom":18,"tileSize":256,"subdomains":"abc","errorTileUrl":"","tms":false,"noWrap":false,"zoomOffset":0,"zoomReverse":false,"opacity":1,"zIndex":1,"detectRetina":false,"attribution":"&copy; <a href=\"http://openstreetmap.org\">OpenStreetMap<\/a> contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA<\/a>"}]},{"method":"addMarkers","args":[[1.1166666666667,1.18333333333333,10.3,1.08,3.73333333333333,3.4,1.035,1.1166666666667,4.05,1.1,-5.90467061477606,10.168611111111,1.0333333333333,1.4109139016956,1.32805555555556,-6.0166666666667,4.43333333333333,3.9166666666667,1.1511111111111],[104.16666666667,103.616666666667,-75.55,104.166666666667,4.98333333333335,1.35000000000002,103.9,103.51666666667,-3.83333333333333,103.53333333333,106.897440592451,107.03333333333,103.65,125.28739929199,104.2,106.91666666667,-1.7325,98.766666666667,103.45],{"iconUrl":{"data":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAA7AAAAOwBeShxvQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAfBSURBVFiFnZZ5bFzVFcZ/972Z8Yy3DHZCNtsBAhi5kIU9RQ0BWgi7EkgXqFrUVBVphVgSFdJEWTChUIpSCrRIbUWrVogmQAMINSwpFRDIAiQkQAwO2YOdeJ/x+M28u5z+MWPHjpcUrnSle+933/m+c965517FCdq8e+8/x3lqAcgVUV9VlUbdo39evnzZkqdfulgpuQxAlNuw6sdztsxfsbw+neOe0MohnH1DrPfUi6vrd45kXw0PiZp73wPLksWy9Mq6MHLp5ByVMc2BNhX8dd+sFxBuPW7/32+r3XhzzSiTaE0Lb34W4ZVPfJMOXP3Ljz1SD8hXEjB38QNLzzzZ1C+6NMVHhzzWNxSzvzOKdsjE8VUqGo0N2K/DHAf2N4qHqFMrDdfU5pg2LuTB/yRoaPWX/PvxRx/8vwXMWfxgZVW5Pvjrb7cknthcztZDcUQEEQFxeL5PWXmSXhFhmCXV0YbWIYjr2ztjYsidF3Vzz/rSYG9Gqjc8+WTb8VyRoQR4Ym//7pmtifWfRNh8MAZiEXFQMGytob2lCUEQR4H0GN4rdON+xRnlHreclU48tKnkdmDVIK6hvC+P5u6cXtrOus9LEGtw1uCsLXRTWLM4YxGrB+PO4JzFOcuaTyOcX9lNMhreedX8+RXH8/n9JzctXnGWGP3Pqye01aa6LW83lyHOIc6Bs/mx9Hbb53nee3sMcw5xFpwjp4Wa4pDR0bDko9bIzEnTp23ct31766AIzLv77oQJzftV8cyM6ysP8q99yYIXAz0aMSJ2aHxNQ4y5VSlqEtkZaLN11m23xQdF4NNNm+z8a+rmLpr0+YS/7BnH9q7SPu/7ezQoIsfjQ0SkIwvtPcLSuhaaAm/H35569qmhklBKUm3X3bN1/H8PBX6t0Aki+cSCfGIB4ED6zcXlD3hhLn3fSOHk55Py1QMRdrVVfjY10XY9/WrCoGN49R13FGVb2l7S2eA7x/Be46CUYnR5KcnSUtJGmFyeIB3k+LKzi9bu7n5CBzRRvv/qhEjkxrVr14b9gWEL0cybvj8d7ErfY1qp76rHlJdyXu3pfO/CKVQm4rR351jy1i4SEZ9fnjMZZQWnDS/s2MnWA1/Q2pOh23gHQ+e2G6WWbV23bvtQPCOUYpDdGy7Hyfpg24tRv/I0YmPPpifQRARi4tGS6mH5xk9o1eAEipSw4NRqpseP0NOzjzHT54T0yGw1a/abw3EMqgMDmpMFpG3UGsEZQ9ZYfvrcOyxcl7c3pjjBwnNrcQLiLOlMN4/t2EnWhFgj0ONiBObnI1GMLKDbZkhZrHHYXIA2jkxo6OzJ9W05bVQZY+NRdLYHnQvoSHfxVlMaaxwEFgKXHoliyFLc16KNz8mRxnnWSLF0p0nGo9RfeR5lPvm81Bbl4K5vnMLqLSkaUwGeDXns02Ymj0qwsOj1bN35pzz/9QWUHyzWHY2PWFW93Og0YjVTxp8EViATQiYAgTNKE/zhikvACi4M2bDtZd5rD2g4fOTZuqvjJSNRjPgL1KSH13RKdcoah9WWoOVwH+aUw5gujO7CKde3nkk1cVoR3DLOZ0qsYoea9PCarx8BwBh7a+Gio7NxBybIkmnaTy7VgbhC0RFFrDhJ6agqOpobsabvVvwhsHpEJ0cCD/z+Z5MxdndegPQWxvzYHRv3VsbCLdxvr+CMnTzloWf2DMcx7C+Q5xY+MbYz/ro1kj8FRhh+PBwunB6rfEOeX/T4VxZAKv5w9OxoFU36BOQyLF4eFBGfFqsiK7/9ygLUT1Yd7I76e2pIYra1kmtOY04UBS04IyS6her2GJO8YlqhWd366P7hePyhl0XdvNivf/doZM5VZ2fU6M9j6M+akF2HKTrawxc3/ILTqycwKpGkrGQ88ZpzyF04m4mvbKKmSVOZiZBwEexlPgte6xw18cKZtbs/2PwCrBzENOQpmHvvyvudY+mRAD7OeEwda5mYOZmOdod0ZgiCElKzL0dUviR4foTkl4dItnRBvAj8CJxs+LAloFn7RCPygxvuuu/oS7/jrhNG4IZFv7pWnPujM0aJCBvbi5g0PktJTUByfwTPGLqSY0hefC4VxVHiEQ9fQfjqayQ/eB98j46Zlq0xWPkxqFgcLxJBRaIX1V1y6ZaG997e3Z9vQA7MmzfPt6H+jQlzyuoQq0NyYciqwyfR0umBscQoouLwXrLaki2U+6wF9/4WxFgwluY2y/IGsF4ET+UpxBhltF49a8WKyLAC0qMnXOuMrjM6h9U5rNF93RRpVFkI1jBm7xdktJArkAcOynY1gDWoshAXdyg/gud5oBTOWowJsUbXFrd0zB5WgLP6Rmvy5EbnsCbs68uOjCUzPQTPcFLbUXRLJznJR8B0dFHR2gbKkpmaZcmeEpTnIUohOJzVBYdyWB3eOLwAHV5gdQ6nQ5zROBP29ZQ2PHR0Au5bDoXg7/yITJAjnQuJbN+GUuBmWlbuLSelvEKNdflXstE4HeYdM+EF/TkH/A+dDU5RSP7VCzgzMEffxecftoIfzWgnfGcDDWNLMSjOenEtfFN4pjXBZh1H+YJYi3UOpxRiLQDK83CoU4cVYMPsUQVlvS9b1OCr4ulsERMr4kxVH7J22zgciuvUTt6yUf6UKsXzBbEGa82xjwq2VN7ekf72/gd8n28PjlUpvgAAAABJRU5ErkJggg==","index":0},"iconWidth":32,"iconHeight":32,"iconAnch
</div>
</div>
<script>
// add bootstrap table styles to pandoc tables
function bootstrapStylePandocTables() {
$('tr.odd').parent('tbody').parent('table').addClass('table table-condensed');
}
$(document).ready(function () {
bootstrapStylePandocTables();
});
</script>
<!-- tabsets -->
<script>
$(document).ready(function () {
window.buildTabsets("TOC");
});
$(document).ready(function () {
$('.tabset-dropdown > .nav-tabs > li').click(function () {
$(this).parent().toggleClass('nav-tabs-open');
});
});
</script>
<!-- code folding -->
<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
document.getElementsByTagName("head")[0].appendChild(script);
})();
</script>
</body>
</html>